forked from Mirror/Ryujinx
Fix A1B5G5R5 format for good (#2955)
This commit is contained in:
parent
b4f8ae7a75
commit
1485780d90
2 changed files with 11 additions and 2 deletions
|
@ -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));
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in a new issue