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