diff options
Diffstat (limited to 'Ryujinx.Graphics/Gal/OpenGL')
| -rw-r--r-- | Ryujinx.Graphics/Gal/OpenGL/OGLTexture.cs | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Ryujinx.Graphics/Gal/OpenGL/OGLTexture.cs b/Ryujinx.Graphics/Gal/OpenGL/OGLTexture.cs index 75f09faa..46c15dcc 100644 --- a/Ryujinx.Graphics/Gal/OpenGL/OGLTexture.cs +++ b/Ryujinx.Graphics/Gal/OpenGL/OGLTexture.cs @@ -40,7 +40,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL { if (Texture.Format >= GalTextureFormat.Astc2D4x4) { - ConvertAstcTextureToRgba(Texture); + Texture = ConvertAstcTextureToRgba(Texture); } const PixelInternalFormat InternalFmt = PixelInternalFormat.Rgba; @@ -70,14 +70,21 @@ namespace Ryujinx.Graphics.Gal.OpenGL GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureSwizzleA, SwizzleA); } - private void ConvertAstcTextureToRgba(GalTexture Texture) + private GalTexture ConvertAstcTextureToRgba(GalTexture Texture) { + int TextureBlockWidth = GetAstcBlockWidth(Texture.Format); + int TextureBlockHeight = GetAstcBlockWidth(Texture.Format); + Texture.Data = ASTCDecoder.DecodeToRGBA8888( Texture.Data, - GetAstcBlockWidth(Texture.Format), - GetAstcBlockHeight(Texture.Format), 1, + TextureBlockWidth, + TextureBlockHeight, 1, Texture.Width, Texture.Height, 1); + + Texture.Format = GalTextureFormat.A8B8G8R8; + + return Texture; } private int GetAstcBlockWidth(GalTextureFormat Format) |
