diff --git a/bindings/bf/bgfx.bf b/bindings/bf/bgfx.bf index fe1a2afd2..ca270ab76 100644 --- a/bindings/bf/bgfx.bf +++ b/bindings/bf/bgfx.bf @@ -1814,16 +1814,31 @@ public static class bgfx /// BC4, + /// + /// Block Compression 4. Single 8-bit red channel, signed normalized. 4 BPP. + /// + BC4S, + /// /// Block Compression 5. Two 8-bit channels (RG), unsigned normalized. 8 BPP. /// BC5, + /// + /// Block Compression 5. Two 8-bit channels (RG), signed normalized. 8 BPP. + /// + BC5S, + /// /// Block Compression 6H. Three 16-bit floating-point channels (RGB), HDR. 8 BPP. /// BC6H, + /// + /// Block Compression 6H. Three 16-bit unsigned floating-point channels (RGB), HDR. 8 BPP. + /// + BC6HU, + /// /// RGB 4-7 bits per color channel, 0-8 bits alpha. Block Compression 7. High-quality RGBA, 4-7 bits per color, 0-8 bits alpha. 8 BPP. /// @@ -2244,6 +2259,11 @@ public static class bgfx /// RGB10A2, + /// + /// Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned integer. 32 BPP. + /// + RGB10A2U, + /// /// Packed 32-bit, 11-bit red, 11-bit green, 10-bit blue, unsigned floating point. No alpha. 32 BPP. /// @@ -2289,6 +2309,11 @@ public static class bgfx /// D32F, + /// + /// 32-bit depth, floating point, with 8-bit stencil (stored as 64-bit). 64 BPP. + /// + D32FS8, + /// /// 8-bit stencil only, no depth. 8 BPP. /// @@ -2668,7 +2693,7 @@ public static class bgfx public uint8 numGPUs; public GPU[4] gpu; public Limits limits; - public uint32[100] formats; + public uint32[105] formats; public uint32[3] codecs; } diff --git a/bindings/c3/bgfx.c3 b/bindings/c3/bgfx.c3 index 6ddd5ebc4..11f767fc5 100644 --- a/bindings/c3/bgfx.c3 +++ b/bindings/c3/bgfx.c3 @@ -1145,12 +1145,21 @@ enum TextureFormat : uint // Block Compression 4. Single 8-bit red channel, unsigned normalized. 4 BPP. BC4, + // Block Compression 4. Single 8-bit red channel, signed normalized. 4 BPP. + BC4S, + // Block Compression 5. Two 8-bit channels (RG), unsigned normalized. 8 BPP. BC5, + // Block Compression 5. Two 8-bit channels (RG), signed normalized. 8 BPP. + BC5S, + // Block Compression 6H. Three 16-bit floating-point channels (RGB), HDR. 8 BPP. BC6H, + // Block Compression 6H. Three 16-bit unsigned floating-point channels (RGB), HDR. 8 BPP. + BC6HU, + // RGB 4-7 bits per color channel, 0-8 bits alpha. Block Compression 7. High-quality RGBA, 4-7 bits per color, 0-8 bits alpha. 8 BPP. BC7, @@ -1403,6 +1412,9 @@ enum TextureFormat : uint // Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned normalized. 32 BPP. RGB10A2, + // Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned integer. 32 BPP. + RGB10A2U, + // Packed 32-bit, 11-bit red, 11-bit green, 10-bit blue, unsigned floating point. No alpha. 32 BPP. RG11B10F, @@ -1430,6 +1442,9 @@ enum TextureFormat : uint // 32-bit depth, floating point. 32 BPP. D32F, + // 32-bit depth, floating point, with 8-bit stencil (stored as 64-bit). 64 BPP. + D32FS8, + // 8-bit stencil only, no depth. 8 BPP. D0S8, @@ -1766,7 +1781,7 @@ struct Caps // - `BGFX_CAPS_FORMAT_TEXTURE_BACKBUFFER` - Texture format can be used as back buffer format. // - `BGFX_CAPS_FORMAT_TEXTURE_VIDEO_DECODE_DST` - Texture format can be used as video // decode destination. - uint[100] formats; + uint[105] formats; // Supported video codec capabilities flags. A non-zero entry means the codec is // supported for hardware decode; bits describe sample depths and chroma // subsamplings: diff --git a/bindings/cs/bgfx.cs b/bindings/cs/bgfx.cs index 89df51b21..0ca9b58f3 100644 --- a/bindings/cs/bgfx.cs +++ b/bindings/cs/bgfx.cs @@ -1807,16 +1807,31 @@ public static partial class bgfx /// BC4, + /// + /// Block Compression 4. Single 8-bit red channel, signed normalized. 4 BPP. + /// + BC4S, + /// /// Block Compression 5. Two 8-bit channels (RG), unsigned normalized. 8 BPP. /// BC5, + /// + /// Block Compression 5. Two 8-bit channels (RG), signed normalized. 8 BPP. + /// + BC5S, + /// /// Block Compression 6H. Three 16-bit floating-point channels (RGB), HDR. 8 BPP. /// BC6H, + /// + /// Block Compression 6H. Three 16-bit unsigned floating-point channels (RGB), HDR. 8 BPP. + /// + BC6HU, + /// /// RGB 4-7 bits per color channel, 0-8 bits alpha. Block Compression 7. High-quality RGBA, 4-7 bits per color, 0-8 bits alpha. 8 BPP. /// @@ -2237,6 +2252,11 @@ public static partial class bgfx /// RGB10A2, + /// + /// Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned integer. 32 BPP. + /// + RGB10A2U, + /// /// Packed 32-bit, 11-bit red, 11-bit green, 10-bit blue, unsigned floating point. No alpha. 32 BPP. /// @@ -2282,6 +2302,11 @@ public static partial class bgfx /// D32F, + /// + /// 32-bit depth, floating point, with 8-bit stencil (stored as 64-bit). 64 BPP. + /// + D32FS8, + /// /// 8-bit stencil only, no depth. 8 BPP. /// @@ -2646,7 +2671,7 @@ public static partial class bgfx public byte numGPUs; public fixed uint gpu[4]; public Limits limits; - public fixed uint formats[100]; + public fixed uint formats[105]; public fixed uint codecs[3]; } diff --git a/bindings/d/impl.d b/bindings/d/impl.d index 9abced215..7ba8c9891 100644 --- a/bindings/d/impl.d +++ b/bindings/d/impl.d @@ -46,7 +46,7 @@ extern(C++, "bgfx") package final abstract class AttribType{ } extern(C++, "bgfx") package final abstract class TextureFormat{ enum Enum{ - bc1,bc2,bc3,bc4,bc5,bc6h,bc7,etc1,etc2,etc2a,etc2a1,eacr11,eacr11s,eacrg11,eacrg11s,ptc12,ptc14,ptc12a,ptc14a,ptc22,ptc24,atc,atce,atci,astc4x4,astc5x4,astc5x5,astc6x5,astc6x6,astc8x5,astc8x6,astc8x8,astc10x5,astc10x6,astc10x8,astc10x10,astc12x10,astc12x12,unknown,r1,a8,r8,r8i,r8u,r8s,r16,r16i,r16u,r16f,r16s,r32i,r32u,r32f,rg8,rg8i,rg8u,rg8s,rg16,rg16i,rg16u,rg16f,rg16s,rg32i,rg32u,rg32f,rgb8,rgb8i,rgb8u,rgb8s,rgb9e5f,bgra8,rgba8,rgba8i,rgba8u,rgba8s,rgba16,rgba16i,rgba16u,rgba16f,rgba16s,rgba32i,rgba32u,rgba32f,b5g6r5,r5g6b5,bgra4,rgba4,bgr5a1,rgb5a1,rgb10a2,rg11b10f,unknownDepth,d16,d24,d24s8,d32,d16f,d24f,d32f,d0s8,count + bc1,bc2,bc3,bc4,bc4s,bc5,bc5s,bc6h,bc6hu,bc7,etc1,etc2,etc2a,etc2a1,eacr11,eacr11s,eacrg11,eacrg11s,ptc12,ptc14,ptc12a,ptc14a,ptc22,ptc24,atc,atce,atci,astc4x4,astc5x4,astc5x5,astc6x5,astc6x6,astc8x5,astc8x6,astc8x8,astc10x5,astc10x6,astc10x8,astc10x10,astc12x10,astc12x12,unknown,r1,a8,r8,r8i,r8u,r8s,r16,r16i,r16u,r16f,r16s,r32i,r32u,r32f,rg8,rg8i,rg8u,rg8s,rg16,rg16i,rg16u,rg16f,rg16s,rg32i,rg32u,rg32f,rgb8,rgb8i,rgb8u,rgb8s,rgb9e5f,bgra8,rgba8,rgba8i,rgba8u,rgba8s,rgba16,rgba16i,rgba16u,rgba16f,rgba16s,rgba32i,rgba32u,rgba32f,b5g6r5,r5g6b5,bgra4,rgba4,bgr5a1,rgb5a1,rgb10a2,rgb10a2u,rg11b10f,unknownDepth,d16,d24,d24s8,d32,d16f,d24f,d32f,d32fs8,d0s8,count } } extern(C++, "bgfx") package final abstract class UniformType{ diff --git a/bindings/d/package.d b/bindings/d/package.d index 03b2d22ba..00441bf2a 100644 --- a/bindings/d/package.d +++ b/bindings/d/package.d @@ -9,7 +9,7 @@ import bindbc.common.types: c_int64, c_uint64, va_list; import bindbc.bgfx.config; static import bgfx.impl; -enum uint apiVersion = 152; +enum uint apiVersion = 153; alias ViewID = ushort; @@ -756,8 +756,11 @@ enum TextureFormat: bgfx.impl.TextureFormat.Enum{ bc2 = bgfx.impl.TextureFormat.Enum.bc2, bc3 = bgfx.impl.TextureFormat.Enum.bc3, bc4 = bgfx.impl.TextureFormat.Enum.bc4, + bc4s = bgfx.impl.TextureFormat.Enum.bc4s, bc5 = bgfx.impl.TextureFormat.Enum.bc5, + bc5s = bgfx.impl.TextureFormat.Enum.bc5s, bc6h = bgfx.impl.TextureFormat.Enum.bc6h, + bc6hu = bgfx.impl.TextureFormat.Enum.bc6hu, bc7 = bgfx.impl.TextureFormat.Enum.bc7, etc1 = bgfx.impl.TextureFormat.Enum.etc1, etc2 = bgfx.impl.TextureFormat.Enum.etc2, @@ -842,6 +845,7 @@ enum TextureFormat: bgfx.impl.TextureFormat.Enum{ bgr5a1 = bgfx.impl.TextureFormat.Enum.bgr5a1, rgb5a1 = bgfx.impl.TextureFormat.Enum.rgb5a1, rgb10a2 = bgfx.impl.TextureFormat.Enum.rgb10a2, + rgb10a2u = bgfx.impl.TextureFormat.Enum.rgb10a2u, rg11b10f = bgfx.impl.TextureFormat.Enum.rg11b10f, unknownDepth = bgfx.impl.TextureFormat.Enum.unknownDepth, d16 = bgfx.impl.TextureFormat.Enum.d16, @@ -851,6 +855,7 @@ enum TextureFormat: bgfx.impl.TextureFormat.Enum{ d16f = bgfx.impl.TextureFormat.Enum.d16f, d24f = bgfx.impl.TextureFormat.Enum.d24f, d32f = bgfx.impl.TextureFormat.Enum.d32f, + d32fs8 = bgfx.impl.TextureFormat.Enum.d32fs8, d0s8 = bgfx.impl.TextureFormat.Enum.d0s8, count = bgfx.impl.TextureFormat.Enum.count, } diff --git a/bindings/zig/bgfx.zig b/bindings/zig/bgfx.zig index a1738dfab..67c41ad0b 100644 --- a/bindings/zig/bgfx.zig +++ b/bindings/zig/bgfx.zig @@ -1104,12 +1104,21 @@ pub const TextureFormat = enum(c_int) { /// Block Compression 4. Single 8-bit red channel, unsigned normalized. 4 BPP. BC4, + /// Block Compression 4. Single 8-bit red channel, signed normalized. 4 BPP. + BC4S, + /// Block Compression 5. Two 8-bit channels (RG), unsigned normalized. 8 BPP. BC5, + /// Block Compression 5. Two 8-bit channels (RG), signed normalized. 8 BPP. + BC5S, + /// Block Compression 6H. Three 16-bit floating-point channels (RGB), HDR. 8 BPP. BC6H, + /// Block Compression 6H. Three 16-bit unsigned floating-point channels (RGB), HDR. 8 BPP. + BC6HU, + /// RGB 4-7 bits per color channel, 0-8 bits alpha. Block Compression 7. High-quality RGBA, 4-7 bits per color, 0-8 bits alpha. 8 BPP. BC7, @@ -1362,6 +1371,9 @@ pub const TextureFormat = enum(c_int) { /// Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned normalized. 32 BPP. RGB10A2, + /// Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned integer. 32 BPP. + RGB10A2U, + /// Packed 32-bit, 11-bit red, 11-bit green, 10-bit blue, unsigned floating point. No alpha. 32 BPP. RG11B10F, @@ -1389,6 +1401,9 @@ pub const TextureFormat = enum(c_int) { /// 32-bit depth, floating point. 32 BPP. D32F, + /// 32-bit depth, floating point, with 8-bit stencil (stored as 64-bit). 64 BPP. + D32FS8, + /// 8-bit stencil only, no depth. 8 BPP. D0S8, @@ -1642,7 +1657,7 @@ pub const Caps = extern struct { numGPUs: u8, gpu: [4]GPU, limits: Limits, - formats: [100]u32, + formats: [105]u32, codecs: [3]u32, }; diff --git a/include/bgfx/bgfx.h b/include/bgfx/bgfx.h index e2aee243b..d0091f0bb 100644 --- a/include/bgfx/bgfx.h +++ b/include/bgfx/bgfx.h @@ -182,8 +182,11 @@ namespace bgfx BC2, //!< Block Compression 2. 5-bit R, 6-bit G, 5-bit B, 4-bit explicit A. 8 BPP. BC3, //!< Block Compression 3. 5-bit R, 6-bit G, 5-bit B, 8-bit interpolated A. 8 BPP. BC4, //!< Block Compression 4. Single 8-bit red channel, unsigned normalized. 4 BPP. + BC4S, //!< Block Compression 4. Single 8-bit red channel, signed normalized. 4 BPP. BC5, //!< Block Compression 5. Two 8-bit channels (RG), unsigned normalized. 8 BPP. + BC5S, //!< Block Compression 5. Two 8-bit channels (RG), signed normalized. 8 BPP. BC6H, //!< Block Compression 6H. Three 16-bit floating-point channels (RGB), HDR. 8 BPP. + BC6HU, //!< Block Compression 6H. Three 16-bit unsigned floating-point channels (RGB), HDR. 8 BPP. BC7, //!< RGB 4-7 bits per color channel, 0-8 bits alpha. Block Compression 7. High-quality RGBA, 4-7 bits per color, 0-8 bits alpha. 8 BPP. ETC1, //!< Ericsson Texture Compression 1. 8-bit per channel RGB. 4 BPP. ETC2, //!< Ericsson Texture Compression 2. 8-bit per channel RGB. 4 BPP. @@ -268,6 +271,7 @@ namespace bgfx BGR5A1, //!< Packed 16-bit, 5-bit blue, 5-bit green, 5-bit red, 1-bit alpha. BGRA byte order, unsigned normalized. 16 BPP. RGB5A1, //!< Packed 16-bit, 5-bit red, 5-bit green, 5-bit blue, 1-bit alpha, unsigned normalized. 16 BPP. RGB10A2, //!< Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned normalized. 32 BPP. + RGB10A2U, //!< Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned integer. 32 BPP. RG11B10F, //!< Packed 32-bit, 11-bit red, 11-bit green, 10-bit blue, unsigned floating point. No alpha. 32 BPP. UnknownDepth, //!< Depth formats below. D16, //!< 16-bit depth, unsigned normalized. 16 BPP. @@ -277,6 +281,7 @@ namespace bgfx D16F, //!< 16-bit depth, floating point. 16 BPP. D24F, //!< 24-bit depth, floating point (stored as 32-bit). 32 BPP. D32F, //!< 32-bit depth, floating point. 32 BPP. + D32FS8, //!< 32-bit depth, floating point, with 8-bit stencil (stored as 64-bit). 64 BPP. D0S8, //!< 8-bit stencil only, no depth. 8 BPP. Count diff --git a/include/bgfx/c99/bgfx.h b/include/bgfx/c99/bgfx.h index eab8d8eca..d616e7514 100644 --- a/include/bgfx/c99/bgfx.h +++ b/include/bgfx/c99/bgfx.h @@ -191,102 +191,107 @@ typedef enum bgfx_texture_format BGFX_TEXTURE_FORMAT_BC2, /** ( 1) Block Compression 2. 5-bit R, 6-bit G, 5-bit B, 4-bit explicit A. 8 BPP. */ BGFX_TEXTURE_FORMAT_BC3, /** ( 2) Block Compression 3. 5-bit R, 6-bit G, 5-bit B, 8-bit interpolated A. 8 BPP. */ BGFX_TEXTURE_FORMAT_BC4, /** ( 3) Block Compression 4. Single 8-bit red channel, unsigned normalized. 4 BPP. */ - BGFX_TEXTURE_FORMAT_BC5, /** ( 4) Block Compression 5. Two 8-bit channels (RG), unsigned normalized. 8 BPP. */ - BGFX_TEXTURE_FORMAT_BC6H, /** ( 5) Block Compression 6H. Three 16-bit floating-point channels (RGB), HDR. 8 BPP. */ - BGFX_TEXTURE_FORMAT_BC7, /** ( 6) RGB 4-7 bits per color channel, 0-8 bits alpha. Block Compression 7. High-quality RGBA, 4-7 bits per color, 0-8 bits alpha. 8 BPP. */ - BGFX_TEXTURE_FORMAT_ETC1, /** ( 7) Ericsson Texture Compression 1. 8-bit per channel RGB. 4 BPP. */ - BGFX_TEXTURE_FORMAT_ETC2, /** ( 8) Ericsson Texture Compression 2. 8-bit per channel RGB. 4 BPP. */ - BGFX_TEXTURE_FORMAT_ETC2A, /** ( 9) Ericsson Texture Compression 2 with full alpha. 8-bit per channel RGBA. 8 BPP. */ - BGFX_TEXTURE_FORMAT_ETC2A1, /** (10) Ericsson Texture Compression 2 with 1-bit punch-through alpha. 4 BPP. */ - BGFX_TEXTURE_FORMAT_EACR11, /** (11) ETC2 Alpha Compression, single 11-bit red channel, unsigned normalized. 4 BPP. */ - BGFX_TEXTURE_FORMAT_EACR11S, /** (12) ETC2 Alpha Compression, single 11-bit red channel, signed normalized. 4 BPP. */ - BGFX_TEXTURE_FORMAT_EACRG11, /** (13) ETC2 Alpha Compression, two 11-bit channels (RG), unsigned normalized. 8 BPP. */ - BGFX_TEXTURE_FORMAT_EACRG11S, /** (14) ETC2 Alpha Compression, two 11-bit channels (RG), signed normalized. 8 BPP. */ - BGFX_TEXTURE_FORMAT_PTC12, /** (15) PowerVR Texture Compression v1. 3-channel RGB. 2 BPP. */ - BGFX_TEXTURE_FORMAT_PTC14, /** (16) PowerVR Texture Compression v1. 3-channel RGB. 4 BPP. */ - BGFX_TEXTURE_FORMAT_PTC12A, /** (17) PowerVR Texture Compression v1. 4-channel RGBA. 2 BPP. */ - BGFX_TEXTURE_FORMAT_PTC14A, /** (18) PowerVR Texture Compression v1. 4-channel RGBA. 4 BPP. */ - BGFX_TEXTURE_FORMAT_PTC22, /** (19) PowerVR Texture Compression v2. 4-channel RGBA. 2 BPP. */ - BGFX_TEXTURE_FORMAT_PTC24, /** (20) PowerVR Texture Compression v2. 4-channel RGBA. 4 BPP. */ - BGFX_TEXTURE_FORMAT_ATC, /** (21) AMD Texture Compression. 3-channel RGB. 4 BPP. */ - BGFX_TEXTURE_FORMAT_ATCE, /** (22) AMD Texture Compression with explicit alpha. 4-channel RGBA. 8 BPP. */ - BGFX_TEXTURE_FORMAT_ATCI, /** (23) AMD Texture Compression with interpolated alpha. 4-channel RGBA. 8 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC4X4, /** (24) Adaptive Scalable Texture Compression, 4x4 block, RGBA. 8.00 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC5X4, /** (25) Adaptive Scalable Texture Compression, 5x4 block, RGBA. 6.40 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC5X5, /** (26) Adaptive Scalable Texture Compression, 5x5 block, RGBA. 5.12 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC6X5, /** (27) Adaptive Scalable Texture Compression, 6x5 block, RGBA. 4.27 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC6X6, /** (28) Adaptive Scalable Texture Compression, 6x6 block, RGBA. 3.56 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC8X5, /** (29) Adaptive Scalable Texture Compression, 8x5 block, RGBA. 3.20 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC8X6, /** (30) Adaptive Scalable Texture Compression, 8x6 block, RGBA. 2.67 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC8X8, /** (31) Adaptive Scalable Texture Compression, 8x8 block, RGBA. 2.00 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC10X5, /** (32) Adaptive Scalable Texture Compression, 10x5 block, RGBA. 2.56 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC10X6, /** (33) Adaptive Scalable Texture Compression, 10x6 block, RGBA. 2.13 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC10X8, /** (34) Adaptive Scalable Texture Compression, 10x8 block, RGBA. 1.60 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC10X10, /** (35) Adaptive Scalable Texture Compression, 10x10 block, RGBA. 1.28 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC12X10, /** (36) Adaptive Scalable Texture Compression, 12x10 block, RGBA. 1.07 BPP. */ - BGFX_TEXTURE_FORMAT_ASTC12X12, /** (37) Adaptive Scalable Texture Compression, 12x12 block, RGBA. 0.89 BPP. */ - BGFX_TEXTURE_FORMAT_UNKNOWN, /** (38) Compressed formats above. */ - BGFX_TEXTURE_FORMAT_R1, /** (39) 1-bit single-channel red. Monochrome, 1-bit per pixel. 1 BPP. */ - BGFX_TEXTURE_FORMAT_A8, /** (40) 8-bit single-channel alpha, unsigned normalized. 8 BPP. */ - BGFX_TEXTURE_FORMAT_R8, /** (41) 8-bit single-channel red, unsigned normalized. 8 BPP. */ - BGFX_TEXTURE_FORMAT_R8I, /** (42) 8-bit single-channel red, signed integer. 8 BPP. */ - BGFX_TEXTURE_FORMAT_R8U, /** (43) 8-bit single-channel red, unsigned integer. 8 BPP. */ - BGFX_TEXTURE_FORMAT_R8S, /** (44) 8-bit single-channel red, signed normalized. 8 BPP. */ - BGFX_TEXTURE_FORMAT_R16, /** (45) 16-bit single-channel red, unsigned normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_R16I, /** (46) 16-bit single-channel red, signed integer. 16 BPP. */ - BGFX_TEXTURE_FORMAT_R16U, /** (47) 16-bit single-channel red, unsigned integer. 16 BPP. */ - BGFX_TEXTURE_FORMAT_R16F, /** (48) 16-bit single-channel red, half-precision floating point. 16 BPP. */ - BGFX_TEXTURE_FORMAT_R16S, /** (49) 16-bit single-channel red, signed normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_R32I, /** (50) 32-bit single-channel red, signed integer. 32 BPP. */ - BGFX_TEXTURE_FORMAT_R32U, /** (51) 32-bit single-channel red, unsigned integer. 32 BPP. */ - BGFX_TEXTURE_FORMAT_R32F, /** (52) 32-bit single-channel red, full-precision floating point. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RG8, /** (53) Two 8-bit channels (red, green), unsigned normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_RG8I, /** (54) Two 8-bit channels (red, green), signed integer. 16 BPP. */ - BGFX_TEXTURE_FORMAT_RG8U, /** (55) Two 8-bit channels (red, green), unsigned integer. 16 BPP. */ - BGFX_TEXTURE_FORMAT_RG8S, /** (56) Two 8-bit channels (red, green), signed normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_RG16, /** (57) Two 16-bit channels (red, green), unsigned normalized. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RG16I, /** (58) Two 16-bit channels (red, green), signed integer. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RG16U, /** (59) Two 16-bit channels (red, green), unsigned integer. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RG16F, /** (60) Two 16-bit channels (red, green), half-precision floating point. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RG16S, /** (61) Two 16-bit channels (red, green), signed normalized. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RG32I, /** (62) Two 32-bit channels (red, green), signed integer. 64 BPP. */ - BGFX_TEXTURE_FORMAT_RG32U, /** (63) Two 32-bit channels (red, green), unsigned integer. 64 BPP. */ - BGFX_TEXTURE_FORMAT_RG32F, /** (64) Two 32-bit channels (red, green), full-precision floating point. 64 BPP. */ - BGFX_TEXTURE_FORMAT_RGB8, /** (65) Three 8-bit channels (red, green, blue), unsigned normalized. 24 BPP. */ - BGFX_TEXTURE_FORMAT_RGB8I, /** (66) Three 8-bit channels (red, green, blue), signed integer. 24 BPP. */ - BGFX_TEXTURE_FORMAT_RGB8U, /** (67) Three 8-bit channels (red, green, blue), unsigned integer. 24 BPP. */ - BGFX_TEXTURE_FORMAT_RGB8S, /** (68) Three 8-bit channels (red, green, blue), signed normalized. 24 BPP. */ - BGFX_TEXTURE_FORMAT_RGB9E5F, /** (69) Shared-exponent RGB. 9 bits per RGB channel with a shared 5-bit exponent, floating point. 32 BPP. */ - BGFX_TEXTURE_FORMAT_BGRA8, /** (70) Four 8-bit channels (blue, green, red, alpha), unsigned normalized. BGRA byte order. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA8, /** (71) Four 8-bit channels (red, green, blue, alpha), unsigned normalized. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA8I, /** (72) Four 8-bit channels (red, green, blue, alpha), signed integer. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA8U, /** (73) Four 8-bit channels (red, green, blue, alpha), unsigned integer. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA8S, /** (74) Four 8-bit channels (red, green, blue, alpha), signed normalized. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA16, /** (75) Four 16-bit channels (red, green, blue, alpha), unsigned normalized. 64 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA16I, /** (76) Four 16-bit channels (red, green, blue, alpha), signed integer. 64 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA16U, /** (77) Four 16-bit channels (red, green, blue, alpha), unsigned integer. 64 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA16F, /** (78) Four 16-bit channels (red, green, blue, alpha), half-precision floating point. 64 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA16S, /** (79) Four 16-bit channels (red, green, blue, alpha), signed normalized. 64 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA32I, /** (80) Four 32-bit channels (red, green, blue, alpha), signed integer. 128 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA32U, /** (81) Four 32-bit channels (red, green, blue, alpha), unsigned integer. 128 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA32F, /** (82) Four 32-bit channels (red, green, blue, alpha), full-precision floating point. 128 BPP. */ - BGFX_TEXTURE_FORMAT_B5G6R5, /** (83) Packed 16-bit, 5-bit blue, 6-bit green, 5-bit red. BGR byte order, unsigned normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_R5G6B5, /** (84) Packed 16-bit, 5-bit red, 6-bit green, 5-bit blue. RGB byte order, unsigned normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_BGRA4, /** (85) Packed 16-bit, 4-bit per channel (blue, green, red, alpha). BGRA byte order, unsigned normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_RGBA4, /** (86) Packed 16-bit, 4-bit per channel (red, green, blue, alpha), unsigned normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_BGR5A1, /** (87) Packed 16-bit, 5-bit blue, 5-bit green, 5-bit red, 1-bit alpha. BGRA byte order, unsigned normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_RGB5A1, /** (88) Packed 16-bit, 5-bit red, 5-bit green, 5-bit blue, 1-bit alpha, unsigned normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_RGB10A2, /** (89) Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned normalized. 32 BPP. */ - BGFX_TEXTURE_FORMAT_RG11B10F, /** (90) Packed 32-bit, 11-bit red, 11-bit green, 10-bit blue, unsigned floating point. No alpha. 32 BPP. */ - BGFX_TEXTURE_FORMAT_UNKNOWNDEPTH, /** (91) Depth formats below. */ - BGFX_TEXTURE_FORMAT_D16, /** (92) 16-bit depth, unsigned normalized. 16 BPP. */ - BGFX_TEXTURE_FORMAT_D24, /** (93) 24-bit depth, unsigned normalized (stored as 32-bit with 8 bits unused). 32 BPP. */ - BGFX_TEXTURE_FORMAT_D24S8, /** (94) 24-bit depth, unsigned normalized, with 8-bit stencil. 32 BPP. */ - BGFX_TEXTURE_FORMAT_D32, /** (95) 32-bit depth, unsigned normalized. 32 BPP. */ - BGFX_TEXTURE_FORMAT_D16F, /** (96) 16-bit depth, floating point. 16 BPP. */ - BGFX_TEXTURE_FORMAT_D24F, /** (97) 24-bit depth, floating point (stored as 32-bit). 32 BPP. */ - BGFX_TEXTURE_FORMAT_D32F, /** (98) 32-bit depth, floating point. 32 BPP. */ - BGFX_TEXTURE_FORMAT_D0S8, /** (99) 8-bit stencil only, no depth. 8 BPP. */ + BGFX_TEXTURE_FORMAT_BC4S, /** ( 4) Block Compression 4. Single 8-bit red channel, signed normalized. 4 BPP. */ + BGFX_TEXTURE_FORMAT_BC5, /** ( 5) Block Compression 5. Two 8-bit channels (RG), unsigned normalized. 8 BPP. */ + BGFX_TEXTURE_FORMAT_BC5S, /** ( 6) Block Compression 5. Two 8-bit channels (RG), signed normalized. 8 BPP. */ + BGFX_TEXTURE_FORMAT_BC6H, /** ( 7) Block Compression 6H. Three 16-bit floating-point channels (RGB), HDR. 8 BPP. */ + BGFX_TEXTURE_FORMAT_BC6HU, /** ( 8) Block Compression 6H. Three 16-bit unsigned floating-point channels (RGB), HDR. 8 BPP. */ + BGFX_TEXTURE_FORMAT_BC7, /** ( 9) RGB 4-7 bits per color channel, 0-8 bits alpha. Block Compression 7. High-quality RGBA, 4-7 bits per color, 0-8 bits alpha. 8 BPP. */ + BGFX_TEXTURE_FORMAT_ETC1, /** (10) Ericsson Texture Compression 1. 8-bit per channel RGB. 4 BPP. */ + BGFX_TEXTURE_FORMAT_ETC2, /** (11) Ericsson Texture Compression 2. 8-bit per channel RGB. 4 BPP. */ + BGFX_TEXTURE_FORMAT_ETC2A, /** (12) Ericsson Texture Compression 2 with full alpha. 8-bit per channel RGBA. 8 BPP. */ + BGFX_TEXTURE_FORMAT_ETC2A1, /** (13) Ericsson Texture Compression 2 with 1-bit punch-through alpha. 4 BPP. */ + BGFX_TEXTURE_FORMAT_EACR11, /** (14) ETC2 Alpha Compression, single 11-bit red channel, unsigned normalized. 4 BPP. */ + BGFX_TEXTURE_FORMAT_EACR11S, /** (15) ETC2 Alpha Compression, single 11-bit red channel, signed normalized. 4 BPP. */ + BGFX_TEXTURE_FORMAT_EACRG11, /** (16) ETC2 Alpha Compression, two 11-bit channels (RG), unsigned normalized. 8 BPP. */ + BGFX_TEXTURE_FORMAT_EACRG11S, /** (17) ETC2 Alpha Compression, two 11-bit channels (RG), signed normalized. 8 BPP. */ + BGFX_TEXTURE_FORMAT_PTC12, /** (18) PowerVR Texture Compression v1. 3-channel RGB. 2 BPP. */ + BGFX_TEXTURE_FORMAT_PTC14, /** (19) PowerVR Texture Compression v1. 3-channel RGB. 4 BPP. */ + BGFX_TEXTURE_FORMAT_PTC12A, /** (20) PowerVR Texture Compression v1. 4-channel RGBA. 2 BPP. */ + BGFX_TEXTURE_FORMAT_PTC14A, /** (21) PowerVR Texture Compression v1. 4-channel RGBA. 4 BPP. */ + BGFX_TEXTURE_FORMAT_PTC22, /** (22) PowerVR Texture Compression v2. 4-channel RGBA. 2 BPP. */ + BGFX_TEXTURE_FORMAT_PTC24, /** (23) PowerVR Texture Compression v2. 4-channel RGBA. 4 BPP. */ + BGFX_TEXTURE_FORMAT_ATC, /** (24) AMD Texture Compression. 3-channel RGB. 4 BPP. */ + BGFX_TEXTURE_FORMAT_ATCE, /** (25) AMD Texture Compression with explicit alpha. 4-channel RGBA. 8 BPP. */ + BGFX_TEXTURE_FORMAT_ATCI, /** (26) AMD Texture Compression with interpolated alpha. 4-channel RGBA. 8 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC4X4, /** (27) Adaptive Scalable Texture Compression, 4x4 block, RGBA. 8.00 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC5X4, /** (28) Adaptive Scalable Texture Compression, 5x4 block, RGBA. 6.40 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC5X5, /** (29) Adaptive Scalable Texture Compression, 5x5 block, RGBA. 5.12 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC6X5, /** (30) Adaptive Scalable Texture Compression, 6x5 block, RGBA. 4.27 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC6X6, /** (31) Adaptive Scalable Texture Compression, 6x6 block, RGBA. 3.56 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC8X5, /** (32) Adaptive Scalable Texture Compression, 8x5 block, RGBA. 3.20 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC8X6, /** (33) Adaptive Scalable Texture Compression, 8x6 block, RGBA. 2.67 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC8X8, /** (34) Adaptive Scalable Texture Compression, 8x8 block, RGBA. 2.00 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC10X5, /** (35) Adaptive Scalable Texture Compression, 10x5 block, RGBA. 2.56 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC10X6, /** (36) Adaptive Scalable Texture Compression, 10x6 block, RGBA. 2.13 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC10X8, /** (37) Adaptive Scalable Texture Compression, 10x8 block, RGBA. 1.60 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC10X10, /** (38) Adaptive Scalable Texture Compression, 10x10 block, RGBA. 1.28 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC12X10, /** (39) Adaptive Scalable Texture Compression, 12x10 block, RGBA. 1.07 BPP. */ + BGFX_TEXTURE_FORMAT_ASTC12X12, /** (40) Adaptive Scalable Texture Compression, 12x12 block, RGBA. 0.89 BPP. */ + BGFX_TEXTURE_FORMAT_UNKNOWN, /** (41) Compressed formats above. */ + BGFX_TEXTURE_FORMAT_R1, /** (42) 1-bit single-channel red. Monochrome, 1-bit per pixel. 1 BPP. */ + BGFX_TEXTURE_FORMAT_A8, /** (43) 8-bit single-channel alpha, unsigned normalized. 8 BPP. */ + BGFX_TEXTURE_FORMAT_R8, /** (44) 8-bit single-channel red, unsigned normalized. 8 BPP. */ + BGFX_TEXTURE_FORMAT_R8I, /** (45) 8-bit single-channel red, signed integer. 8 BPP. */ + BGFX_TEXTURE_FORMAT_R8U, /** (46) 8-bit single-channel red, unsigned integer. 8 BPP. */ + BGFX_TEXTURE_FORMAT_R8S, /** (47) 8-bit single-channel red, signed normalized. 8 BPP. */ + BGFX_TEXTURE_FORMAT_R16, /** (48) 16-bit single-channel red, unsigned normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_R16I, /** (49) 16-bit single-channel red, signed integer. 16 BPP. */ + BGFX_TEXTURE_FORMAT_R16U, /** (50) 16-bit single-channel red, unsigned integer. 16 BPP. */ + BGFX_TEXTURE_FORMAT_R16F, /** (51) 16-bit single-channel red, half-precision floating point. 16 BPP. */ + BGFX_TEXTURE_FORMAT_R16S, /** (52) 16-bit single-channel red, signed normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_R32I, /** (53) 32-bit single-channel red, signed integer. 32 BPP. */ + BGFX_TEXTURE_FORMAT_R32U, /** (54) 32-bit single-channel red, unsigned integer. 32 BPP. */ + BGFX_TEXTURE_FORMAT_R32F, /** (55) 32-bit single-channel red, full-precision floating point. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RG8, /** (56) Two 8-bit channels (red, green), unsigned normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_RG8I, /** (57) Two 8-bit channels (red, green), signed integer. 16 BPP. */ + BGFX_TEXTURE_FORMAT_RG8U, /** (58) Two 8-bit channels (red, green), unsigned integer. 16 BPP. */ + BGFX_TEXTURE_FORMAT_RG8S, /** (59) Two 8-bit channels (red, green), signed normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_RG16, /** (60) Two 16-bit channels (red, green), unsigned normalized. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RG16I, /** (61) Two 16-bit channels (red, green), signed integer. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RG16U, /** (62) Two 16-bit channels (red, green), unsigned integer. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RG16F, /** (63) Two 16-bit channels (red, green), half-precision floating point. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RG16S, /** (64) Two 16-bit channels (red, green), signed normalized. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RG32I, /** (65) Two 32-bit channels (red, green), signed integer. 64 BPP. */ + BGFX_TEXTURE_FORMAT_RG32U, /** (66) Two 32-bit channels (red, green), unsigned integer. 64 BPP. */ + BGFX_TEXTURE_FORMAT_RG32F, /** (67) Two 32-bit channels (red, green), full-precision floating point. 64 BPP. */ + BGFX_TEXTURE_FORMAT_RGB8, /** (68) Three 8-bit channels (red, green, blue), unsigned normalized. 24 BPP. */ + BGFX_TEXTURE_FORMAT_RGB8I, /** (69) Three 8-bit channels (red, green, blue), signed integer. 24 BPP. */ + BGFX_TEXTURE_FORMAT_RGB8U, /** (70) Three 8-bit channels (red, green, blue), unsigned integer. 24 BPP. */ + BGFX_TEXTURE_FORMAT_RGB8S, /** (71) Three 8-bit channels (red, green, blue), signed normalized. 24 BPP. */ + BGFX_TEXTURE_FORMAT_RGB9E5F, /** (72) Shared-exponent RGB. 9 bits per RGB channel with a shared 5-bit exponent, floating point. 32 BPP. */ + BGFX_TEXTURE_FORMAT_BGRA8, /** (73) Four 8-bit channels (blue, green, red, alpha), unsigned normalized. BGRA byte order. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA8, /** (74) Four 8-bit channels (red, green, blue, alpha), unsigned normalized. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA8I, /** (75) Four 8-bit channels (red, green, blue, alpha), signed integer. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA8U, /** (76) Four 8-bit channels (red, green, blue, alpha), unsigned integer. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA8S, /** (77) Four 8-bit channels (red, green, blue, alpha), signed normalized. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA16, /** (78) Four 16-bit channels (red, green, blue, alpha), unsigned normalized. 64 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA16I, /** (79) Four 16-bit channels (red, green, blue, alpha), signed integer. 64 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA16U, /** (80) Four 16-bit channels (red, green, blue, alpha), unsigned integer. 64 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA16F, /** (81) Four 16-bit channels (red, green, blue, alpha), half-precision floating point. 64 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA16S, /** (82) Four 16-bit channels (red, green, blue, alpha), signed normalized. 64 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA32I, /** (83) Four 32-bit channels (red, green, blue, alpha), signed integer. 128 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA32U, /** (84) Four 32-bit channels (red, green, blue, alpha), unsigned integer. 128 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA32F, /** (85) Four 32-bit channels (red, green, blue, alpha), full-precision floating point. 128 BPP. */ + BGFX_TEXTURE_FORMAT_B5G6R5, /** (86) Packed 16-bit, 5-bit blue, 6-bit green, 5-bit red. BGR byte order, unsigned normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_R5G6B5, /** (87) Packed 16-bit, 5-bit red, 6-bit green, 5-bit blue. RGB byte order, unsigned normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_BGRA4, /** (88) Packed 16-bit, 4-bit per channel (blue, green, red, alpha). BGRA byte order, unsigned normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_RGBA4, /** (89) Packed 16-bit, 4-bit per channel (red, green, blue, alpha), unsigned normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_BGR5A1, /** (90) Packed 16-bit, 5-bit blue, 5-bit green, 5-bit red, 1-bit alpha. BGRA byte order, unsigned normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_RGB5A1, /** (91) Packed 16-bit, 5-bit red, 5-bit green, 5-bit blue, 1-bit alpha, unsigned normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_RGB10A2, /** (92) Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned normalized. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RGB10A2U, /** (93) Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned integer. 32 BPP. */ + BGFX_TEXTURE_FORMAT_RG11B10F, /** (94) Packed 32-bit, 11-bit red, 11-bit green, 10-bit blue, unsigned floating point. No alpha. 32 BPP. */ + BGFX_TEXTURE_FORMAT_UNKNOWNDEPTH, /** (95) Depth formats below. */ + BGFX_TEXTURE_FORMAT_D16, /** (96) 16-bit depth, unsigned normalized. 16 BPP. */ + BGFX_TEXTURE_FORMAT_D24, /** (97) 24-bit depth, unsigned normalized (stored as 32-bit with 8 bits unused). 32 BPP. */ + BGFX_TEXTURE_FORMAT_D24S8, /** (98) 24-bit depth, unsigned normalized, with 8-bit stencil. 32 BPP. */ + BGFX_TEXTURE_FORMAT_D32, /** (99) 32-bit depth, unsigned normalized. 32 BPP. */ + BGFX_TEXTURE_FORMAT_D16F, /** (100) 16-bit depth, floating point. 16 BPP. */ + BGFX_TEXTURE_FORMAT_D24F, /** (101) 24-bit depth, floating point (stored as 32-bit). 32 BPP. */ + BGFX_TEXTURE_FORMAT_D32F, /** (102) 32-bit depth, floating point. 32 BPP. */ + BGFX_TEXTURE_FORMAT_D32FS8, /** (103) 32-bit depth, floating point, with 8-bit stencil (stored as 64-bit). 64 BPP. */ + BGFX_TEXTURE_FORMAT_D0S8, /** (104) 8-bit stencil only, no depth. 8 BPP. */ BGFX_TEXTURE_FORMAT_COUNT diff --git a/include/bgfx/defines.h b/include/bgfx/defines.h index b6b2b2a0f..c86ff96fd 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(152) +#define BGFX_API_VERSION UINT32_C(153) /** * 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 5c2bcb728..0091260a6 100644 --- a/scripts/bgfx.idl +++ b/scripts/bgfx.idl @@ -1,7 +1,7 @@ -- vim: syntax=lua -- bgfx interface -version(152) +version(153) typedef "bool" typedef "char" @@ -593,8 +593,11 @@ enum.TextureFormat { comment = "Texture formats:", section = "Textures" } .BC2 --- Block Compression 2. 5-bit R, 6-bit G, 5-bit B, 4-bit explicit A. 8 BPP. .BC3 --- Block Compression 3. 5-bit R, 6-bit G, 5-bit B, 8-bit interpolated A. 8 BPP. .BC4 --- Block Compression 4. Single 8-bit red channel, unsigned normalized. 4 BPP. + .BC4S --- Block Compression 4. Single 8-bit red channel, signed normalized. 4 BPP. .BC5 --- Block Compression 5. Two 8-bit channels (RG), unsigned normalized. 8 BPP. + .BC5S --- Block Compression 5. Two 8-bit channels (RG), signed normalized. 8 BPP. .BC6H --- Block Compression 6H. Three 16-bit floating-point channels (RGB), HDR. 8 BPP. + .BC6HU --- Block Compression 6H. Three 16-bit unsigned floating-point channels (RGB), HDR. 8 BPP. .BC7 --- RGB 4-7 bits per color channel, 0-8 bits alpha. Block Compression 7. High-quality RGBA, 4-7 bits per color, 0-8 bits alpha. 8 BPP. .ETC1 --- Ericsson Texture Compression 1. 8-bit per channel RGB. 4 BPP. .ETC2 --- Ericsson Texture Compression 2. 8-bit per channel RGB. 4 BPP. @@ -679,6 +682,7 @@ enum.TextureFormat { comment = "Texture formats:", section = "Textures" } .BGR5A1 --- Packed 16-bit, 5-bit blue, 5-bit green, 5-bit red, 1-bit alpha. BGRA byte order, unsigned normalized. 16 BPP. .RGB5A1 --- Packed 16-bit, 5-bit red, 5-bit green, 5-bit blue, 1-bit alpha, unsigned normalized. 16 BPP. .RGB10A2 --- Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned normalized. 32 BPP. + .RGB10A2U --- Packed 32-bit, 10-bit red, 10-bit green, 10-bit blue, 2-bit alpha, unsigned integer. 32 BPP. .RG11B10F --- Packed 32-bit, 11-bit red, 11-bit green, 10-bit blue, unsigned floating point. No alpha. 32 BPP. .UnknownDepth --- Depth formats below. .D16 --- 16-bit depth, unsigned normalized. 16 BPP. @@ -688,6 +692,7 @@ enum.TextureFormat { comment = "Texture formats:", section = "Textures" } .D16F --- 16-bit depth, floating point. 16 BPP. .D24F --- 24-bit depth, floating point (stored as 32-bit). 32 BPP. .D32F --- 32-bit depth, floating point. 32 BPP. + .D32FS8 --- 32-bit depth, floating point, with 8-bit stencil (stored as 64-bit). 64 BPP. .D0S8 --- 8-bit stencil only, no depth. 8 BPP. () diff --git a/src/bgfx.cpp b/src/bgfx.cpp index 572bdd4ec..cab0dd6a9 100644 --- a/src/bgfx.cpp +++ b/src/bgfx.cpp @@ -6505,8 +6505,11 @@ BGFX_TEXTURE_FORMAT_BIMG(BC1); BGFX_TEXTURE_FORMAT_BIMG(BC2); BGFX_TEXTURE_FORMAT_BIMG(BC3); BGFX_TEXTURE_FORMAT_BIMG(BC4); +BGFX_TEXTURE_FORMAT_BIMG(BC4S); BGFX_TEXTURE_FORMAT_BIMG(BC5); +BGFX_TEXTURE_FORMAT_BIMG(BC5S); BGFX_TEXTURE_FORMAT_BIMG(BC6H); +BGFX_TEXTURE_FORMAT_BIMG(BC6HU); BGFX_TEXTURE_FORMAT_BIMG(BC7); BGFX_TEXTURE_FORMAT_BIMG(ETC1); BGFX_TEXTURE_FORMAT_BIMG(ETC2); @@ -6587,6 +6590,7 @@ BGFX_TEXTURE_FORMAT_BIMG(RGBA4); BGFX_TEXTURE_FORMAT_BIMG(BGR5A1); BGFX_TEXTURE_FORMAT_BIMG(RGB5A1); BGFX_TEXTURE_FORMAT_BIMG(RGB10A2); +BGFX_TEXTURE_FORMAT_BIMG(RGB10A2U); BGFX_TEXTURE_FORMAT_BIMG(RG11B10F); BGFX_TEXTURE_FORMAT_BIMG(UnknownDepth); BGFX_TEXTURE_FORMAT_BIMG(D16); @@ -6596,6 +6600,7 @@ BGFX_TEXTURE_FORMAT_BIMG(D32); BGFX_TEXTURE_FORMAT_BIMG(D16F); BGFX_TEXTURE_FORMAT_BIMG(D24F); BGFX_TEXTURE_FORMAT_BIMG(D32F); +BGFX_TEXTURE_FORMAT_BIMG(D32FS8); BGFX_TEXTURE_FORMAT_BIMG(D0S8); BGFX_TEXTURE_FORMAT_BIMG(Count); diff --git a/src/renderer_d3d11.cpp b/src/renderer_d3d11.cpp index 75070f1b5..a934c264b 100644 --- a/src/renderer_d3d11.cpp +++ b/src/renderer_d3d11.cpp @@ -208,8 +208,11 @@ namespace bgfx { namespace d3d11 { DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_BC2_UNORM_SRGB }, // BC2 { DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_BC3_UNORM_SRGB }, // BC3 { DXGI_FORMAT_BC4_UNORM, DXGI_FORMAT_BC4_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BC4 + { DXGI_FORMAT_BC4_SNORM, DXGI_FORMAT_BC4_SNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BC4S { DXGI_FORMAT_BC5_UNORM, DXGI_FORMAT_BC5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BC5 + { DXGI_FORMAT_BC5_SNORM, DXGI_FORMAT_BC5_SNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BC5S { DXGI_FORMAT_BC6H_SF16, DXGI_FORMAT_BC6H_SF16, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BC6H + { DXGI_FORMAT_BC6H_UF16, DXGI_FORMAT_BC6H_UF16, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BC6HU { DXGI_FORMAT_BC7_UNORM, DXGI_FORMAT_BC7_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_BC7_UNORM_SRGB }, // BC7 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ETC1 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ETC2 @@ -294,6 +297,7 @@ namespace bgfx { namespace d3d11 { DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // BGR5A1 { DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // RGB5A1 { DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // RGB10A2 + { DXGI_FORMAT_R10G10B10A2_UINT, DXGI_FORMAT_R10G10B10A2_UINT, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // RGB10A2U { DXGI_FORMAT_R11G11B10_FLOAT, DXGI_FORMAT_R11G11B10_FLOAT, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // RG11B10F { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // UnknownDepth { DXGI_FORMAT_R16_TYPELESS, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_D16_UNORM, DXGI_FORMAT_UNKNOWN }, // D16 @@ -303,6 +307,7 @@ namespace bgfx { namespace d3d11 { DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_UNKNOWN }, // D16F { DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_UNKNOWN }, // D24F { DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_UNKNOWN }, // D32F + { DXGI_FORMAT_R32G8X24_TYPELESS, DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, DXGI_FORMAT_D32_FLOAT_S8X24_UINT, DXGI_FORMAT_UNKNOWN }, // D32FS8 { DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_R24_UNORM_X8_TYPELESS, DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_UNKNOWN }, // D0S8 }; static_assert(TextureFormat::Count == BX_COUNTOF(s_textureFormat) ); diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index 6505d2479..7ede5c8f7 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -210,8 +210,11 @@ namespace bgfx { namespace d3d12 { DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_BC2_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_BC2_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BC2 { DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_BC3_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_BC3_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BC3 { DXGI_FORMAT_BC4_UNORM, DXGI_FORMAT_BC4_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BC4 + { DXGI_FORMAT_BC4_SNORM, DXGI_FORMAT_BC4_SNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BC4S { DXGI_FORMAT_BC5_UNORM, DXGI_FORMAT_BC5_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BC5 + { DXGI_FORMAT_BC5_SNORM, DXGI_FORMAT_BC5_SNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BC5S { DXGI_FORMAT_BC6H_SF16, DXGI_FORMAT_BC6H_SF16, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BC6H + { DXGI_FORMAT_BC6H_UF16, DXGI_FORMAT_BC6H_UF16, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BC6HU { DXGI_FORMAT_BC7_UNORM, DXGI_FORMAT_BC7_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_BC7_UNORM_SRGB, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BC7 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ETC1 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ETC2 @@ -296,6 +299,7 @@ namespace bgfx { namespace d3d12 { DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // BGR5A1 { DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_B5G5R5A1_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_ENCODE_SHADER_4_COMPONENT_MAPPING($B, $G, $R, $A) }, // RGB5A1 { DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_R10G10B10A2_UNORM, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // RGB10A2 + { DXGI_FORMAT_R10G10B10A2_UINT, DXGI_FORMAT_R10G10B10A2_UINT, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // RGB10A2U { DXGI_FORMAT_R11G11B10_FLOAT, DXGI_FORMAT_R11G11B10_FLOAT, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // RG11B10F { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // UnknownDepth { DXGI_FORMAT_R16_TYPELESS, DXGI_FORMAT_R16_UNORM, DXGI_FORMAT_D16_UNORM, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // D16 @@ -305,6 +309,7 @@ namespace bgfx { namespace d3d12 { DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // D16F { DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // D24F { DXGI_FORMAT_R32_TYPELESS, DXGI_FORMAT_R32_FLOAT, DXGI_FORMAT_D32_FLOAT, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // D32F + { DXGI_FORMAT_R32G8X24_TYPELESS, DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS, DXGI_FORMAT_D32_FLOAT_S8X24_UINT, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // D32FS8 { DXGI_FORMAT_R24G8_TYPELESS, DXGI_FORMAT_R24_UNORM_X8_TYPELESS, DXGI_FORMAT_D24_UNORM_S8_UINT, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // D0S8 #undef $0 #undef $1 diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index 143fc3ffb..dae5352f4 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -243,8 +243,11 @@ namespace bgfx { namespace gl { GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, GL_ZERO, false, { $_, $_, $_, $_ } }, // BC2 { GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, GL_ZERO, false, { $_, $_, $_, $_ } }, // BC3 { GL_COMPRESSED_LUMINANCE_LATC1_EXT, GL_ZERO, GL_COMPRESSED_LUMINANCE_LATC1_EXT, GL_COMPRESSED_LUMINANCE_LATC1_EXT, GL_ZERO, false, { $_, $_, $_, $_ } }, // BC4 + { GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT, GL_ZERO, GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT, GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT, GL_ZERO, false, { $_, $_, $_, $_ } }, // BC4S { GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT, GL_ZERO, GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT, GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT, GL_ZERO, false, { $_, $_, $_, $_ } }, // BC5 + { GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT, GL_ZERO, GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT, GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT, GL_ZERO, false, { $_, $_, $_, $_ } }, // BC5S { GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB, GL_ZERO, GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB, GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB, GL_ZERO, false, { $_, $_, $_, $_ } }, // BC6H + { GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB, GL_ZERO, GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB, GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB, GL_ZERO, false, { $_, $_, $_, $_ } }, // BC6HU { GL_COMPRESSED_RGBA_BPTC_UNORM_ARB, GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB, GL_COMPRESSED_RGBA_BPTC_UNORM_ARB, GL_COMPRESSED_RGBA_BPTC_UNORM_ARB, GL_ZERO, false, { $_, $_, $_, $_ } }, // BC7 { GL_ETC1_RGB8_OES, GL_ZERO, GL_ETC1_RGB8_OES, GL_ETC1_RGB8_OES, GL_ZERO, false, { $_, $_, $_, $_ } }, // ETC1 { GL_COMPRESSED_RGB8_ETC2, GL_COMPRESSED_SRGB8_ETC2, GL_COMPRESSED_RGB8_ETC2, GL_COMPRESSED_RGB8_ETC2, GL_ZERO, false, { $_, $_, $_, $_ } }, // ETC2 @@ -329,6 +332,7 @@ namespace bgfx { namespace gl { GL_RGB5_A1, GL_ZERO, GL_BGRA, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, false, { $_, $_, $_, $_ } }, // BGR5A1 { GL_RGB5_A1, GL_ZERO, GL_RGBA, GL_RGBA, GL_UNSIGNED_SHORT_1_5_5_5_REV, false, { $_, $_, $_, $_ } }, // RGB5A1 { GL_RGB10_A2, GL_ZERO, GL_RGBA, GL_RGBA, GL_UNSIGNED_INT_2_10_10_10_REV, false, { $_, $_, $_, $_ } }, // RGB10A2 + { GL_RGB10_A2UI, GL_ZERO, GL_RGBA_INTEGER, GL_RGBA_INTEGER, GL_UNSIGNED_INT_2_10_10_10_REV, false, { $_, $_, $_, $_ } }, // RGB10A2U { GL_R11F_G11F_B10F, GL_ZERO, GL_RGB, GL_RGB, GL_UNSIGNED_INT_10F_11F_11F_REV, false, { $_, $_, $_, $_ } }, // RG11B10F { GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, GL_ZERO, false, { $_, $_, $_, $_ } }, // UnknownDepth { GL_DEPTH_COMPONENT16, GL_ZERO, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, false, { $_, $_, $_, $_ } }, // D16 @@ -338,6 +342,7 @@ namespace bgfx { namespace gl { GL_DEPTH_COMPONENT32F, GL_ZERO, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_FLOAT, false, { $_, $_, $_, $_ } }, // D16F { GL_DEPTH_COMPONENT32F, GL_ZERO, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_FLOAT, false, { $_, $_, $_, $_ } }, // D24F { GL_DEPTH_COMPONENT32F, GL_ZERO, GL_DEPTH_COMPONENT, GL_DEPTH_COMPONENT, GL_FLOAT, false, { $_, $_, $_, $_ } }, // D32F + { GL_DEPTH32F_STENCIL8, GL_ZERO, GL_DEPTH_STENCIL, GL_DEPTH_STENCIL, GL_FLOAT_32_UNSIGNED_INT_24_8_REV, false, { $_, $_, $_, $_ } }, // D32FS8 { GL_STENCIL_INDEX8, GL_ZERO, GL_STENCIL_INDEX, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, false, { $_, $_, $_, $_ } }, // D0S8 #undef $_ #undef $0 @@ -357,8 +362,11 @@ namespace bgfx { namespace gl GL_ZERO, // BC2 GL_ZERO, // BC3 GL_ZERO, // BC4 + GL_ZERO, // BC4S GL_ZERO, // BC5 + GL_ZERO, // BC5S GL_ZERO, // BC6H + GL_ZERO, // BC6HU GL_ZERO, // BC7 GL_ZERO, // ETC1 GL_ZERO, // ETC2 @@ -443,6 +451,7 @@ namespace bgfx { namespace gl GL_RGB5_A1, // BGR5A1 GL_RGB5_A1, // RGB5A1 GL_RGB10_A2, // RGB10A2 + GL_RGB10_A2UI, // RGB10A2U GL_R11F_G11F_B10F, // RG11B10F GL_ZERO, // UnknownDepth GL_DEPTH_COMPONENT16, // D16 @@ -456,6 +465,7 @@ namespace bgfx { namespace gl GL_DEPTH_COMPONENT32F, // D16F GL_DEPTH_COMPONENT32F, // D24F GL_DEPTH_COMPONENT32F, // D32F + GL_DEPTH32F_STENCIL8, // D32FS8 GL_STENCIL_INDEX8, // D0S8 }; static_assert(TextureFormat::Count == BX_COUNTOF(s_rboFormat) ); @@ -466,8 +476,11 @@ namespace bgfx { namespace gl GL_ZERO, // BC2 GL_ZERO, // BC3 GL_ZERO, // BC4 + GL_ZERO, // BC4S GL_ZERO, // BC5 + GL_ZERO, // BC5S GL_ZERO, // BC6H + GL_ZERO, // BC6HU GL_ZERO, // BC7 GL_ZERO, // ETC1 GL_ZERO, // ETC2 @@ -552,6 +565,7 @@ namespace bgfx { namespace gl GL_RGB5_A1, // BGR5A1 GL_RGB5_A1, // RGB5A1 GL_RGB10_A2, // RGB10A2 + GL_RGB10_A2UI, // RGB10A2U GL_R11F_G11F_B10F, // RG11B10F GL_ZERO, // UnknownDepth GL_ZERO, // D16 @@ -561,6 +575,7 @@ namespace bgfx { namespace gl GL_ZERO, // D16F GL_ZERO, // D24F GL_ZERO, // D32F + GL_ZERO, // D32FS8 GL_ZERO, // D0S8 }; static_assert(TextureFormat::Count == BX_COUNTOF(s_imageFormat) ); diff --git a/src/renderer_gl.h b/src/renderer_gl.h index 1f00cdd6c..12b087383 100644 --- a/src/renderer_gl.h +++ b/src/renderer_gl.h @@ -341,6 +341,10 @@ typedef uint64_t GLuint64; # define GL_RGB10_A2 0x8059 #endif // GL_RGB10_A2 +#ifndef GL_RGB10_A2UI +# define GL_RGB10_A2UI 0x906F +#endif // GL_RGB10_A2UI + #ifndef GL_RGBA16 # define GL_RGBA16 0x805B #endif // GL_RGBA16 @@ -405,10 +409,18 @@ typedef uint64_t GLuint64; # define GL_COMPRESSED_LUMINANCE_LATC1_EXT 0x8C70 #endif // GL_COMPRESSED_LUMINANCE_LATC1_EXT +#ifndef GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT +# define GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT 0x8C71 +#endif // GL_COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT + #ifndef GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT # define GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT 0x8C72 #endif // GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT +#ifndef GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT +# define GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT 0x8C73 +#endif // GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT + #ifndef GL_COMPRESSED_RED_RGTC1 # define GL_COMPRESSED_RED_RGTC1 0x8DBB #endif // GL_COMPRESSED_RED_RGTC1 @@ -786,6 +798,14 @@ typedef uint64_t GLuint64; # define GL_DEPTH_COMPONENT32F 0x8CAC #endif // GL_DEPTH_COMPONENT32F +#ifndef GL_DEPTH32F_STENCIL8 +# define GL_DEPTH32F_STENCIL8 0x8CAD +#endif // GL_DEPTH32F_STENCIL8 + +#ifndef GL_FLOAT_32_UNSIGNED_INT_24_8_REV +# define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD +#endif // GL_FLOAT_32_UNSIGNED_INT_24_8_REV + #ifndef GL_DEPTH_STENCIL_ATTACHMENT # define GL_DEPTH_STENCIL_ATTACHMENT 0x821A #endif // GL_DEPTH_STENCIL_ATTACHMENT diff --git a/src/renderer_mtl.cpp b/src/renderer_mtl.cpp index 18b260bda..958fbdabc 100644 --- a/src/renderer_mtl.cpp +++ b/src/renderer_mtl.cpp @@ -267,8 +267,11 @@ BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG("-Wunguarded-availability-new"); { MTL::PixelFormatBC2_RGBA, MTL::PixelFormatBC2_RGBA_sRGB, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // BC2 { MTL::PixelFormatBC3_RGBA, MTL::PixelFormatBC3_RGBA_sRGB, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // BC3 { MTL::PixelFormatBC4_RUnorm, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // BC4 + { MTL::PixelFormatBC4_RSnorm, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // BC4S { MTL::PixelFormatBC5_RGUnorm, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // BC5 + { MTL::PixelFormatBC5_RGSnorm, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // BC5S { MTL::PixelFormatBC6H_RGBFloat, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // BC6H + { MTL::PixelFormatBC6H_RGBUfloat, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // BC6HU { MTL::PixelFormatBC7_RGBAUnorm, MTL::PixelFormatBC7_RGBAUnorm_sRGB, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // BC7 { MTL::PixelFormatInvalid, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ETC1 { MTL::PixelFormatETC2_RGB8, MTL::PixelFormatETC2_RGB8_sRGB, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ETC2 @@ -353,6 +356,7 @@ BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG("-Wunguarded-availability-new"); { MTL::PixelFormatBGR5A1Unorm, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, true }, // BGR5A1 { MTL::PixelFormatBGR5A1Unorm, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $B, $G, $R, $A }, true }, // RGB5A1 { MTL::PixelFormatRGB10A2Unorm, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, true }, // RGB10A2 + { MTL::PixelFormatRGB10A2Uint, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // RGB10A2U { MTL::PixelFormatRG11B10Float, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, true }, // RG11B10F { MTL::PixelFormatInvalid, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // UnknownDepth { MTL::PixelFormatDepth16Unorm, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // D16 @@ -362,6 +366,7 @@ BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG("-Wunguarded-availability-new"); { MTL::PixelFormatDepth32Float, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // D16F { MTL::PixelFormatDepth32Float, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // D24F { MTL::PixelFormatDepth32Float, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // D32F + { MTL::PixelFormatDepth32Float_Stencil8, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // D32FS8 { MTL::PixelFormatStencil8, MTL::PixelFormatInvalid, MTL::ReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // D0S8 #undef $0 #undef $1 @@ -384,7 +389,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); // struct TextureFormatCaps { - TextureFormatCaps(MTL::Device* _device, bool _hasPacked16Formats) + TextureFormatCaps(MTL::Device* _device, bool _hasPacked16Formats, bool _hasDepth32FloatStencil8) { m_ios = BX_ENABLED(BX_PLATFORM_IOS) || BX_ENABLED(BX_PLATFORM_VISIONOS); m_osx = BX_ENABLED(BX_PLATFORM_OSX); @@ -394,6 +399,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); m_mac2 = _device->supportsFamily(MTL::GPUFamilyMac2); m_bc = _device->supportsBCTextureCompression(); m_packed16 = _hasPacked16Formats; + m_d32fs8 = _hasDepth32FloatStencil8; m_rwTier = _device->readWriteTextureSupport(); } @@ -418,8 +424,11 @@ BX_PRAGMA_DIAGNOSTIC_POP(); case TextureFormat::BC2: case TextureFormat::BC3: case TextureFormat::BC4: + case TextureFormat::BC4S: case TextureFormat::BC5: + case TextureFormat::BC5S: case TextureFormat::BC6H: + case TextureFormat::BC6HU: case TextureFormat::BC7: supported = m_bc; break; @@ -554,6 +563,13 @@ BX_PRAGMA_DIAGNOSTIC_POP(); supports3D = true; break; + case TextureFormat::RGB10A2U: + supported = true; + framebuffer = true; + multisample = true; + supports3D = true; + break; + case TextureFormat::RGB9E5F: // Not color-renderable on Mac (non-Apple) GPUs. supported = true; @@ -588,6 +604,12 @@ BX_PRAGMA_DIAGNOSTIC_POP(); multisample = true; break; + case TextureFormat::D32FS8: + supported = m_d32fs8; + framebuffer = true; + multisample = true; + break; + default: break; } @@ -663,6 +685,7 @@ BX_PRAGMA_DIAGNOSTIC_POP(); bool m_mac2; bool m_bc; bool m_packed16; + bool m_d32fs8; MTL::ReadWriteTextureTier m_rwTier; }; @@ -1002,8 +1025,9 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames : 0 ; + bool hasPixelFormatDepth32Float_Stencil8; CHECK_FEATURE_AVAILABLE( - m_hasPixelFormatDepth32Float_Stencil8 + hasPixelFormatDepth32Float_Stencil8 , iOS 9.0 , macOS 10.11 , macCatalyst 13.1 @@ -1075,7 +1099,7 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames : MTL::PixelFormatDepth32Float_Stencil8 ; - TextureFormatCaps textureFormatCaps(m_device, hasPacked16Formats); + TextureFormatCaps textureFormatCaps(m_device, hasPacked16Formats, hasPixelFormatDepth32Float_Stencil8); for (uint32_t ii = 0; ii < TextureFormat::Count; ++ii) { @@ -2346,22 +2370,19 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames setAttachment( (MTL::RenderPassAttachmentDescriptor*)_renderPassDescriptor->depthAttachment(), frameBuffer.m_depthAttachment, texture.m_type, NULL != texture.m_ptrMsaa); setAttachment( (MTL::RenderPassAttachmentDescriptor*)_renderPassDescriptor->stencilAttachment(), frameBuffer.m_depthAttachment, texture.m_type, NULL != texture.m_ptrMsaa); - if (texture.m_textureFormat == TextureFormat::D24S8) - { - const MTL::PixelFormat depthFormat = texture.m_ptr->pixelFormat(); + const MTL::PixelFormat depthFormat = texture.m_ptr->pixelFormat(); - if (MTL::PixelFormatDepth24Unorm_Stencil8 == depthFormat - || MTL::PixelFormatDepth32Float_Stencil8 == depthFormat) - { - _renderPassDescriptor->stencilAttachment()->setTexture(_renderPassDescriptor->depthAttachment()->texture() ); - } - else - { - _renderPassDescriptor->stencilAttachment()->setTexture(texture.m_ptrMsaa - ? texture.m_ptrMsaa - : texture.m_ptrStencil - ); - } + if (MTL::PixelFormatDepth24Unorm_Stencil8 == depthFormat + || MTL::PixelFormatDepth32Float_Stencil8 == depthFormat) + { + _renderPassDescriptor->stencilAttachment()->setTexture(_renderPassDescriptor->depthAttachment()->texture() ); + } + else if (NULL != texture.m_ptrStencil) + { + _renderPassDescriptor->stencilAttachment()->setTexture(texture.m_ptrMsaa + ? texture.m_ptrMsaa + : texture.m_ptrStencil + ); } } } @@ -2831,13 +2852,16 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames : 1 ); + const MTL::PixelFormat depthFormat = depthStencilTexture.m_ptr->pixelFormat(); + if (NULL != depthStencilTexture.m_ptrStencil) { pd->setStencilAttachmentPixelFormat(depthStencilTexture.m_ptrStencil->pixelFormat() ); } - else if (depthStencilTexture.m_textureFormat == TextureFormat::D24S8) + else if (MTL::PixelFormatDepth24Unorm_Stencil8 == depthFormat + || MTL::PixelFormatDepth32Float_Stencil8 == depthFormat) { - pd->setStencilAttachmentPixelFormat(depthStencilTexture.m_ptr->pixelFormat() ); + pd->setStencilAttachmentPixelFormat(depthFormat); } } } @@ -3267,7 +3291,6 @@ static_assert(BX_COUNTOF(s_accessNames) == Access::Count, "Invalid s_accessNames TimerQueryMtl m_gpuTimer; CommandQueueMtl m_cmd; - bool m_hasPixelFormatDepth32Float_Stencil8; bool m_hasStoreActionStoreAndMultisampleResolve; bool m_hasCPUCacheModesAndStorageModes; bool m_hasSynchronizeResource; diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 80450d5e2..96ce8f281 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -189,8 +189,11 @@ VK_IMPORT_DEVICE { VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_BC2_SRGB_BLOCK, { $_, $_, $_, $_ } }, // BC2 { VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_BC3_SRGB_BLOCK, { $_, $_, $_, $_ } }, // BC3 { VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // BC4 + { VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // BC4S { VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // BC5 + { VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // BC5S { VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // BC6H + { VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // BC6HU { VK_FORMAT_BC7_UNORM_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_BC7_SRGB_BLOCK, { $_, $_, $_, $_ } }, // BC7 { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // ETC1 { VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ETC2 @@ -275,6 +278,7 @@ VK_IMPORT_DEVICE { VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // BGR5A1 { VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $B, $G, $R, $A } }, // RGB5A1 { VK_FORMAT_A2B10G10R10_UNORM_PACK32, VK_FORMAT_A2B10G10R10_UNORM_PACK32, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // RGB10A2 + { VK_FORMAT_A2B10G10R10_UINT_PACK32, VK_FORMAT_A2B10G10R10_UINT_PACK32, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // RGB10A2U { VK_FORMAT_B10G11R11_UFLOAT_PACK32, VK_FORMAT_B10G11R11_UFLOAT_PACK32, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // RG11B10F { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // UnknownDepth { VK_FORMAT_UNDEFINED, VK_FORMAT_R16_UNORM, VK_FORMAT_D16_UNORM, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // D16 @@ -284,6 +288,7 @@ VK_IMPORT_DEVICE { VK_FORMAT_UNDEFINED, VK_FORMAT_R32_SFLOAT, VK_FORMAT_D32_SFLOAT, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // D16F { VK_FORMAT_UNDEFINED, VK_FORMAT_R32_SFLOAT, VK_FORMAT_D32_SFLOAT, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // D24F { VK_FORMAT_UNDEFINED, VK_FORMAT_R32_SFLOAT, VK_FORMAT_D32_SFLOAT, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // D32F + { VK_FORMAT_UNDEFINED, VK_FORMAT_R32_SFLOAT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // D32FS8 { VK_FORMAT_UNDEFINED, VK_FORMAT_R8_UINT, VK_FORMAT_S8_UINT, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // D0S8 #undef $_ #undef $0 diff --git a/src/renderer_webgpu.cpp b/src/renderer_webgpu.cpp index 896944b14..6878a7ce7 100644 --- a/src/renderer_webgpu.cpp +++ b/src/renderer_webgpu.cpp @@ -244,106 +244,111 @@ namespace bgfx { namespace wgpu #define $G WGPUComponentSwizzle_G #define $B WGPUComponentSwizzle_B #define $A WGPUComponentSwizzle_A - { WGPUTextureFormat_BC1RGBAUnorm, WGPUTextureFormat_BC1RGBAUnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC1 - { WGPUTextureFormat_BC2RGBAUnorm, WGPUTextureFormat_BC2RGBAUnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC2 - { WGPUTextureFormat_BC3RGBAUnorm, WGPUTextureFormat_BC3RGBAUnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC3 - { WGPUTextureFormat_BC4RUnorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC4 - { WGPUTextureFormat_BC5RGUnorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC5 - { WGPUTextureFormat_BC6HRGBFloat, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC6H - { WGPUTextureFormat_BC7RGBAUnorm, WGPUTextureFormat_BC7RGBAUnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC7 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ETC1 - { WGPUTextureFormat_ETC2RGB8Unorm, WGPUTextureFormat_ETC2RGB8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ETC2 - { WGPUTextureFormat_ETC2RGBA8Unorm, WGPUTextureFormat_ETC2RGBA8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ETC2A - { WGPUTextureFormat_ETC2RGB8A1Unorm, WGPUTextureFormat_ETC2RGB8A1UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ETC2A1 - { WGPUTextureFormat_EACR11Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // EACR11 - { WGPUTextureFormat_EACR11Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // EACR11S - { WGPUTextureFormat_EACRG11Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // EACRG11 - { WGPUTextureFormat_EACRG11Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // EACRG11S - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC12 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC14 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC12A - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC14A - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC22 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC24 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ATC - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ATCE - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ATCI - { WGPUTextureFormat_ASTC4x4Unorm, WGPUTextureFormat_ASTC4x4UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC4x4 - { WGPUTextureFormat_ASTC5x4Unorm, WGPUTextureFormat_ASTC5x4UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC5x4 - { WGPUTextureFormat_ASTC5x5Unorm, WGPUTextureFormat_ASTC5x5UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC5x5 - { WGPUTextureFormat_ASTC6x5Unorm, WGPUTextureFormat_ASTC6x5UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC6x5 - { WGPUTextureFormat_ASTC6x6Unorm, WGPUTextureFormat_ASTC6x6UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC6x6 - { WGPUTextureFormat_ASTC8x5Unorm, WGPUTextureFormat_ASTC8x5UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC8x5 - { WGPUTextureFormat_ASTC8x6Unorm, WGPUTextureFormat_ASTC8x6UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC8x6 - { WGPUTextureFormat_ASTC8x8Unorm, WGPUTextureFormat_ASTC8x8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC8x8 - { WGPUTextureFormat_ASTC10x5Unorm, WGPUTextureFormat_ASTC10x5UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC10x5 - { WGPUTextureFormat_ASTC10x6Unorm, WGPUTextureFormat_ASTC10x6UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC10x6 - { WGPUTextureFormat_ASTC10x8Unorm, WGPUTextureFormat_ASTC10x8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC10x8 - { WGPUTextureFormat_ASTC10x10Unorm, WGPUTextureFormat_ASTC10x10UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC10x10 - { WGPUTextureFormat_ASTC12x10Unorm, WGPUTextureFormat_ASTC12x10UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC12x10 - { WGPUTextureFormat_ASTC12x12Unorm, WGPUTextureFormat_ASTC12x12UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC12x12 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Undefined, false, { $_, $_, $_, $_ } }, // Unknown - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R1 - { WGPUTextureFormat_R8Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $0, $0, $0, $R } }, // A8 - { WGPUTextureFormat_R8Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R8 - { WGPUTextureFormat_R8Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R8I - { WGPUTextureFormat_R8Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R8U - { WGPUTextureFormat_R8Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R8S - { WGPUTextureFormat_R16Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16 - { WGPUTextureFormat_R16Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16I - { WGPUTextureFormat_R16Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16U - { WGPUTextureFormat_R16Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16F - { WGPUTextureFormat_R16Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16S - { WGPUTextureFormat_R32Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R32I - { WGPUTextureFormat_R32Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R32U - { WGPUTextureFormat_R32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // R32F - { WGPUTextureFormat_RG8Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG8 - { WGPUTextureFormat_RG8Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG8I - { WGPUTextureFormat_RG8Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG8U - { WGPUTextureFormat_RG8Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG8S - { WGPUTextureFormat_RG16Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16 - { WGPUTextureFormat_RG16Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16I - { WGPUTextureFormat_RG16Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16U - { WGPUTextureFormat_RG16Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16F - { WGPUTextureFormat_RG16Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16S - { WGPUTextureFormat_RG32Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG32I - { WGPUTextureFormat_RG32Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG32U - { WGPUTextureFormat_RG32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // RG32F - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB8 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB8I - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB8U - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB8S - { WGPUTextureFormat_RGB9E5Ufloat, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB9E5F - { WGPUTextureFormat_BGRA8Unorm, WGPUTextureFormat_BGRA8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BGRA8 - { WGPUTextureFormat_RGBA8Unorm, WGPUTextureFormat_RGBA8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA8 - { WGPUTextureFormat_RGBA8Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA8I - { WGPUTextureFormat_RGBA8Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA8U - { WGPUTextureFormat_RGBA8Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA8S - { WGPUTextureFormat_RGBA16Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16 - { WGPUTextureFormat_RGBA16Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16I - { WGPUTextureFormat_RGBA16Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16U - { WGPUTextureFormat_RGBA16Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16F - { WGPUTextureFormat_RGBA16Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16S - { WGPUTextureFormat_RGBA32Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA32I - { WGPUTextureFormat_RGBA32Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA32U - { WGPUTextureFormat_RGBA32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // RGBA32F - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // B5G6R5 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R5G6B5 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BGRA4 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA4 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BGR5A1 - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB5A1 - { WGPUTextureFormat_RGB10A2Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB10A2 - { WGPUTextureFormat_RG11B10Ufloat, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG11B10F - { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Undefined, false, { $_, $_, $_, $_ } }, // UnknownDepth - { WGPUTextureFormat_Depth16Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D16 - { WGPUTextureFormat_Depth24Plus, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D24 - { WGPUTextureFormat_Depth24PlusStencil8, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D24S8 - { WGPUTextureFormat_Depth32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D32 - { WGPUTextureFormat_Depth32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D16F - { WGPUTextureFormat_Depth24Plus, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D24F - { WGPUTextureFormat_Depth32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D32F - { WGPUTextureFormat_Stencil8, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D0S8 + { WGPUTextureFormat_BC1RGBAUnorm, WGPUTextureFormat_BC1RGBAUnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC1 + { WGPUTextureFormat_BC2RGBAUnorm, WGPUTextureFormat_BC2RGBAUnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC2 + { WGPUTextureFormat_BC3RGBAUnorm, WGPUTextureFormat_BC3RGBAUnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC3 + { WGPUTextureFormat_BC4RUnorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC4 + { WGPUTextureFormat_BC4RSnorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC4S + { WGPUTextureFormat_BC5RGUnorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC5 + { WGPUTextureFormat_BC5RGSnorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC5S + { WGPUTextureFormat_BC6HRGBFloat, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC6H + { WGPUTextureFormat_BC6HRGBUfloat, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC6HU + { WGPUTextureFormat_BC7RGBAUnorm, WGPUTextureFormat_BC7RGBAUnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BC7 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ETC1 + { WGPUTextureFormat_ETC2RGB8Unorm, WGPUTextureFormat_ETC2RGB8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ETC2 + { WGPUTextureFormat_ETC2RGBA8Unorm, WGPUTextureFormat_ETC2RGBA8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ETC2A + { WGPUTextureFormat_ETC2RGB8A1Unorm, WGPUTextureFormat_ETC2RGB8A1UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ETC2A1 + { WGPUTextureFormat_EACR11Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // EACR11 + { WGPUTextureFormat_EACR11Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // EACR11S + { WGPUTextureFormat_EACRG11Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // EACRG11 + { WGPUTextureFormat_EACRG11Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // EACRG11S + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC12 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC14 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC12A + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC14A + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC22 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // PTC24 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ATC + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ATCE + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ATCI + { WGPUTextureFormat_ASTC4x4Unorm, WGPUTextureFormat_ASTC4x4UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC4x4 + { WGPUTextureFormat_ASTC5x4Unorm, WGPUTextureFormat_ASTC5x4UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC5x4 + { WGPUTextureFormat_ASTC5x5Unorm, WGPUTextureFormat_ASTC5x5UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC5x5 + { WGPUTextureFormat_ASTC6x5Unorm, WGPUTextureFormat_ASTC6x5UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC6x5 + { WGPUTextureFormat_ASTC6x6Unorm, WGPUTextureFormat_ASTC6x6UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC6x6 + { WGPUTextureFormat_ASTC8x5Unorm, WGPUTextureFormat_ASTC8x5UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC8x5 + { WGPUTextureFormat_ASTC8x6Unorm, WGPUTextureFormat_ASTC8x6UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC8x6 + { WGPUTextureFormat_ASTC8x8Unorm, WGPUTextureFormat_ASTC8x8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC8x8 + { WGPUTextureFormat_ASTC10x5Unorm, WGPUTextureFormat_ASTC10x5UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC10x5 + { WGPUTextureFormat_ASTC10x6Unorm, WGPUTextureFormat_ASTC10x6UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC10x6 + { WGPUTextureFormat_ASTC10x8Unorm, WGPUTextureFormat_ASTC10x8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC10x8 + { WGPUTextureFormat_ASTC10x10Unorm, WGPUTextureFormat_ASTC10x10UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC10x10 + { WGPUTextureFormat_ASTC12x10Unorm, WGPUTextureFormat_ASTC12x10UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC12x10 + { WGPUTextureFormat_ASTC12x12Unorm, WGPUTextureFormat_ASTC12x12UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // ASTC12x12 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Undefined, false, { $_, $_, $_, $_ } }, // Unknown + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R1 + { WGPUTextureFormat_R8Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $0, $0, $0, $R } }, // A8 + { WGPUTextureFormat_R8Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R8 + { WGPUTextureFormat_R8Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R8I + { WGPUTextureFormat_R8Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R8U + { WGPUTextureFormat_R8Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R8S + { WGPUTextureFormat_R16Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16 + { WGPUTextureFormat_R16Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16I + { WGPUTextureFormat_R16Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16U + { WGPUTextureFormat_R16Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16F + { WGPUTextureFormat_R16Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R16S + { WGPUTextureFormat_R32Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R32I + { WGPUTextureFormat_R32Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R32U + { WGPUTextureFormat_R32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // R32F + { WGPUTextureFormat_RG8Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG8 + { WGPUTextureFormat_RG8Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG8I + { WGPUTextureFormat_RG8Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG8U + { WGPUTextureFormat_RG8Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG8S + { WGPUTextureFormat_RG16Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16 + { WGPUTextureFormat_RG16Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16I + { WGPUTextureFormat_RG16Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16U + { WGPUTextureFormat_RG16Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16F + { WGPUTextureFormat_RG16Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG16S + { WGPUTextureFormat_RG32Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG32I + { WGPUTextureFormat_RG32Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG32U + { WGPUTextureFormat_RG32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // RG32F + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB8 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB8I + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB8U + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB8S + { WGPUTextureFormat_RGB9E5Ufloat, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB9E5F + { WGPUTextureFormat_BGRA8Unorm, WGPUTextureFormat_BGRA8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BGRA8 + { WGPUTextureFormat_RGBA8Unorm, WGPUTextureFormat_RGBA8UnormSrgb, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA8 + { WGPUTextureFormat_RGBA8Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA8I + { WGPUTextureFormat_RGBA8Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA8U + { WGPUTextureFormat_RGBA8Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA8S + { WGPUTextureFormat_RGBA16Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16 + { WGPUTextureFormat_RGBA16Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16I + { WGPUTextureFormat_RGBA16Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16U + { WGPUTextureFormat_RGBA16Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16F + { WGPUTextureFormat_RGBA16Snorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA16S + { WGPUTextureFormat_RGBA32Sint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA32I + { WGPUTextureFormat_RGBA32Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA32U + { WGPUTextureFormat_RGBA32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // RGBA32F + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // B5G6R5 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // R5G6B5 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BGRA4 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGBA4 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // BGR5A1 + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB5A1 + { WGPUTextureFormat_RGB10A2Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RGB10A2 + { WGPUTextureFormat_RGB10A2Uint, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Uint, false, { $_, $_, $_, $_ } }, // RGB10A2U + { WGPUTextureFormat_RG11B10Ufloat, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Float, true, { $_, $_, $_, $_ } }, // RG11B10F + { WGPUTextureFormat_Undefined, WGPUTextureFormat_Undefined, WGPUTextureSampleType_Undefined, false, { $_, $_, $_, $_ } }, // UnknownDepth + { WGPUTextureFormat_Depth16Unorm, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D16 + { WGPUTextureFormat_Depth24Plus, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D24 + { WGPUTextureFormat_Depth24PlusStencil8, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D24S8 + { WGPUTextureFormat_Depth32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D32 + { WGPUTextureFormat_Depth32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D16F + { WGPUTextureFormat_Depth24Plus, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D24F + { WGPUTextureFormat_Depth32Float, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D32F + { WGPUTextureFormat_Depth32FloatStencil8, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D32FS8 + { WGPUTextureFormat_Stencil8, WGPUTextureFormat_Undefined, WGPUTextureSampleType_UnfilterableFloat, false, { $_, $_, $_, $_ } }, // D0S8 #undef $_ #undef $0 #undef $1 @@ -540,6 +545,7 @@ namespace bgfx { namespace wgpu m_astc = isFeatureSupported(WGPUFeatureName_TextureCompressionASTC); m_bcSliced3D = isFeatureSupported(WGPUFeatureName_TextureCompressionBCSliced3D); m_astcSliced3D = isFeatureSupported(WGPUFeatureName_TextureCompressionASTCSliced3D); + m_d32fs8 = isFeatureSupported(WGPUFeatureName_Depth32FloatStencil8); } uint32_t getCaps(TextureFormat::Enum _fmt) const @@ -563,8 +569,11 @@ namespace bgfx { namespace wgpu case TextureFormat::BC2: case TextureFormat::BC3: case TextureFormat::BC4: + case TextureFormat::BC4S: case TextureFormat::BC5: + case TextureFormat::BC5S: case TextureFormat::BC6H: + case TextureFormat::BC6HU: case TextureFormat::BC7: framebuffer = false; multisample = false; storage = false; supported = m_bc; supports3D = m_bcSliced3D; break; @@ -634,6 +643,7 @@ namespace bgfx { namespace wgpu case TextureFormat::RGBA32U: framebuffer = true; multisample = m_core; storage = true; supported = true; break; case TextureFormat::RGBA32F: framebuffer = true; multisample = m_core; storage = true; supported = true; break; case TextureFormat::RGB10A2: framebuffer = true; multisample = true; storage = m_tier1; supported = true; break; + case TextureFormat::RGB10A2U: framebuffer = true; multisample = m_core; storage = m_tier1; supported = true; break; case TextureFormat::RG11B10F: framebuffer = m_rg11b10Rend; multisample = m_rg11b10Rend; storage = m_tier1; supported = true; break; case TextureFormat::RGB9E5F: framebuffer = false; multisample = false; storage = false; supported = true; break; case TextureFormat::D16: @@ -644,6 +654,7 @@ namespace bgfx { namespace wgpu case TextureFormat::D24F: case TextureFormat::D32F: case TextureFormat::D0S8: framebuffer = true; multisample = true; storage = false; supported = true; break; + case TextureFormat::D32FS8: framebuffer = true; multisample = true; storage = false; supported = m_d32fs8; break; default: break; @@ -713,6 +724,7 @@ namespace bgfx { namespace wgpu bool m_astc; bool m_bcSliced3D; bool m_astcSliced3D; + bool m_d32fs8; }; # if USE_WEBGPU_DYNAMIC_LIB