diff --git a/src/Ryujinx.Graphics.Gpu/Window.cs b/src/Ryujinx.Graphics.Gpu/Window.cs index 6bcedd2b7..d82f66836 100644 --- a/src/Ryujinx.Graphics.Gpu/Window.cs +++ b/src/Ryujinx.Graphics.Gpu/Window.cs @@ -213,7 +213,7 @@ namespace Ryujinx.Graphics.Gpu texture.SynchronizeMemory(); // Add overlays by modifying texture data directly - AddOverlaysToTexture(texture); + AddOverlaysToTexture(texture, pt.Crop); ImageCrop crop = new( (int)(pt.Crop.Left * texture.ScaleFactor), @@ -264,7 +264,8 @@ namespace Ryujinx.Graphics.Gpu /// Add overlays to the texture using SkiaSharp /// /// The texture to modify - private void AddOverlaysToTexture(Image.Texture texture) + /// The crop information containing flip flags + private void AddOverlaysToTexture(Image.Texture texture, ImageCrop crop) { try { @@ -314,9 +315,9 @@ namespace Ryujinx.Graphics.Gpu // Create canvas for drawing overlays using var canvas = new SKCanvas(bitmap); - // On Linux with OpenGL, we need to flip the Y-axis because OpenGL uses bottom-left origin - // while SkiaSharp uses top-left origin - if (OperatingSystem.IsLinux()) + // Flip Y-axis if the game/texture requires it + // Some games have textures that are already flipped, while others need flipping + if (crop.FlipY) { canvas.Scale(1, -1); canvas.Translate(0, -height);