From c2bc5177b54dfc43dc019791973d0aad39b15840 Mon Sep 17 00:00:00 2001 From: Raziel Alphadios <64050682+RazielXYZ@users.noreply.github.com> Date: Wed, 26 Oct 2022 03:03:40 +0300 Subject: [PATCH] Add support for remaining unsupported ASTC formats (#2963) * Add support for remaining unsupported ASTC formats Add new ASTC formats into pixelformats example and ninja scripts Rebuild ASTC textures * Update idl and generate Move comma in pixelformats Co-authored-by: Raziel Alphadios --- bindings/bf/bgfx.bf | 42 +++++- bindings/cs/bgfx.cs | 42 +++++- bindings/d/types.d | 10 +- bindings/zig/bgfx.zig | 26 +++- examples/47-pixelformats/pixelformats.cpp | 50 +++--- examples/assets/textures/textures.ninja | 32 ++-- .../texture_compression_astc_10x10.dds | Bin 0 -> 4000 bytes .../texture_compression_astc_10x5.dds | Bin 7648 -> 7648 bytes .../texture_compression_astc_10x6.dds | Bin 0 -> 6496 bytes .../texture_compression_astc_10x8.dds | Bin 0 -> 4736 bytes .../texture_compression_astc_12x10.dds | Bin 0 -> 3408 bytes .../texture_compression_astc_12x12.dds | Bin 0 -> 2912 bytes .../textures/texture_compression_astc_4x4.dds | Bin 22000 -> 22000 bytes .../textures/texture_compression_astc_5x4.dds | Bin 0 -> 18032 bytes .../textures/texture_compression_astc_5x5.dds | Bin 14800 -> 14800 bytes .../textures/texture_compression_astc_6x5.dds | Bin 0 -> 12544 bytes .../textures/texture_compression_astc_6x6.dds | Bin 10640 -> 10640 bytes .../textures/texture_compression_astc_8x5.dds | Bin 9104 -> 9104 bytes .../textures/texture_compression_astc_8x6.dds | Bin 7728 -> 7728 bytes .../textures/texture_compression_astc_8x8.dds | Bin 0 -> 5632 bytes include/bgfx/bgfx.h | 8 + include/bgfx/c99/bgfx.h | 142 +++++++++--------- include/bgfx/defines.h | 2 +- scripts/bgfx.idl | 64 ++++---- scripts/build.ninja | 24 +++ src/bgfx.cpp | 16 ++ src/renderer_d3d11.cpp | 8 + src/renderer_d3d12.cpp | 8 + src/renderer_d3d9.cpp | 20 ++- src/renderer_gl.cpp | 24 +++ src/renderer_gl.h | 32 ++++ src/renderer_mtl.mm | 16 ++ src/renderer_vk.cpp | 20 ++- src/renderer_webgpu.cpp | 8 + 34 files changed, 449 insertions(+), 145 deletions(-) create mode 100644 examples/runtime/textures/texture_compression_astc_10x10.dds create mode 100644 examples/runtime/textures/texture_compression_astc_10x6.dds create mode 100644 examples/runtime/textures/texture_compression_astc_10x8.dds create mode 100644 examples/runtime/textures/texture_compression_astc_12x10.dds create mode 100644 examples/runtime/textures/texture_compression_astc_12x12.dds create mode 100644 examples/runtime/textures/texture_compression_astc_5x4.dds create mode 100644 examples/runtime/textures/texture_compression_astc_6x5.dds create mode 100644 examples/runtime/textures/texture_compression_astc_8x8.dds diff --git a/bindings/bf/bgfx.bf b/bindings/bf/bgfx.bf index 59e94a4ff..71d5e2556 100644 --- a/bindings/bf/bgfx.bf +++ b/bindings/bf/bgfx.bf @@ -1678,11 +1678,21 @@ public static class bgfx /// ASTC4x4, + /// + /// ASTC 5x4 6.40 BPP + /// + ASTC5x4, + /// /// ASTC 5x5 5.12 BPP /// ASTC5x5, + /// + /// ASTC 6x5 4.27 BPP + /// + ASTC6x5, + /// /// ASTC 6x6 3.56 BPP /// @@ -1698,11 +1708,41 @@ public static class bgfx /// ASTC8x6, + /// + /// ASTC 8x8 2.00 BPP + /// + ASTC8x8, + /// /// ASTC 10x5 2.56 BPP /// ASTC10x5, + /// + /// ASTC 10x6 2.13 BPP + /// + ASTC10x6, + + /// + /// ASTC 10x8 1.60 BPP + /// + ASTC10x8, + + /// + /// ASTC 10x10 1.28 BPP + /// + ASTC10x10, + + /// + /// ASTC 12x10 1.07 BPP + /// + ASTC12x10, + + /// + /// ASTC 12x12 0.89 BPP + /// + ASTC12x12, + /// /// Compressed formats above. /// @@ -2045,7 +2085,7 @@ public static class bgfx public uint8 numGPUs; public GPU[4] gpu; public Limits limits; - public uint16[88] formats; + public uint16[96] formats; } [CRepr] diff --git a/bindings/cs/bgfx.cs b/bindings/cs/bgfx.cs index 8d3360cb1..24a2a17e1 100644 --- a/bindings/cs/bgfx.cs +++ b/bindings/cs/bgfx.cs @@ -1671,11 +1671,21 @@ public static partial class bgfx /// ASTC4x4, + /// + /// ASTC 5x4 6.40 BPP + /// + ASTC5x4, + /// /// ASTC 5x5 5.12 BPP /// ASTC5x5, + /// + /// ASTC 6x5 4.27 BPP + /// + ASTC6x5, + /// /// ASTC 6x6 3.56 BPP /// @@ -1691,11 +1701,41 @@ public static partial class bgfx /// ASTC8x6, + /// + /// ASTC 8x8 2.00 BPP + /// + ASTC8x8, + /// /// ASTC 10x5 2.56 BPP /// ASTC10x5, + /// + /// ASTC 10x6 2.13 BPP + /// + ASTC10x6, + + /// + /// ASTC 10x8 1.60 BPP + /// + ASTC10x8, + + /// + /// ASTC 10x10 1.28 BPP + /// + ASTC10x10, + + /// + /// ASTC 12x10 1.07 BPP + /// + ASTC12x10, + + /// + /// ASTC 12x12 0.89 BPP + /// + ASTC12x12, + /// /// Compressed formats above. /// @@ -2027,7 +2067,7 @@ public static partial class bgfx public byte numGPUs; public fixed uint gpu[4]; public Limits limits; - public fixed ushort formats[88]; + public fixed ushort formats[96]; } public unsafe struct InternalData diff --git a/bindings/d/types.d b/bindings/d/types.d index e812ffa69..ae44638f4 100644 --- a/bindings/d/types.d +++ b/bindings/d/types.d @@ -18,7 +18,7 @@ enum expandEnum(EnumType, string fqnEnumType = EnumType.stringof) = (){ extern(C) @nogc nothrow: -enum uint BGFX_API_VERSION = 117; +enum uint BGFX_API_VERSION = 118; alias bgfx_view_id_t = ushort; @@ -570,11 +570,19 @@ enum bgfx_texture_format_t BGFX_TEXTURE_FORMAT_ATCE, /// ATCE RGBA 8 BPP explicit alpha BGFX_TEXTURE_FORMAT_ATCI, /// ATCI RGBA 8 BPP interpolated alpha BGFX_TEXTURE_FORMAT_ASTC4X4, /// ASTC 4x4 8.0 BPP + BGFX_TEXTURE_FORMAT_ASTC5X4, /// ASTC 5x4 6.40 BPP BGFX_TEXTURE_FORMAT_ASTC5X5, /// ASTC 5x5 5.12 BPP + BGFX_TEXTURE_FORMAT_ASTC6X5, /// ASTC 6x5 4.27 BPP BGFX_TEXTURE_FORMAT_ASTC6X6, /// ASTC 6x6 3.56 BPP BGFX_TEXTURE_FORMAT_ASTC8X5, /// ASTC 8x5 3.20 BPP BGFX_TEXTURE_FORMAT_ASTC8X6, /// ASTC 8x6 2.67 BPP + BGFX_TEXTURE_FORMAT_ASTC8X8, /// ASTC 8x8 2.00 BPP BGFX_TEXTURE_FORMAT_ASTC10X5, /// ASTC 10x5 2.56 BPP + BGFX_TEXTURE_FORMAT_ASTC10X6, /// ASTC 10x6 2.13 BPP + BGFX_TEXTURE_FORMAT_ASTC10X8, /// ASTC 10x8 1.60 BPP + BGFX_TEXTURE_FORMAT_ASTC10X10, /// ASTC 10x10 1.28 BPP + BGFX_TEXTURE_FORMAT_ASTC12X10, /// ASTC 12x10 1.07 BPP + BGFX_TEXTURE_FORMAT_ASTC12X12, /// ASTC 12x12 0.89 BPP BGFX_TEXTURE_FORMAT_UNKNOWN, /// Compressed formats above. BGFX_TEXTURE_FORMAT_R1, BGFX_TEXTURE_FORMAT_A8, diff --git a/bindings/zig/bgfx.zig b/bindings/zig/bgfx.zig index 6ad5f7e10..612647d77 100644 --- a/bindings/zig/bgfx.zig +++ b/bindings/zig/bgfx.zig @@ -1024,9 +1024,15 @@ pub const TextureFormat = enum(c_int) { /// ASTC 4x4 8.0 BPP ASTC4x4, + /// ASTC 5x4 6.40 BPP + ASTC5x4, + /// ASTC 5x5 5.12 BPP ASTC5x5, + /// ASTC 6x5 4.27 BPP + ASTC6x5, + /// ASTC 6x6 3.56 BPP ASTC6x6, @@ -1036,9 +1042,27 @@ pub const TextureFormat = enum(c_int) { /// ASTC 8x6 2.67 BPP ASTC8x6, + /// ASTC 8x8 2.00 BPP + ASTC8x8, + /// ASTC 10x5 2.56 BPP ASTC10x5, + /// ASTC 10x6 2.13 BPP + ASTC10x6, + + /// ASTC 10x8 1.60 BPP + ASTC10x8, + + /// ASTC 10x10 1.28 BPP + ASTC10x10, + + /// ASTC 12x10 1.07 BPP + ASTC12x10, + + /// ASTC 12x12 0.89 BPP + ASTC12x12, + /// Compressed formats above. Unknown, R1, @@ -1291,7 +1315,7 @@ pub const Caps = extern struct { numGPUs: u8, gpu: [4]GPU, limits: Limits, - formats: [88]u16, + formats: [96]u16, }; pub const InternalData = extern struct { diff --git a/examples/47-pixelformats/pixelformats.cpp b/examples/47-pixelformats/pixelformats.cpp index 8cfdcc598..7a78f3672 100644 --- a/examples/47-pixelformats/pixelformats.cpp +++ b/examples/47-pixelformats/pixelformats.cpp @@ -470,27 +470,35 @@ public: m_textureSets.push_back(generateTextureSetFromFile("textures/pf_uv_filtering_test.dds") ); const char* textureCompressionSetFiles[] = { - "textures/texture_compression_astc_10x5.dds" - , "textures/texture_compression_astc_4x4.dds" - , "textures/texture_compression_astc_5x5.dds" - , "textures/texture_compression_astc_6x6.dds" - , "textures/texture_compression_astc_8x5.dds" - , "textures/texture_compression_astc_8x6.dds" - , "textures/texture_compression_atc.dds" - , "textures/texture_compression_atce.dds" - , "textures/texture_compression_atci.dds" - , "textures/texture_compression_bc1.ktx" - , "textures/texture_compression_bc2.ktx" - , "textures/texture_compression_bc3.ktx" - , "textures/texture_compression_bc7.ktx" - , "textures/texture_compression_etc1.ktx" - , "textures/texture_compression_etc2.ktx" - , "textures/texture_compression_ptc12.pvr" - , "textures/texture_compression_ptc14.pvr" - , "textures/texture_compression_ptc22.pvr" - , "textures/texture_compression_ptc24.pvr" - , "textures/texture_compression_rgba8.dds" - , nullptr + "textures/texture_compression_astc_4x4.dds", + "textures/texture_compression_astc_5x4.dds", + "textures/texture_compression_astc_5x5.dds", + "textures/texture_compression_astc_6x5.dds", + "textures/texture_compression_astc_6x6.dds", + "textures/texture_compression_astc_8x5.dds", + "textures/texture_compression_astc_8x6.dds", + "textures/texture_compression_astc_8x8.dds", + "textures/texture_compression_astc_10x5.dds", + "textures/texture_compression_astc_10x6.dds", + "textures/texture_compression_astc_10x8.dds", + "textures/texture_compression_astc_10x10.dds", + "textures/texture_compression_astc_12x10.dds", + "textures/texture_compression_astc_12x12.dds", + "textures/texture_compression_atc.dds", + "textures/texture_compression_atce.dds", + "textures/texture_compression_atci.dds", + "textures/texture_compression_bc1.ktx", + "textures/texture_compression_bc2.ktx", + "textures/texture_compression_bc3.ktx", + "textures/texture_compression_bc7.ktx", + "textures/texture_compression_etc1.ktx", + "textures/texture_compression_etc2.ktx", + "textures/texture_compression_ptc12.pvr", + "textures/texture_compression_ptc14.pvr", + "textures/texture_compression_ptc22.pvr", + "textures/texture_compression_ptc24.pvr", + "textures/texture_compression_rgba8.dds", + nullptr }; m_textureSets.push_back(generateTextureSetFromFileSet("texture_compression_* set", textureCompressionSetFiles)); diff --git a/examples/assets/textures/textures.ninja b/examples/assets/textures/textures.ninja index 835da6870..22fd3e32b 100644 --- a/examples/assets/textures/textures.ninja +++ b/examples/assets/textures/textures.ninja @@ -1,17 +1,25 @@ textures = $pwd/../../runtime/textures -build $textures/texture_compression_bc1.ktx: texturec_bc1 $pwd/texture-compression-test.png -build $textures/texture_compression_bc2.ktx: texturec_bc2 $pwd/texture-compression-test.png -build $textures/texture_compression_bc3.ktx: texturec_bc3 $pwd/texture-compression-test.png -build $textures/texture_compression_bc7.ktx: texturec_bc7 $pwd/texture-compression-test.png -build $textures/texture_compression_astc_4x4.dds: texturec_astc4x4 $pwd/texture-compression-test.png -build $textures/texture_compression_astc_5x5.dds: texturec_astc5x5 $pwd/texture-compression-test.png -build $textures/texture_compression_astc_6x6.dds: texturec_astc6x6 $pwd/texture-compression-test.png -build $textures/texture_compression_astc_8x5.dds: texturec_astc8x5 $pwd/texture-compression-test.png -build $textures/texture_compression_astc_8x6.dds: texturec_astc8x6 $pwd/texture-compression-test.png -build $textures/texture_compression_astc_10x5.dds: texturec_astc10x5 $pwd/texture-compression-test.png -build $textures/texture_compression_etc1.ktx: texturec_etc1 $pwd/texture-compression-test.png -build $textures/texture_compression_etc2.ktx: texturec_etc2 $pwd/texture-compression-test.png +build $textures/texture_compression_bc1.ktx: texturec_bc1 $pwd/texture-compression-test.png +build $textures/texture_compression_bc2.ktx: texturec_bc2 $pwd/texture-compression-test.png +build $textures/texture_compression_bc3.ktx: texturec_bc3 $pwd/texture-compression-test.png +build $textures/texture_compression_bc7.ktx: texturec_bc7 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_4x4.dds: texturec_astc4x4 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_5x4.dds: texturec_astc5x4 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_5x5.dds: texturec_astc5x5 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_6x5.dds: texturec_astc6x5 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_6x6.dds: texturec_astc6x6 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_8x5.dds: texturec_astc8x5 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_8x6.dds: texturec_astc8x6 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_8x8.dds: texturec_astc8x8 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_10x5.dds: texturec_astc10x5 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_10x6.dds: texturec_astc10x6 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_10x8.dds: texturec_astc10x8 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_10x10.dds: texturec_astc10x10 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_12x10.dds: texturec_astc12x10 $pwd/texture-compression-test.png +build $textures/texture_compression_astc_12x12.dds: texturec_astc12x12 $pwd/texture-compression-test.png +build $textures/texture_compression_etc1.ktx: texturec_etc1 $pwd/texture-compression-test.png +build $textures/texture_compression_etc2.ktx: texturec_etc2 $pwd/texture-compression-test.png build $textures/parallax-d.ktx: texturec_diffuse $pwd/parallax-d.png build $textures/parallax-n.ktx: texturec_normal $pwd/parallax-n.png diff --git a/examples/runtime/textures/texture_compression_astc_10x10.dds b/examples/runtime/textures/texture_compression_astc_10x10.dds new file mode 100644 index 0000000000000000000000000000000000000000..8ac934e5e934a557bdf7150bde3d0c1a69f02c4b GIT binary patch literal 4000 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 H!Z7~@pP8r7 diff --git a/examples/runtime/textures/texture_compression_astc_10x6.dds b/examples/runtime/textures/texture_compression_astc_10x6.dds new file mode 100644 index 0000000000000000000000000000000000000000..92edd56d6cf372b9588b8cbb0270c1e976eb71ed GIT binary patch literal 6496 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 literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_astc_10x8.dds b/examples/runtime/textures/texture_compression_astc_10x8.dds new file mode 100644 index 0000000000000000000000000000000000000000..9eb093ae35f4eb8e8a65af361e7ede92ae2cdfc4 GIT binary patch literal 4736 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 MY5uwHTH>nt4=(W(z5oCK literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_astc_12x10.dds b/examples/runtime/textures/texture_compression_astc_12x10.dds new file mode 100644 index 0000000000000000000000000000000000000000..23a6470853c715304a1ae01c05004703dfb3b74a GIT binary patch literal 3408 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 literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_astc_12x12.dds b/examples/runtime/textures/texture_compression_astc_12x12.dds new file mode 100644 index 0000000000000000000000000000000000000000..9c75905e563f973048215fa994f3fe3d05281a8d GIT binary patch literal 2912 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 literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_astc_4x4.dds b/examples/runtime/textures/texture_compression_astc_4x4.dds index ada6b45d92f13688c774966ec6b39fda04ae6543..60d17bde3d934e5562954c0a70f7d87edc86517f 100644 GIT binary patch literal 22000 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 Q|EZT=x-@T|rzb`IUmr(qvH$=8 diff --git a/examples/runtime/textures/texture_compression_astc_5x4.dds b/examples/runtime/textures/texture_compression_astc_5x4.dds new file mode 100644 index 0000000000000000000000000000000000000000..e47f966cf4046f0380e66c86fbd2b70d7072cd3a GIT binary patch literal 18032 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 literal 0 HcmV?d00001 diff --git a/examples/runtime/textures/texture_compression_astc_5x5.dds b/examples/runtime/textures/texture_compression_astc_5x5.dds index bfce304225c9d59d0fbf736c63c6b6bda645fb36..1a7619030bef56a48ee837dfc06decd3dc06ccff 100644 GIT binary patch literal 14800 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 K#-%Kt{eJ))r{jtM literal 14800 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 diff --git a/examples/runtime/textures/texture_compression_astc_6x5.dds b/examples/runtime/textures/texture_compression_astc_6x5.dds new file mode 100644 index 0000000000000000000000000000000000000000..0b716ab819be633c8c4fc5dbce1b64294b89398f GIT binary patch literal 12544 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 literal 10640 zcmb_?dss~C`~JJu%rw&hQ&UOBOsQ1JBq?mWnR3Xn6GEyfBFB+4on|VjgpuU9b!4-h zVmofqL{v^494hThX(K|lqok(wecmI~_j5nb+mtDO zf+&O#o2!Fl@Gt(uwS&Ll!_oZn|NOTAu4KX=vETUd|EHTcT+#pb-@R(8|AUt(>i;+9 zF(`^a$UfqaChjs10`XWKe55p~=_@E#$F^?d^B93O1QN)JB;iW$4-bD_W)jAdm@T4s zfsl0M#AWdq1e&|U<8%A;{Iu~>Cc$G7vKOl0d*7mBV+*Ow+#HfXYr3+35TzeQp+)C{ z_#^`@JGR-9AmS6JIp3A?VSU-nU7=#RWze!o&ss6w(si{@EK?qhJXr6E@!k*b`-)^a zK?__uj$nMQman#uNa{cTsE&+g6Iu0j!K351?5g|4GW)g{JEVqf?Y+#^>{L{NzN`b* zm2Vn@@7wz=T3ejX)^{KY*`iu9wy?nH?Z<}?i=~2iBto;x3ROG&v_&MsSP1w|=0dIk zFpjYRMU}lC;7i9ws_bK+z7Me?77Y<#0`(C%Md;7}8lM~z^UGWoabRZMQ{frTW#(W4 z)kw3p-7zdb(bS!jL-G>{WD-VL1(h0myxGiSXd{$izM?(S+t7G~5M5vsf>+hST|UJ< z#-7ok2=kp^JAxt(k8DYj@on1LFu$R>5kla9?+T|T zIv(No4(t%i??Qau(DB-#x>tsgToF?OUC@oL%HIuRQ0e$fillgJVsc` zZfdfg@a3$%Rr*?IYp&lC7xSy?7IvN$sbNj~O#+4=2r<;1;=>Cf)1 z1HP2bG=DKa`4Ty!HBYGe#eUkJG{2&8=rQmY^ONr^SciO%!SUeW_&B3aWoi}8KXPJH znclKFOE#IG9>Nrgxj28#(7Dw1NnzKA-uBbtF%AH~qxKL$Uk0IQry`5lh8VsXFDTq_wcHuQlp*6UKdVRKB^FI<|Sz zsYpKQLVfNwBis6V!)`rbDEMU4mq(N}Ge4&8(y_VxR(F~17g{KLM(P6rz588LaRmRR(_ zWFb{hUZBz2>AeIpPbP%^ceo+$b-*7h{DGmXPP|Mm66l*_{+8^W)z!Y@N?NCc)?4(t zI=JY{npn4ssuN4``tsV{`GnBV!QevlN4S6YN!?`EkpUq^4;L(i`%fy*Qe!x6US1g& zP4yT~%+H122vpM1Ro&Cmb-fA4`;3x6B97^hb=_N?_<(CWp#sR3mVLcZ7XY}&5fm*; z#C_8G<7K25`>X(@@X8Qwu2h?sw=bGq$EW0IO`JjbjN@Z}zs4u|>bL5lyrYDt$UfuImzT%%oPaMO=5KO072u`eFMleX&#}NCfuyKOIR|i|I`${O-oQVt zCp5n(UNpLY9p8U}O~vNR{MRoozhS!1b)Bvg^AVpj?}+HH7T@ZQr(c?Qi~)y1Z&&p5 zb0UXiAu`Wg+WtA!Y^L{94(2bTbR*T?%1Jr#jzwU6x_$^noSxCN!N0nP$6z4IZ>wzy zVRg2C$TQFrmT+m^Ql0!&!Z<_7_Z+h0-)EEs*;eP^vhvDX67)$uv>PgH!kCsb6`ehp z-vJJQ^D0Y&T8!10U!oa=4C>(&=U&iPiW(dR{L7Sy>_GKHjOV-qEVo*~^t)S%@v$ES zQp!#Rg{hu>bRZc;W+WQCes9Y}BNz4cBFjM=vmNu@4D6_;jE6hQfnS*}=JzI5Ck-WL z07kl)ulm@4kuwPq@Y^s5^tC`;7$6N5<8=j{?^rJ&zd>(n)Grym0g9Sp(aa zx2JUeV+HY;O0{X{mBs^K5_rTNdo z*F!uo_5?jBTqXBAz1iH;Rd18GA^yHY=;_|}@{hI0YttZ~9=oc9=6G%MXS%B z2R_^EX}$`7=I{EE{d|Moih=(&jB$RirulDbFvI$wjtQ6r`HjDC&muIg-Tx)?ah_cQ zkM)+nP{Na}U()4gUajusF(y1EkZC0FgY|Y2%ffsu)xjxCeP;m~@!>VhBDzWj39 z-qS1s)+H}1gYWi!ZtQvA@dNY(``4Yz!GC2Nge-LfT)OOH#IUyM!Qs{BICmQeI&** zQNf|f!>o;qwVJVhIzz-2f0f&>k7o%mCh`f?uv`1CZ?cIJU$11K+7&+M_FAC?1bRR; zK!^jY2a8p*S+w5Zdf2wbYwkJY0ia*bR7K~Zj!OJ40h}(EgV7Vk3@~Mx|a!n>qmvwCP@1kJ;mvWH6nGh{N28?CjFn{I-BQ9ME zxDuD1H393btml1j$LmKeC-w)l!ut~_uC?+zkyMfGyVB1M)=x(B2JPZlusFFk2@(f# z=N#iaiP7cznP0{4Zw!ne3mQ$hf)r6}ao>eg8B6#it-rYb*Ju9dqN3SNnc&9)!mp() z4hzw*@nV-q*hn-to!eAAaJ$wf%&#`+=lYn!m9Oqj27g9T*S``-xbDcEKSTo>ipY4z z7h{yQCWn$PKV?1zeqP#Nw7vc!E|`z?UE}A_;pDa2hkE)f7`qG(R=SuYBuTbP{_S6> z;Mgz{StV3`4Z3#mHRkiZ0btqluZzE&r*So2msNcYzIO5Nj5HqWo9c%cP0d^H8dF$z zrz?l-RueU;?~&3}6uReJJCCs%-p(=^{3-5tcK|=y5>G=DrU}QBDHP~o{-%UZYHW|Z zlJ*k(7p#kLzuWP?x@&d0itcyUJvx&r9#yG4G0Rk~ViBcl_v_jw-V?6!4JSgt??(*O zprJVn%_b%R>TV@%EpuaM{UIqQtMy$_zN?Eqpx$seD4tc%! zDm9WLn9T_s(nnqAlPt)83sN9|e}C_$A1Xe%i0W=1jIzWA!*6%CQeNzRP>)5A_Iv+P ztP`QN#);YD2IX?w_4hxhJM}T32ZyfZf|)Z_Rq> zv}XeBZ`!ZfRK^^(iP+5&sK8(BG~#kn#6mKzf|~^K_!zcFM>+Ov} zxh5xIozP<-)2RgaS#}8cQ{W5bZTGcFpKJC#aYepP1X+ZlYZ>}z>IRz~)#+Z)Z=#Y3 zTzm9jzppwfcMr@<5cI>YBDehJ5jOj8!1{N#vm!uj67x98@$Nb3M;n+Uy{9WSe|#QX zOKin_pQ;~BMNm=OkIbChfN@e|UBjiA+6!eOX9>pZYtLV(3^K9Np00_{vV!>aK3l>k zZh&||{$hPMsf;n1=m;3%@q6@v0TMyDUP7A8+z`IcO68l)G8xr;dR@2x_#{4s7OXaw zpK%!8r8FJ7*y45KJ&&r{S~+s2v_?uO**^ zc}}|d3W8wiuq*4wU_Nvj%n!hPC1ZO1z4I75%yxVR82o&W|VWnT&TODI3R4Su-f@*kyZNAO+&mb~)`o+e2vdwlh# z_B#B$6OG!`rPx~$r)LkK;}Q3{va@n7#G`+|taQ!^3f))B$4>CXxT4_D-AByw2>TBe+i%{R3m@Yql zxS`zpjnnUT95~w&LaG=$(9_k{u5Rb|QXyla*($!Q!NB2S%1*zD0>Qv&b|GKryRh1( z!cH$WndQqT&q9AOZcjuk74c#AD0u&Xf1n%P=@@j}MwiYfixk|?`CO1r)YNl&-Xn&5 zviD_75CI>$uAaP1ooqrNBV-c597U;797Bc(5%Itq=N~#{9wA5ZN2k@QFJit7=2^Uu z6CP=c^=G$ZJTcUzu|GaDFb+TG2l234U^Tg^750aSJ%O8}zjv@tjdN%sVC4W8?@Rha zUQbQ(xpN%wHnxkmR~FA#$9g6eNP%Cvp7ry~2Y!*vQ1L3J{LaBwUhK-XY!jJC&M`QCTIin4C$FBP zu0lHrqvnN6Ud(YI4=$BxZQ%%*7nX$7b-VCM)u$JuEmv8{R=l_n_1=w7PUx94C?zgL zlrj8EOf}@!TYkQT`)1Um+abekU3H_`)qF{V;n$1yd+rHGA&A#?zR-JNoqfK^u-Q*o zA$;;6Jr9EXiYcYve+E6j@VO@K_g6e`h|eO(9~;enC*I)x&W2iVGRd^}5ercbkw zOiW~X!~Vhk+kL$ZArC>rI^loQhvr%u+)i-&!+$rj6s=PsM1nNLDJR?++A**!Xb zJFW%O@iF}KStdLm&wpjJ7yUcw%Z95dfE$`V1n11IN?m=@6nxu z&!mDGG`|TIM`Ox657tQq0|0CI*XTzeeSLZbT>lNP&!Ml!7~)YC&9)dw4M1Xvceri( zF#Vm;?BUOQ?T|>~ZDR73r(e$}bN`_hAy1eI>n%L`E!BZ^UMga2VP>U+4G}LGeqqZ?l^6RFYVMkPsc2lchiukVrWgAd3O~az zUbX%oUm-YGFZNC3`FWmu@=|sJZ-EH(H6Eq~w!5(&Yt!?`Nx0vM_SyS$zi9lqPjK@@ zTpuAHA7el1b7%G6!?lG7>aPy?pK0EpXL6K?=ac$ZE>0mKp#%oDHA0-fTBYVYv7TA? z$H(UTs9dqkYJss!N2XN3GNSbX_}TaRAn30V@Mk4U2fb*a^}-tC1n_J9`aJc&`7OV5 z2>iuV;5RSfd8bCNr2;#eZ=C;+I$r?)i!}E?55W85l_q{z?|)uD6s`w-`bztiv}pEk z>-u;&KAuTN!}L$`$vx|+9`q2wu?|O3^NmmLFQuetJp5D!tk>%E4&;765iveh;{IWx z(RDS%=X2Wu{=7}uBE!j_wp15lzojNiQyN8;!#~GV7vlZ1O~QM(_QJVm!$%49yx4_^ zJ86H(6UkA%K^qdn`D7vX@4MSud$%8(ITZFg_M2A8jzNpBacDiWI|uQJ_@DSN=z6ZH zkFHAK`wHwIN1r=u|MnobOsT+!`yYA$d=dS60e+446Z*iv6|K)$FQftszzN{r0&qOw zdPkbSG#n2)|HYbhTp#KCjp+D6e#dC8r{e|B)8xBU;0*T*a6B)R)6dh^#K-$+%%g8O zK11kr_`W-u=V|s^y5bd%KkPre-3XB3uo zpS_J@$Kjv*-bF{V>-jPX&p`_HW^8}GarIrOvdJHb>rE)1JOl9=yZcgbbjZWh(GuX3 zOIqQ1`VPM#^!X5A!KWvEfMFgC{W4(LoU%!^i+%J(c)sKV{ob6i?#xww2Ab>5L!n|J zMcS6SPRze1UR(w6Q-JkD6EENs>p6}e@QwW--Om8V@dAFa-gIJpa-`#tQSqPg!u%cW zJ4@eh1o1~QF6@D_cZcA4c)#KL4e_M?y*6O1cbfQz zkn>N=9c3J(K)Y?P30$JtgMHK%NR-93P5Nz+{#ys~{0gNOKK@E=a3A{P0H2H~r2^12 zLM}To|5isPpUiH40)F*>>dkb1)8ucp<7AAtF`5#S}K9&I|}@N9D$#M2q@ zIGI)jG8Hju;Q3Pl7bn(m%|boG6>z<_ImGMK^Yo*>&sL>X!~Ox>e}7mSm0 z>g%yeF=;aC7)BmJWr!(21V_n~BIm)=1XoYJe13GX-)j7Q_>)8?|K3gG>TwtvL;_ip>^c-~d_k&RAF`Cn?* z9+T0=wqbgyCgxAr+YjrB!qOg(J>!39P*RW=yV3SO6U{vm?PB2r9#Y0Pqk`hBqc&ubTXWC(8cb%GB`&reJ1O8g;3ZH6Ut7jJH{Q$xHHlGutw=3h9 zkM^^?U3-Tuzo(oZ(azgp5Z1JE^J-JL6_QovwaNty!fBfGo@p*sZi$mtS zkh^fEj2rjHiFtrh>x;Sz7xq*usMRp9rzjQ-&=B&;W~{1;ihy~VjEU~1?H6B{PhldA z6$Cmj8mMG$M~f|TnV&QHXo|UAOYYmp#}93Qe8}f%&L`?%J}Cz5Jr?GZqi<^F!Izm^ ziKs^sQPyAasSkI3+*V~fgNqKkjYEC*;UVNOTX;Xg!;;Lyh1BZwRw`6yL-SI_)A?4A zucH_J^2Ux`Q2+X4zjA4Fwv`=AvfIJ0!6KxFC@;hl@NQlA* zV=QE#*(!yzcP83S_urJZ2%+MZ;OcL;I;4UU=;xWBpTV64ptrfq?p>M0jZqfiR##7D zq{I9vn=c5^&GI&XA7)sxor3q%v7KRt&-Y{^fy5m6P5N#7rOg*V4E(+E*7Li*%*Ijo zy`56CXWo|>5ofbhtbLi^4k1I%4V{9nTB<9WolB_)h}`6_cX^IjCr|cb*U3tdqL;%B zjp6u6;w`kMH^5;<+R(9QetGFR-jl~z^b*deK@GUsBTrWKO3@=tedzo-A6qo6+aHxQ zx4Figk5+Z%GVimkg9zp|4)?gV<-#=Rf6@9K?zzQO+};q@1|jTc$-k3=m(Ht7Eq!Y@ zBn9v1-jkWFlQ*eGOtPC&hWp2$Cjak_v46vPH%ox^L1}F!sZJO>DBN(p7uu93=H#ZJ7ziCz;3>@;7QHA=*Mi?KDH8p9ZRwx<3Gmx4sa9})X$|j-=VNqz z$Nr|X$C37*w&vhJquH6%cYh?#^7b?xw`lNe=m*4zG(ZB*nJb^Kcf@+Juc9g1agj2| z8y+Z^skI@AyFOv5)I?Tz=$|L__s8>HANY&y7up)`EhPmokKjv6{Xd-c9B5!5;^O%k z*S5@*o=3=03ij^?dSgT~jysVw-fDd_yua-GqhJEf@pTw^?NT!I_Zq)3ufP96`m}$` zp#1^(6XZkt1@If-SHM3YG2}blKY<@VSf^s?kD|1Z>)w`MT6_8`-$%3cZ@|2@sNc^$ z8BIohr$(SPpa?|Ndp7uM#}LFY;7FK5H~7W&P%740H)TEJQVM^mvpGA&aD#1>Fr#uv z28zijF0XUJeDejx{vu0r+w{aFJxjX&=k=Dkb&seUV~@`(Xn$6&zUihr63#CHYy202 z^SyOxe*(t-2!DLjxT%aqJ@~qJKD#A9N-}$7vSfMkj0I#$>dE2Nh&WYmr2O#tXoGx zzt9xaTh@7OCY(RQ@2{{*f)O&Qp-z;v7nVerla5Qh4Umz*l`rcVcBKvWzg%!%vR}kY z2;mZmdrd~$M{!#jSufk~yp+vp$oSA+VL0bca@D%;)3jG3tJt+z&m$8w`W_DT2cFlK zY1mL8GB!nnzkkuSn1#5fH==iPtJS^%SDTzHT9&qz5Vr@(T+O_1eS5=hBt67P5vR>6 zVxlg`ob!R+BUX|JWz$X}?|;wdUhsnboBw>i%sdcrGT*;{q9EICg-CD6FtRIny5a6I zliSyC= zaE?WJc$QD#@@TfUsAgaA(s5O(OE#T$nWL5%;b_Gx2Fc0O0$XJtO!%+e3N3LPT5cK@c;UJb^`FA@1vJ$8^e&4;= z@7T}!a6|vG#`y&8K!pSNNywioGUEzzu}ByD%lWY15)v!8rtaYXTqcv}=Q6gTTN*zn zV@8mpmx|E%Tvl1=b&mO!!#;Lg#U`$m+O39Lb8Dyw`LxgDRyi?i23EXycs)n26!@vQ zY=A~P29Ec$E|piqa%CC zT_VUUychbxn)^dut3x2zC9&K89X)fb(5=Emf-AV*J)H{Rt75!20duD(19tkbyT`H` zn~cV}3vOM}dbm|fxGbih7ro?D|W9p#U%U}8X z*KV7Q@z*`Mt!#N=dg92LC{2GBC()c*stE}5t8LIsWYMEv3 zP0XL_u1}XqW|$2#k6{pgOBV8bFjE*@PzVZ;ZLG6B@4yK=mL#1RvX4giOq{07CV_PH1X@)`Bm8-3-wMB9 z{%ZE~N4I7JGd3Zv^-+S{1ZMKMns(b9j{HcLnJH<&BN>TGRicI#t<8a(9#s6r+^gsM zb2QLVHvX8TvEg);@k0wrg7}%fvB;5WxbeQf+!mO+k@CaIJGY4{8{~Fr<^H4^#aru; z#iK~^n4H$JE0q}ka`lnbpW+AM@gy<+4}~EZ5wb_=Y{Un`OCx(I2|h3(_X_6%{kf2Z z?BG6I0Iv}Qn63W%dlnV{m_Yb{5rV3{^bZMhtUB#~NJV)1`&XEW`6?B?g&gRF;=yU( zMrM1AOC;*?gTPH4eJM2O3gZ!9_s!1`}l29b}Sdss{6A9ErsdxI*b)j z8dyI)#LW@&rBql@rYL@nCYxlsX4;5?$bVc&gl{p%dymoi8{-XSV?OjA#`Y|H9)kGk z!>{A3@A^EH?X168z}#$r2tjyEOEnG#$kRJBVrT0Bwq_Zp6NE8YbtO- zcvaUQ3V(mlZE)3BX<#aV1f3L~>dd8$YGf2XZ8n81a<2$_Ds z@8sFr)BW~T4h$sA>%92|zOfr^vK#j_CB?&467v+oM-=+7Hu$352Mv_HHRoe~Ds}v5 z;MqmCd`VTqb|!tEJD9A70V|3nho3La$9(ONLim)Q{N0CdE5`pXJ`(lzTwOlIi&(@0 zNZpQ7&THR#V2A|g{}L!jB|->%UpQn%S(tp|5|3B+& z6c6~^jLit|fGtBaBR!(Ud{T|_-_Ek`ve@s$Z*cKa&w*T+{vUeJfpR&Kbn$D?XE%63 zr?&wCNvLKFQ>^an4!u#{t~5vI#LU}IX3<{>+v|Zi z(P=J=K4rO!_PR@#o#%~2#VGSZPcB&a@)ZAhQ}drlPoBy?u*Kpg)65~GMQ?dnZ}SWR zuwGpo+CR8$GrB)68x#%)=)K`UW_TCHE=z%xnNR#KDlNnK|0cm|gCYwJt_LhmdEHb# z-yzLH;B8ZEhy6R%9OpaIyFUD5Kk-59<6-E(&r>*)t6AB`OU|^k%oynGT*PtOYsWME zt;+zsv3ank&5^~CbK#0Z1V4S)X}f}nseO9?_lj4u>ljq;Q2f`%$;Cf@XxE;M?_#(} z?~Y_ym>|6$yj)>?E7EYoD{GdeZ#OI=wgEt};h@ zUv4$Xi3{z2>NNtluGAV$Pu3ct{)zEyB|u(#!qby?EE@M?JkM z)DYBN+%RuphQ}2y<_G+Q`as{PHQ@JwJvd(KQORGkVocQAdHbw#I1fF0+2Z|zG1J0^ zk2s*qZ?iuC1HHeM*v9(T=l^V-{}CT3K9GMH%ZCt{ytw%>jkl*UIfrvZ$h)-{Jdy3= z&2ib2^`ClAxnTV56WLC_#+2I4NsoK52}B+0mUm<9EI>St=qdS;(izMCp)i9fb_na_Ljgtz3*g7 z>r=a!omczx-d6re?*(ZrK7YN*u$GmgzdIJEvvWAtu->ah2@y|^G^_>a{^hPL(D<^7 z$+WTe%8W;NiV4sd)w!g-eD4s{|FDQU06x`sNf5yzq$HU2>#SWtgp>yme+=@!-xaMv zUp$@nMD?_wVJwO#%f|f(U$Y7FH-3fmYm>W~oz0$a+SMq&FNuN5 zui?be7ZLt~c%=8=Kv0G1abnqlp$oAdL@XshO9|?KMk%5Ye(gts_Pcfd`ZOF*EKcro z(o{i@DT#Jiyn|@T_RWti zzU$lIX~*J%sN+kfqxnYh%J|_WHN3uF>_hPatNB#ZdvP90cy|(Nq({I~*J-49#U^cpmt=M+gcHj~50X zK}CTPkmWqCF@5@uzxAyT=YnH%I5&lg`KDVE<0y#TJTCrmP8hfo=lu-?=3 z&B0jjV`@=cRuYK; zrz#Dd$80?7K!8a9-SK;hdNeR{<2T2M4DiZZH_zCy=7nr}Eio-pfbQt2E1UZIJIv4h zGdg~R^?bIDFKqvyfo8Zr9M1kqdv;ODo-_fRams^+^0b62sNZZ%ji&1R{2hFp3B~xI zeU1l=-x6LKsf6HLZ50!?C83u|;e>-4A0RDyzgFen(w1n(mSer&O3=;&`BZ8H_WyB> za^c6S*%hyESA#&3sGB)L(V0K-x0$kQ4(1-PX@XzQnl!t=hCwqFCh^> z=257=Giq4*?kzkMCz2;-_KrKjn@i#N9Fy^$toJc&I=R~qN8sOVw4xFi8k{nF!Li3w} z)Ysg~knoaU115veya^u0MC180zTM=WMLe?S-(czbv*DL^U$5l46kV1__^3(}M?aeL z%XK%z&%LKg?RtxzUYS)h%5MT>?g%gVKC1MrbUm%(XXC@0=QOVq?@UV&Psisw&2PL9 zw?C)j1Mx$&PHAiWWTW}-Nb=51iOZlJQqp5e5Q-I;h}68S=Ls%Wh5&!vczJq-^EXl2cq5tQ4kN-g?}c(%>?`dKz5Ws4 zc*%Fwz701IWBo(dtH#AmtrF?x8*(y^r?~PH^uOb2W3ljaJRM}Q>2XJwc8A+X%&W7c z9ipkVojU&`y~F+&u_u}JT7svyZZ*AmbHApB3-5Yzc84u|a`BNm?P0C88#zHp`G;Mo zWq29&fVV&cP29k9v(MkJhBKA|dj9KA@v4D#gUF=uvJp4l4?y#|NW_-2{ci-MdEXKN z+Ra3S=X3G(s;|&|zGFS&1M@RP+l~0q&+FJeUH*~6w*FjBy#F&)Dk41l{km~vWhIyB z@Q^3>7e@&lcYHM@3-M3?bzjM}4_aHwI6r-c`Elu3P&NE?sc!zm{3P8i&HuztG_?%j z*ZKcAgZzJpynluPfAj2|-tEe-bK9bUHIw~J$9&S4hZ-0f$^Fyyv{8#T_?c^Qp_Uyh zr0Y!2W<~_B+;8T;U(22*bpA7RU2o(C<3k?6P6LBoz?@Fh(u2Dc0rJ-51I%AIP+iS<5hiWMrM+xOX29Z`gRd zJbPYpG!^j~KaT%s%3dE2hI&2JK=&2?EMKG$Ktb@59n>&ZNC@e{Kupq$?Oi8m;J5`b zTN6LeTk&vT{BZYGo~qJaokx%66vjj2g9BuvMiG~eEg3pwPeCPj83-^MTpE+NzkCz0 z9-x8Nn4fUb$IKBno@9ase(eroT|dXG8g5<(=vov{`g}+EZQxW9=!}C;J=Knn^DPeL z8^15#Fdy*A3rg{Aiu1QUl#`SP3(KHfpH}UgL`Ed4w>m&b;+U;r+ltLu2}@;W!AY zyYBkEyQ%AUG|+_w-mJj<;C+sX8XBxX`PTC#-wqm*NptZ&OqXw0Njdz$6`8PrD3z!3 zOU3yn{jtgc-w)QGXvzTLDKtD%7@W%>y^p4hkZp+dP?rzUl!+d%zC(zJrp%E2C10W` zOZ_?04?TaFFWgTZDU8Tv7`13k%|Qw{IY<(wy|Y~291n|Qi-0q_f)9#}sx8#;S%{sX z|16;LqV@4@ea)9|d5CT<>V5gH_(wHtzG`c-EY(fY^w;Bc`ITDs3t?QH+1Z=fYh3r6 z@%y`xlZ8&R!!B!Oye)45&t3y_T)^@beR_oRDpj^%KQM(x-gG^)#Bg)}ix1 zVgU7j2;U#bE<}t3V?9KCl0sOfHl98e4Xy+YG$q^p>LOsB6S#C6?*4elp4i095^)}8H z#EvdrFkkxqLC*)~3*kk0^!9aR>-ajNzrG*BTZp0q^_RMS>oz)v=(`ZVy3fP$_L(ol zKj!O8e{vTry4-u4Z~}lLfI~!1Jd9o60<92PVj?L(u>$esvoK|#wRo6rAO1oO-OEQs z-CKzB?UF9vT21=3&1^Plc|GHqE8hPQ9TENUyc?pM@UZQPY&;PnM)Gw0=+5V2TX#L? zOLwZ{>sptP)a_6D_Q!g@bcj)e^zj9b4F8m0eew1gKjsVL({)^-(G=zj+n@69CbD&W z^zqY|pEw?M@%AM@BalZ>yi4UM-$W?iR$9JMM#4Gkj&(uxFmfwB6-Y&N zV$M6Hk7(ZGqK>o&M;m_q_vaml$aXIH&Tx)h%%ar1{iZ3L=T8aZ`Q@Mopu=dW)ZoER zHc{PZaCiD6COiK^4Ko1sD_gGQTIa=!DY=Tj{VKBaUfU~84IBiW=i7QtAsamXLwR6J z@1?P_(ts;?Un6w~bxWs|&YQiHK>5gUIr@FvTpG>WJK4>Iblhb|+uG5}T-p8<&6CD? z(}d#D(rUm#^EK+fkKMBra=}%nku*Q$X))`F3)@`bli%F-M&RousN_msr0$BcxZwZ3 z%xQ|p?7(yd(VY*3gA0wp9P{_z;(7Wy(9Ms!eJ z)m2jVD=n^h)6LW*GQvxVY8YJh+TW}K^>3f&*IMGs_oMx)ry-F(bW6R*OfiM_t7$y` zLgb%Xuvz_T*4qIHzqI3zh)MaaoI8hWxvu#BmN=U5h&90$*dIBZ8es?87aj~sAGvE} z4iDqo#R8x8L&9P#2ZO`2#Eqget&{VSey}9#|Aimz_Y`oe@spO8mSNTY)zt!0ZDsg% zrXig=O+fR4I??{}FR9$Qld+w$uD!GhqWNzax7uD+=j{Zx{X>v=|Fn5B3M8lbT{Ll!=laG=HZk|};F<6fM|JnrP`K`P8(R0X8Q5b)IhJG=Fl$U7V%*+f%ZXV00fR#`-cH)NeX90H7)KJ!F+gkOxD%b5-AE@cF-9} zhg?WJt-L8p&*3zAc0>Rc9Dd1HO6^J0#e2o&pfGSj7w>4EZ=>WMYu1a7ue%p38X;kA zE-eKQeO1i~=f0Wz(pAeYjp#8D-!|`Vu3?04nk%`93LqY`JI*zIK?%=LlfyaW*<~c& zDhRpm``rEjt%kx(Ia*(eh{SzuNY4pwEbR}#rn;DHZc5bHtQ3xXbEiQIUj+=RDH>+m zafs(9)n)O6S1=_HY6R*r9wT-};Cx(!?!*7tIr+ z{)T8}f9Y>ha(T}W8Tu1ju|9xJm4O-0{i=J@n zLOh(d?%(*eY~h;jQNUw+>%`No-8nBK;Sw)mrN23P7_U|Tc5O#np$!q9{Pm+=l$)RiRQD3 z+ndHWH+{_MiicT2Qf>m0Zz&NMR5U*xy2Jz0wIArp@60d6^W$+LRnu?5Yhk&0e{PJq zmdzGA{T^z?Tyq-W#Us3Q_01e_d(qQg8UWNE{VvD-84c*M_WAozKcK6>`g(@z|K`4W ztlJo&dgEh-?_VTO$n0Hv`jiIxB=HIA2e8fjt=9TsZ9Fszrr}^D2>N~x_4n}<5oiT2 zJBVY2IX_~(=Yo4oL5TkOJIZfoNUK2tZ|~RrY`wULNTPh>hNv`>;2Wk+KEz+;)J>dZ z=lv!5K-#jD_pV^Qu$FH!-V*6C0R6{=mj%*`2K_`J>2GL_T1A}Eb{=IxS@)@#lY{>AlhcN*MaK5 z7fzjyQ_#z$%Stuy->E#Q^Rx597@cW2h+W|KlTRYvI!xaN6 z3ENq8&uZ?ig;N7bxzpynfYgKDKGe)z;zU>Wv)63%C8rE*25V)S$XHkQ>v~JYSji&O zqai~hLt`hCYI&RTmWe!@F5`?C~LPyMu<^n&iK4ck*0^bDc@!+av+(gW?eGqYEz+rak^? YP+R7jm>hN2_&DA(r<9!C7s!|Y1$OGK2><{9 literal 9104 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 C$zO8- diff --git a/examples/runtime/textures/texture_compression_astc_8x6.dds b/examples/runtime/textures/texture_compression_astc_8x6.dds index e205b999ce5a5afef1850065e6d67da54c0798a3..24a66a6fef664194cb3295e124b2fc32c5705f51 100644 GIT binary patch literal 7728 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 Mp10sU#Fl6O17C6}JOBUy literal 0 HcmV?d00001 diff --git a/include/bgfx/bgfx.h b/include/bgfx/bgfx.h index bba37b353..844337d8f 100644 --- a/include/bgfx/bgfx.h +++ b/include/bgfx/bgfx.h @@ -180,11 +180,19 @@ namespace bgfx ATCE, //!< ATCE RGBA 8 BPP explicit alpha ATCI, //!< ATCI RGBA 8 BPP interpolated alpha ASTC4x4, //!< ASTC 4x4 8.0 BPP + ASTC5x4, //!< ASTC 5x4 6.40 BPP ASTC5x5, //!< ASTC 5x5 5.12 BPP + ASTC6x5, //!< ASTC 6x5 4.27 BPP ASTC6x6, //!< ASTC 6x6 3.56 BPP ASTC8x5, //!< ASTC 8x5 3.20 BPP ASTC8x6, //!< ASTC 8x6 2.67 BPP + ASTC8x8, //!< ASTC 8x8 2.00 BPP ASTC10x5, //!< ASTC 10x5 2.56 BPP + ASTC10x6, //!< ASTC 10x6 2.13 BPP + ASTC10x8, //!< ASTC 10x8 1.60 BPP + ASTC10x10, //!< ASTC 10x10 1.28 BPP + ASTC12x10, //!< ASTC 12x10 1.07 BPP + ASTC12x12, //!< ASTC 12x12 0.89 BPP Unknown, // Compressed formats above. diff --git a/include/bgfx/c99/bgfx.h b/include/bgfx/c99/bgfx.h index 7b1cf9a22..04d9bcebe 100644 --- a/include/bgfx/c99/bgfx.h +++ b/include/bgfx/c99/bgfx.h @@ -194,73 +194,81 @@ typedef enum bgfx_texture_format BGFX_TEXTURE_FORMAT_ATCE, /** (18) ATCE RGBA 8 BPP explicit alpha */ BGFX_TEXTURE_FORMAT_ATCI, /** (19) ATCI RGBA 8 BPP interpolated alpha */ BGFX_TEXTURE_FORMAT_ASTC4X4, /** (20) ASTC 4x4 8.0 BPP */ - BGFX_TEXTURE_FORMAT_ASTC5X5, /** (21) ASTC 5x5 5.12 BPP */ - BGFX_TEXTURE_FORMAT_ASTC6X6, /** (22) ASTC 6x6 3.56 BPP */ - BGFX_TEXTURE_FORMAT_ASTC8X5, /** (23) ASTC 8x5 3.20 BPP */ - BGFX_TEXTURE_FORMAT_ASTC8X6, /** (24) ASTC 8x6 2.67 BPP */ - BGFX_TEXTURE_FORMAT_ASTC10X5, /** (25) ASTC 10x5 2.56 BPP */ - BGFX_TEXTURE_FORMAT_UNKNOWN, /** (26) Compressed formats above. */ - BGFX_TEXTURE_FORMAT_R1, /** (27) */ - BGFX_TEXTURE_FORMAT_A8, /** (28) */ - BGFX_TEXTURE_FORMAT_R8, /** (29) */ - BGFX_TEXTURE_FORMAT_R8I, /** (30) */ - BGFX_TEXTURE_FORMAT_R8U, /** (31) */ - BGFX_TEXTURE_FORMAT_R8S, /** (32) */ - BGFX_TEXTURE_FORMAT_R16, /** (33) */ - BGFX_TEXTURE_FORMAT_R16I, /** (34) */ - BGFX_TEXTURE_FORMAT_R16U, /** (35) */ - BGFX_TEXTURE_FORMAT_R16F, /** (36) */ - BGFX_TEXTURE_FORMAT_R16S, /** (37) */ - BGFX_TEXTURE_FORMAT_R32I, /** (38) */ - BGFX_TEXTURE_FORMAT_R32U, /** (39) */ - BGFX_TEXTURE_FORMAT_R32F, /** (40) */ - BGFX_TEXTURE_FORMAT_RG8, /** (41) */ - BGFX_TEXTURE_FORMAT_RG8I, /** (42) */ - BGFX_TEXTURE_FORMAT_RG8U, /** (43) */ - BGFX_TEXTURE_FORMAT_RG8S, /** (44) */ - BGFX_TEXTURE_FORMAT_RG16, /** (45) */ - BGFX_TEXTURE_FORMAT_RG16I, /** (46) */ - BGFX_TEXTURE_FORMAT_RG16U, /** (47) */ - BGFX_TEXTURE_FORMAT_RG16F, /** (48) */ - BGFX_TEXTURE_FORMAT_RG16S, /** (49) */ - BGFX_TEXTURE_FORMAT_RG32I, /** (50) */ - BGFX_TEXTURE_FORMAT_RG32U, /** (51) */ - BGFX_TEXTURE_FORMAT_RG32F, /** (52) */ - BGFX_TEXTURE_FORMAT_RGB8, /** (53) */ - BGFX_TEXTURE_FORMAT_RGB8I, /** (54) */ - BGFX_TEXTURE_FORMAT_RGB8U, /** (55) */ - BGFX_TEXTURE_FORMAT_RGB8S, /** (56) */ - BGFX_TEXTURE_FORMAT_RGB9E5F, /** (57) */ - BGFX_TEXTURE_FORMAT_BGRA8, /** (58) */ - BGFX_TEXTURE_FORMAT_RGBA8, /** (59) */ - BGFX_TEXTURE_FORMAT_RGBA8I, /** (60) */ - BGFX_TEXTURE_FORMAT_RGBA8U, /** (61) */ - BGFX_TEXTURE_FORMAT_RGBA8S, /** (62) */ - BGFX_TEXTURE_FORMAT_RGBA16, /** (63) */ - BGFX_TEXTURE_FORMAT_RGBA16I, /** (64) */ - BGFX_TEXTURE_FORMAT_RGBA16U, /** (65) */ - BGFX_TEXTURE_FORMAT_RGBA16F, /** (66) */ - BGFX_TEXTURE_FORMAT_RGBA16S, /** (67) */ - BGFX_TEXTURE_FORMAT_RGBA32I, /** (68) */ - BGFX_TEXTURE_FORMAT_RGBA32U, /** (69) */ - BGFX_TEXTURE_FORMAT_RGBA32F, /** (70) */ - BGFX_TEXTURE_FORMAT_B5G6R5, /** (71) */ - BGFX_TEXTURE_FORMAT_R5G6B5, /** (72) */ - BGFX_TEXTURE_FORMAT_BGRA4, /** (73) */ - BGFX_TEXTURE_FORMAT_RGBA4, /** (74) */ - BGFX_TEXTURE_FORMAT_BGR5A1, /** (75) */ - BGFX_TEXTURE_FORMAT_RGB5A1, /** (76) */ - BGFX_TEXTURE_FORMAT_RGB10A2, /** (77) */ - BGFX_TEXTURE_FORMAT_RG11B10F, /** (78) */ - BGFX_TEXTURE_FORMAT_UNKNOWNDEPTH, /** (79) Depth formats below. */ - BGFX_TEXTURE_FORMAT_D16, /** (80) */ - BGFX_TEXTURE_FORMAT_D24, /** (81) */ - BGFX_TEXTURE_FORMAT_D24S8, /** (82) */ - BGFX_TEXTURE_FORMAT_D32, /** (83) */ - BGFX_TEXTURE_FORMAT_D16F, /** (84) */ - BGFX_TEXTURE_FORMAT_D24F, /** (85) */ - BGFX_TEXTURE_FORMAT_D32F, /** (86) */ - BGFX_TEXTURE_FORMAT_D0S8, /** (87) */ + BGFX_TEXTURE_FORMAT_ASTC5X4, /** (21) ASTC 5x4 6.40 BPP */ + BGFX_TEXTURE_FORMAT_ASTC5X5, /** (22) ASTC 5x5 5.12 BPP */ + BGFX_TEXTURE_FORMAT_ASTC6X5, /** (23) ASTC 6x5 4.27 BPP */ + BGFX_TEXTURE_FORMAT_ASTC6X6, /** (24) ASTC 6x6 3.56 BPP */ + BGFX_TEXTURE_FORMAT_ASTC8X5, /** (25) ASTC 8x5 3.20 BPP */ + BGFX_TEXTURE_FORMAT_ASTC8X6, /** (26) ASTC 8x6 2.67 BPP */ + BGFX_TEXTURE_FORMAT_ASTC8X8, /** (27) ASTC 8x8 2.00 BPP */ + BGFX_TEXTURE_FORMAT_ASTC10X5, /** (28) ASTC 10x5 2.56 BPP */ + BGFX_TEXTURE_FORMAT_ASTC10X6, /** (29) ASTC 10x6 2.13 BPP */ + BGFX_TEXTURE_FORMAT_ASTC10X8, /** (30) ASTC 10x8 1.60 BPP */ + BGFX_TEXTURE_FORMAT_ASTC10X10, /** (31) ASTC 10x10 1.28 BPP */ + BGFX_TEXTURE_FORMAT_ASTC12X10, /** (32) ASTC 12x10 1.07 BPP */ + BGFX_TEXTURE_FORMAT_ASTC12X12, /** (33) ASTC 12x12 0.89 BPP */ + BGFX_TEXTURE_FORMAT_UNKNOWN, /** (34) Compressed formats above. */ + BGFX_TEXTURE_FORMAT_R1, /** (35) */ + BGFX_TEXTURE_FORMAT_A8, /** (36) */ + BGFX_TEXTURE_FORMAT_R8, /** (37) */ + BGFX_TEXTURE_FORMAT_R8I, /** (38) */ + BGFX_TEXTURE_FORMAT_R8U, /** (39) */ + BGFX_TEXTURE_FORMAT_R8S, /** (40) */ + BGFX_TEXTURE_FORMAT_R16, /** (41) */ + BGFX_TEXTURE_FORMAT_R16I, /** (42) */ + BGFX_TEXTURE_FORMAT_R16U, /** (43) */ + BGFX_TEXTURE_FORMAT_R16F, /** (44) */ + BGFX_TEXTURE_FORMAT_R16S, /** (45) */ + BGFX_TEXTURE_FORMAT_R32I, /** (46) */ + BGFX_TEXTURE_FORMAT_R32U, /** (47) */ + BGFX_TEXTURE_FORMAT_R32F, /** (48) */ + BGFX_TEXTURE_FORMAT_RG8, /** (49) */ + BGFX_TEXTURE_FORMAT_RG8I, /** (50) */ + BGFX_TEXTURE_FORMAT_RG8U, /** (51) */ + BGFX_TEXTURE_FORMAT_RG8S, /** (52) */ + BGFX_TEXTURE_FORMAT_RG16, /** (53) */ + BGFX_TEXTURE_FORMAT_RG16I, /** (54) */ + BGFX_TEXTURE_FORMAT_RG16U, /** (55) */ + BGFX_TEXTURE_FORMAT_RG16F, /** (56) */ + BGFX_TEXTURE_FORMAT_RG16S, /** (57) */ + BGFX_TEXTURE_FORMAT_RG32I, /** (58) */ + BGFX_TEXTURE_FORMAT_RG32U, /** (59) */ + BGFX_TEXTURE_FORMAT_RG32F, /** (60) */ + BGFX_TEXTURE_FORMAT_RGB8, /** (61) */ + BGFX_TEXTURE_FORMAT_RGB8I, /** (62) */ + BGFX_TEXTURE_FORMAT_RGB8U, /** (63) */ + BGFX_TEXTURE_FORMAT_RGB8S, /** (64) */ + BGFX_TEXTURE_FORMAT_RGB9E5F, /** (65) */ + BGFX_TEXTURE_FORMAT_BGRA8, /** (66) */ + BGFX_TEXTURE_FORMAT_RGBA8, /** (67) */ + BGFX_TEXTURE_FORMAT_RGBA8I, /** (68) */ + BGFX_TEXTURE_FORMAT_RGBA8U, /** (69) */ + BGFX_TEXTURE_FORMAT_RGBA8S, /** (70) */ + BGFX_TEXTURE_FORMAT_RGBA16, /** (71) */ + BGFX_TEXTURE_FORMAT_RGBA16I, /** (72) */ + BGFX_TEXTURE_FORMAT_RGBA16U, /** (73) */ + BGFX_TEXTURE_FORMAT_RGBA16F, /** (74) */ + BGFX_TEXTURE_FORMAT_RGBA16S, /** (75) */ + BGFX_TEXTURE_FORMAT_RGBA32I, /** (76) */ + BGFX_TEXTURE_FORMAT_RGBA32U, /** (77) */ + BGFX_TEXTURE_FORMAT_RGBA32F, /** (78) */ + BGFX_TEXTURE_FORMAT_B5G6R5, /** (79) */ + BGFX_TEXTURE_FORMAT_R5G6B5, /** (80) */ + BGFX_TEXTURE_FORMAT_BGRA4, /** (81) */ + BGFX_TEXTURE_FORMAT_RGBA4, /** (82) */ + BGFX_TEXTURE_FORMAT_BGR5A1, /** (83) */ + BGFX_TEXTURE_FORMAT_RGB5A1, /** (84) */ + BGFX_TEXTURE_FORMAT_RGB10A2, /** (85) */ + BGFX_TEXTURE_FORMAT_RG11B10F, /** (86) */ + BGFX_TEXTURE_FORMAT_UNKNOWNDEPTH, /** (87) Depth formats below. */ + BGFX_TEXTURE_FORMAT_D16, /** (88) */ + BGFX_TEXTURE_FORMAT_D24, /** (89) */ + BGFX_TEXTURE_FORMAT_D24S8, /** (90) */ + BGFX_TEXTURE_FORMAT_D32, /** (91) */ + BGFX_TEXTURE_FORMAT_D16F, /** (92) */ + BGFX_TEXTURE_FORMAT_D24F, /** (93) */ + BGFX_TEXTURE_FORMAT_D32F, /** (94) */ + BGFX_TEXTURE_FORMAT_D0S8, /** (95) */ BGFX_TEXTURE_FORMAT_COUNT diff --git a/include/bgfx/defines.h b/include/bgfx/defines.h index 01a188c2f..c5f136b4e 100644 --- a/include/bgfx/defines.h +++ b/include/bgfx/defines.h @@ -15,7 +15,7 @@ #ifndef BGFX_DEFINES_H_HEADER_GUARD #define BGFX_DEFINES_H_HEADER_GUARD -#define BGFX_API_VERSION UINT32_C(117) +#define BGFX_API_VERSION UINT32_C(118) /** * Color RGB/alpha/depth write. When it's not specified write will be disabled. diff --git a/scripts/bgfx.idl b/scripts/bgfx.idl index 9d97bc0eb..a0d9428c6 100644 --- a/scripts/bgfx.idl +++ b/scripts/bgfx.idl @@ -1,7 +1,7 @@ -- vim: syntax=lua -- bgfx interface -version(117) +version(118) typedef "bool" typedef "char" @@ -523,33 +523,41 @@ enum.AttribType { comment = "Attribute types:" } --- --- @attention Availability depends on Caps (see: formats). enum.TextureFormat { comment = "Texture formats:" } - .BC1 --- DXT1 R5G6B5A1 - .BC2 --- DXT3 R5G6B5A4 - .BC3 --- DXT5 R5G6B5A8 - .BC4 --- LATC1/ATI1 R8 - .BC5 --- LATC2/ATI2 RG8 - .BC6H --- BC6H RGB16F - .BC7 --- BC7 RGB 4-7 bits per color channel, 0-8 bits alpha - .ETC1 --- ETC1 RGB8 - .ETC2 --- ETC2 RGB8 - .ETC2A --- ETC2 RGBA8 - .ETC2A1 --- ETC2 RGB8A1 - .PTC12 --- PVRTC1 RGB 2BPP - .PTC14 --- PVRTC1 RGB 4BPP - .PTC12A --- PVRTC1 RGBA 2BPP - .PTC14A --- PVRTC1 RGBA 4BPP - .PTC22 --- PVRTC2 RGBA 2BPP - .PTC24 --- PVRTC2 RGBA 4BPP - .ATC --- ATC RGB 4BPP - .ATCE --- ATCE RGBA 8 BPP explicit alpha - .ATCI --- ATCI RGBA 8 BPP interpolated alpha - .ASTC4x4 --- ASTC 4x4 8.0 BPP - .ASTC5x5 --- ASTC 5x5 5.12 BPP - .ASTC6x6 --- ASTC 6x6 3.56 BPP - .ASTC8x5 --- ASTC 8x5 3.20 BPP - .ASTC8x6 --- ASTC 8x6 2.67 BPP - .ASTC10x5 --- ASTC 10x5 2.56 BPP - .Unknown --- Compressed formats above. + .BC1 --- DXT1 R5G6B5A1 + .BC2 --- DXT3 R5G6B5A4 + .BC3 --- DXT5 R5G6B5A8 + .BC4 --- LATC1/ATI1 R8 + .BC5 --- LATC2/ATI2 RG8 + .BC6H --- BC6H RGB16F + .BC7 --- BC7 RGB 4-7 bits per color channel, 0-8 bits alpha + .ETC1 --- ETC1 RGB8 + .ETC2 --- ETC2 RGB8 + .ETC2A --- ETC2 RGBA8 + .ETC2A1 --- ETC2 RGB8A1 + .PTC12 --- PVRTC1 RGB 2BPP + .PTC14 --- PVRTC1 RGB 4BPP + .PTC12A --- PVRTC1 RGBA 2BPP + .PTC14A --- PVRTC1 RGBA 4BPP + .PTC22 --- PVRTC2 RGBA 2BPP + .PTC24 --- PVRTC2 RGBA 4BPP + .ATC --- ATC RGB 4BPP + .ATCE --- ATCE RGBA 8 BPP explicit alpha + .ATCI --- ATCI RGBA 8 BPP interpolated alpha + .ASTC4x4 --- ASTC 4x4 8.0 BPP + .ASTC5x4 --- ASTC 5x4 6.40 BPP + .ASTC5x5 --- ASTC 5x5 5.12 BPP + .ASTC6x5 --- ASTC 6x5 4.27 BPP + .ASTC6x6 --- ASTC 6x6 3.56 BPP + .ASTC8x5 --- ASTC 8x5 3.20 BPP + .ASTC8x6 --- ASTC 8x6 2.67 BPP + .ASTC8x8 --- ASTC 8x8 2.00 BPP + .ASTC10x5 --- ASTC 10x5 2.56 BPP + .ASTC10x6 --- ASTC 10x6 2.13 BPP + .ASTC10x8 --- ASTC 10x8 1.60 BPP + .ASTC10x10 --- ASTC 10x10 1.28 BPP + .ASTC12x10 --- ASTC 12x10 1.07 BPP + .ASTC12x12 --- ASTC 12x12 0.89 BPP + .Unknown --- Compressed formats above. .R1 .A8 .R8 diff --git a/scripts/build.ninja b/scripts/build.ninja index 081457fa7..94ac877c4 100644 --- a/scripts/build.ninja +++ b/scripts/build.ninja @@ -33,9 +33,15 @@ rule texturec_bc7 rule texturec_astc4x4 command = texturec -f $in -o $out -t astc4x4 -m +rule texturec_astc5x4 + command = texturec -f $in -o $out -t astc5x4 -m + rule texturec_astc5x5 command = texturec -f $in -o $out -t astc5x5 -m +rule texturec_astc6x5 + command = texturec -f $in -o $out -t astc6x5 -m + rule texturec_astc6x6 command = texturec -f $in -o $out -t astc6x6 -m @@ -48,6 +54,24 @@ rule texturec_astc8x6 rule texturec_astc10x5 command = texturec -f $in -o $out -t astc10x5 -m +rule texturec_astc10x6 + command = texturec -f $in -o $out -t astc10x6 -m + +rule texturec_astc8x8 + command = texturec -f $in -o $out -t astc8x8 -m + +rule texturec_astc10x8 + command = texturec -f $in -o $out -t astc10x8 -m + +rule texturec_astc10x10 + command = texturec -f $in -o $out -t astc10x10 -m + +rule texturec_astc12x10 + command = texturec -f $in -o $out -t astc12x10 -m + +rule texturec_astc12x12 + command = texturec -f $in -o $out -t astc12x12 -m + rule texturec_etc1 command = texturec -f $in -o $out -t etc1 -m diff --git a/src/bgfx.cpp b/src/bgfx.cpp index 2b54f16ca..f9ef0a6e2 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -1868,11 +1868,19 @@ namespace bgfx TextureFormat::ATCE, TextureFormat::ATCI, TextureFormat::ASTC4x4, + TextureFormat::ASTC5x4, TextureFormat::ASTC5x5, + TextureFormat::ASTC6x5, TextureFormat::ASTC6x6, TextureFormat::ASTC8x5, TextureFormat::ASTC8x6, + TextureFormat::ASTC8x8, TextureFormat::ASTC10x5, + TextureFormat::ASTC10x6, + TextureFormat::ASTC10x8, + TextureFormat::ASTC10x10, + TextureFormat::ASTC12x10, + TextureFormat::ASTC12x12, TextureFormat::BGRA8, // GL doesn't support BGRA8 without extensions. TextureFormat::RGBA8, // D3D9 doesn't support RGBA8 }; @@ -5600,11 +5608,19 @@ BGFX_TEXTURE_FORMAT_BIMG(ATC); BGFX_TEXTURE_FORMAT_BIMG(ATCE); BGFX_TEXTURE_FORMAT_BIMG(ATCI); BGFX_TEXTURE_FORMAT_BIMG(ASTC4x4); +BGFX_TEXTURE_FORMAT_BIMG(ASTC5x4); BGFX_TEXTURE_FORMAT_BIMG(ASTC5x5); +BGFX_TEXTURE_FORMAT_BIMG(ASTC6x5); BGFX_TEXTURE_FORMAT_BIMG(ASTC6x6); BGFX_TEXTURE_FORMAT_BIMG(ASTC8x5); BGFX_TEXTURE_FORMAT_BIMG(ASTC8x6); +BGFX_TEXTURE_FORMAT_BIMG(ASTC8x8); BGFX_TEXTURE_FORMAT_BIMG(ASTC10x5); +BGFX_TEXTURE_FORMAT_BIMG(ASTC10x6); +BGFX_TEXTURE_FORMAT_BIMG(ASTC10x8); +BGFX_TEXTURE_FORMAT_BIMG(ASTC10x10); +BGFX_TEXTURE_FORMAT_BIMG(ASTC12x10); +BGFX_TEXTURE_FORMAT_BIMG(ASTC12x12); BGFX_TEXTURE_FORMAT_BIMG(Unknown); BGFX_TEXTURE_FORMAT_BIMG(R1); BGFX_TEXTURE_FORMAT_BIMG(A8); diff --git a/src/renderer_d3d11.cpp b/src/renderer_d3d11.cpp index 4c5a1a630..454621ad4 100644 --- a/src/renderer_d3d11.cpp +++ b/src/renderer_d3d11.cpp @@ -224,11 +224,19 @@ namespace bgfx { namespace d3d11 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ATCE { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ATCI { DXGI_FORMAT_ASTC_4X4_UNORM, DXGI_FORMAT_ASTC_4X4_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_4X4_UNORM_SRGB }, // ASTC4x4 + { DXGI_FORMAT_ASTC_5X4_UNORM, DXGI_FORMAT_ASTC_5X4_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_5X4_UNORM_SRGB }, // ASTC5x4 { DXGI_FORMAT_ASTC_5X5_UNORM, DXGI_FORMAT_ASTC_5X5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_5X5_UNORM_SRGB }, // ASTC5x5 + { DXGI_FORMAT_ASTC_6X5_UNORM, DXGI_FORMAT_ASTC_6X5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_6X5_UNORM_SRGB }, // ASTC6x5 { DXGI_FORMAT_ASTC_6X6_UNORM, DXGI_FORMAT_ASTC_6X6_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_6X6_UNORM_SRGB }, // ASTC6x6 { DXGI_FORMAT_ASTC_8X5_UNORM, DXGI_FORMAT_ASTC_8X5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_8X5_UNORM_SRGB }, // ASTC8x5 { DXGI_FORMAT_ASTC_8X6_UNORM, DXGI_FORMAT_ASTC_8X6_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_8X6_UNORM_SRGB }, // ASTC8x6 + { DXGI_FORMAT_ASTC_8X8_UNORM, DXGI_FORMAT_ASTC_8X8_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_8X8_UNORM_SRGB }, // ASTC8x8 { DXGI_FORMAT_ASTC_10X5_UNORM, DXGI_FORMAT_ASTC_10X5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_10X5_UNORM_SRGB }, // ASTC10x5 + { DXGI_FORMAT_ASTC_10X6_UNORM, DXGI_FORMAT_ASTC_10X6_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_10X6_UNORM_SRGB }, // ASTC10x6 + { DXGI_FORMAT_ASTC_10X8_UNORM, DXGI_FORMAT_ASTC_10X8_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_10X8_UNORM_SRGB }, // ASTC10x8 + { DXGI_FORMAT_ASTC_10X10_UNORM, DXGI_FORMAT_ASTC_10X10_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_10X10_UNORM_SRGB}, // ASTC10x10 + { DXGI_FORMAT_ASTC_12X10_UNORM, DXGI_FORMAT_ASTC_12X10_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_12X10_UNORM_SRGB}, // ASTC12x10 + { DXGI_FORMAT_ASTC_12X12_UNORM, DXGI_FORMAT_ASTC_12X12_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_12X12_UNORM_SRGB}, // ASTC12x12 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // Unknown { DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // R1 { DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // A8 diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index c4416c71c..3cab184c5 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -214,11 +214,19 @@ namespace bgfx { namespace d3d12 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ATCE { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ATCI { DXGI_FORMAT_ASTC_4X4_UNORM, DXGI_FORMAT_ASTC_4X4_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_4X4_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC4x4 + { DXGI_FORMAT_ASTC_5X4_UNORM, DXGI_FORMAT_ASTC_5X4_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_5X4_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC5x4 { DXGI_FORMAT_ASTC_5X5_UNORM, DXGI_FORMAT_ASTC_5X5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_5X5_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC5x5 + { DXGI_FORMAT_ASTC_6X5_UNORM, DXGI_FORMAT_ASTC_6X5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_6X5_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC6x5 { DXGI_FORMAT_ASTC_6X6_UNORM, DXGI_FORMAT_ASTC_6X6_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_6X6_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC6x6 { DXGI_FORMAT_ASTC_8X5_UNORM, DXGI_FORMAT_ASTC_8X5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_8X5_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC8x5 { DXGI_FORMAT_ASTC_8X6_UNORM, DXGI_FORMAT_ASTC_8X6_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_8X6_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC8x6 + { DXGI_FORMAT_ASTC_8X8_UNORM, DXGI_FORMAT_ASTC_8X8_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_8X8_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC8x8 { DXGI_FORMAT_ASTC_10X5_UNORM, DXGI_FORMAT_ASTC_10X5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_10X5_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC10x5 + { DXGI_FORMAT_ASTC_10X6_UNORM, DXGI_FORMAT_ASTC_10X6_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_10X6_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC10x6 + { DXGI_FORMAT_ASTC_10X8_UNORM, DXGI_FORMAT_ASTC_10X8_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_10X8_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC10x8 + { DXGI_FORMAT_ASTC_10X10_UNORM, DXGI_FORMAT_ASTC_10X10_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_10X10_UNORM_SRGB,D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC10x10 + { DXGI_FORMAT_ASTC_12X10_UNORM, DXGI_FORMAT_ASTC_12X10_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_12X10_UNORM_SRGB,D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC12x10 + { DXGI_FORMAT_ASTC_12X12_UNORM, DXGI_FORMAT_ASTC_12X12_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_ASTC_12X12_UNORM_SRGB,D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ASTC12x12 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // Unknown { DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_R1_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // R1 { DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_A8_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // A8 diff --git a/src/renderer_d3d9.cpp b/src/renderer_d3d9.cpp index 174670d45..95872fa49 100644 --- a/src/renderer_d3d9.cpp +++ b/src/renderer_d3d9.cpp @@ -183,12 +183,20 @@ namespace bgfx { namespace d3d9 { D3DFMT_UNKNOWN }, // ATC, { D3DFMT_UNKNOWN }, // ATCE, { D3DFMT_UNKNOWN }, // ATCI, - { D3DFMT_UNKNOWN }, // ASTC4x4, - { D3DFMT_UNKNOWN }, // ASTC5x5, - { D3DFMT_UNKNOWN }, // ASTC6x6, - { D3DFMT_UNKNOWN }, // ASTC8x5, - { D3DFMT_UNKNOWN }, // ASTC8x6, - { D3DFMT_UNKNOWN }, // ASTC10x5, + { D3DFMT_UNKNOWN }, // ASTC4x4 + { D3DFMT_UNKNOWN }, // ASTC5x4 + { D3DFMT_UNKNOWN }, // ASTC5x5 + { D3DFMT_UNKNOWN }, // ASTC6x5 + { D3DFMT_UNKNOWN }, // ASTC6x6 + { D3DFMT_UNKNOWN }, // ASTC8x5 + { D3DFMT_UNKNOWN }, // ASTC8x6 + { D3DFMT_UNKNOWN }, // ASTC8x8 + { D3DFMT_UNKNOWN }, // ASTC10x5 + { D3DFMT_UNKNOWN }, // ASTC10x6 + { D3DFMT_UNKNOWN }, // ASTC10x8 + { D3DFMT_UNKNOWN }, // ASTC10x10 + { D3DFMT_UNKNOWN }, // ASTC12x10 + { D3DFMT_UNKNOWN }, // ASTC12x12 { D3DFMT_UNKNOWN }, // Unknown { D3DFMT_A1 }, // R1 { D3DFMT_A8 }, // A8 diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 3b5f18b53..6fdf64225 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -237,11 +237,19 @@ namespace bgfx { namespace gl { GL_ATC_RGBA_EXPLICIT_ALPHA_AMD, GL_ZERO, GL_ATC_RGBA_EXPLICIT_ALPHA_AMD, GL_ATC_RGBA_EXPLICIT_ALPHA_AMD, GL_ZERO, false, { $_, $_, $_, $_ } }, // ATCE { GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD, GL_ZERO, GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD, GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD, GL_ZERO, false, { $_, $_, $_, $_ } }, // ATCI { GL_COMPRESSED_RGBA_ASTC_4x4_KHR, GL_COMPRESSED_SRGB8_ASTC_4x4_KHR, GL_COMPRESSED_RGBA_ASTC_4x4_KHR, GL_COMPRESSED_RGBA_ASTC_4x4_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC4x4 + { GL_COMPRESSED_RGBA_ASTC_5x4_KHR, GL_COMPRESSED_SRGB8_ASTC_5x4_KHR, GL_COMPRESSED_RGBA_ASTC_5x4_KHR, GL_COMPRESSED_RGBA_ASTC_5x4_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC5x4 { GL_COMPRESSED_RGBA_ASTC_5x5_KHR, GL_COMPRESSED_SRGB8_ASTC_5x5_KHR, GL_COMPRESSED_RGBA_ASTC_5x5_KHR, GL_COMPRESSED_RGBA_ASTC_5x5_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC5x5 + { GL_COMPRESSED_RGBA_ASTC_6x5_KHR, GL_COMPRESSED_SRGB8_ASTC_6x5_KHR, GL_COMPRESSED_RGBA_ASTC_6x5_KHR, GL_COMPRESSED_RGBA_ASTC_6x5_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC6x5 { GL_COMPRESSED_RGBA_ASTC_6x6_KHR, GL_COMPRESSED_SRGB8_ASTC_6x6_KHR, GL_COMPRESSED_RGBA_ASTC_6x6_KHR, GL_COMPRESSED_RGBA_ASTC_6x6_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC6x6 { GL_COMPRESSED_RGBA_ASTC_8x5_KHR, GL_COMPRESSED_SRGB8_ASTC_8x5_KHR, GL_COMPRESSED_RGBA_ASTC_8x5_KHR, GL_COMPRESSED_RGBA_ASTC_8x5_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC8x5 { GL_COMPRESSED_RGBA_ASTC_8x6_KHR, GL_COMPRESSED_SRGB8_ASTC_8x6_KHR, GL_COMPRESSED_RGBA_ASTC_8x6_KHR, GL_COMPRESSED_RGBA_ASTC_8x6_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC8x6 + { GL_COMPRESSED_RGBA_ASTC_8x8_KHR, GL_COMPRESSED_SRGB8_ASTC_8x8_KHR, GL_COMPRESSED_RGBA_ASTC_8x8_KHR, GL_COMPRESSED_RGBA_ASTC_8x8_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC8x8 { GL_COMPRESSED_RGBA_ASTC_10x5_KHR, GL_COMPRESSED_SRGB8_ASTC_10x5_KHR, GL_COMPRESSED_RGBA_ASTC_10x5_KHR, GL_COMPRESSED_RGBA_ASTC_10x5_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC10x5 + { GL_COMPRESSED_RGBA_ASTC_10x6_KHR, GL_COMPRESSED_SRGB8_ASTC_10x6_KHR, GL_COMPRESSED_RGBA_ASTC_10x6_KHR, GL_COMPRESSED_RGBA_ASTC_10x6_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC10x6 + { GL_COMPRESSED_RGBA_ASTC_10x8_KHR, GL_COMPRESSED_SRGB8_ASTC_10x8_KHR, GL_COMPRESSED_RGBA_ASTC_10x8_KHR, GL_COMPRESSED_RGBA_ASTC_10x8_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC10x8 + { GL_COMPRESSED_RGBA_ASTC_10x10_KHR, GL_COMPRESSED_SRGB8_ASTC_10x10_KHR, GL_COMPRESSED_RGBA_ASTC_10x10_KHR, GL_COMPRESSED_RGBA_ASTC_10x10_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC10x10 + { GL_COMPRESSED_RGBA_ASTC_12x10_KHR, GL_COMPRESSED_SRGB8_ASTC_12x10_KHR, GL_COMPRESSED_RGBA_ASTC_12x10_KHR, GL_COMPRESSED_RGBA_ASTC_12x10_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC12x10 + { GL_COMPRESSED_RGBA_ASTC_12x12_KHR, GL_COMPRESSED_SRGB8_ASTC_12x12_KHR, GL_COMPRESSED_RGBA_ASTC_12x12_KHR, GL_COMPRESSED_RGBA_ASTC_12x12_KHR, GL_ZERO, false, { $_, $_, $_, $_ } }, // ASTC12x12 { GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, false, { $_, $_, $_, $_ } }, // Unknown { GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, false, { $_, $_, $_, $_ } }, // R1 { GL_ALPHA, GL_ZERO, GL_ALPHA, GL_ALPHA, GL_UNSIGNED_BYTE, false, { $_, $_, $_, $_ } }, // A8 @@ -339,11 +347,19 @@ namespace bgfx { namespace gl GL_ZERO, // ATCE GL_ZERO, // ATCI GL_ZERO, // ASTC4x4 + GL_ZERO, // ASTC5x4 GL_ZERO, // ASTC5x5 + GL_ZERO, // ASTC6x5 GL_ZERO, // ASTC6x6 GL_ZERO, // ASTC8x5 GL_ZERO, // ASTC8x6 + GL_ZERO, // ASTC8x8 GL_ZERO, // ASTC10x5 + GL_ZERO, // ASTC10x6 + GL_ZERO, // ASTC10x8 + GL_ZERO, // ASTC10x10 + GL_ZERO, // ASTC12x10 + GL_ZERO, // ASTC12x12 GL_ZERO, // Unknown GL_ZERO, // R1 GL_ALPHA, // A8 @@ -432,11 +448,19 @@ namespace bgfx { namespace gl GL_ZERO, // ATCE GL_ZERO, // ATCI GL_ZERO, // ASTC4x4 + GL_ZERO, // ASTC5x4 GL_ZERO, // ASTC5x5 + GL_ZERO, // ASTC6x5 GL_ZERO, // ASTC6x6 GL_ZERO, // ASTC8x5 GL_ZERO, // ASTC8x6 + GL_ZERO, // ASTC8x8 GL_ZERO, // ASTC10x5 + GL_ZERO, // ASTC10x6 + GL_ZERO, // ASTC10x8 + GL_ZERO, // ASTC10x10 + GL_ZERO, // ASTC12x10 + GL_ZERO, // ASTC12x12 GL_ZERO, // Unknown GL_ZERO, // R1 GL_ALPHA, // A8 diff --git a/src/renderer_gl.h b/src/renderer_gl.h index 1aa858f41..1006dbf7a 100644 --- a/src/renderer_gl.h +++ b/src/renderer_gl.h @@ -546,10 +546,18 @@ typedef uint64_t GLuint64; # define GL_COMPRESSED_SRGB8_ASTC_4x4_KHR 0x93D0 #endif +#ifndef GL_COMPRESSED_SRGB8_ASTC_5x4_KHR +# define GL_COMPRESSED_SRGB8_ASTC_5x4_KHR 0x93D1 +#endif + #ifndef GL_COMPRESSED_SRGB8_ASTC_5x5_KHR # define GL_COMPRESSED_SRGB8_ASTC_5x5_KHR 0x93D2 #endif +#ifndef GL_COMPRESSED_SRGB8_ASTC_6x5_KHR +# define GL_COMPRESSED_SRGB8_ASTC_6x5_KHR 0x93D3 +#endif + #ifndef GL_COMPRESSED_SRGB8_ASTC_6x6_KHR # define GL_COMPRESSED_SRGB8_ASTC_6x6_KHR 0x93D4 #endif @@ -562,10 +570,34 @@ typedef uint64_t GLuint64; # define GL_COMPRESSED_SRGB8_ASTC_8x6_KHR 0x93D6 #endif +#ifndef GL_COMPRESSED_SRGB8_ASTC_8x8_KHR +# define GL_COMPRESSED_SRGB8_ASTC_8x8_KHR 0x93D7 +#endif + #ifndef GL_COMPRESSED_SRGB8_ASTC_10x5_KHR # define GL_COMPRESSED_SRGB8_ASTC_10x5_KHR 0x93D8 #endif +#ifndef GL_COMPRESSED_SRGB8_ASTC_10x6_KHR +# define GL_COMPRESSED_SRGB8_ASTC_10x6_KHR 0x93D9 +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_10x8_KHR +# define GL_COMPRESSED_SRGB8_ASTC_10x8_KHR 0x93DA +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_10x10_KHR +# define GL_COMPRESSED_SRGB8_ASTC_10x10_KHR 0x93DB +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_12x10_KHR +# define GL_COMPRESSED_SRGB8_ASTC_12x10_KHR 0x93DC +#endif + +#ifndef GL_COMPRESSED_SRGB8_ASTC_12x12_KHR +# define GL_COMPRESSED_SRGB8_ASTC_12x12_KHR 0x93DD +#endif + #ifndef GL_COMPRESSED_RGBA_BPTC_UNORM_ARB # define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C #endif // GL_COMPRESSED_RGBA_BPTC_UNORM_ARB diff --git a/src/renderer_mtl.mm b/src/renderer_mtl.mm index 16cd8bf36..2317c16d6 100644 --- a/src/renderer_mtl.mm +++ b/src/renderer_mtl.mm @@ -246,18 +246,34 @@ namespace bgfx { namespace mtl { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ATCI #if BX_PLATFORM_IOS && !TARGET_OS_MACCATALYST { MTLPixelFormatASTC_4x4_LDR, MTLPixelFormatASTC_4x4_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC4x4 + { MTLPixelFormatASTC_5x4_LDR, MTLPixelFormatASTC_5x4_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC5x4 { MTLPixelFormatASTC_5x5_LDR, MTLPixelFormatASTC_5x5_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC5x5 + { MTLPixelFormatASTC_6x5_LDR, MTLPixelFormatASTC_6x5_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC6x5 { MTLPixelFormatASTC_6x6_LDR, MTLPixelFormatASTC_6x6_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC6x6 { MTLPixelFormatASTC_8x5_LDR, MTLPixelFormatASTC_8x5_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC8x5 { MTLPixelFormatASTC_8x6_LDR, MTLPixelFormatASTC_8x6_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC8x6 + { MTLPixelFormatASTC_8x8_LDR, MTLPixelFormatASTC_8x8_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC8x8 { MTLPixelFormatASTC_10x5_LDR, MTLPixelFormatASTC_10x5_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC10x5 + { MTLPixelFormatASTC_10x6_LDR, MTLPixelFormatASTC_10x6_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC10x6 + { MTLPixelFormatASTC_10x8_LDR, MTLPixelFormatASTC_10x8_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC10x8 + { MTLPixelFormatASTC_10x10_LDR, MTLPixelFormatASTC_10x10_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC10x10 + { MTLPixelFormatASTC_12x10_LDR, MTLPixelFormatASTC_12x10_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC12x10 + { MTLPixelFormatASTC_12x12_LDR, MTLPixelFormatASTC_12x12_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC12x12 #else { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC4x4 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC5x4 { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC5x5 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC6x5 { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC6x6 { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC8x5 { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC8x6 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC8x8 { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC10x5 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC10x6 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC10x8 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC10x10 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC12x10 + { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ASTC12x12 #endif // BX_PLATFORM_IOS && !TARGET_OS_MACCATALYST { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // Unknown { MTLPixelFormatInvalid, MTLPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // R1 diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 95242e955..17ece2982 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -187,12 +187,20 @@ VK_IMPORT_DEVICE { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ATC { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ATCE { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ATCI - { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ASTC4x4 - { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ASTC5x5 - { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ASTC6x6 - { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ASTC8x5 - { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ASTC8x6 - { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ASTC10x5 + { VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC4x4 + { VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC5x4 + { VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC5x5 + { VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC6x5 + { VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC6x6 + { VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC8x5 + { VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC8x6 + { VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC8x8 + { VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC10x5 + { VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC10x6 + { VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC10x8 + { VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC10x10 + { VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC12x10 + { VK_FORMAT_ASTC_12x12_UNORM_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_ASTC_12x12_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ASTC12x12 { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // Unknown { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // R1 { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $0, $0, $0, $R } }, // A8 diff --git a/src/renderer_webgpu.cpp b/src/renderer_webgpu.cpp index d1273d910..8f747167e 100644 --- a/src/renderer_webgpu.cpp +++ b/src/renderer_webgpu.cpp @@ -306,11 +306,19 @@ namespace bgfx { namespace webgpu { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ATCE { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ATCI { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC4x4 + { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC5x4 { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC5x5 + { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC6x5 { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC6x6 { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC8x5 { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC8x6 + { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC8x8 { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC10x5 + { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC10x6 + { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC10x8 + { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC10x10 + { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC12x10 + { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // ASTC12x12 { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // Unknown { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // R1 { wgpu::TextureFormat::Undefined, wgpu::TextureFormat::Undefined }, // A8