From 9e8ecf4af4694fb84b2e3c95e16128f8998ff715 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Tue, 11 Nov 2025 08:39:24 -0800 Subject: [PATCH] Added EAC texture formats. (#3487) --- bindings/bf/bgfx.bf | 22 ++++- bindings/c3/bgfx.c3 | 14 +++- bindings/cs/bgfx.cs | 22 ++++- bindings/d/impl.d | 2 +- bindings/d/package.d | 6 +- bindings/zig/bgfx.zig | 14 +++- include/bgfx/bgfx.h | 4 + include/bgfx/c99/bgfx.h | 174 ++++++++++++++++++++-------------------- include/bgfx/defines.h | 2 +- scripts/bgfx.idl | 6 +- src/renderer_d3d11.cpp | 4 + src/renderer_d3d12.cpp | 4 + src/renderer_gl.cpp | 12 +++ src/renderer_gl.h | 16 ++++ src/renderer_mtl.mm | 4 + src/renderer_vk.cpp | 4 + 16 files changed, 217 insertions(+), 93 deletions(-) diff --git a/bindings/bf/bgfx.bf b/bindings/bf/bgfx.bf index 005c00f90..983a40125 100644 --- a/bindings/bf/bgfx.bf +++ b/bindings/bf/bgfx.bf @@ -1628,6 +1628,26 @@ public static class bgfx /// ETC2A1, + /// + /// EAC R11 UNORM + /// + EACR11, + + /// + /// EAC R11 SNORM + /// + EACR11S, + + /// + /// EAC RG11 UNORM + /// + EACRG11, + + /// + /// EAC RG11 SNORM + /// + EACRG11S, + /// /// PVRTC1 RGB 2BPP /// @@ -2137,7 +2157,7 @@ public static class bgfx public uint8 numGPUs; public GPU[4] gpu; public Limits limits; - public uint16[96] formats; + public uint16[100] formats; } [CRepr] diff --git a/bindings/c3/bgfx.c3 b/bindings/c3/bgfx.c3 index 9ea22ca84..2d1ccac08 100644 --- a/bindings/c3/bgfx.c3 +++ b/bindings/c3/bgfx.c3 @@ -1027,6 +1027,18 @@ enum TextureFormat : uint // ETC2 RGB8A1 ETC2A1, + // EAC R11 UNORM + EACR11, + + // EAC R11 SNORM + EACR11S, + + // EAC RG11 UNORM + EACRG11, + + // EAC RG11 SNORM + EACRG11S, + // PVRTC1 RGB 2BPP PTC12, @@ -1461,7 +1473,7 @@ struct Caps // - `BGFX_CAPS_FORMAT_TEXTURE_MSAA` - Texture can be sampled as MSAA. // - `BGFX_CAPS_FORMAT_TEXTURE_MIP_AUTOGEN` - Texture format supports auto-generated // mips. - ushort[96] formats; + ushort[100] formats; } // Internal data. diff --git a/bindings/cs/bgfx.cs b/bindings/cs/bgfx.cs index ee0f5286a..cfd86ef68 100644 --- a/bindings/cs/bgfx.cs +++ b/bindings/cs/bgfx.cs @@ -1621,6 +1621,26 @@ public static partial class bgfx /// ETC2A1, + /// + /// EAC R11 UNORM + /// + EACR11, + + /// + /// EAC R11 SNORM + /// + EACR11S, + + /// + /// EAC RG11 UNORM + /// + EACRG11, + + /// + /// EAC RG11 SNORM + /// + EACRG11S, + /// /// PVRTC1 RGB 2BPP /// @@ -2116,7 +2136,7 @@ public static partial class bgfx public byte numGPUs; public fixed uint gpu[4]; public Limits limits; - public fixed ushort formats[96]; + public fixed ushort formats[100]; } public unsafe struct InternalData diff --git a/bindings/d/impl.d b/bindings/d/impl.d index 08c09a7d3..e373d6790 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,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,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 } } extern(C++, "bgfx") package final abstract class UniformType{ diff --git a/bindings/d/package.d b/bindings/d/package.d index 34ad90ac0..41b13aa85 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 = 134; +enum uint apiVersion = 135; alias ViewID = ushort; @@ -673,6 +673,10 @@ enum TextureFormat: bgfx.impl.TextureFormat.Enum{ etc2 = bgfx.impl.TextureFormat.Enum.etc2, etc2a = bgfx.impl.TextureFormat.Enum.etc2a, etc2a1 = bgfx.impl.TextureFormat.Enum.etc2a1, + eacr11 = bgfx.impl.TextureFormat.Enum.eacr11, + eacr11s = bgfx.impl.TextureFormat.Enum.eacr11s, + eacrg11 = bgfx.impl.TextureFormat.Enum.eacrg11, + eacrg11s = bgfx.impl.TextureFormat.Enum.eacrg11s, ptc12 = bgfx.impl.TextureFormat.Enum.ptc12, ptc14 = bgfx.impl.TextureFormat.Enum.ptc14, ptc12a = bgfx.impl.TextureFormat.Enum.ptc12a, diff --git a/bindings/zig/bgfx.zig b/bindings/zig/bgfx.zig index e1157755a..95933f7d6 100644 --- a/bindings/zig/bgfx.zig +++ b/bindings/zig/bgfx.zig @@ -994,6 +994,18 @@ pub const TextureFormat = enum(c_int) { /// ETC2 RGB8A1 ETC2A1, + /// EAC R11 UNORM + EACR11, + + /// EAC R11 SNORM + EACR11S, + + /// EAC RG11 UNORM + EACRG11, + + /// EAC RG11 SNORM + EACRG11S, + /// PVRTC1 RGB 2BPP PTC12, @@ -1351,7 +1363,7 @@ pub const Caps = extern struct { numGPUs: u8, gpu: [4]GPU, limits: Limits, - formats: [96]u16, + formats: [100]u16, }; pub const InternalData = extern struct { diff --git a/include/bgfx/bgfx.h b/include/bgfx/bgfx.h index e570926bd..7d833e72b 100644 --- a/include/bgfx/bgfx.h +++ b/include/bgfx/bgfx.h @@ -170,6 +170,10 @@ namespace bgfx ETC2, //!< ETC2 RGB8 ETC2A, //!< ETC2 RGBA8 ETC2A1, //!< ETC2 RGB8A1 + EACR11, //!< EAC R11 UNORM + EACR11S, //!< EAC R11 SNORM + EACRG11, //!< EAC RG11 UNORM + EACRG11S, //!< EAC RG11 SNORM PTC12, //!< PVRTC1 RGB 2BPP PTC14, //!< PVRTC1 RGB 4BPP PTC12A, //!< PVRTC1 RGBA 2BPP diff --git a/include/bgfx/c99/bgfx.h b/include/bgfx/c99/bgfx.h index 71a5b2da9..585407afa 100644 --- a/include/bgfx/c99/bgfx.h +++ b/include/bgfx/c99/bgfx.h @@ -182,91 +182,95 @@ typedef enum bgfx_texture_format BGFX_TEXTURE_FORMAT_ETC2, /** ( 8) ETC2 RGB8 */ BGFX_TEXTURE_FORMAT_ETC2A, /** ( 9) ETC2 RGBA8 */ BGFX_TEXTURE_FORMAT_ETC2A1, /** (10) ETC2 RGB8A1 */ - BGFX_TEXTURE_FORMAT_PTC12, /** (11) PVRTC1 RGB 2BPP */ - BGFX_TEXTURE_FORMAT_PTC14, /** (12) PVRTC1 RGB 4BPP */ - BGFX_TEXTURE_FORMAT_PTC12A, /** (13) PVRTC1 RGBA 2BPP */ - BGFX_TEXTURE_FORMAT_PTC14A, /** (14) PVRTC1 RGBA 4BPP */ - BGFX_TEXTURE_FORMAT_PTC22, /** (15) PVRTC2 RGBA 2BPP */ - BGFX_TEXTURE_FORMAT_PTC24, /** (16) PVRTC2 RGBA 4BPP */ - BGFX_TEXTURE_FORMAT_ATC, /** (17) ATC RGB 4BPP */ - BGFX_TEXTURE_FORMAT_ATCE, /** (18) ATCE RGBA 8 BPP explicit alpha */ - BGFX_TEXTURE_FORMAT_ATCI, /** (19) ATCI RGBA 8 BPP interpolated alpha */ - BGFX_TEXTURE_FORMAT_ASTC4X4, /** (20) ASTC 4x4 8.0 BPP */ - BGFX_TEXTURE_FORMAT_ASTC5X4, /** (21) ASTC 5x4 6.40 BPP */ - BGFX_TEXTURE_FORMAT_ASTC5X5, /** (22) ASTC 5x5 5.12 BPP */ - BGFX_TEXTURE_FORMAT_ASTC6X5, /** (23) ASTC 6x5 4.27 BPP */ - BGFX_TEXTURE_FORMAT_ASTC6X6, /** (24) ASTC 6x6 3.56 BPP */ - BGFX_TEXTURE_FORMAT_ASTC8X5, /** (25) ASTC 8x5 3.20 BPP */ - BGFX_TEXTURE_FORMAT_ASTC8X6, /** (26) ASTC 8x6 2.67 BPP */ - BGFX_TEXTURE_FORMAT_ASTC8X8, /** (27) ASTC 8x8 2.00 BPP */ - BGFX_TEXTURE_FORMAT_ASTC10X5, /** (28) ASTC 10x5 2.56 BPP */ - BGFX_TEXTURE_FORMAT_ASTC10X6, /** (29) ASTC 10x6 2.13 BPP */ - BGFX_TEXTURE_FORMAT_ASTC10X8, /** (30) ASTC 10x8 1.60 BPP */ - BGFX_TEXTURE_FORMAT_ASTC10X10, /** (31) ASTC 10x10 1.28 BPP */ - BGFX_TEXTURE_FORMAT_ASTC12X10, /** (32) ASTC 12x10 1.07 BPP */ - BGFX_TEXTURE_FORMAT_ASTC12X12, /** (33) ASTC 12x12 0.89 BPP */ - BGFX_TEXTURE_FORMAT_UNKNOWN, /** (34) Compressed formats above. */ - BGFX_TEXTURE_FORMAT_R1, /** (35) */ - BGFX_TEXTURE_FORMAT_A8, /** (36) */ - BGFX_TEXTURE_FORMAT_R8, /** (37) */ - BGFX_TEXTURE_FORMAT_R8I, /** (38) */ - BGFX_TEXTURE_FORMAT_R8U, /** (39) */ - BGFX_TEXTURE_FORMAT_R8S, /** (40) */ - BGFX_TEXTURE_FORMAT_R16, /** (41) */ - BGFX_TEXTURE_FORMAT_R16I, /** (42) */ - BGFX_TEXTURE_FORMAT_R16U, /** (43) */ - BGFX_TEXTURE_FORMAT_R16F, /** (44) */ - BGFX_TEXTURE_FORMAT_R16S, /** (45) */ - BGFX_TEXTURE_FORMAT_R32I, /** (46) */ - BGFX_TEXTURE_FORMAT_R32U, /** (47) */ - BGFX_TEXTURE_FORMAT_R32F, /** (48) */ - BGFX_TEXTURE_FORMAT_RG8, /** (49) */ - BGFX_TEXTURE_FORMAT_RG8I, /** (50) */ - BGFX_TEXTURE_FORMAT_RG8U, /** (51) */ - BGFX_TEXTURE_FORMAT_RG8S, /** (52) */ - BGFX_TEXTURE_FORMAT_RG16, /** (53) */ - BGFX_TEXTURE_FORMAT_RG16I, /** (54) */ - BGFX_TEXTURE_FORMAT_RG16U, /** (55) */ - BGFX_TEXTURE_FORMAT_RG16F, /** (56) */ - BGFX_TEXTURE_FORMAT_RG16S, /** (57) */ - BGFX_TEXTURE_FORMAT_RG32I, /** (58) */ - BGFX_TEXTURE_FORMAT_RG32U, /** (59) */ - BGFX_TEXTURE_FORMAT_RG32F, /** (60) */ - BGFX_TEXTURE_FORMAT_RGB8, /** (61) */ - BGFX_TEXTURE_FORMAT_RGB8I, /** (62) */ - BGFX_TEXTURE_FORMAT_RGB8U, /** (63) */ - BGFX_TEXTURE_FORMAT_RGB8S, /** (64) */ - BGFX_TEXTURE_FORMAT_RGB9E5F, /** (65) */ - BGFX_TEXTURE_FORMAT_BGRA8, /** (66) */ - BGFX_TEXTURE_FORMAT_RGBA8, /** (67) */ - BGFX_TEXTURE_FORMAT_RGBA8I, /** (68) */ - BGFX_TEXTURE_FORMAT_RGBA8U, /** (69) */ - BGFX_TEXTURE_FORMAT_RGBA8S, /** (70) */ - BGFX_TEXTURE_FORMAT_RGBA16, /** (71) */ - BGFX_TEXTURE_FORMAT_RGBA16I, /** (72) */ - BGFX_TEXTURE_FORMAT_RGBA16U, /** (73) */ - BGFX_TEXTURE_FORMAT_RGBA16F, /** (74) */ - BGFX_TEXTURE_FORMAT_RGBA16S, /** (75) */ - BGFX_TEXTURE_FORMAT_RGBA32I, /** (76) */ - BGFX_TEXTURE_FORMAT_RGBA32U, /** (77) */ - BGFX_TEXTURE_FORMAT_RGBA32F, /** (78) */ - BGFX_TEXTURE_FORMAT_B5G6R5, /** (79) */ - BGFX_TEXTURE_FORMAT_R5G6B5, /** (80) */ - BGFX_TEXTURE_FORMAT_BGRA4, /** (81) */ - BGFX_TEXTURE_FORMAT_RGBA4, /** (82) */ - BGFX_TEXTURE_FORMAT_BGR5A1, /** (83) */ - BGFX_TEXTURE_FORMAT_RGB5A1, /** (84) */ - BGFX_TEXTURE_FORMAT_RGB10A2, /** (85) */ - BGFX_TEXTURE_FORMAT_RG11B10F, /** (86) */ - BGFX_TEXTURE_FORMAT_UNKNOWNDEPTH, /** (87) Depth formats below. */ - BGFX_TEXTURE_FORMAT_D16, /** (88) */ - BGFX_TEXTURE_FORMAT_D24, /** (89) */ - BGFX_TEXTURE_FORMAT_D24S8, /** (90) */ - BGFX_TEXTURE_FORMAT_D32, /** (91) */ - BGFX_TEXTURE_FORMAT_D16F, /** (92) */ - BGFX_TEXTURE_FORMAT_D24F, /** (93) */ - BGFX_TEXTURE_FORMAT_D32F, /** (94) */ - BGFX_TEXTURE_FORMAT_D0S8, /** (95) */ + BGFX_TEXTURE_FORMAT_EACR11, /** (11) EAC R11 UNORM */ + BGFX_TEXTURE_FORMAT_EACR11S, /** (12) EAC R11 SNORM */ + BGFX_TEXTURE_FORMAT_EACRG11, /** (13) EAC RG11 UNORM */ + BGFX_TEXTURE_FORMAT_EACRG11S, /** (14) EAC RG11 SNORM */ + BGFX_TEXTURE_FORMAT_PTC12, /** (15) PVRTC1 RGB 2BPP */ + BGFX_TEXTURE_FORMAT_PTC14, /** (16) PVRTC1 RGB 4BPP */ + BGFX_TEXTURE_FORMAT_PTC12A, /** (17) PVRTC1 RGBA 2BPP */ + BGFX_TEXTURE_FORMAT_PTC14A, /** (18) PVRTC1 RGBA 4BPP */ + BGFX_TEXTURE_FORMAT_PTC22, /** (19) PVRTC2 RGBA 2BPP */ + BGFX_TEXTURE_FORMAT_PTC24, /** (20) PVRTC2 RGBA 4BPP */ + BGFX_TEXTURE_FORMAT_ATC, /** (21) ATC RGB 4BPP */ + BGFX_TEXTURE_FORMAT_ATCE, /** (22) ATCE RGBA 8 BPP explicit alpha */ + BGFX_TEXTURE_FORMAT_ATCI, /** (23) ATCI RGBA 8 BPP interpolated alpha */ + BGFX_TEXTURE_FORMAT_ASTC4X4, /** (24) ASTC 4x4 8.0 BPP */ + BGFX_TEXTURE_FORMAT_ASTC5X4, /** (25) ASTC 5x4 6.40 BPP */ + BGFX_TEXTURE_FORMAT_ASTC5X5, /** (26) ASTC 5x5 5.12 BPP */ + BGFX_TEXTURE_FORMAT_ASTC6X5, /** (27) ASTC 6x5 4.27 BPP */ + BGFX_TEXTURE_FORMAT_ASTC6X6, /** (28) ASTC 6x6 3.56 BPP */ + BGFX_TEXTURE_FORMAT_ASTC8X5, /** (29) ASTC 8x5 3.20 BPP */ + BGFX_TEXTURE_FORMAT_ASTC8X6, /** (30) ASTC 8x6 2.67 BPP */ + BGFX_TEXTURE_FORMAT_ASTC8X8, /** (31) ASTC 8x8 2.00 BPP */ + BGFX_TEXTURE_FORMAT_ASTC10X5, /** (32) ASTC 10x5 2.56 BPP */ + BGFX_TEXTURE_FORMAT_ASTC10X6, /** (33) ASTC 10x6 2.13 BPP */ + BGFX_TEXTURE_FORMAT_ASTC10X8, /** (34) ASTC 10x8 1.60 BPP */ + BGFX_TEXTURE_FORMAT_ASTC10X10, /** (35) ASTC 10x10 1.28 BPP */ + BGFX_TEXTURE_FORMAT_ASTC12X10, /** (36) ASTC 12x10 1.07 BPP */ + BGFX_TEXTURE_FORMAT_ASTC12X12, /** (37) ASTC 12x12 0.89 BPP */ + BGFX_TEXTURE_FORMAT_UNKNOWN, /** (38) Compressed formats above. */ + BGFX_TEXTURE_FORMAT_R1, /** (39) */ + BGFX_TEXTURE_FORMAT_A8, /** (40) */ + BGFX_TEXTURE_FORMAT_R8, /** (41) */ + BGFX_TEXTURE_FORMAT_R8I, /** (42) */ + BGFX_TEXTURE_FORMAT_R8U, /** (43) */ + BGFX_TEXTURE_FORMAT_R8S, /** (44) */ + BGFX_TEXTURE_FORMAT_R16, /** (45) */ + BGFX_TEXTURE_FORMAT_R16I, /** (46) */ + BGFX_TEXTURE_FORMAT_R16U, /** (47) */ + BGFX_TEXTURE_FORMAT_R16F, /** (48) */ + BGFX_TEXTURE_FORMAT_R16S, /** (49) */ + BGFX_TEXTURE_FORMAT_R32I, /** (50) */ + BGFX_TEXTURE_FORMAT_R32U, /** (51) */ + BGFX_TEXTURE_FORMAT_R32F, /** (52) */ + BGFX_TEXTURE_FORMAT_RG8, /** (53) */ + BGFX_TEXTURE_FORMAT_RG8I, /** (54) */ + BGFX_TEXTURE_FORMAT_RG8U, /** (55) */ + BGFX_TEXTURE_FORMAT_RG8S, /** (56) */ + BGFX_TEXTURE_FORMAT_RG16, /** (57) */ + BGFX_TEXTURE_FORMAT_RG16I, /** (58) */ + BGFX_TEXTURE_FORMAT_RG16U, /** (59) */ + BGFX_TEXTURE_FORMAT_RG16F, /** (60) */ + BGFX_TEXTURE_FORMAT_RG16S, /** (61) */ + BGFX_TEXTURE_FORMAT_RG32I, /** (62) */ + BGFX_TEXTURE_FORMAT_RG32U, /** (63) */ + BGFX_TEXTURE_FORMAT_RG32F, /** (64) */ + BGFX_TEXTURE_FORMAT_RGB8, /** (65) */ + BGFX_TEXTURE_FORMAT_RGB8I, /** (66) */ + BGFX_TEXTURE_FORMAT_RGB8U, /** (67) */ + BGFX_TEXTURE_FORMAT_RGB8S, /** (68) */ + BGFX_TEXTURE_FORMAT_RGB9E5F, /** (69) */ + BGFX_TEXTURE_FORMAT_BGRA8, /** (70) */ + BGFX_TEXTURE_FORMAT_RGBA8, /** (71) */ + BGFX_TEXTURE_FORMAT_RGBA8I, /** (72) */ + BGFX_TEXTURE_FORMAT_RGBA8U, /** (73) */ + BGFX_TEXTURE_FORMAT_RGBA8S, /** (74) */ + BGFX_TEXTURE_FORMAT_RGBA16, /** (75) */ + BGFX_TEXTURE_FORMAT_RGBA16I, /** (76) */ + BGFX_TEXTURE_FORMAT_RGBA16U, /** (77) */ + BGFX_TEXTURE_FORMAT_RGBA16F, /** (78) */ + BGFX_TEXTURE_FORMAT_RGBA16S, /** (79) */ + BGFX_TEXTURE_FORMAT_RGBA32I, /** (80) */ + BGFX_TEXTURE_FORMAT_RGBA32U, /** (81) */ + BGFX_TEXTURE_FORMAT_RGBA32F, /** (82) */ + BGFX_TEXTURE_FORMAT_B5G6R5, /** (83) */ + BGFX_TEXTURE_FORMAT_R5G6B5, /** (84) */ + BGFX_TEXTURE_FORMAT_BGRA4, /** (85) */ + BGFX_TEXTURE_FORMAT_RGBA4, /** (86) */ + BGFX_TEXTURE_FORMAT_BGR5A1, /** (87) */ + BGFX_TEXTURE_FORMAT_RGB5A1, /** (88) */ + BGFX_TEXTURE_FORMAT_RGB10A2, /** (89) */ + BGFX_TEXTURE_FORMAT_RG11B10F, /** (90) */ + BGFX_TEXTURE_FORMAT_UNKNOWNDEPTH, /** (91) Depth formats below. */ + BGFX_TEXTURE_FORMAT_D16, /** (92) */ + BGFX_TEXTURE_FORMAT_D24, /** (93) */ + BGFX_TEXTURE_FORMAT_D24S8, /** (94) */ + BGFX_TEXTURE_FORMAT_D32, /** (95) */ + BGFX_TEXTURE_FORMAT_D16F, /** (96) */ + BGFX_TEXTURE_FORMAT_D24F, /** (97) */ + BGFX_TEXTURE_FORMAT_D32F, /** (98) */ + BGFX_TEXTURE_FORMAT_D0S8, /** (99) */ BGFX_TEXTURE_FORMAT_COUNT diff --git a/include/bgfx/defines.h b/include/bgfx/defines.h index b74c6534e..923c27301 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(134) +#define BGFX_API_VERSION UINT32_C(135) /** * 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 e3e4f4a20..c8212c5ed 100644 --- a/scripts/bgfx.idl +++ b/scripts/bgfx.idl @@ -1,7 +1,7 @@ -- vim: syntax=lua -- bgfx interface -version(134) +version(135) typedef "bool" typedef "char" @@ -535,6 +535,10 @@ enum.TextureFormat { comment = "Texture formats:" } .ETC2 --- ETC2 RGB8 .ETC2A --- ETC2 RGBA8 .ETC2A1 --- ETC2 RGB8A1 + .EACR11 --- EAC R11 UNORM + .EACR11S --- EAC R11 SNORM + .EACRG11 --- EAC RG11 UNORM + .EACRG11S --- EAC RG11 SNORM .PTC12 --- PVRTC1 RGB 2BPP .PTC14 --- PVRTC1 RGB 4BPP .PTC12A --- PVRTC1 RGBA 2BPP diff --git a/src/renderer_d3d11.cpp b/src/renderer_d3d11.cpp index 661161a4d..a3b34a5ac 100644 --- a/src/renderer_d3d11.cpp +++ b/src/renderer_d3d11.cpp @@ -214,6 +214,10 @@ namespace bgfx { namespace d3d11 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ETC2 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ETC2A { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // ETC2A1 + { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // EACR11 UNORM + { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // EACR11 SNORM + { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // EACRG11 UNORM + { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // EACRG11 SNORM { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // PTC12 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // PTC14 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN }, // PTC12A diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index a4f0166be..d9fc05758 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -216,6 +216,10 @@ namespace bgfx { namespace d3d12 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ETC2 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ETC2A { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // ETC2A1 + { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // EACR11 UNORM + { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // EACR11 SNORM + { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // EACRG11 UNORM + { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // EACRG11 SNORM { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // PTC12 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // PTC14 { DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, DXGI_FORMAT_UNKNOWN, D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING }, // PTC12A diff --git a/src/renderer_gl.cpp b/src/renderer_gl.cpp index d52269f51..cca290ca1 100644 --- a/src/renderer_gl.cpp +++ b/src/renderer_gl.cpp @@ -227,6 +227,10 @@ namespace bgfx { namespace gl { GL_COMPRESSED_RGB8_ETC2, GL_ZERO, GL_COMPRESSED_RGB8_ETC2, GL_COMPRESSED_RGB8_ETC2, GL_ZERO, false, { $_, $_, $_, $_ } }, // ETC2 { GL_COMPRESSED_RGBA8_ETC2_EAC, GL_COMPRESSED_SRGB8_ETC2, GL_COMPRESSED_RGBA8_ETC2_EAC, GL_COMPRESSED_RGBA8_ETC2_EAC, GL_ZERO, false, { $_, $_, $_, $_ } }, // ETC2A { GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2, GL_ZERO, false, { $_, $_, $_, $_ } }, // ETC2A1 + { GL_COMPRESSED_R11_EAC, GL_ZERO, GL_COMPRESSED_R11_EAC, GL_COMPRESSED_R11_EAC, GL_ZERO, false, { $_, $_, $_, $_ } }, // EACR11 UNORM + { GL_COMPRESSED_SIGNED_R11_EAC, GL_ZERO, GL_COMPRESSED_SIGNED_R11_EAC, GL_COMPRESSED_SIGNED_R11_EAC, GL_ZERO, false, { $_, $_, $_, $_ } }, // EACR11 SNORM + { GL_COMPRESSED_RG11_EAC, GL_ZERO, GL_COMPRESSED_RG11_EAC, GL_COMPRESSED_RG11_EAC, GL_ZERO, false, { $_, $_, $_, $_ } }, // EACRG11 UNORM + { GL_COMPRESSED_SIGNED_RG11_EAC, GL_ZERO, GL_COMPRESSED_SIGNED_RG11_EAC, GL_COMPRESSED_SIGNED_RG11_EAC, GL_ZERO, false, { $_, $_, $_, $_ } }, // EACRG11 SNORM { GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG, GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT, GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG, GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG, GL_ZERO, false, { $_, $_, $_, $_ } }, // PTC12 { GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT, GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG, GL_ZERO, false, { $_, $_, $_, $_ } }, // PTC14 { GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT, GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG, GL_ZERO, false, { $_, $_, $_, $_ } }, // PTC12A @@ -337,6 +341,10 @@ namespace bgfx { namespace gl GL_ZERO, // ETC2 GL_ZERO, // ETC2A GL_ZERO, // ETC2A1 + GL_ZERO, // EACR11 UNORM + GL_ZERO, // EACR11 SNORM + GL_ZERO, // EACRG11 UNORM + GL_ZERO, // EACRG11 SNORM GL_ZERO, // PTC12 GL_ZERO, // PTC14 GL_ZERO, // PTC12A @@ -438,6 +446,10 @@ namespace bgfx { namespace gl GL_ZERO, // ETC2 GL_ZERO, // ETC2A GL_ZERO, // ETC2A1 + GL_ZERO, // EACR11 UNORM + GL_ZERO, // EACR11 SNORM + GL_ZERO, // EACRG11 UNORM + GL_ZERO, // EACRG11 SNORM GL_ZERO, // PTC12 GL_ZERO, // PTC14 GL_ZERO, // PTC12A diff --git a/src/renderer_gl.h b/src/renderer_gl.h index 142bd4570..338418c32 100644 --- a/src/renderer_gl.h +++ b/src/renderer_gl.h @@ -421,6 +421,22 @@ typedef uint64_t GLuint64; # define GL_ETC1_RGB8_OES 0x8D64 #endif // GL_ETC1_RGB8_OES +#ifndef GL_COMPRESSED_R11_EAC +# define GL_COMPRESSED_R11_EAC 0x9270 +#endif // GL_COMPRESSED_R11_EAC + +#ifndef GL_COMPRESSED_SIGNED_R11_EAC +# define GL_COMPRESSED_SIGNED_R11_EAC 0x9271 +#endif // GL_COMPRESSED_SIGNED_R11_EAC + +#ifndef GL_COMPRESSED_RG11_EAC +# define GL_COMPRESSED_RG11_EAC 0x9272 +#endif // GL_COMPRESSED_RG11_EAC + +#ifndef GL_COMPRESSED_SIGNED_RG11_EAC +# define GL_COMPRESSED_SIGNED_RG11_EAC 0x9273 +#endif // GL_COMPRESSED_SIGNED_RG11_EAC + #ifndef GL_COMPRESSED_RGB8_ETC2 # define GL_COMPRESSED_RGB8_ETC2 0x9274 #endif // GL_COMPRESSED_RGB8_ETC2 diff --git a/src/renderer_mtl.mm b/src/renderer_mtl.mm index c7f472b39..4f9c44281 100644 --- a/src/renderer_mtl.mm +++ b/src/renderer_mtl.mm @@ -239,6 +239,10 @@ BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG("-Wunguarded-availability-new"); { kMtlPixelFormatETC2_RGB8, kMtlPixelFormatETC2_RGB8_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ETC2 { kMtlPixelFormatEAC_RGBA8, kMtlPixelFormatEAC_RGBA8_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ETC2A { kMtlPixelFormatETC2_RGB8A1, kMtlPixelFormatETC2_RGB8A1_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // ETC2A1 + { kMtlPixelFormatEAC_R11Unorm, kMtlPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // EACR11 UNORM + { kMtlPixelFormatEAC_R11Snorm, kMtlPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // EACR11 SNORM + { kMtlPixelFormatEAC_RG11Unorm, kMtlPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // EACRG11 UNORM + { kMtlPixelFormatEAC_RG11Snorm, kMtlPixelFormatInvalid, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // EACRG11 SNORM { kMtlPixelFormatPVRTC_RGB_2BPP, kMtlPixelFormatPVRTC_RGB_2BPP_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // PTC12 { kMtlPixelFormatPVRTC_RGB_4BPP, kMtlPixelFormatPVRTC_RGB_4BPP_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // PTC14 { kMtlPixelFormatPVRTC_RGBA_2BPP, kMtlPixelFormatPVRTC_RGBA_2BPP_sRGB, MTLReadWriteTextureTierNone, { $R, $G, $B, $A }, false }, // PTC12A diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index e90745c88..63de6f540 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -196,6 +196,10 @@ VK_IMPORT_DEVICE { VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ETC2 { VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ETC2A { VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, { $_, $_, $_, $_ } }, // ETC2A1 + { VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // EACR11 + { VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // EACR11S + { VK_FORMAT_EAC_R11G11_UNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // EACRG11 + { VK_FORMAT_EAC_R11G11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_SNORM_BLOCK, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // EACRG11S { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // PTC12 { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // PTC14 { VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, VK_FORMAT_UNDEFINED, { $_, $_, $_, $_ } }, // PTC12A