From 0ec933a6152ebb7724da1e3a05a5ae1c2ea07b2f Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Tue, 16 Aug 2022 10:42:42 -0300
Subject: [PATCH] Vulkan: Add ETC2 texture formats (#3576)

---
 Ryujinx.Graphics.GAL/Format.cs         | 2 ++
 Ryujinx.Graphics.OpenGL/FormatTable.cs | 4 ++++
 Ryujinx.Graphics.Vulkan/FormatTable.cs | 6 ++++++
 3 files changed, 12 insertions(+)

diff --git a/Ryujinx.Graphics.GAL/Format.cs b/Ryujinx.Graphics.GAL/Format.cs
index f6abacaf2..e455048ac 100644
--- a/Ryujinx.Graphics.GAL/Format.cs
+++ b/Ryujinx.Graphics.GAL/Format.cs
@@ -82,8 +82,10 @@ namespace Ryujinx.Graphics.GAL
         Bc6HUfloat,
         Etc2RgbUnorm,
         Etc2RgbaUnorm,
+        Etc2RgbPtaUnorm,
         Etc2RgbSrgb,
         Etc2RgbaSrgb,
+        Etc2RgbPtaSrgb,
         R8Uscaled,
         R8Sscaled,
         R16Uscaled,
diff --git a/Ryujinx.Graphics.OpenGL/FormatTable.cs b/Ryujinx.Graphics.OpenGL/FormatTable.cs
index 250430773..281f0004f 100644
--- a/Ryujinx.Graphics.OpenGL/FormatTable.cs
+++ b/Ryujinx.Graphics.OpenGL/FormatTable.cs
@@ -93,8 +93,12 @@ namespace Ryujinx.Graphics.OpenGL
             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(4, false, false, All.CompressedRgb8Etc2));
             Add(Format.Etc2RgbaUnorm,       new FormatInfo(4, false, false, All.CompressedRgba8Etc2Eac));
+            Add(Format.Etc2RgbPtaUnorm,     new FormatInfo(4, false, false, All.CompressedRgb8PunchthroughAlpha1Etc2));
+            Add(Format.Etc2RgbSrgb,         new FormatInfo(4, false, false, All.CompressedSrgb8Etc2));
             Add(Format.Etc2RgbaSrgb,        new FormatInfo(4, false, false, All.CompressedSrgb8Alpha8Etc2Eac));
+            Add(Format.Etc2RgbPtaSrgb,      new FormatInfo(4, false, false, All.CompressedSrgb8PunchthroughAlpha1Etc2));
             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));
diff --git a/Ryujinx.Graphics.Vulkan/FormatTable.cs b/Ryujinx.Graphics.Vulkan/FormatTable.cs
index 446fea0a5..b5739623c 100644
--- a/Ryujinx.Graphics.Vulkan/FormatTable.cs
+++ b/Ryujinx.Graphics.Vulkan/FormatTable.cs
@@ -90,6 +90,12 @@ namespace Ryujinx.Graphics.Vulkan
             Add(Format.Bc7Srgb,             VkFormat.BC7SrgbBlock);
             Add(Format.Bc6HSfloat,          VkFormat.BC6HSfloatBlock);
             Add(Format.Bc6HUfloat,          VkFormat.BC6HUfloatBlock);
+            Add(Format.Etc2RgbUnorm,        VkFormat.Etc2R8G8B8UnormBlock);
+            Add(Format.Etc2RgbaUnorm,       VkFormat.Etc2R8G8B8A8UnormBlock);
+            Add(Format.Etc2RgbPtaUnorm,     VkFormat.Etc2R8G8B8A1UnormBlock);
+            Add(Format.Etc2RgbSrgb,         VkFormat.Etc2R8G8B8SrgbBlock);
+            Add(Format.Etc2RgbaSrgb,        VkFormat.Etc2R8G8B8A8SrgbBlock);
+            Add(Format.Etc2RgbPtaSrgb,      VkFormat.Etc2R8G8B8A1SrgbBlock);
             Add(Format.R8Uscaled,           VkFormat.R8Uscaled);
             Add(Format.R8Sscaled,           VkFormat.R8Sscaled);
             Add(Format.R16Uscaled,          VkFormat.R16Uscaled);