aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2021-12-30 10:00:34 -0300
committerGitHub <noreply@github.com>2021-12-30 14:00:34 +0100
commit1485780d90a554a9a71585ff1dd6e049b32b761e (patch)
tree78412a29a86784f67e1d37fceb3b33cd4e199dff
parentb4f8ae7a759670c3fa22ff11e468c677fd64a682 (diff)
Fix A1B5G5R5 format for good (#2955)
-rw-r--r--Ryujinx.Graphics.OpenGL/FormatTable.cs2
-rw-r--r--Ryujinx.Graphics.OpenGL/Image/TextureView.cs11
2 files changed, 11 insertions, 2 deletions
diff --git a/Ryujinx.Graphics.OpenGL/FormatTable.cs b/Ryujinx.Graphics.OpenGL/FormatTable.cs
index b673eb48..e3249cd6 100644
--- a/Ryujinx.Graphics.OpenGL/FormatTable.cs
+++ b/Ryujinx.Graphics.OpenGL/FormatTable.cs
@@ -171,7 +171,7 @@ namespace Ryujinx.Graphics.OpenGL
Add(Format.B5G6R5Unorm, new FormatInfo(3, true, false, All.Rgb565, PixelFormat.Rgb, PixelType.UnsignedShort565Reversed));
Add(Format.B5G5R5X1Unorm, new FormatInfo(4, true, false, All.Rgb5, PixelFormat.Rgba, PixelType.UnsignedShort1555Reversed));
Add(Format.B5G5R5A1Unorm, new FormatInfo(4, true, false, All.Rgb5A1, PixelFormat.Rgba, PixelType.UnsignedShort1555Reversed));
- Add(Format.A1B5G5R5Unorm, new FormatInfo(4, true, false, All.Rgb5A1, PixelFormat.Bgra, PixelType.UnsignedShort1555Reversed));
+ Add(Format.A1B5G5R5Unorm, new FormatInfo(4, true, false, All.Rgb5A1, PixelFormat.Rgba, PixelType.UnsignedShort5551));
Add(Format.B8G8R8X8Unorm, new FormatInfo(4, true, false, All.Rgba8, PixelFormat.Rgba, PixelType.UnsignedByte));
Add(Format.B8G8R8A8Unorm, new FormatInfo(4, true, false, All.Rgba8, PixelFormat.Rgba, PixelType.UnsignedByte));
Add(Format.B8G8R8X8Srgb, new FormatInfo(4, false, false, All.Srgb8, PixelFormat.Rgba, PixelType.UnsignedByte));
diff --git a/Ryujinx.Graphics.OpenGL/Image/TextureView.cs b/Ryujinx.Graphics.OpenGL/Image/TextureView.cs
index 137f7d6e..40ab18ef 100644
--- a/Ryujinx.Graphics.OpenGL/Image/TextureView.cs
+++ b/Ryujinx.Graphics.OpenGL/Image/TextureView.cs
@@ -72,7 +72,16 @@ namespace Ryujinx.Graphics.OpenGL.Image
(int)Info.SwizzleA.Convert()
};
- if (Info.Format.IsBgr())
+ if (Info.Format == Format.A1B5G5R5Unorm)
+ {
+ int temp = swizzleRgba[0];
+ int temp2 = swizzleRgba[1];
+ swizzleRgba[0] = swizzleRgba[3];
+ swizzleRgba[1] = swizzleRgba[2];
+ swizzleRgba[2] = temp2;
+ swizzleRgba[3] = temp;
+ }
+ else if (Info.Format.IsBgr())
{
// Swap B <-> R for BGRA formats, as OpenGL has no support for them
// and we need to manually swap the components on read/write on the GPU.