From 6e3cf5dd227773f4b108ae8f755b270d3b78c1c0 Mon Sep 17 00:00:00 2001 From: Triang3l Date: Fri, 21 Sep 2018 21:22:33 +0300 Subject: [PATCH] [D3D12] Cleanup selection in shaders and add some DXT5 alpha code --- .../shaders/dxbc/edram_load_color_7e3_cs.cso | Bin 3568 -> 3232 bytes .../shaders/dxbc/edram_load_color_7e3_cs.h | 200 +++++----- .../shaders/dxbc/edram_load_color_7e3_cs.txt | 54 ++- .../dxbc/edram_load_depth_float_cs.cso | Bin 3468 -> 3184 bytes .../shaders/dxbc/edram_load_depth_float_cs.h | 259 ++++++------- .../dxbc/edram_load_depth_float_cs.txt | 49 ++- .../shaders/dxbc/edram_store_color_7e3_cs.cso | Bin 3476 -> 3244 bytes .../shaders/dxbc/edram_store_color_7e3_cs.h | 355 +++++++++--------- .../shaders/dxbc/edram_store_color_7e3_cs.txt | 42 +-- .../dxbc/edram_store_depth_float_cs.cso | Bin 2460 -> 2344 bytes .../shaders/dxbc/edram_store_depth_float_cs.h | 211 +++++------ .../dxbc/edram_store_depth_float_cs.txt | 23 +- .../dxbc/texture_load_depth_float_cs.cso | Bin 6992 -> 6824 bytes .../dxbc/texture_load_depth_float_cs.h | 98 +++-- .../dxbc/texture_load_depth_float_cs.txt | 28 +- .../gpu/d3d12/shaders/pixel_formats.hlsli | 101 ++++- 16 files changed, 681 insertions(+), 739 deletions(-) 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 f0be4894da7ba59d91e4c4df871837ee6edb2da5..045c1c76b9c45b187020cb590954ea5245039459 100644 GIT binary patch delta 634 zcmew$y+G2)CBn&h@7i4rYYf{aC3y*VtWAD?l97RdVF3>V11pd=0pb`Y28J9Ut^r~e zo{dI+Oq>mz3=Dxl1qqWonerLgH~(bX&ZOE7)KbJC0M_TmB*4H7)GNopz=bTvI$4lS zUJzt5Oa+K$o$Saa&&vi8ZEytAtdn!u#C6RX7&t+?p)w3CP<=2OB;LcoAPBZ$@)AnO!&Jg#L42U8 zJd*=BBqkqW71^A@A;CDn{%3&te=nCi+{Zv?V)Zdd9Oh$~-`FNca;NLUd<@eGlLhfX zJ_dyb2(&Q^FfdNu%O$_rf=7i>))^?o4whg52Noy^Ndhr15Hn6*%PT+e0n6k$yaJ3I HK#ns2O=wIE delta 861 zcmcIiyGjF55S@K^ckh}t2?;C`;u0bTixh^ajfF9yf)5ZPq%fUeBM8fwSKJGop1d~PcH%_Paq}h*7OvZ zqRTx|Wm$fS%_ze}-_CG`Jt@z`kL{;bWJGA0`>r*N+BNh{%rS3!3c#iw@r)VP5LN`> zl#gRHg|?7v(BA;0hdhEYPxNe4VV^Di%@J`4D~4wb^W>x)>WqdcI2n!P^hLwjs3}R+JLO4QlJo;bqaT`0486V#GDb*x xjegP*i77+pr0>GOs?L{F((;=a+7bkLKWbV)OQLC_mGFa4Q*0$txMwR-{{Bb5S?4NJ$B{bE|?s|0G%H#!JM6-Xk(&YVqsw+HZ~fiG$Fx`n9xn>uP~Tc z(^*(p=>H&gRycF)64~V4WM|&YdpkE;o0c1$^S%8ZLLUp0=|}UsbM<_%?f}4j9>As8 zBwPr98$zG(wer$97V1<1Bt$sFCvoR^<6rS6!XdT%K#=ww76Qm%PnR4QLs<`bR+=-> z#kQ>ba(;VkQ*`lGMuQkY@eEUetl`_p`7Ho%Nyl(lgS_kiHO`3^z-(4rg4M}Toqd`4 zHLwY8B%yTJLL9r^^>)q3Tc)k@oyO)_-qvVi^JnA4jj)wFlBsjRt}fwcZc~i_R#U$; znh0vgk@%oC=-ZVgd{yPD-JFfQffHj)qSAGzhK{Zj;hhQ##F*$v*&Z18^iWiGiQy6W XutPpoLV%$k(~nC07%%-?mRY#+G$Ej1#3yNlsGUVVz(UZ%Qc*!rA>CkQBMA1v z!dCx43$f9E5Fv#Sh%;-htQUr}%vyI7TMGbc zDFBzSNKv%`b}0@iKD~OOV(Z-`z!o)JF}}zUN#KGGtOUM@ZuF$W zqVlmRHm6E$5@yCA6E}t$5jIQ58|~nQ^!vx?W_Si*31-TmgIBWRMGD%Aaa!~#GlGvg z#HO6k<`G=%(K%fM$V7(Vl-jT)9;xwv)=R9bTxg!iAluC@;GoE8N-56MVfK7RD7q;4N3<~SWij+Jb~6UU%xW| z=uZI%s&&FH2RI}g6P!WV;i{(q66zn|DL-N&``{&3utwkj$7kWV-vYsywCyY2z0FRZPqP8?wkEd=#!-P!1Tx+McFA*{c|`vZZyj z(_CkrPu`n2usn366Z8OP#-519V@ecW4!kqHd9AB8cuZ*=Ddh>azP%cFB^PWxohGEK zR1I7f74fsJ%C|BwR5e!B^FyKy{{SKYl{?l>wcbDH7|2?7tJ;R&qLx0r4o%ZXDid7v K?TB$q?B*ANVMmhy delta 596 zcmZ`$yGz4x5dQLO(j+C7K76#aSg}RyAXq5WN#X-R5vq%HaC9t)qMKkB2f;mB8Cw2*Oc#-3rMd3{D~RB z!Ye?I?oz`@r8)OF09*j0(nzOwbAsynf-P%YnK3BNzuhSBNC zA`*x!;+6X^iNs=kS+aJDYUV7pt*pcOzBII{mkqB2o#}acGYiz!-C}T~+{GGsH_AQ1 z6UdFCfkx|AuE^8;sK*$#O`a~TBo*vft8MLt(i=<kk5=Plf;h diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_7e3_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_7e3_cs.h index 9f93507dc..b1f4153e3 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_7e3_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_7e3_cs.h @@ -1,11 +1,11 @@ // generated from `xb buildhlsl` // source: edram_store_color_7e3.cs.hlsl const uint8_t edram_store_color_7e3_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0x22, 0xCF, 0xAB, 0xE9, 0x30, 0xF7, 0xA0, 0x75, - 0xBF, 0xAE, 0xC6, 0xC3, 0x12, 0xF4, 0x16, 0xCC, 0x01, 0x00, 0x00, 0x00, - 0x94, 0x0D, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0xC3, 0x92, 0x18, 0x12, 0x81, 0x3F, 0x80, 0xF2, + 0x5F, 0xE2, 0x72, 0xE4, 0xA4, 0x61, 0xA3, 0xF8, 0x01, 0x00, 0x00, 0x00, + 0xAC, 0x0C, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x5C, 0x02, 0x00, 0x00, 0x6C, 0x02, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x00, - 0xF8, 0x0C, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x20, 0x02, 0x00, 0x00, + 0x10, 0x0C, 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, @@ -54,8 +54,8 @@ const uint8_t edram_store_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, 0x74, 0x0A, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x9D, 0x02, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, + 0x53, 0x48, 0x45, 0x58, 0x8C, 0x09, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x63, 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, @@ -64,7 +64,7 @@ const uint8_t edram_store_color_7e3_cs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x32, 0x10, 0x02, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x32, 0x20, 0x02, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x32, 0x00, 0x02, 0x00, - 0x68, 0x00, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x04, + 0x68, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x04, 0x28, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, @@ -87,105 +87,20 @@ const uint8_t edram_store_color_7e3_cs[] = { 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x08, 0x00, 0xD0, 0x00, 0x00, - 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x0A, 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x56, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x41, 0x00, 0x00, 0xFF, 0x41, - 0x00, 0x00, 0xFF, 0x41, 0x1E, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0xC2, - 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x14, - 0x72, 0x00, 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, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 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, 0x0B, - 0x72, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, - 0x41, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x7D, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x08, - 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, - 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x0A, 0xE2, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x07, 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x56, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x0A, 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3E, - 0x00, 0x00, 0x80, 0x3E, 0x00, 0x00, 0x80, 0x3E, 0x01, 0x00, 0x00, 0x0A, - 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x09, 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x09, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x0F, 0xE2, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0xE2, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x09, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x0F, - 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, - 0x0A, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x56, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, - 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x1A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, - 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x20, 0x00, 0x05, - 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x22, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x1C, 0x00, 0x00, 0x05, - 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x0A, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x05, 0xA2, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0xA6, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x83, 0x00, 0x00, 0x05, 0x52, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xF6, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x0A, - 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, - 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x08, 0x00, 0xD0, 0x00, 0x00, - 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0x41, 0x00, 0x00, 0xFF, 0x41, 0x00, 0x00, 0xFF, 0x41, - 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, 0xE2, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, - 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0xC2, 0x8C, 0x00, 0x00, 0x14, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x41, + 0x00, 0x00, 0xFF, 0x41, 0x00, 0x00, 0xFF, 0x41, 0x8C, 0x00, 0x00, 0x14, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 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, - 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 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, 0x0B, 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x80, @@ -193,102 +108,168 @@ const uint8_t edram_store_color_7e3_cs[] = { 0x7D, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 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, 0x1E, 0x00, 0x00, 0x08, - 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x80, - 0x41, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3E, 0x00, 0x00, 0x80, 0x3E, - 0x00, 0x00, 0x80, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, - 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x09, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x46, 0x02, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x0A, + 0x72, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3E, + 0x00, 0x00, 0x80, 0x3E, 0x00, 0x00, 0x80, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x06, 0x09, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, - 0xFF, 0x7F, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0xC2, + 0x00, 0x00, 0x00, 0xC2, 0x37, 0x00, 0x00, 0x09, 0xE2, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x06, 0x09, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, + 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x0F, + 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x56, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x8A, 0x00, 0x00, 0x0F, 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x09, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x36, 0x20, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, + 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, + 0x1C, 0x00, 0x00, 0x05, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x05, + 0xA2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0xA6, 0x0E, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x05, 0x52, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xF6, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x0A, + 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x41, + 0x00, 0x00, 0xFF, 0x41, 0x00, 0x00, 0xFF, 0x41, 0x00, 0x00, 0x00, 0x00, + 0x8C, 0x00, 0x00, 0x14, 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x55, 0x00, 0x00, 0x0A, + 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x01, 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, 0x0B, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, + 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x07, + 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x0E, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x4F, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x3E, 0x00, 0x00, 0x80, 0x3E, 0x00, 0x00, 0x80, 0x3E, + 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, 0x72, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0xC2, + 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x09, + 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, + 0xE2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x09, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, + 0x8A, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, 0x01, 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, + 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x96, 0x07, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 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, 0x46, 0x02, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x72, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x96, 0x07, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x0F, - 0x72, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 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, - 0x46, 0x02, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, - 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, - 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, - 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x20, 0x00, 0x05, - 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x1C, 0x00, 0x00, 0x05, - 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x42, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x36, 0x20, 0x00, 0x05, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0x40, 0x40, 0x1C, 0x00, 0x00, 0x05, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 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, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0C, 0x32, 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, 0x08, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x04, 0x03, 0x0A, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x4F, 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, 0x07, 0x82, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3A, 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, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, - 0x55, 0x00, 0x00, 0x09, 0x82, 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, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x10, 0x02, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, - 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x02, 0x00, 0x26, 0x00, 0x00, 0x07, - 0x00, 0xD0, 0x00, 0x00, 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x1A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, - 0x23, 0x00, 0x00, 0x09, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x23, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, - 0x00, 0x14, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x08, - 0x32, 0xE0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, - 0x94, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 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, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x0C, 0x32, 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, 0x08, 0x00, 0x00, + 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1F, 0x00, 0x04, 0x03, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x4F, 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, 0x07, 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3A, 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, + 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x55, 0x00, 0x00, 0x09, + 0x82, 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, + 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, + 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x10, 0x02, 0x00, 0x26, 0x00, 0x00, 0x07, 0x00, 0xD0, 0x00, 0x00, + 0x12, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1A, 0x20, 0x02, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, + 0x82, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, + 0x0A, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, + 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x42, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x08, 0x32, 0xE0, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, + 0x44, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, + 0x13, 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, 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, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 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_store_color_7e3_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_7e3_cs.txt index 67fe5c06c..bb1904806 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_7e3_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_color_7e3_cs.txt @@ -42,7 +42,7 @@ dcl_uav_raw U0[0:0], space=0 dcl_input vThreadGroupID.xy dcl_input vThreadIDInGroup.xy dcl_input vThreadID.xy -dcl_temps 6 +dcl_temps 5 dcl_thread_group 40, 16, 1 ishl r0.x, vThreadID.x, l(4) imad r0.x, vThreadID.y, CB0[0][0].y, r0.x @@ -52,18 +52,15 @@ ushr r1.xyzw, r0.xyzw, l(16, 16, 16, 16) f16tof32 r2.yw, r0.xxxy f16tof32 r2.xz, r1.yyxy uge r3.xyz, l(0x7fffffff, 0x7fffffff, 0x7fffffff, 0), r2.yzwy -and r3.xyz, r3.xyzx, l(1, 1, 1, 0) -imul null, r2.yzw, r2.yyzw, r3.xxyz +and r2.yzw, r2.yyzw, r3.xxyz umin r2.yzw, r2.yyzw, l(0, 0x41ff0000, 0x41ff0000, 0x41ff0000) -iadd r3.xyz, r2.yzwy, l(0xc2000000, 0xc2000000, 0xc2000000, 0) -bfi r4.xyz, l(23, 23, 23, 0), l(0, 0, 0, 0), r2.yzwy, l(0x00800000, 0x00800000, 0x00800000, 0) -ushr r5.xyz, r2.yzwy, l(23, 23, 23, 0) -iadd r5.xyz, -r5.xyzx, l(125, 125, 125, 0) -ushr r4.xyz, r4.xyzx, r5.xyzx -iadd r4.xyz, -r3.xyzx, r4.xyzx -ult r2.yzw, r2.yyzw, l(0, 0x3e800000, 0x3e800000, 0x3e800000) -and r2.yzw, r2.yyzw, l(0, 1, 1, 1) -imad r2.yzw, r4.xxyz, r2.yyzw, r3.xxyz +bfi r3.xyz, l(23, 23, 23, 0), l(0, 0, 0, 0), r2.yzwy, l(0x00800000, 0x00800000, 0x00800000, 0) +ushr r4.xyz, r2.yzwy, l(23, 23, 23, 0) +iadd r4.xyz, -r4.xyzx, l(125, 125, 125, 0) +ushr r3.xyz, r3.xyzx, r4.xyzx +ult r4.xyz, r2.yzwy, l(0x3e800000, 0x3e800000, 0x3e800000, 0) +iadd r2.yzw, r2.yyzw, l(0, 0xc2000000, 0xc2000000, 0xc2000000) +movc r2.yzw, r4.xxyz, r3.xxyz, r2.yyzw iadd r3.xyz, r2.yzwy, l(0x00007fff, 0x00007fff, 0x00007fff, 0) ubfe r2.yzw, l(0, 1, 1, 1), l(0, 16, 16, 16), r2.yyzw iadd r2.yzw, r2.yyzw, r3.xxyz @@ -77,18 +74,15 @@ imad r0.x, r0.y, l(0x40000000), r0.x f16tof32 r2.yw, r0.zzzw f16tof32 r2.xz, r1.wwzw uge r1.xyz, l(0x7fffffff, 0x7fffffff, 0x7fffffff, 0), r2.yzwy -and r1.xyz, r1.xyzx, l(1, 1, 1, 0) -imul null, r1.xyz, r1.xyzx, r2.yzwy +and r1.xyz, r2.yzwy, r1.xyzx umin r1.xyz, r1.xyzx, l(0x41ff0000, 0x41ff0000, 0x41ff0000, 0) -iadd r2.yzw, r1.xxyz, l(0, 0xc2000000, 0xc2000000, 0xc2000000) -bfi r3.xyz, l(23, 23, 23, 0), l(0, 0, 0, 0), r1.xyzx, l(0x00800000, 0x00800000, 0x00800000, 0) -ushr r4.xyz, r1.xyzx, l(23, 23, 23, 0) -iadd r4.xyz, -r4.xyzx, l(125, 125, 125, 0) -ushr r3.xyz, r3.xyzx, r4.xyzx -iadd r3.xyz, -r2.yzwy, r3.xyzx -ult r1.xyz, r1.xyzx, l(0x3e800000, 0x3e800000, 0x3e800000, 0) -and r1.xyz, r1.xyzx, l(1, 1, 1, 0) -imad r1.xyz, r3.xyzx, r1.xyzx, r2.yzwy +bfi r2.yzw, l(0, 23, 23, 23), l(0, 0, 0, 0), r1.xxyz, l(0, 0x00800000, 0x00800000, 0x00800000) +ushr r3.xyz, r1.xyzx, l(23, 23, 23, 0) +iadd r3.xyz, -r3.xyzx, l(125, 125, 125, 0) +ushr r2.yzw, r2.yyzw, r3.xxyz +ult r3.xyz, r1.xyzx, l(0x3e800000, 0x3e800000, 0x3e800000, 0) +iadd r1.xyz, r1.xyzx, l(0xc2000000, 0xc2000000, 0xc2000000, 0) +movc r1.xyz, r3.xyzx, r2.yzwy, r1.xyzx iadd r2.yzw, r1.xxyz, l(0, 0x00007fff, 0x00007fff, 0x00007fff) ubfe r1.xyz, l(1, 1, 1, 0), l(16, 16, 16, 0), r1.xyzx iadd r1.xyz, r1.xyzx, r2.yzwy @@ -118,4 +112,4 @@ ishl r0.z, r0.z, l(2) iadd r0.z, r0.z, r0.w store_raw U0[0].xy, r0.z, r0.xyxx ret -// Approximately 74 instruction slots used +// Approximately 68 instruction slots used diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.cso index 3df8391af195af6d9a5bde031820f50807a2b367..e48d1756c394798b3b357f2691f30ee0cb3c60ab 100644 GIT binary patch delta 221 zcmbOuyh6yxCBn(M``@Zt#}BFYeVoYS`1_9VTt)^41`SRI238<#0>m*)3=BCyTm!^C z92<@Nm^eAu7#IS93YsQ&GUYR}PX5Vsj*)%x7iI^}9tH-HPYePK%#-)Bh)=Fzv0!AG zyp=_rmj!5$8=pXfBamj9{E|hUof#rBS)WxDsK%95o>6YHA)EMQ9~J>d^U1xe;+#+w t3{0EXvPLsYY63NY+ynw3DG(3@V&2J$oaPfBuuR;;GdY3NfCcDG1^|ohEPwz2 delta 307 zcmZ1>G)LITCBn(so56(7^G0ZiT^?tQ*@1`e7#SEC=5R7FumWilAdX>TV8{XD8X#ui z+-T&-#970}zz_&jFn@98tom|2yz@f&#z`<~Vfno9qW{1f(tP+zs zSOqwH7#Ku8F$gfQOcrGEXJnn6$fC{*GT)6)purJHvreAMB5%q95n+JQAQf^zinfnEXw akl`R80>pfi*K(Lo;#8T$DKq&32MYlDsxuS- diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.h b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.h index 47c6c936e..fe6aa309e 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.h +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.h @@ -1,11 +1,11 @@ // generated from `xb buildhlsl` // source: edram_store_depth_float.cs.hlsl const uint8_t edram_store_depth_float_cs[] = { - 0x44, 0x58, 0x42, 0x43, 0x4B, 0x00, 0x34, 0x0E, 0x49, 0xD8, 0x55, 0x74, - 0x3E, 0x6E, 0x09, 0x5C, 0x36, 0xC0, 0xE1, 0xEE, 0x01, 0x00, 0x00, 0x00, - 0x9C, 0x09, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x44, 0x58, 0x42, 0x43, 0x8B, 0xFE, 0xAA, 0xDA, 0xC7, 0xC2, 0x25, 0x8E, + 0xF1, 0x91, 0x0C, 0x41, 0xFB, 0xDC, 0x13, 0x9D, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x09, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x5C, 0x02, 0x00, 0x00, 0x6C, 0x02, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x00, 0x52, 0x44, 0x45, 0x46, 0x20, 0x02, 0x00, 0x00, + 0x8C, 0x08, 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, @@ -54,8 +54,8 @@ const uint8_t edram_store_depth_float_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, 0x7C, 0x06, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, - 0x9F, 0x01, 0x00, 0x00, 0x6A, 0x08, 0x00, 0x01, 0x59, 0x00, 0x00, 0x07, + 0x53, 0x48, 0x45, 0x58, 0x08, 0x06, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, + 0x82, 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, 0xA1, 0x00, 0x00, 0x06, 0x46, 0x7E, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -64,7 +64,7 @@ const uint8_t edram_store_depth_float_cs[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x32, 0x10, 0x02, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x32, 0x20, 0x02, 0x00, 0x5F, 0x00, 0x00, 0x02, 0x32, 0x00, 0x02, 0x00, - 0x68, 0x00, 0x00, 0x02, 0x06, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x04, + 0x68, 0x00, 0x00, 0x02, 0x05, 0x00, 0x00, 0x00, 0x9B, 0x00, 0x00, 0x04, 0x14, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x09, 0x32, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x02, 0x00, 0x02, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, @@ -81,129 +81,120 @@ const uint8_t edram_store_depth_float_cs[] = { 0x50, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0x46, 0x0E, 0x10, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x08, - 0x00, 0xD0, 0x00, 0x00, 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x3F, - 0xF8, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x3F, 0x1E, 0x00, 0x00, 0x0A, - 0xF2, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, - 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xC8, - 0x8C, 0x00, 0x00, 0x14, 0xF2, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xF2, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x0A, + 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x3F, + 0xF8, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0x3F, + 0x8C, 0x00, 0x00, 0x14, 0xF2, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x55, 0x00, 0x00, 0x0A, - 0xF2, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, + 0xF2, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x0B, 0xF2, 0x00, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x0B, 0xF2, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x46, 0x0E, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x07, - 0xF2, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x08, 0xF2, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x80, 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x0A, - 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x38, + 0xF2, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x4F, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x80, 0x38, 0x00, 0x00, 0x80, 0x38, 0x00, 0x00, 0x80, 0x38, - 0x01, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0xF2, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8A, 0x00, 0x00, 0x0F, - 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x80, 0x38, 0x1E, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xC8, + 0x00, 0x00, 0x00, 0xC8, 0x00, 0x00, 0x00, 0xC8, 0x37, 0x00, 0x00, 0x09, 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0A, + 0xF2, 0x00, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x08, 0x12, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x0A, 0xE2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x11, 0xF2, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x8A, 0x00, 0x00, 0x0F, 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0xF2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x0A, 0xF2, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xA5, 0x00, 0x00, 0x08, + 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x70, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x0A, 0xE2, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x8C, 0x00, 0x00, 0x11, + 0xF2, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, - 0x02, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x0C, 0x62, 0x00, 0x10, 0x00, 0x02, 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, 0x02, 0x00, 0x00, 0x00, - 0x4F, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x0A, 0xA2, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x56, 0x0D, 0x10, 0x00, 0x02, 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, - 0x02, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, - 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x15, 0x00, 0x00, 0x01, 0x55, 0x00, 0x00, 0x09, 0x22, 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, - 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x08, 0x22, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, 0x1A, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x10, 0x02, 0x00, - 0x26, 0x00, 0x00, 0x07, 0x00, 0xD0, 0x00, 0x00, 0x42, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, - 0x40, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, 0x22, 0x00, 0x10, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x02, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, + 0x46, 0x0E, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x06, 0x12, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0C, 0x62, 0x00, 0x10, 0x00, + 0x02, 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, + 0x02, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x06, 0x82, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0A, 0x20, 0x02, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x0A, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x0A, 0xA2, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x56, 0x0D, 0x10, 0x00, 0x02, 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, 0x02, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x40, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x01, 0x55, 0x00, 0x00, 0x09, + 0x22, 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, 0x0C, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x08, + 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x10, 0x02, 0x00, + 0x1A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x06, 0x22, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0A, 0x10, 0x02, 0x00, 0x26, 0x00, 0x00, 0x07, 0x00, 0xD0, 0x00, 0x00, + 0x42, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x20, 0x02, 0x00, + 0x01, 0x40, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x23, 0x00, 0x00, 0x09, + 0x22, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, + 0x2A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xA6, 0x00, 0x00, 0x08, 0xF2, 0xE0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, - 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00, - 0xA6, 0x00, 0x00, 0x08, 0xF2, 0xE0, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x46, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, - 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xA6, 0x00, 0x00, 0x08, 0xF2, 0xE0, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x12, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0A, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x40, 0x00, 0x00, + 0x00, 0x00, 0xA0, 0x00, 0xA6, 0x00, 0x00, 0x08, 0xF2, 0xE0, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x0E, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x01, 0x53, 0x54, 0x41, 0x54, 0x94, 0x00, 0x00, 0x00, + 0x29, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, + 0x0D, 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, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, }; diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.txt b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.txt index 05c161f10..e2504cd7c 100644 --- a/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.txt +++ b/src/xenia/gpu/d3d12/shaders/dxbc/edram_store_depth_float_cs.txt @@ -42,25 +42,22 @@ dcl_uav_raw U0[0:0], space=0 dcl_input vThreadGroupID.xy dcl_input vThreadIDInGroup.xy dcl_input vThreadID.xy -dcl_temps 6 +dcl_temps 5 dcl_thread_group 20, 16, 1 ishl r0.xy, vThreadID.xxxx, l(4, 2, 0, 0) imad r0.xy, vThreadID.yyyy, CB0[0][0].ywyy, r0.xyxx iadd r0.xy, r0.xyxx, CB0[0][0].xzxx ld_raw r1.xyzw, r0.x, T0[0].xyzw uge r2.xyzw, l(0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff), r1.xyzw -and r2.xyzw, r2.xyzw, l(1, 1, 1, 1) -imul null, r2.xyzw, r1.xyzw, r2.xyzw +and r2.xyzw, r1.xyzw, r2.xyzw umin r2.xyzw, r2.xyzw, l(0x3ffffff8, 0x3ffffff8, 0x3ffffff8, 0x3ffffff8) -iadd r3.xyzw, r2.xyzw, l(0xc8000000, 0xc8000000, 0xc8000000, 0xc8000000) -bfi r4.xyzw, l(23, 23, 23, 23), l(0, 0, 0, 0), r2.xyzw, l(0x00800000, 0x00800000, 0x00800000, 0x00800000) -ushr r5.xyzw, r2.xyzw, l(23, 23, 23, 23) -iadd r5.xyzw, -r5.xyzw, l(113, 113, 113, 113) -ushr r4.xyzw, r4.xyzw, r5.xyzw -iadd r4.xyzw, -r3.xyzw, r4.xyzw -ult r2.xyzw, r2.xyzw, l(0x38800000, 0x38800000, 0x38800000, 0x38800000) -and r2.xyzw, r2.xyzw, l(1, 1, 1, 1) -imad r2.xyzw, r4.xyzw, r2.xyzw, r3.xyzw +bfi r3.xyzw, l(23, 23, 23, 23), l(0, 0, 0, 0), r2.xyzw, l(0x00800000, 0x00800000, 0x00800000, 0x00800000) +ushr r4.xyzw, r2.xyzw, l(23, 23, 23, 23) +iadd r4.xyzw, -r4.xyzw, l(113, 113, 113, 113) +ushr r3.xyzw, r3.xyzw, r4.xyzw +ult r4.xyzw, r2.xyzw, l(0x38800000, 0x38800000, 0x38800000, 0x38800000) +iadd r2.xyzw, r2.xyzw, l(0xc8000000, 0xc8000000, 0xc8000000, 0xc8000000) +movc r2.xyzw, r4.xyzw, r3.xyzw, r2.xyzw iadd r3.xyzw, r2.xyzw, l(3, 3, 3, 3) ubfe r2.xyzw, l(1, 1, 1, 1), l(3, 3, 3, 3), r2.xyzw iadd r2.xyzw, r2.xyzw, r3.xyzw @@ -88,4 +85,4 @@ store_raw U0[0].xyzw, r2.x, r0.xyzw iadd r0.x, r2.x, l(0x00a00000) store_raw U0[0].xyzw, r0.x, r1.xyzw ret -// Approximately 44 instruction slots used +// Approximately 41 instruction slots used diff --git a/src/xenia/gpu/d3d12/shaders/dxbc/texture_load_depth_float_cs.cso b/src/xenia/gpu/d3d12/shaders/dxbc/texture_load_depth_float_cs.cso index 34c95e30f51a5e7757b4b4224b55fe03652dda6f..f647d469dfc4d83e95ae6fb51f5b8bceb58a8bc1 100644 GIT binary patch delta 414 zcmca$w!+lVCBn(M@oz@IVYPs=js7c{SYd}0Mg|6k6;ccgtU%fXh(lNy7*c?^1c-Sy z8oIM^P7q~a2n5QfY;I(!7glWts{ORe)5o zOr9tq&kM2$$ZK!}(kzn?vWwT7Gca(1bVFqrn4u=aXpp!j0|Ps<4Io>=W&&xT7f@{n ziZMAbF#P||kAh+L!1O}RmjinNW*E>Suwih^CvTKYpX|fVG5L%T$7Ba#9zmcnJRqll zLJp*hak8MW{NxEzI*Kho5l$cm0gx;RXalhV5Q99yGFebsdh#3=j!Duyj3AEnIfH;JOfguHmOMrOG zMniWNP75&xhCrZv-{wY^dSOm;1_u653<3-+lV`HaPd>sfqS_AB4H5wv;l?Mxzyze_ z7#O&a#aJh+O2`W$s{pBFog6A5&&vkU*Wd`GStlQ47Y_yM<^btNmSKjP4iZylVBiGF zBa4B|1G*XP0+6^S0|Ps<3z#NPint cast, and negative numbers become // 0x41FF0000. - rgb_f32u32 = min(rgb_f32u32 * uint3(rgb_f32u32 <= 0x7FFFFFFFu), 0x41FF0000u); - uint3 normalized = rgb_f32u32 + 0xC2000000u; + rgb_f32u32 = + min((rgb_f32u32 <= 0x7FFFFFFFu) ? rgb_f32u32 : (0u).xxx, 0x41FF0000u); uint3 denormalized = ((rgb_f32u32 & 0x7FFFFFu) | 0x800000u) >> ((125u).xxx - (rgb_f32u32 >> 23u)); - uint3 rgb_f10u32 = normalized + (denormalized - normalized) * - uint3(rgb_f32u32 < 0x3E800000u); + uint3 rgb_f10u32 = + (rgb_f32u32 < 0x3E800000u) ? denormalized : (rgb_f32u32 + 0xC2000000u); rgb_f10u32 = ((rgb_f10u32 + 0x7FFFu + ((rgb_f10u32 >> 16u) & 1u)) >> 16u) & 0x3FFu; return rgb_f10u32.r | (rgb_f10u32.g << 10u) | (rgb_f10u32.b << 20u) | @@ -29,14 +29,15 @@ uint4 XeFloat7e3To16(uint rgba_packed) { // Normalize the values for the denormalized components. // Exponent = 1; // do { Exponent--; Mantissa <<= 1; } while ((Mantissa & 0x80) == 0); - uint3 is_denormalized = uint3(exponent == 0u); + bool3 is_denormalized = exponent == 0u; uint3 mantissa_lzcnt = (7u).xxx - firstbithigh(mantissa); - exponent += ((1u).xxx - mantissa_lzcnt - exponent) * is_denormalized; - mantissa += - (((mantissa << mantissa_lzcnt) & 0x7Fu) - mantissa) * is_denormalized; + exponent = is_denormalized ? ((1u).xxx - mantissa_lzcnt) : exponent; + mantissa = + is_denormalized ? ((mantissa << mantissa_lzcnt) & 0x7Fu) : mantissa; // Combine into 32-bit float bits and clear zeros. - uint3 rgb_f32u32 = (((exponent + 124u) << 23u) | (mantissa << 16u)) * - uint3(rgb_f10u32 != 0u); + uint3 rgb_f32u32 = + (rgb_f10u32 != 0u) ? (((exponent + 124u) << 23u) | (mantissa << 16u)) + : (0u).xxx; return f32tof16(float4(asfloat(rgb_f32u32), float(rgba_packed >> 30u) * (1.0 / 3.0))); } @@ -49,12 +50,10 @@ uint4 XeFloat7e3To16(uint rgba_packed) { uint4 XeFloat32To20e4(uint4 f32u32) { // Keep only positive (high bit set means negative for both float and int) and // saturate to the maximum representable value near 2 (also dropping NaNs). - f32u32 = min(f32u32 * uint4(f32u32 <= 0x7FFFFFFFu), 0x3FFFFFF8u); - uint4 normalized = f32u32 + 0xC8000000u; + f32u32 = min((f32u32 <= 0x7FFFFFFFu) ? f32u32 : (0u).xxxx, 0x3FFFFFF8u); uint4 denormalized = ((f32u32 & 0x7FFFFFu) | 0x800000u) >> ((113u).xxxx - (f32u32 >> 23u)); - uint4 f24u32 = - normalized + (denormalized - normalized) * uint4(f32u32 < 0x38800000u); + uint4 f24u32 = (f32u32 < 0x38800000u) ? denormalized : (f32u32 + 0xC8000000u); return ((f24u32 + 3u + ((f24u32 >> 3u) & 1u)) >> 3u) & 0xFFFFFFu; } @@ -64,13 +63,14 @@ uint4 XeFloat20e4To32(uint4 f24u32) { // Normalize the values for the denormalized components. // Exponent = 1; // do { Exponent--; Mantissa <<= 1; } while ((Mantissa & 0x100000) == 0); - uint4 is_denormalized = uint4(exponent == 0u); + bool4 is_denormalized = exponent == 0u; uint4 mantissa_lzcnt = (20u).xxxx - firstbithigh(mantissa); - exponent += ((1u).xxxx - mantissa_lzcnt - exponent) * is_denormalized; - mantissa += - (((mantissa << mantissa_lzcnt) & 0xFFFFFu) - mantissa) * is_denormalized; + exponent = is_denormalized ? ((1u).xxxx - mantissa_lzcnt) : exponent; + mantissa = + is_denormalized ? ((mantissa << mantissa_lzcnt) & 0xFFFFFu) : mantissa; // Combine into 32-bit float bits and clear zeros. - return (((exponent + 112u) << 23u) | (mantissa << 3u)) * uint4(f24u32 != 0u); + return (f24u32 != 0u) ? (((exponent + 112u) << 23u) | (mantissa << 3u)) + : (0u).xxxx; } // Sorts the color indices of four DXT3/DXT5 or DXT1 opaque blocks so they can @@ -143,4 +143,67 @@ void XeDXTFourBlocksRowToRGB8(uint4 rgb_10b_low, uint4 rgb_10b_high, (((block_row_10b_3x >> 20u) / 3u) << 16u); } +// & 0x249249 = bits 0 of 24 bits of DXT5 alpha codes. +// & 0x492492 = bits 1 of 24 bits of DXT5 alpha codes. +// & 0x6DB6DB = bits 2 of 24 bits of DXT5 alpha codes. + +// Sorts half (24 bits) of the codes of four DXT5 alpha blocks so they can be +// used as weights for the second endpoint, from 0 to 7, in alpha0 > alpha1 +// mode. +uint4 XeDXT5High8StepAlphaWeights(uint4 codes_24b) { + // Initially 000 - first endpoint, 001 - second endpoint, 010 and above - + // weights from 6:1 to 1:6. Need to make 001 111, and subtract 1 from 010 and + // above. + // Whether the bits are 000 (the first endpoint only). + uint4 is_first = ((codes_24b & 0x249249u) & ((codes_24b & 0x492492u) >> 1u) & + ((codes_24b & 0x6DB6DBu) >> 2u)) ^ 0x249249u; + // Whether the bits are 001 (the second endpoint only). + uint4 is_second = + (codes_24b & 0x249249u) & (0x249249u ^ + (((codes_24b & 0x492492u) >> 1u) & ((codes_24b & 0x6DB6DBu) >> 2u))); + // Change 000 to 001 so subtracting 1 will result in 0 (and there will never + // be overflow), subtract 1, and if the code was originally 001 (the second + // endpoint only), make it 111. + return ((codes_24b | is_first) - 0x249249u) | + is_second | (is_second << 1u) | (is_second << 2u); +} + +// Sorts half (24 bits) of the codes of four DXT5 alpha blocks so they can be +// used as weights for the second endpoint, from 0 to 5, in alpha0 <= alpha1 +// mode, except for 110 and 111 which represent 0 and 1 constants. +uint4 XeDXT5High6StepAlphaWeights(uint4 codes_24b) { + // Initially: + // 000 - first endpoint. + // 001 - second endpoint. + // 010 - 4:1. + // 011 - 3:2. + // 100 - 2:3. + // 101 - 1:4. + // 110 - constant 0. + // 111 - constant 1. + // Create 3-bit masks (111 or 000) of whether the codes represent 0 or 1 + // constants to keep them 110 and 111 later. + uint4 is_constant = (codes_24b & 0x492492u) & ((codes_24b & 0x6DB6DBu) >> 1u); + is_constant |= (is_constant << 1u) | (is_constant >> 1u); + // Store the codes for the constants (110 or 111), or 0 if not a constant. + uint4 constant_values = + ((codes_24b & 0x249249u) | (0x492492u | 0x6DB6DBu)) & is_constant; + // Need to make 001 101, and subtract 1 from 010 and above (constants will be + // handled separately later). + // Whether the bits are 000 (the first endpoint only). + uint4 is_first = ((codes_24b & 0x249249u) & ((codes_24b & 0x492492u) >> 1u) & + ((codes_24b & 0x6DB6DBu) >> 2u)) ^ 0x249249u; + // Whether the bits are 001 (the second endpoint only). + uint4 is_second = + (codes_24b & 0x249249u) & (0x249249u ^ + (((codes_24b & 0x492492u) >> 1u) & ((codes_24b & 0x6DB6DBu) >> 2u))); + // Change 000 to 001 so subtracting 1 will result in 0 (and there will never + // be overflow), subtract 1, and if the code was originally 001 (the second + // endpoint only), make it 101. + codes_24b = + ((codes_24b | is_first) - 0x249249u) | is_second | (is_second << 2u); + // Make constants 110 and 111 again (they are 101 and 110 now). + return (codes_24b & ~is_constant) | constant_values; +} + #endif // XENIA_GPU_D3D12_SHADERS_PIXEL_FORMATS_HLSLI_