diff --git a/Ryujinx.Graphics.GAL/Format.cs b/Ryujinx.Graphics.GAL/Format.cs
index 15cf5f4f0b..1d034921f5 100644
--- a/Ryujinx.Graphics.GAL/Format.cs
+++ b/Ryujinx.Graphics.GAL/Format.cs
@@ -82,7 +82,9 @@ namespace Ryujinx.Graphics.GAL
         Bc7Srgb,
         Bc6HSfloat,
         Bc6HUfloat,
+        Etc2RgbUnorm,
         Etc2RgbaUnorm,
+        Etc2RgbSrgb,
         Etc2RgbaSrgb,
         R8Uscaled,
         R8Sscaled,
diff --git a/Ryujinx.Graphics.Gpu/Image/FormatTable.cs b/Ryujinx.Graphics.Gpu/Image/FormatTable.cs
index a1911d5684..b4b8817921 100644
--- a/Ryujinx.Graphics.Gpu/Image/FormatTable.cs
+++ b/Ryujinx.Graphics.Gpu/Image/FormatTable.cs
@@ -78,7 +78,9 @@ namespace Ryujinx.Graphics.Gpu.Image
             { 0xa4917, new FormatInfo(Format.Bc7Srgb,           4,  4,  16, 4) },
             { 0x7ff90, new FormatInfo(Format.Bc6HSfloat,        4,  4,  16, 4) },
             { 0x7ff91, new FormatInfo(Format.Bc6HUfloat,        4,  4,  16, 4) },
+            { 0x24906, new FormatInfo(Format.Etc2RgbUnorm,      4,  4,  8,  3) },
             { 0x2490b, new FormatInfo(Format.Etc2RgbaUnorm,     4,  4,  16, 4) },
+            { 0xa4906, new FormatInfo(Format.Etc2RgbSrgb,       4,  4,  8,  3) },
             { 0xa490b, new FormatInfo(Format.Etc2RgbaSrgb,      4,  4,  16, 4) },
             { 0x24940, new FormatInfo(Format.Astc4x4Unorm,      4,  4,  16, 4) },
             { 0x24950, new FormatInfo(Format.Astc5x4Unorm,      5,  4,  16, 4) },
diff --git a/Ryujinx.Graphics.OpenGL/FormatTable.cs b/Ryujinx.Graphics.OpenGL/FormatTable.cs
index 52da3efd3c..8c926fc28c 100644
--- a/Ryujinx.Graphics.OpenGL/FormatTable.cs
+++ b/Ryujinx.Graphics.OpenGL/FormatTable.cs
@@ -80,24 +80,26 @@ namespace Ryujinx.Graphics.OpenGL
             Add(Format.R10G10B10A2Uint,     new FormatInfo(4, false, false, All.Rgb10A2ui,         PixelFormat.RgbaInteger,    PixelType.UnsignedInt2101010Reversed));
             Add(Format.R11G11B10Float,      new FormatInfo(3, false, false, All.R11fG11fB10f,      PixelFormat.Rgb,            PixelType.UnsignedInt10F11F11FRev));
             Add(Format.R9G9B9E5Float,       new FormatInfo(3, false, false, All.Rgb9E5,            PixelFormat.Rgb,            PixelType.UnsignedInt5999Rev));
-            Add(Format.Bc1RgbUnorm,         new FormatInfo(2, true,  false, All.CompressedRgbS3tcDxt1Ext));
-            Add(Format.Bc1RgbaUnorm,        new FormatInfo(1, true,  false, All.CompressedRgbaS3tcDxt1Ext));
-            Add(Format.Bc2Unorm,            new FormatInfo(1, true,  false, All.CompressedRgbaS3tcDxt3Ext));
-            Add(Format.Bc3Unorm,            new FormatInfo(1, true,  false, All.CompressedRgbaS3tcDxt5Ext));
-            Add(Format.Bc1RgbSrgb,          new FormatInfo(2, false, false, All.CompressedSrgbS3tcDxt1Ext));
-            Add(Format.Bc1RgbaSrgb,         new FormatInfo(1, true,  false, All.CompressedSrgbAlphaS3tcDxt1Ext));
-            Add(Format.Bc2Srgb,             new FormatInfo(1, false, false, All.CompressedSrgbAlphaS3tcDxt3Ext));
-            Add(Format.Bc3Srgb,             new FormatInfo(1, false, false, All.CompressedSrgbAlphaS3tcDxt5Ext));
+            Add(Format.Bc1RgbUnorm,         new FormatInfo(3, true,  false, All.CompressedRgbS3tcDxt1Ext));
+            Add(Format.Bc1RgbaUnorm,        new FormatInfo(4, true,  false, All.CompressedRgbaS3tcDxt1Ext));
+            Add(Format.Bc2Unorm,            new FormatInfo(4, true,  false, All.CompressedRgbaS3tcDxt3Ext));
+            Add(Format.Bc3Unorm,            new FormatInfo(4, true,  false, All.CompressedRgbaS3tcDxt5Ext));
+            Add(Format.Bc1RgbSrgb,          new FormatInfo(3, false, false, All.CompressedSrgbS3tcDxt1Ext));
+            Add(Format.Bc1RgbaSrgb,         new FormatInfo(4, true,  false, All.CompressedSrgbAlphaS3tcDxt1Ext));
+            Add(Format.Bc2Srgb,             new FormatInfo(4, false, false, All.CompressedSrgbAlphaS3tcDxt3Ext));
+            Add(Format.Bc3Srgb,             new FormatInfo(4, false, false, All.CompressedSrgbAlphaS3tcDxt5Ext));
             Add(Format.Bc4Unorm,            new FormatInfo(1, true,  false, All.CompressedRedRgtc1));
             Add(Format.Bc4Snorm,            new FormatInfo(1, true,  false, All.CompressedSignedRedRgtc1));
-            Add(Format.Bc5Unorm,            new FormatInfo(1, true,  false, All.CompressedRgRgtc2));
-            Add(Format.Bc5Snorm,            new FormatInfo(1, true,  false, All.CompressedSignedRgRgtc2));
-            Add(Format.Bc7Unorm,            new FormatInfo(1, true,  false, All.CompressedRgbaBptcUnorm));
-            Add(Format.Bc7Srgb,             new FormatInfo(1, false, false, All.CompressedSrgbAlphaBptcUnorm));
-            Add(Format.Bc6HSfloat,          new FormatInfo(1, false, false, All.CompressedRgbBptcSignedFloat));
-            Add(Format.Bc6HUfloat,          new FormatInfo(1, false, false, All.CompressedRgbBptcUnsignedFloat));
-            Add(Format.Etc2RgbaUnorm,       new FormatInfo(1, false, false, All.CompressedRgba8Etc2Eac));
-            Add(Format.Etc2RgbaSrgb,        new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Etc2Eac));
+            Add(Format.Bc5Unorm,            new FormatInfo(2, true,  false, All.CompressedRgRgtc2));
+            Add(Format.Bc5Snorm,            new FormatInfo(2, true,  false, All.CompressedSignedRgRgtc2));
+            Add(Format.Bc7Unorm,            new FormatInfo(4, true,  false, All.CompressedRgbaBptcUnorm));
+            Add(Format.Bc7Srgb,             new FormatInfo(4, false, false, All.CompressedSrgbAlphaBptcUnorm));
+            Add(Format.Bc6HSfloat,          new FormatInfo(4, false, false, All.CompressedRgbBptcSignedFloat));
+            Add(Format.Bc6HUfloat,          new FormatInfo(4, false, false, All.CompressedRgbBptcUnsignedFloat));
+            Add(Format.Etc2RgbUnorm,        new FormatInfo(3, false, false, All.CompressedRgb8Etc2));
+            Add(Format.Etc2RgbaUnorm,       new FormatInfo(4, false, false, All.CompressedRgba8Etc2Eac));
+            Add(Format.Etc2RgbSrgb,         new FormatInfo(3, false, false, All.CompressedSrgb8Etc2));
+            Add(Format.Etc2RgbaSrgb,        new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Etc2Eac));
             Add(Format.R8Uscaled,           new FormatInfo(1, false, true,  All.R8ui,              PixelFormat.RedInteger,     PixelType.UnsignedByte));
             Add(Format.R8Sscaled,           new FormatInfo(1, false, true,  All.R8i,               PixelFormat.RedInteger,     PixelType.Byte));
             Add(Format.R16Uscaled,          new FormatInfo(1, false, true,  All.R16ui,             PixelFormat.RedInteger,     PixelType.UnsignedShort));
@@ -138,34 +140,34 @@ namespace Ryujinx.Graphics.OpenGL
             Add(Format.R32G32B32X32Float,   new FormatInfo(4, false, false, All.Rgb32f,            PixelFormat.Rgba,           PixelType.Float));
             Add(Format.R32G32B32X32Uint,    new FormatInfo(4, false, false, All.Rgb32ui,           PixelFormat.RgbaInteger,    PixelType.UnsignedInt));
             Add(Format.R32G32B32X32Sint,    new FormatInfo(4, false, false, All.Rgb32i,            PixelFormat.RgbaInteger,    PixelType.Int));
-            Add(Format.Astc4x4Unorm,        new FormatInfo(1, true,  false, All.CompressedRgbaAstc4X4Khr));
-            Add(Format.Astc5x4Unorm,        new FormatInfo(1, true,  false, All.CompressedRgbaAstc5X4Khr));
-            Add(Format.Astc5x5Unorm,        new FormatInfo(1, true,  false, All.CompressedRgbaAstc5X5Khr));
-            Add(Format.Astc6x5Unorm,        new FormatInfo(1, true,  false, All.CompressedRgbaAstc6X5Khr));
-            Add(Format.Astc6x6Unorm,        new FormatInfo(1, true,  false, All.CompressedRgbaAstc6X6Khr));
-            Add(Format.Astc8x5Unorm,        new FormatInfo(1, true,  false, All.CompressedRgbaAstc8X5Khr));
-            Add(Format.Astc8x6Unorm,        new FormatInfo(1, true,  false, All.CompressedRgbaAstc8X6Khr));
-            Add(Format.Astc8x8Unorm,        new FormatInfo(1, true,  false, All.CompressedRgbaAstc8X8Khr));
-            Add(Format.Astc10x5Unorm,       new FormatInfo(1, true,  false, All.CompressedRgbaAstc10X5Khr));
-            Add(Format.Astc10x6Unorm,       new FormatInfo(1, true,  false, All.CompressedRgbaAstc10X6Khr));
-            Add(Format.Astc10x8Unorm,       new FormatInfo(1, true,  false, All.CompressedRgbaAstc10X8Khr));
-            Add(Format.Astc10x10Unorm,      new FormatInfo(1, true,  false, All.CompressedRgbaAstc10X10Khr));
-            Add(Format.Astc12x10Unorm,      new FormatInfo(1, true,  false, All.CompressedRgbaAstc12X10Khr));
-            Add(Format.Astc12x12Unorm,      new FormatInfo(1, true,  false, All.CompressedRgbaAstc12X12Khr));
-            Add(Format.Astc4x4Srgb,         new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc4X4Khr));
-            Add(Format.Astc5x4Srgb,         new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc5X4Khr));
-            Add(Format.Astc5x5Srgb,         new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc5X5Khr));
-            Add(Format.Astc6x5Srgb,         new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc6X5Khr));
-            Add(Format.Astc6x6Srgb,         new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc6X6Khr));
-            Add(Format.Astc8x5Srgb,         new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc8X5Khr));
-            Add(Format.Astc8x6Srgb,         new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc8X6Khr));
-            Add(Format.Astc8x8Srgb,         new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc8X8Khr));
-            Add(Format.Astc10x5Srgb,        new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc10X5Khr));
-            Add(Format.Astc10x6Srgb,        new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc10X6Khr));
-            Add(Format.Astc10x8Srgb,        new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc10X8Khr));
-            Add(Format.Astc10x10Srgb,       new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc10X10Khr));
-            Add(Format.Astc12x10Srgb,       new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc12X10Khr));
-            Add(Format.Astc12x12Srgb,       new FormatInfo(1, false, false, All.CompressedSrgb8Alpha8Astc12X12Khr));
+            Add(Format.Astc4x4Unorm,        new FormatInfo(4, true,  false, All.CompressedRgbaAstc4X4Khr));
+            Add(Format.Astc5x4Unorm,        new FormatInfo(4, true,  false, All.CompressedRgbaAstc5X4Khr));
+            Add(Format.Astc5x5Unorm,        new FormatInfo(4, true,  false, All.CompressedRgbaAstc5X5Khr));
+            Add(Format.Astc6x5Unorm,        new FormatInfo(4, true,  false, All.CompressedRgbaAstc6X5Khr));
+            Add(Format.Astc6x6Unorm,        new FormatInfo(4, true,  false, All.CompressedRgbaAstc6X6Khr));
+            Add(Format.Astc8x5Unorm,        new FormatInfo(4, true,  false, All.CompressedRgbaAstc8X5Khr));
+            Add(Format.Astc8x6Unorm,        new FormatInfo(4, true,  false, All.CompressedRgbaAstc8X6Khr));
+            Add(Format.Astc8x8Unorm,        new FormatInfo(4, true,  false, All.CompressedRgbaAstc8X8Khr));
+            Add(Format.Astc10x5Unorm,       new FormatInfo(4, true,  false, All.CompressedRgbaAstc10X5Khr));
+            Add(Format.Astc10x6Unorm,       new FormatInfo(4, true,  false, All.CompressedRgbaAstc10X6Khr));
+            Add(Format.Astc10x8Unorm,       new FormatInfo(4, true,  false, All.CompressedRgbaAstc10X8Khr));
+            Add(Format.Astc10x10Unorm,      new FormatInfo(4, true,  false, All.CompressedRgbaAstc10X10Khr));
+            Add(Format.Astc12x10Unorm,      new FormatInfo(4, true,  false, All.CompressedRgbaAstc12X10Khr));
+            Add(Format.Astc12x12Unorm,      new FormatInfo(4, true,  false, All.CompressedRgbaAstc12X12Khr));
+            Add(Format.Astc4x4Srgb,         new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc4X4Khr));
+            Add(Format.Astc5x4Srgb,         new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc5X4Khr));
+            Add(Format.Astc5x5Srgb,         new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc5X5Khr));
+            Add(Format.Astc6x5Srgb,         new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc6X5Khr));
+            Add(Format.Astc6x6Srgb,         new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc6X6Khr));
+            Add(Format.Astc8x5Srgb,         new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc8X5Khr));
+            Add(Format.Astc8x6Srgb,         new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc8X6Khr));
+            Add(Format.Astc8x8Srgb,         new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc8X8Khr));
+            Add(Format.Astc10x5Srgb,        new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc10X5Khr));
+            Add(Format.Astc10x6Srgb,        new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc10X6Khr));
+            Add(Format.Astc10x8Srgb,        new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc10X8Khr));
+            Add(Format.Astc10x10Srgb,       new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc10X10Khr));
+            Add(Format.Astc12x10Srgb,       new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc12X10Khr));
+            Add(Format.Astc12x12Srgb,       new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Astc12X12Khr));
             Add(Format.B5G6R5Unorm,         new FormatInfo(3, true,  false, All.Rgb565,            PixelFormat.Rgb,            PixelType.UnsignedShort565));
             Add(Format.B5G5R5X1Unorm,       new FormatInfo(4, true,  false, All.Rgb5,              PixelFormat.Bgra,           PixelType.UnsignedShort5551));
             Add(Format.B5G5R5A1Unorm,       new FormatInfo(4, true,  false, All.Rgb5A1,            PixelFormat.Bgra,           PixelType.UnsignedShort5551));