From 73f6149bd6615fa2447fa09c3209598776fd7e14 Mon Sep 17 00:00:00 2001 From: Ac_K Date: Tue, 5 Jan 2021 06:02:49 +0100 Subject: [PATCH] gpu: Implement missing texture formats (#1867) * gpu: Implement Etc2Rgba texture format * Add more format * Fix wrong pixel format --- Ryujinx.Graphics.GAL/Format.cs | 2 ++ Ryujinx.Graphics.Gpu/Image/FormatTable.cs | 3 +++ Ryujinx.Graphics.OpenGL/FormatTable.cs | 2 ++ 3 files changed, 7 insertions(+) diff --git a/Ryujinx.Graphics.GAL/Format.cs b/Ryujinx.Graphics.GAL/Format.cs index 10b754eafc..15cf5f4f0b 100644 --- a/Ryujinx.Graphics.GAL/Format.cs +++ b/Ryujinx.Graphics.GAL/Format.cs @@ -82,6 +82,8 @@ namespace Ryujinx.Graphics.GAL Bc7Srgb, Bc6HSfloat, Bc6HUfloat, + Etc2RgbaUnorm, + Etc2RgbaSrgb, R8Uscaled, R8Sscaled, R16Uscaled, diff --git a/Ryujinx.Graphics.Gpu/Image/FormatTable.cs b/Ryujinx.Graphics.Gpu/Image/FormatTable.cs index d8f2a9d450..a1911d5684 100644 --- a/Ryujinx.Graphics.Gpu/Image/FormatTable.cs +++ b/Ryujinx.Graphics.Gpu/Image/FormatTable.cs @@ -53,6 +53,7 @@ namespace Ryujinx.Graphics.Gpu.Image { 0x7ffaf, new FormatInfo(Format.D32Float, 1, 1, 4, 1) }, { 0x24a0e, new FormatInfo(Format.D24UnormS8Uint, 1, 1, 4, 2) }, { 0x24a29, new FormatInfo(Format.D24UnormS8Uint, 1, 1, 4, 2) }, + { 0x48a29, new FormatInfo(Format.D24UnormS8Uint, 1, 1, 4, 2) }, { 0x25385, new FormatInfo(Format.D32FloatS8Uint, 1, 1, 8, 2) }, { 0x253b0, new FormatInfo(Format.D32FloatS8Uint, 1, 1, 8, 2) }, { 0xa4908, new FormatInfo(Format.R8G8B8A8Srgb, 1, 1, 4, 4) }, @@ -77,6 +78,8 @@ 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) }, + { 0x2490b, new FormatInfo(Format.Etc2RgbaUnorm, 4, 4, 16, 4) }, + { 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) }, { 0x24941, new FormatInfo(Format.Astc5x5Unorm, 5, 5, 16, 4) }, diff --git a/Ryujinx.Graphics.OpenGL/FormatTable.cs b/Ryujinx.Graphics.OpenGL/FormatTable.cs index 4261b495c3..52da3efd3c 100644 --- a/Ryujinx.Graphics.OpenGL/FormatTable.cs +++ b/Ryujinx.Graphics.OpenGL/FormatTable.cs @@ -96,6 +96,8 @@ namespace Ryujinx.Graphics.OpenGL 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.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));