From fdd536f572606eab20ce3c2e5555127d0c97a69c Mon Sep 17 00:00:00 2001 From: Triang3l Date: Wed, 19 Sep 2018 11:40:28 +0300 Subject: [PATCH] [D3D12] Swap columns 0:39 and 40:79 of depth buffers in EDRAM --- src/xenia/gpu/d3d12/render_target_cache.cc | 32 +- src/xenia/gpu/d3d12/render_target_cache.h | 6 +- .../shaders/dxbc/edram_clear_32bpp_cs.cso | Bin 1572 -> 1788 bytes .../d3d12/shaders/dxbc/edram_clear_32bpp_cs.h | 76 ++- .../shaders/dxbc/edram_clear_32bpp_cs.txt | 29 +- .../shaders/dxbc/edram_clear_64bpp_cs.cso | Bin 1600 -> 1600 bytes .../d3d12/shaders/dxbc/edram_clear_64bpp_cs.h | 10 +- .../shaders/dxbc/edram_clear_64bpp_cs.txt | 4 +- .../dxbc/edram_clear_depth_float_cs.cso | Bin 1724 -> 1940 bytes .../shaders/dxbc/edram_clear_depth_float_cs.h | 100 ++-- .../dxbc/edram_clear_depth_float_cs.txt | 47 +- .../dxbc/edram_load_color_32bpp_cs.cso | Bin 1348 -> 1548 bytes .../shaders/dxbc/edram_load_color_32bpp_cs.h | 110 ++-- .../dxbc/edram_load_color_32bpp_cs.txt | 28 +- .../dxbc/edram_load_color_64bpp_cs.cso | Bin 1376 -> 1376 bytes .../shaders/dxbc/edram_load_color_64bpp_cs.h | 10 +- .../dxbc/edram_load_color_64bpp_cs.txt | 4 +- .../shaders/dxbc/edram_load_color_7e3_cs.cso | Bin 3368 -> 3568 bytes .../shaders/dxbc/edram_load_color_7e3_cs.h | 371 ++++++------ .../shaders/dxbc/edram_load_color_7e3_cs.txt | 28 +- .../dxbc/edram_load_depth_float_cs.cso | Bin 3268 -> 3468 bytes .../shaders/dxbc/edram_load_depth_float_cs.h | 412 ++++++------- .../dxbc/edram_load_depth_float_cs.txt | 28 +- .../dxbc/edram_load_depth_unorm_cs.cso | Bin 1596 -> 1796 bytes .../shaders/dxbc/edram_load_depth_unorm_cs.h | 149 ++--- .../dxbc/edram_load_depth_unorm_cs.txt | 28 +- .../dxbc/edram_store_color_32bpp_cs.cso | Bin 1348 -> 1548 bytes .../shaders/dxbc/edram_store_color_32bpp_cs.h | 90 +-- .../dxbc/edram_store_color_32bpp_cs.txt | 28 +- .../dxbc/edram_store_color_64bpp_cs.cso | Bin 1376 -> 1376 bytes .../shaders/dxbc/edram_store_color_64bpp_cs.h | 10 +- .../dxbc/edram_store_color_64bpp_cs.txt | 4 +- .../shaders/dxbc/edram_store_color_7e3_cs.cso | Bin 3260 -> 3476 bytes .../shaders/dxbc/edram_store_color_7e3_cs.h | 78 ++- .../shaders/dxbc/edram_store_color_7e3_cs.txt | 29 +- .../dxbc/edram_store_depth_float_cs.cso | Bin 2260 -> 2460 bytes .../shaders/dxbc/edram_store_depth_float_cs.h | 100 ++-- .../dxbc/edram_store_depth_float_cs.txt | 28 +- .../dxbc/edram_store_depth_unorm_cs.cso | Bin 1500 -> 1700 bytes .../shaders/dxbc/edram_store_depth_unorm_cs.h | 85 +-- .../dxbc/edram_store_depth_unorm_cs.txt | 28 +- .../dxbc/edram_tile_sample_32bpp_cs.cso | Bin 4884 -> 5080 bytes .../shaders/dxbc/edram_tile_sample_32bpp_cs.h | 549 +++++++++--------- .../dxbc/edram_tile_sample_32bpp_cs.txt | 18 +- .../dxbc/edram_tile_sample_64bpp_cs.cso | Bin 5384 -> 5384 bytes .../shaders/dxbc/edram_tile_sample_64bpp_cs.h | 10 +- .../dxbc/edram_tile_sample_64bpp_cs.txt | 4 +- .../gpu/d3d12/shaders/edram_load_store.hlsli | 20 +- 48 files changed, 1422 insertions(+), 1131 deletions(-) diff --git a/src/xenia/gpu/d3d12/render_target_cache.cc b/src/xenia/gpu/d3d12/render_target_cache.cc index 4d2a3496e..26db1bd1e 100644 --- a/src/xenia/gpu/d3d12/render_target_cache.cc +++ b/src/xenia/gpu/d3d12/render_target_cache.cc @@ -1105,7 +1105,8 @@ bool RenderTargetCache::ResolveCopy(SharedMemory* shared_memory, break; } } - root_constants.base_pitch_tiles = edram_base | (surface_pitch_tiles << 11); + root_constants.base_depth_pitch = + edram_base | (is_depth ? (1 << 11) : 0) | (surface_pitch_tiles << 12); command_list->SetComputeRoot32BitConstants( 0, sizeof(root_constants) / sizeof(uint32_t), &root_constants, 0); command_list->SetComputeRootDescriptorTable(1, descriptor_gpu_start); @@ -1206,8 +1207,8 @@ bool RenderTargetCache::ResolveCopy(SharedMemory* shared_memory, load_root_constants.rt_color_depth_offset = uint32_t(footprint.Offset); load_root_constants.rt_color_depth_pitch = uint32_t(footprint.Footprint.RowPitch); - load_root_constants.base_pitch_tiles = - edram_base | (surface_pitch_tiles << 11); + load_root_constants.base_depth_pitch = + edram_base | (surface_pitch_tiles << 12); command_list->SetComputeRoot32BitConstants( 0, sizeof(load_root_constants) / sizeof(uint32_t), &load_root_constants, 0); @@ -1473,7 +1474,8 @@ bool RenderTargetCache::ResolveClear(uint32_t edram_base, (clear_rect.top << (16 + samples_y_log2)); root_constants.clear_rect_rb = (clear_rect.right << samples_x_log2) | (clear_rect.bottom << (16 + samples_y_log2)); - root_constants.base_pitch_tiles = edram_base | (surface_pitch_tiles << 11); + root_constants.base_depth_pitch = + edram_base | (is_depth ? (1 << 11) : 0) | (surface_pitch_tiles << 12); if (is_depth && DepthRenderTargetFormat(format) == DepthRenderTargetFormat::kD24FS8) { root_constants.clear_depth24 = regs[XE_GPU_REG_RB_DEPTH_CLEAR].u32; @@ -2098,11 +2100,20 @@ void RenderTargetCache::StoreRenderTargetsToEDRAM() { command_list->CopyTextureRegion(&location_dest, 0, 0, 0, &location_source, nullptr); EDRAMLoadStoreRootConstants root_constants; + uint32_t rt_pitch_tiles = surface_pitch_tiles; + if (!render_target->key.is_depth && + IsColorFormat64bpp( + ColorRenderTargetFormat(render_target->key.format))) { + rt_pitch_tiles *= 2; + } + root_constants.base_depth_pitch = + binding.edram_base | (rt_pitch_tiles << 12); root_constants.rt_color_depth_offset = uint32_t(location_dest.PlacedFootprint.Offset); root_constants.rt_color_depth_pitch = location_dest.PlacedFootprint.Footprint.RowPitch; if (render_target->key.is_depth) { + root_constants.base_depth_pitch |= 1 << 11; location_source.SubresourceIndex = 1; location_dest.PlacedFootprint = render_target->footprints[1]; command_list->CopyTextureRegion(&location_dest, 0, 0, 0, &location_source, @@ -2112,14 +2123,6 @@ void RenderTargetCache::StoreRenderTargetsToEDRAM() { root_constants.rt_stencil_pitch = location_dest.PlacedFootprint.Footprint.RowPitch; } - uint32_t rt_pitch_tiles = surface_pitch_tiles; - if (!render_target->key.is_depth && - IsColorFormat64bpp( - ColorRenderTargetFormat(render_target->key.format))) { - rt_pitch_tiles *= 2; - } - root_constants.base_pitch_tiles = - binding.edram_base | (rt_pitch_tiles << 11); // Transition the copy buffer to SRV. command_processor_->PushTransitionBarrier( @@ -2236,18 +2239,19 @@ void RenderTargetCache::LoadRenderTargetsFromEDRAM( // Load the data. command_processor_->SubmitBarriers(); EDRAMLoadStoreRootConstants root_constants; + root_constants.base_depth_pitch = + edram_bases[i] | (edram_pitch_tiles << 12); root_constants.rt_color_depth_offset = uint32_t(render_target->footprints[0].Offset); root_constants.rt_color_depth_pitch = render_target->footprints[0].Footprint.RowPitch; if (render_target->key.is_depth) { + root_constants.base_depth_pitch |= 1 << 11; root_constants.rt_stencil_offset = uint32_t(render_target->footprints[1].Offset); root_constants.rt_stencil_pitch = render_target->footprints[1].Footprint.RowPitch; } - root_constants.base_pitch_tiles = - edram_bases[i] | (edram_pitch_tiles << 11); command_list->SetComputeRoot32BitConstants( 0, sizeof(root_constants) / sizeof(uint32_t), &root_constants, 0); EDRAMLoadStoreMode mode = GetLoadStoreMode(render_target->key.is_depth, diff --git a/src/xenia/gpu/d3d12/render_target_cache.h b/src/xenia/gpu/d3d12/render_target_cache.h index bda75f991..121b001db 100644 --- a/src/xenia/gpu/d3d12/render_target_cache.h +++ b/src/xenia/gpu/d3d12/render_target_cache.h @@ -470,8 +470,10 @@ class RenderTargetCache { }; }; }; - // Base in the lower 11 bits, pitch above. - uint32_t base_pitch_tiles; + // 0:10 - EDRAM base in tiles. + // 11 - whether it's a depth render target. + // 12: - EDRAM pitch in tiles. + uint32_t base_depth_pitch; }; // EDRAM pipelines. static const EDRAMLoadStoreModeInfo diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.cso index 3ccbc8c5285e7669694a4639df25786053daf7a1..b697f7d918884efd015ad61909bad8a276c48297 100644 GIT binary patch delta 489 zcmZXRze~eF6vw}pTrMG|T3W>)gAGWfc9P;CPO<)2wTrl^s8F|p1xLln)!yLX>grJ4 z9fV9Sj=Br}6Os5{xa*(?F9+{^-}n3B@(^XE*5-bDBkkPXe}zx+=l5Vjy(B*ZK&AkX z?iH#T2WU{OQXQ&c>qd;7oc8+NgWg&HxT{lf5ylee&_W=dx1E8wTmn=DWm*Qp*nvm@ zwxx<*O1o%ueWTqg0vj~kH6R>dLF^I( z7JYLw*cTcilQ1K0XU xPS>r2RWJyM(z?)V`W3zIRcGlBfbm9eYjT=8m2aZ1Z@p@XxyGqj>*}F*{tH~ZH9`OY delta 299 zcmeyvyM)KcCBn)1V_JY`wVQ^^<=1_D+ak4f85tNDRM;38Sb?+&5KAyIFlYd=1rT?z zZZzs(OF9DnKJRg%|{Yni&|l8VtZR zhyWSQ=)l16pPhkW@&y(JLvEmeG6Mq#OtF*z6N45^Bb1h7U|@sEb4^xc6_#*<%19|N zfsJzjnhP|Ab8-Qzh$4ds1KbErpjMb-E~sMW$!l5UCof?=q9_Bj9Ox%70D1rnIDsS= R5QD^-CLd(ep1g(40{|eJCg=bF diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.h index 107688692..4205bb9e6 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.h @@ -1,11 +1,11 @@ // generated from `xb buildhlsl` // source: edram_clear_32bpp.cs.hlsl const uint8_t edram_clear_32bpp_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0xF1, 0x66, 0x50, 0x49, 0x7B, 0x46, 0x28, 0x44, - 0xD3, 0xEB, 0x8E, 0x0E, 0xB6, 0x59, 0x2B, 0x2D, 0x01, 0x00, 0x00, 0x00, - 0x24, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0xC5, 0x51, 0x97, 0x9B, 0xE4, 0x0A, 0xB2, 0x20, + 0xD9, 0xE7, 0x92, 0x0F, 0x06, 0xBE, 0x40, 0xFD, 0x01, 0x00, 0x00, 0x00, + 0xFC, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, - 0x88, 0x05, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xDC, 0x01, 0x00, 0x00, + 0x60, 0x06, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xDC, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x43, 0x00, 0x05, 0x00, 0x00, 0xB4, 0x01, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00, @@ -37,8 +37,8 @@ const uint8_t edram_clear_32bpp_cs[] = { 0x01, 0x00, 0x04, 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, 0x46, 0x01, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, - 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x70, 0x69, - 0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x64, 0x77, + 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x65, + 0x70, 0x74, 0x68, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 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, @@ -48,8 +48,8 @@ const uint8_t edram_clear_32bpp_cs[] = { 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0x49, 0x53, 0x47, 0x4E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4F, 0x53, 0x47, 0x4E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x53, 0x48, 0x45, 0x58, 0x48, 0x03, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0xD2, 0x00, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, + 0x08, 0x00, 0x00, 0x00, 0x53, 0x48, 0x45, 0x58, 0x20, 0x04, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x08, 0x01, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x06, 0x46, 0xEE, 0x31, 0x00, @@ -83,26 +83,44 @@ const uint8_t edram_clear_32bpp_cs[] = { 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x03, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, - 0x01, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x10, 0x02, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, - 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x02, 0x00, 0x26, 0x00, 0x00, 0x07, - 0x00, 0xD0, 0x00, 0x00, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, - 0x00, 0x14, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x0C, 0xC2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, + 0x1F, 0x00, 0x04, 0x03, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4F, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0xD8, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x07, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x55, 0x00, 0x00, 0x09, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x08, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, + 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x10, 0x02, 0x00, 0x26, 0x00, 0x00, 0x07, 0x00, 0xD0, 0x00, 0x00, + 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x20, 0x02, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, + 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x0A, 0x12, 0xE0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -119,10 +137,10 @@ const uint8_t edram_clear_32bpp_cs[] = { 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x3E, 0x00, 0x00, 0x01, - 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, + 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x03, 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, 0x00, diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.txt index 3e3547b04..a8322e3d3 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_32bpp_cs.txt @@ -8,7 +8,7 @@ // { // // uint4 xe_edram_load_store_constants;// Offset: 0 Size: 16 -// uint xe_edram_base_pitch_tiles; // Offset: 16 Size: 4 +// uint xe_edram_base_depth_pitch; // Offset: 16 Size: 4 // // } // @@ -54,14 +54,23 @@ or r0.x, r0.z, r0.x if_nz r0.x ret endif -and r0.x, CB0[0][1].x, l(2047) -ushr r0.z, CB0[0][1].x, l(11) -imad r0.x, vThreadGroupID.y, r0.z, r0.x -iadd r0.x, r0.x, vThreadGroupID.x -imul null, r0.z, vThreadIDInGroup.y, l(320) -imad r0.x, r0.x, l(5120), r0.z -ishl r0.z, vThreadIDInGroup.x, l(3) -iadd r0.x, r0.z, r0.x +ishl r0.x, vThreadIDInGroup.x, l(1) +and r0.zw, CB0[0][1].xxxx, l(0, 0, 2048, 2047) +if_nz r0.z + ult r0.z, vThreadIDInGroup.x, l(20) + and r0.z, r0.z, l(40) + uge r1.x, vThreadIDInGroup.x, l(20) + and r1.x, r1.x, l(-40) + iadd r0.z, r0.z, r1.x + iadd r0.x, r0.z, r0.x +endif +ushr r0.z, CB0[0][1].x, l(12) +imad r0.z, vThreadGroupID.y, r0.z, r0.w +iadd r0.z, r0.z, vThreadGroupID.x +imul null, r0.w, vThreadIDInGroup.y, l(320) +imad r0.z, r0.z, l(5120), r0.w +ishl r0.x, r0.x, l(2) +iadd r0.x, r0.x, r0.z store_raw U0[0].x, r0.x, CB0[0][0].z imad r0.z, vThreadID.x, l(2), l(1) ult r0.y, r0.z, r0.y @@ -70,4 +79,4 @@ if_nz r0.y store_raw U0[0].x, r0.y, CB0[0][0].z endif ret -// Approximately 28 instruction slots used +// Approximately 37 instruction slots used diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.cso index f4ba52b7fafded1cc50e4ada7168f40d936b1a97..cf0c590585fcec8b4ce1115eb6ca615248510a7b 100644 GIT binary patch delta 53 zcmX@WbAU(0CBn)1G~ao}n>lCt)-!qNY+(xI+94V4v&8{d L0s#xN9Rwo+f+iI@ diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.h index ed1421bc0..516152630 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.h @@ -1,8 +1,8 @@ // generated from `xb buildhlsl` // source: edram_clear_64bpp.cs.hlsl const uint8_t edram_clear_64bpp_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0xDF, 0x8C, 0xEC, 0xD8, 0xAC, 0xC6, 0x2C, 0x8F, - 0x69, 0xB7, 0xD0, 0x01, 0xD5, 0xD4, 0x67, 0x29, 0x01, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0xCB, 0x0E, 0xCF, 0x21, 0xD9, 0x6C, 0xCC, 0x8E, + 0xAF, 0x02, 0x48, 0x2C, 0xB4, 0x02, 0x51, 0x0A, 0x01, 0x00, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0xA4, 0x05, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xDC, 0x01, 0x00, 0x00, @@ -37,8 +37,8 @@ const uint8_t edram_clear_64bpp_cs[] = { 0x01, 0x00, 0x04, 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, 0x46, 0x01, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, - 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x70, 0x69, - 0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x64, 0x77, + 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x65, + 0x70, 0x74, 0x68, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 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, @@ -88,7 +88,7 @@ const uint8_t edram_clear_64bpp_cs[] = { 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x55, 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x06, diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.txt index c6583ed14..a6ee563b5 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_64bpp_cs.txt @@ -8,7 +8,7 @@ // { // // uint4 xe_edram_load_store_constants;// Offset: 0 Size: 16 -// uint xe_edram_base_pitch_tiles; // Offset: 16 Size: 4 +// uint xe_edram_base_depth_pitch; // Offset: 16 Size: 4 // // } // @@ -55,7 +55,7 @@ if_nz r0.x ret endif and r0.x, CB0[0][1].x, l(2047) -ushr r0.z, CB0[0][1].x, l(11) +ushr r0.z, CB0[0][1].x, l(12) imad r0.x, vThreadGroupID.y, r0.z, r0.x ishl r0.z, vThreadGroupID.x, l(1) iadd r0.x, r0.z, r0.x diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.cso index a7cfd9487b6cc33a325ee77ac720b82169c73534..f7531fc75628bd43517c72d1e6ec06ab520da0ea 100644 GIT binary patch delta 595 zcmZvZyGsK>5XQf~+q;}=)Sw9okvvq;JU|Ru1Z~18J}OOTC!#{EOcAj3(OD*&PVH1Wyfs?lJHEMSi!M6-ZM z8(<|sxlRF&E8oqO{N}L}ssx|3%08V_;`UKWqeLJ7IDkhyDR48V^_#T8?b#3}J8r=XuFKhC*wS^41*Z5!xz?JUtL3-_8wp`B-*Q z(~&`!)F%=l1Jh)TSKwS;^JuvrGlWLC6cJ2GvBBk@0! x?&Ao#VXZMC>(|J-VR^@vXQKdDt;UhQ%TWMp7q*u%!azzU>IfLMZwfk6X^Er3{I zqhTi_cR^-Jaz=bfW=?AHUmV3iANa1?(`rQj-`NXR=wN$iqA>HF+nS{NxX;9FrfgDKIKcW@H!U S1^JQ-h=F0rz&u%zy%+%a)-pu^ diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.h index 0f4b9dde9..8116d191a 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.h @@ -1,11 +1,11 @@ // generated from `xb buildhlsl` // source: edram_clear_depth_float.cs.hlsl const uint8_t edram_clear_depth_float_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0x0F, 0xCE, 0xAB, 0x0F, 0x27, 0x58, 0x89, 0x47, - 0xFC, 0x65, 0x7A, 0xF4, 0xEA, 0xBA, 0x44, 0x51, 0x01, 0x00, 0x00, 0x00, - 0xBC, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0x9B, 0x33, 0x08, 0x17, 0xDE, 0x0C, 0x91, 0xDF, + 0x9C, 0x70, 0xA4, 0xC4, 0x1D, 0xE2, 0xDE, 0x6F, 0x01, 0x00, 0x00, 0x00, + 0x94, 0x07, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x18, 0x02, 0x00, 0x00, 0x28, 0x02, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, - 0x20, 0x06, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xDC, 0x01, 0x00, 0x00, + 0xF8, 0x06, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0xDC, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x43, 0x00, 0x05, 0x00, 0x00, 0xB4, 0x01, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00, @@ -37,8 +37,8 @@ const uint8_t edram_clear_depth_float_cs[] = { 0x01, 0x00, 0x04, 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, 0x46, 0x01, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, - 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x70, 0x69, - 0x74, 0x63, 0x68, 0x5F, 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x64, 0x77, + 0x64, 0x72, 0x61, 0x6D, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x65, + 0x70, 0x74, 0x68, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 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, @@ -48,8 +48,8 @@ const uint8_t edram_clear_depth_float_cs[] = { 0x65, 0x72, 0x20, 0x31, 0x30, 0x2E, 0x31, 0x00, 0x49, 0x53, 0x47, 0x4E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4F, 0x53, 0x47, 0x4E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x53, 0x48, 0x45, 0x58, 0xE0, 0x03, 0x00, 0x00, - 0x51, 0x00, 0x05, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, + 0x08, 0x00, 0x00, 0x00, 0x53, 0x48, 0x45, 0x58, 0xB8, 0x04, 0x00, 0x00, + 0x51, 0x00, 0x05, 0x00, 0x2E, 0x01, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0x00, 0x00, 0x06, 0x46, 0xEE, 0x31, 0x00, @@ -83,59 +83,77 @@ const uint8_t edram_clear_depth_float_cs[] = { 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x03, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x15, 0x00, 0x00, 0x01, - 0x23, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x08, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x07, - 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x10, 0x02, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, - 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x02, 0x00, 0x26, 0x00, 0x00, 0x07, - 0x00, 0xD0, 0x00, 0x00, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, - 0x00, 0x14, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x0C, 0xC2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, + 0x1F, 0x00, 0x04, 0x03, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4F, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x28, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0xD8, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x07, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x55, 0x00, 0x00, 0x09, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x08, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, + 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, 0x42, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x10, 0x02, 0x00, 0x26, 0x00, 0x00, 0x07, 0x00, 0xD0, 0x00, 0x00, + 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x20, 0x02, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, + 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x0A, 0x12, 0xE0, 0x21, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x03, - 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, - 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x0A, 0x12, 0xE0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x00, 0x07, - 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, 0xA6, 0x00, 0x00, 0x0A, 0x12, 0xE0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x03, 0x0A, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x03, 0x1A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x04, 0x00, 0xA0, 0x00, 0xA6, 0x00, 0x00, 0x0A, 0x12, 0xE0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x80, 0x30, 0x00, + 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, - 0x94, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x94, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0B, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 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, 0x00, 0x01, 0x00, 0x00, 0x00, diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.txt index fcfb20911..783c3b8da 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_clear_depth_float_cs.txt @@ -8,7 +8,7 @@ // { // // uint4 xe_edram_load_store_constants;// Offset: 0 Size: 16 -// uint xe_edram_base_pitch_tiles; // Offset: 16 Size: 4 +// uint xe_edram_base_depth_pitch; // Offset: 16 Size: 4 // // } // @@ -54,26 +54,35 @@ or r0.x, r0.z, r0.x if_nz r0.x ret endif -imad r0.x, vThreadID.x, l(2), l(1) -ult r0.x, r0.x, r0.y -and r0.y, CB0[0][1].x, l(2047) -ushr r0.z, CB0[0][1].x, l(11) -imad r0.y, vThreadGroupID.y, r0.z, r0.y -iadd r0.y, r0.y, vThreadGroupID.x -imul null, r0.z, vThreadIDInGroup.y, l(320) -imad r0.y, r0.y, l(5120), r0.z -ishl r0.z, vThreadIDInGroup.x, l(3) -iadd r0.y, r0.z, r0.y -store_raw U0[0].x, r0.y, CB0[0][0].z -if_nz r0.x - iadd r0.z, r0.y, l(4) +ishl r0.x, vThreadIDInGroup.x, l(1) +imad r0.z, vThreadID.x, l(2), l(1) +ult r0.y, r0.z, r0.y +and r0.zw, CB0[0][1].xxxx, l(0, 0, 2048, 2047) +if_nz r0.z + ult r0.z, vThreadIDInGroup.x, l(20) + and r0.z, r0.z, l(40) + uge r1.x, vThreadIDInGroup.x, l(20) + and r1.x, r1.x, l(-40) + iadd r0.z, r0.z, r1.x + iadd r0.x, r0.z, r0.x +endif +ushr r0.z, CB0[0][1].x, l(12) +imad r0.z, vThreadGroupID.y, r0.z, r0.w +iadd r0.z, r0.z, vThreadGroupID.x +imul null, r0.w, vThreadIDInGroup.y, l(320) +imad r0.z, r0.z, l(5120), r0.w +ishl r0.x, r0.x, l(2) +iadd r0.x, r0.x, r0.z +store_raw U0[0].x, r0.x, CB0[0][0].z +if_nz r0.y + iadd r0.z, r0.x, l(4) store_raw U0[0].x, r0.z, CB0[0][0].z endif -iadd r0.z, r0.y, l(0x00a00000) +iadd r0.z, r0.x, l(0x00a00000) store_raw U0[0].x, r0.z, CB0[0][0].w -if_nz r0.x - iadd r0.x, r0.y, l(0x00a00004) - store_raw U0[0].x, r0.x, CB0[0][0].w +if_nz r0.y + iadd r0.y, r0.x, l(0x00a00004) + store_raw U0[0].x, r0.y, CB0[0][0].w endif ret -// Approximately 34 instruction slots used +// Approximately 43 instruction slots used diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_32bpp_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_32bpp_cs.cso index 4fdc98ee1226af1bc37d5a822156dbf56dcde7dc..69dd0632dcc03f1cb14aa67707bf917f11ec9c42 100644 GIT binary patch delta 511 zcmX@Y)x%@t65-_Ro)}{jy4lz2%U{Q+4G%@*7#SECc-R;iSb?+&5XUevFysJn4G$eof}P?8Z}kXe$PF`1L8obwG(DiEk)_vB8d=6X#A1~wrE0iad}1}+6A21W-4 z2A~24pus#zP;s^f1CTTrfGlKk01_a;!NBmJ9m14nU}2Vms`m$)sf1=G7f@LMP`n9M z+>HSw0W_3r5mX|K7vdNu2cQHHXh0~28~^|Rmt$aHhZ$@IRS&jw@^ z40(WBl!2~;DU}jnVt~0#3#tuh6x@wclN*_Z>z!Z*LPNm;=qjKooN!a1@}Ll65Mf|| znFI_$c6bOPsR4x|$ie7xFqbR^y6_WJJr{$(WPX-~jAD~FvIz5n+z*OSP*^igzQ|Gx E09n5?(f|Me delta 297 zcmeC-Il^V+65-^$`}Lc)4ccF(yGJ!~ecrM7CnEy`g9|GI0}wHo0C5Zx149lF*8uSf zmW@Vd7`Y2FOOi9H(IwyBBHM0T@;1rttlUbVOKRW}%iFe!zOy?;~vk3x6 L0RarNQ3DSGmS`1_ delta 53 zcmV-50LuU13g8M9L|8&YbR|T7$kvvB^Omf=zN2TCu@ve73vg+4V`yJ=X>4V4vk3x6 L0RaoMQ3DSGdDax> diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_64bpp_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_64bpp_cs.h index 726bc188b..2fa5b801f 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_64bpp_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_64bpp_cs.h @@ -1,8 +1,8 @@ // generated from `xb buildhlsl` // source: edram_load_color_64bpp.cs.hlsl const uint8_t edram_load_color_64bpp_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0x74, 0x25, 0x44, 0x7E, 0xC8, 0xD6, 0x96, 0x7F, - 0xF3, 0x96, 0xAC, 0xBD, 0xBE, 0xA3, 0x67, 0x97, 0x01, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0x50, 0xE5, 0xE7, 0xB4, 0xC3, 0x26, 0x7A, 0xE4, + 0x80, 0x1B, 0xC2, 0xCF, 0xFB, 0x06, 0xE1, 0xEF, 0x01, 0x00, 0x00, 0x00, 0x60, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x5C, 0x02, 0x00, 0x00, 0x6C, 0x02, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x00, 0xC4, 0x04, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x20, 0x02, 0x00, 0x00, @@ -43,8 +43,8 @@ const uint8_t edram_load_color_64bpp_cs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, - 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F, - 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, + 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, + 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 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, 0xCE, 0x01, 0x00, 0x00, @@ -71,7 +71,7 @@ const uint8_t edram_load_color_64bpp_cs[] = { 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x55, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x06, diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_64bpp_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_64bpp_cs.txt index b46961ab2..d6f7c8f8e 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_64bpp_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_64bpp_cs.txt @@ -8,7 +8,7 @@ // { // // uint4 xe_edram_load_store_constants;// Offset: 0 Size: 16 -// uint xe_edram_base_pitch_tiles; // Offset: 16 Size: 4 +// uint xe_edram_base_depth_pitch; // Offset: 16 Size: 4 // // } // @@ -45,7 +45,7 @@ dcl_input vThreadID.xy dcl_temps 2 dcl_thread_group 40, 16, 1 and r0.x, CB0[0][1].x, l(2047) -ushr r0.y, CB0[0][1].x, l(11) +ushr r0.y, CB0[0][1].x, l(12) imad r0.x, vThreadGroupID.y, r0.y, r0.x ishl r0.y, vThreadGroupID.x, l(1) iadd r0.x, r0.y, r0.x diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.cso index d874383fd236c3480fe145e050dac2284c5fe2b5..f0be4894da7ba59d91e4c4df871837ee6edb2da5 100644 GIT binary patch delta 526 zcmZ1>^+DRmCBn(stmENB?n5fmQW{O0cSo#mU}Rum_`u7+zzU>IfH;PUfguNoYk)X} zccal6M(&iivOcDxsMv0#p_N6mLQm zcVhra01f3@1eFNmg*b-E0Vn|k8W4)%#{d8SS8AyVHTM>x)LF~zE LdE_Tw;E4bLbjCGB delta 288 zcmew$y+X>!CBn&ByZOBFf(O30>K;^dU9_uJWn^Gr(BNfYUovPH9*|M zv(e}bBX>b&NpePfNoG!J@nlY>a!w8|28KYOhNj7#OwFu712}~y|74bC`OnV4F!>9! zLOnOo9AyRu4j~2sAd7)PN`Q$$3d-h!(sB$8Y%qD47#C2T8Uq76!vzKgC750XCI&_a z1_lS9JwP)#(e;4j7({?}K-Fsk-H^;I$jChTBD4JF6D(6WB%OgOIDi-gn1LANWuWy8 RJd@Y*Do=dCGI diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.h index 42290bc03..c0787361c 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.h @@ -1,11 +1,11 @@ // generated from `xb buildhlsl` // source: edram_load_color_7e3.cs.hlsl const uint8_t edram_load_color_7e3_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0x2B, 0x83, 0xCF, 0x33, 0xA0, 0xE0, 0x4D, 0xDA, - 0x7E, 0xE0, 0x78, 0x8A, 0xD1, 0x3E, 0x7D, 0x25, 0x01, 0x00, 0x00, 0x00, - 0x28, 0x0D, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0x36, 0x88, 0xE1, 0xE1, 0x0B, 0xC2, 0x24, 0x96, + 0x64, 0x81, 0x35, 0x83, 0xBB, 0x58, 0xAF, 0x80, 0x01, 0x00, 0x00, 0x00, + 0xF0, 0x0D, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x5C, 0x02, 0x00, 0x00, 0x6C, 0x02, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x00, - 0x8C, 0x0C, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x20, 0x02, 0x00, 0x00, + 0x54, 0x0D, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x20, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x43, 0x00, 0x05, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00, @@ -43,8 +43,8 @@ const uint8_t edram_load_color_7e3_cs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, - 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F, - 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, + 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, + 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 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, 0xCE, 0x01, 0x00, 0x00, @@ -54,8 +54,8 @@ const uint8_t edram_load_color_7e3_cs[] = { 0x30, 0x2E, 0x31, 0x00, 0x49, 0x53, 0x47, 0x4E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4F, 0x53, 0x47, 0x4E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x53, 0x48, 0x45, 0x58, 0x08, 0x0A, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x82, 0x02, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, + 0x53, 0x48, 0x45, 0x58, 0xD0, 0x0A, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0xB4, 0x02, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x06, 0x46, 0x7E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -66,46 +66,144 @@ const uint8_t edram_load_color_7e3_cs[] = { 0x32, 0x20, 0x02, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x32, 0x00, 0x02, 0x00, 0x68, 0x00, 0x00, 0x02, 0x08, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x10, 0x02, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, - 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x02, 0x00, 0x26, 0x00, 0x00, 0x07, - 0x00, 0xD0, 0x00, 0x00, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, - 0x00, 0x14, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, + 0x29, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x0C, 0x62, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1F, 0x00, 0x04, 0x03, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4F, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x0A, 0xA2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0x0D, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xD8, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x56, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x0A, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0xC2, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x01, 0x55, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x02, 0x00, + 0x26, 0x00, 0x00, 0x07, 0x00, 0xD0, 0x00, 0x00, 0x42, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA5, 0x00, 0x00, 0x08, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x70, 0x20, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x0A, + 0xF2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x56, 0x01, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0xC2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x04, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, + 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0xE8, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x0C, 0x72, 0x00, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0B, 0x72, 0x00, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, + 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x11, + 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x08, + 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, + 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, + 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x0F, + 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x08, + 0x00, 0xD0, 0x00, 0x00, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xE6, 0x0A, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x0A, 0x32, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x46, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0xAB, 0xAA, 0xAA, 0x3E, 0xAB, 0xAA, 0xAA, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x82, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x0A, + 0x62, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x0A, 0xD2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, + 0xFF, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x0F, + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -129,157 +227,76 @@ const uint8_t edram_load_color_7e3_cs[] = { 0x23, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x8C, 0x00, 0x00, 0x11, 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x8C, 0x00, 0x00, 0x11, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, - 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, - 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x0A, - 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, - 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x37, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x26, 0x00, 0x00, 0x08, 0x00, 0xD0, 0x00, 0x00, 0x72, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x05, - 0x32, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xE6, 0x0A, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0A, 0x32, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0xAB, 0xAA, 0xAA, 0x3E, 0xAB, 0xAA, 0xAA, 0x3E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x05, - 0x72, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x0A, 0x62, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, 0xD2, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, - 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8A, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, + 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x0A, + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x37, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x87, 0x00, 0x00, 0x05, 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, - 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xE8, 0xFF, 0xFF, 0xFF, - 0xE8, 0xFF, 0xFF, 0xFF, 0xE8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x37, 0x00, 0x00, 0x0C, 0x72, 0x00, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x0B, 0x72, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x08, - 0x72, 0x00, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, - 0x41, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x11, 0x72, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x06, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x08, 0x72, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x0A, + 0x02, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x0F, 0xD2, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x37, 0x00, 0x00, 0x0F, 0xD2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x08, 0x00, 0xD0, 0x00, 0x00, - 0x72, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x86, 0x03, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x82, 0x00, 0x00, 0x05, 0xD2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x56, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x05, - 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0xD6, 0x05, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x36, 0x00, 0x00, 0x05, 0xC2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x06, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, - 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x0C, 0xF2, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x46, 0x0E, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x0A, 0x12, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x02, 0x00, 0x1A, 0x80, 0x30, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x09, - 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x08, - 0xF2, 0xE0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, - 0x94, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x26, 0x00, 0x00, 0x08, 0x00, 0xD0, 0x00, 0x00, 0x72, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x86, 0x03, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x05, + 0xD2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x08, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x36, 0x00, 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xD6, 0x05, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, + 0xC2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x04, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x05, 0x32, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x86, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x0C, 0xF2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x0A, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x02, 0x00, 0x1A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x08, 0xF2, 0xE0, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, + 0x4B, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + 0x01, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, }; diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.txt index a01ae9b7e..8de2a2d8d 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_color_7e3_cs.txt @@ -8,7 +8,7 @@ // { // // uint4 xe_edram_load_store_constants;// Offset: 0 Size: 16 -// uint xe_edram_base_pitch_tiles; // Offset: 16 Size: 4 +// uint xe_edram_base_depth_pitch; // Offset: 16 Size: 4 // // } // @@ -44,14 +44,22 @@ dcl_input vThreadIDInGroup.xy dcl_input vThreadID.xy dcl_temps 8 dcl_thread_group 40, 16, 1 -and r0.x, CB0[0][1].x, l(2047) -ushr r0.y, CB0[0][1].x, l(11) -imad r0.x, vThreadGroupID.y, r0.y, r0.x -iadd r0.x, r0.x, vThreadGroupID.x -imul null, r0.y, vThreadIDInGroup.y, l(320) -imad r0.x, r0.x, l(5120), r0.y -ishl r0.y, vThreadIDInGroup.x, l(3) -iadd r0.x, r0.y, r0.x +ishl r0.x, vThreadIDInGroup.x, l(1) +and r0.yz, CB0[0][1].xxxx, l(0, 2048, 2047, 0) +if_nz r0.y + ult r0.y, vThreadIDInGroup.x, l(20) + uge r0.w, vThreadIDInGroup.x, l(20) + and r0.yw, r0.yyyw, l(0, 40, 0, -40) + iadd r0.y, r0.w, r0.y + iadd r0.x, r0.y, r0.x +endif +ushr r0.y, CB0[0][1].x, l(12) +imad r0.y, vThreadGroupID.y, r0.y, r0.z +iadd r0.y, r0.y, vThreadGroupID.x +imul null, r0.z, vThreadIDInGroup.y, l(320) +imad r0.y, r0.y, l(5120), r0.z +ishl r0.x, r0.x, l(2) +iadd r0.x, r0.x, r0.y ld_raw r0.xy, r0.x, T0[0].yxxx ushr r1.xyzw, r0.yyyx, l(10, 20, 30, 30) mov r0.zw, r1.xxxy @@ -111,4 +119,4 @@ imad r1.x, vThreadID.y, CB0[0][0].y, r1.x iadd r1.x, r1.x, CB0[0][0].x store_raw U0[0].xyzw, r1.x, r0.xyzw ret -// Approximately 67 instruction slots used +// Approximately 75 instruction slots used diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_depth_float_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/edram_load_depth_float_cs.cso index d3e41cb33b8ca27395899155c241b781f6634327..bbfabfe06ce21209d132401e8b49317a55c463ed 100644 GIT binary patch delta 507 zcmX>i*&}V}65-_hwI#;w>mB>M8?TFbFS99F%*epN(8J5XzzU>IfH;PUfguNoYk>H} zM#Hm=+$pIAB^mJrnI*{?lR25nIdixe7y^OnXHV{AYOdF0U|@b6^pz5V2Kjc&z}+V`xsh48-U((HGz1)gE&`gu2{#2Q4+3hd(l_VYZ153O&8hEKSFfuSO9N}SLUovPH9)Mf z(eNxIcR^-Jaz=bfW=?AHWKO1X&Lx}-41qxPnUg!2npuJRIfW+wWR_<6&(6Rw`3ti` zJvY!8Wd;TgAqD{;i-AE(fQdm0%I1R7atsV?FnO357f_uV0|Pt51qKEsm|g`Y21W-4 z1_z)$Kr=bf^?>9UM1Xcc)oTLXkjyN|$TImNv;5{0ECw91c0d&zKnw!R5Q;$&Nb>_R Np1{QV(238<#0>m*)3=BCyTm!@z zY#WWvFmk7)7L;Vf7i5+sXH4c~D(8H{%)k%`)bMk1CsT91CIbVT5Q6|vD+2?U0uuwH z0|Nt4F9XnEo+PL^TY~{e8Vo=dGC2SV5a3{7_z$!k1mqc5n5CfV{efmGp_$1AR1*Lc zZ$cG!V*p724dq${l?da7IEKjqC;kXfEZ6ll<7 z17-z79-tOwpzB~tr39E5U~bcbY6BVtccawgMrPr9CzyfIP;dac3TO%^+!UxhD1;b9 z7#LtC0Yi`-9)d_}K%oe7FuEMfB};)W`~+3c#UQYmpJgVatPD^SGZ2FSjOGKfL7~hz Y`5>$O#0M-B_wY<&vzWxj!veAb0H%~VW&i*H delta 278 zcmZqS+rwkz65-_BzoS!O!M$^IfH;PUfguNoYk+tG z>qet9jNAp8CCM4_C7C&?#gjRi$~k4285jbA8jeryWNKyw8o((u`6sh9%YSwThRI); z73#Tx<|s2Ta0oF709gzSQUXj2QcyM*l$K*)V1voS#JGU!)EF4p87?p|D8ck9FflMX zFfcd(?E#v}iLM7E#~=c<1FBvV=!RrwK}MFz7n$WZpI}+R$S5+okWH8qIfH;PUfguNoYk;_b zb)(T4M(&i zs6`p*9GFrm0VW2RW3-^!fJU*w<)LC+Ky_+BD;O>?FgU@ChX#TJ(2YPdInnii0*FC` yfdOVNFaR0ZCmXPcNP>b53;Qf6S_5SqM@MOc%IL4W~djT{35n-G)@6XOzKVo+mXU}w0%z@RkwE{nJ+x(Y@I zpjHtE1}UgcO`s`CFjEwm7(ntYlS5hLC;PDKNb&&{1Dyv3%ut#WNHa~|$f`W?0n5Za OJd-c5S^zN*kOu$;DJqo! diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_32bpp_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_32bpp_cs.h index 7d88ff3b3..f14a3f2bb 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_32bpp_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_32bpp_cs.h @@ -1,11 +1,11 @@ // generated from `xb buildhlsl` // source: edram_store_color_32bpp.cs.hlsl const uint8_t edram_store_color_32bpp_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0xA2, 0x59, 0xF3, 0xAF, 0xB7, 0x0E, 0x93, 0x10, - 0x20, 0x6D, 0x17, 0x04, 0xC8, 0x29, 0x8B, 0x11, 0x01, 0x00, 0x00, 0x00, - 0x44, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0xF1, 0x88, 0xD8, 0xB9, 0x3D, 0x78, 0xA2, 0x85, + 0x08, 0xDD, 0xC2, 0x3B, 0xB4, 0x3E, 0x04, 0xC0, 0x01, 0x00, 0x00, 0x00, + 0x0C, 0x06, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x5C, 0x02, 0x00, 0x00, 0x6C, 0x02, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x00, - 0xA8, 0x04, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x20, 0x02, 0x00, 0x00, + 0x70, 0x05, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x20, 0x02, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01, 0x05, 0x53, 0x43, 0x00, 0x05, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x13, 0x13, 0x44, 0x25, 0x3C, 0x00, 0x00, 0x00, @@ -43,8 +43,8 @@ const uint8_t edram_store_color_32bpp_cs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, - 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F, - 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, + 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, + 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 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, 0xCE, 0x01, 0x00, 0x00, @@ -54,8 +54,8 @@ const uint8_t edram_store_color_32bpp_cs[] = { 0x30, 0x2E, 0x31, 0x00, 0x49, 0x53, 0x47, 0x4E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4F, 0x53, 0x47, 0x4E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x53, 0x48, 0x45, 0x58, 0x24, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x89, 0x00, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, + 0x53, 0x48, 0x45, 0x58, 0xEC, 0x02, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0xBB, 0x00, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, 0x46, 0x8E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x00, 0x00, 0x06, 0x46, 0x7E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -77,41 +77,57 @@ const uint8_t edram_store_color_32bpp_cs[] = { 0x00, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x08, 0xF2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x7E, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1A, 0x10, 0x02, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, + 0x29, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x0C, 0x62, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x06, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1F, 0x00, 0x04, 0x03, 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x4F, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x0A, 0xA2, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x56, 0x0D, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xD8, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x00, 0x01, 0x55, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x02, 0x00, + 0x26, 0x00, 0x00, 0x07, 0x00, 0xD0, 0x00, 0x00, 0x42, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x40, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x02, 0x00, 0x26, 0x00, 0x00, 0x07, - 0x00, 0xD0, 0x00, 0x00, 0x22, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, - 0x00, 0x14, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x08, 0xF2, 0xE0, 0x21, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, - 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xA6, 0x00, 0x00, 0x08, 0xF2, 0xE0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x46, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, + 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 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, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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, 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, - 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, }; diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_32bpp_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_32bpp_cs.txt index f5aa44979..c86ae5714 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_32bpp_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_32bpp_cs.txt @@ -8,7 +8,7 @@ // { // // uint4 xe_edram_load_store_constants;// Offset: 0 Size: 16 -// uint xe_edram_base_pitch_tiles; // Offset: 16 Size: 4 +// uint xe_edram_base_depth_pitch; // Offset: 16 Size: 4 // // } // @@ -48,14 +48,22 @@ ishl r0.x, vThreadID.x, l(4) imad r0.x, vThreadID.y, CB0[0][0].y, r0.x iadd r0.x, r0.x, CB0[0][0].x ld_raw r0.xyzw, r0.x, T0[0].xyzw -and r1.x, CB0[0][1].x, l(2047) -ushr r1.y, CB0[0][1].x, l(11) -imad r1.x, vThreadGroupID.y, r1.y, r1.x -iadd r1.x, r1.x, vThreadGroupID.x -imul null, r1.y, vThreadIDInGroup.y, l(320) -imad r1.x, r1.x, l(5120), r1.y -ishl r1.y, vThreadIDInGroup.x, l(4) -iadd r1.x, r1.y, r1.x +ishl r1.x, vThreadIDInGroup.x, l(2) +and r1.yz, CB0[0][1].xxxx, l(0, 2048, 2047, 0) +if_nz r1.y + ult r1.y, vThreadIDInGroup.x, l(10) + uge r1.w, vThreadIDInGroup.x, l(10) + and r1.yw, r1.yyyw, l(0, 40, 0, -40) + iadd r1.y, r1.w, r1.y + iadd r1.x, r1.y, r1.x +endif +ushr r1.y, CB0[0][1].x, l(12) +imad r1.y, vThreadGroupID.y, r1.y, r1.z +iadd r1.y, r1.y, vThreadGroupID.x +imul null, r1.z, vThreadIDInGroup.y, l(320) +imad r1.y, r1.y, l(5120), r1.z +ishl r1.x, r1.x, l(2) +iadd r1.x, r1.x, r1.y store_raw U0[0].xyzw, r1.x, r0.xyzw ret -// Approximately 14 instruction slots used +// Approximately 22 instruction slots used diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.cso index ef0716e881d099358e70754fac00d04a610768d5..103287a27364b5dad2948ea1b19375dd0b29ab85 100644 GIT binary patch delta 53 zcmV-50LuU13g8M9L|8&YCQ|gA+e>3dstT?_RUX#0u@ve73uI+*bZB32X>?;~vk3yr L0RarN)dPzGK&KRV delta 53 zcmaFB^?*ynCBn&B;a%^M&VcQ diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.h index e7767610f..88a998db8 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.h @@ -1,8 +1,8 @@ // generated from `xb buildhlsl` // source: edram_store_color_64bpp.cs.hlsl const uint8_t edram_store_color_64bpp_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0x20, 0xEE, 0x8D, 0xC4, 0x89, 0x50, 0xB7, 0x3D, - 0x32, 0x78, 0x07, 0x60, 0xD4, 0xB9, 0x2D, 0x8B, 0x01, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0x26, 0x52, 0xF4, 0x9C, 0xDB, 0x4B, 0x63, 0x47, + 0xAA, 0x0A, 0xAE, 0x41, 0x55, 0x1E, 0xD6, 0xB5, 0x01, 0x00, 0x00, 0x00, 0x60, 0x05, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x5C, 0x02, 0x00, 0x00, 0x6C, 0x02, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x00, 0xC4, 0x04, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x20, 0x02, 0x00, 0x00, @@ -43,8 +43,8 @@ const uint8_t edram_store_color_64bpp_cs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, - 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F, - 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, + 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, + 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 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, 0xCE, 0x01, 0x00, 0x00, @@ -82,7 +82,7 @@ const uint8_t edram_store_color_64bpp_cs[] = { 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x55, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x06, diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.txt index 40cb5628b..cddc36cfc 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_64bpp_cs.txt @@ -8,7 +8,7 @@ // { // // uint4 xe_edram_load_store_constants;// Offset: 0 Size: 16 -// uint xe_edram_base_pitch_tiles; // Offset: 16 Size: 4 +// uint xe_edram_base_depth_pitch; // Offset: 16 Size: 4 // // } // @@ -49,7 +49,7 @@ imad r0.x, vThreadID.y, CB0[0][0].y, r0.x iadd r0.x, r0.x, CB0[0][0].x ld_raw r0.xyzw, r0.x, T0[0].xyzw and r1.x, CB0[0][1].x, l(2047) -ushr r1.y, CB0[0][1].x, l(11) +ushr r1.y, CB0[0][1].x, l(12) imad r1.x, vThreadGroupID.y, r1.y, r1.x ishl r1.y, vThreadGroupID.x, l(1) iadd r1.x, r1.y, r1.x diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_7e3_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_7e3_cs.cso index 2b0680e33cc30a26391c1dd1477975bdd54707b0..b5c7363073b3d1e0acd60d44ba8e416cb176d029 100644 GIT binary patch delta 540 zcmdlZIYrvgCBn&B>HO-K2HzKy?q7H8u+SH=GmH!j3{!X+7+8U{2@uCHF)-u+aSagv z*l2i`kvk=|pd=%{AhRSnV=^aGIcEtM14AHC{oKu+O!XY~nhXqVP7DG-tqcrY3QP=) z4h#$+LxGsb2q+F>vo#n1NeBS(nH+!w2Lr=@b|4J}@(e7@Tu}A?KrKyZW{LpS0rj%O z#H}FmVPFe2fRX_~O+ruuU=D$4f{R1tL5{rf|NnnEOamFfj+lIxTb@M}XyarZZiRXt zpz+E;7sKq95@2G0+Rq>bH4q!t{Wg z#sG9TEG&TGtHw1D1(IfH;PUfguNoYk*i` zqv2Ub?t;vcHfA)pMu-4d8TQ5CCdrVBl&n0Mj4> zWH6%x1H*rI28KyI3WnT3zA^&?2TZM$026~1RG$`TV8{XD8X#ui z+-P)$kvk=|pd=%{AhRSnV=^aGIcE(U14AHC!~D&iOwla$nhXqVLJR^7APrm!Obm<; z3}80UWS%6bI9r1OP!<9}HZnN?2@v35VEE4tVahYGFiSzz`vc8XLNk*Ks4M^|-h?Xd z#sHE48p^c@DiOvDaSW3KPyz@vAQZ!m|NsBXF)*;h47P%*2U|LMC%Zh0DA1tE9PA35 zJU}hVK-VcvHe?sp)PgDmYKFTC=29*JCI&U2p$r!o7@Q{OvWo}8jEAWJg$IKO0|U$y sV0f{^!wYIMEX+X8Lzk19e33n$QD?FvhcGYD7zREd28AKxNDEsixjFEwX;R*)>11pd=0pb`Y28J9Ut^r~T zj*UiV7`Y2FOOi9TV8{XD8X)Fi z+h}x#kvk=|pd=%{AhRSnV=^aGIcEzq14AHC!^6#;O!FD*H5nM#gct-EKqhf1FflMX zFfaf$gZMm2P;s^f1E2^5fYdQL00|J_U|{&q4q?hOurNzO)%yd@R6;Y83#cprDBgrB z?#2L;02<1*2r3cA3vmpS15g48G$0hijsO4u%P}yp!wj~9ss~#-`7et+izv{b$v!L! zt~@|3%0Sn_lu8LOF~HoW1=R*L3hqXj92ZcX8qf-c3k(cSlQ*)62f|H&>H>uhg9rly z%oJegvBN_TNew6jL5@Y2lbS5bYAh=Wlm)2(0bp!^0m#k3hy?l|kyU$X$?GlAIA=l9`iQJeiZJoO2IQDiEk){pL=l`HU(+6F7w!1Qi>Sb#%0Fn>@ zGMC8#NN_MP{AUN!P$191!psF#@6W)%-UMWWfE17hTFJoZz`&pZq9+@23QvB(&SDGV z1wd7TRA8t?lCwfG<;MU2|K)(Dh^vBh$pKXd+E#iEwh3yS}2hyYi35C J&0krC`2j1J6cGRb delta 53 zcmV-50LuS}Du^l+L|8&YL!VTepv~4V4vk3z0 L0|5)O^#v0TJ+~B6 diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_tile_sample_64bpp_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_tile_sample_64bpp_cs.h index c6e0c497a..0ac8fae67 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_tile_sample_64bpp_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_tile_sample_64bpp_cs.h @@ -1,8 +1,8 @@ // generated from `xb buildhlsl` // source: edram_tile_sample_64bpp.cs.hlsl const uint8_t edram_tile_sample_64bpp_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0x43, 0x9F, 0x54, 0x9B, 0xA0, 0xCD, 0xED, 0x1E, - 0xA0, 0x74, 0x9F, 0x9C, 0x8E, 0x03, 0x1E, 0x97, 0x01, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0x1E, 0xD7, 0xAB, 0x8B, 0x5C, 0x94, 0x10, 0x00, + 0x8D, 0x19, 0x1C, 0xCD, 0xAA, 0xD8, 0xB8, 0xB4, 0x01, 0x00, 0x00, 0x00, 0x08, 0x15, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x5C, 0x02, 0x00, 0x00, 0x6C, 0x02, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x00, 0x6C, 0x14, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x20, 0x02, 0x00, 0x00, @@ -43,8 +43,8 @@ const uint8_t edram_tile_sample_64bpp_cs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x01, 0x00, 0x00, 0x78, 0x65, 0x5F, 0x65, 0x64, 0x72, 0x61, 0x6D, - 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x70, 0x69, 0x74, 0x63, 0x68, 0x5F, - 0x74, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, + 0x5F, 0x62, 0x61, 0x73, 0x65, 0x5F, 0x64, 0x65, 0x70, 0x74, 0x68, 0x5F, + 0x70, 0x69, 0x74, 0x63, 0x68, 0x00, 0x64, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x13, 0x00, 0x01, 0x00, 0x01, 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, 0xCE, 0x01, 0x00, 0x00, @@ -128,7 +128,7 @@ const uint8_t edram_tile_sample_64bpp_cs[] = { 0xFF, 0x07, 0x00, 0x00, 0x55, 0x00, 0x00, 0x09, 0x82, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, - 0x0B, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x82, 0x00, 0x10, 0x00, + 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_tile_sample_64bpp_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_tile_sample_64bpp_cs.txt index 5f67a4591..781839431 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_tile_sample_64bpp_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_tile_sample_64bpp_cs.txt @@ -8,7 +8,7 @@ // { // // uint4 xe_edram_load_store_constants;// Offset: 0 Size: 16 -// uint xe_edram_base_pitch_tiles; // Offset: 16 Size: 4 +// uint xe_edram_base_depth_pitch; // Offset: 16 Size: 4 // // } // @@ -67,7 +67,7 @@ iadd r3.zw, r2.xxxy, l(0, 0, 2, 0) iadd r2.yz, r2.zzwz, r3.zzwz ishl r2.yz, r3.xxyx, r2.yyzy and r0.w, CB0[0][1].x, l(2047) -ushr r2.w, CB0[0][1].x, l(11) +ushr r2.w, CB0[0][1].x, l(12) imad r0.w, r1.w, r2.w, r0.w ishl r1.z, r1.z, l(1) iadd r0.w, r0.w, r1.z diff --git a/src/xenia/gpu/d3d12/shaders/edram_load_store.hlsli b/src/xenia/gpu/d3d12/shaders/edram_load_store.hlsli index dd17089a4..131cccffa 100644 --- a/src/xenia/gpu/d3d12/shaders/edram_load_store.hlsli +++ b/src/xenia/gpu/d3d12/shaders/edram_load_store.hlsli @@ -4,8 +4,10 @@ // Root constants. cbuffer XeEDRAMLoadStoreConstants : register(b0) { uint4 xe_edram_load_store_constants; - // Base in the lower 11 bits, pitch in the upper part, in tiles. - uint xe_edram_base_pitch_tiles; + // 0:10 - EDRAM base in tiles. + // 11 - whether it's a depth render target. + // 12: - EDRAM pitch in tiles. + uint xe_edram_base_depth_pitch; }; // For loading and storing render targets. @@ -46,8 +48,14 @@ ByteAddressBuffer xe_edram_load_store_source : register(t0); RWByteAddressBuffer xe_edram_load_store_dest : register(u0); uint XeEDRAMOffset32bpp(uint2 tile_index, uint2 tile_sample_index) { - return ((xe_edram_base_pitch_tiles & 2047u) + - tile_index.y * (xe_edram_base_pitch_tiles >> 11u) + tile_index.x) * + if (xe_edram_base_depth_pitch & (1u << 11u)) { + // Depth render targets apparently have samples 0:39 and 40:79 swapped - + // affects loading depth to EDRAM via color aliasing in GTA IV and Halo 3. + tile_sample_index.x += 40u * uint(tile_sample_index.x < 40u) - + 40u * uint(tile_sample_index.x >= 40u); + } + return ((xe_edram_base_depth_pitch & 2047u) + + tile_index.y * (xe_edram_base_depth_pitch >> 12u) + tile_index.x) * 5120u + tile_sample_index.y * 320u + tile_sample_index.x * 4u; } @@ -55,8 +63,8 @@ uint XeEDRAMOffset32bpp(uint2 tile_index, uint2 tile_sample_index) { // one containing the top 80x8 samples, and the second one containing the bottom // 80x8 samples. uint XeEDRAMOffset64bpp(uint2 tile_pair_index, uint2 tile_pair_sample_index) { - return ((xe_edram_base_pitch_tiles & 2047u) + - tile_pair_index.y * (xe_edram_base_pitch_tiles >> 11u) + + return ((xe_edram_base_depth_pitch & 2047u) + + tile_pair_index.y * (xe_edram_base_depth_pitch >> 12u) + (tile_pair_index.x << 1u)) * 5120u + tile_pair_sample_index.y * 640u + tile_pair_sample_index.x * 8u; }