Force crop when presentation cached texture size mismatches (#2957)

This commit is contained in:
gdkchan 2021-12-31 12:00:42 -03:00 committed by GitHub
parent c05c8e09d4
commit 15131d4350
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 3 deletions

View file

@ -21,8 +21,7 @@ namespace Ryujinx.Graphics.GAL
bool flipY,
bool isStretched,
float aspectRatioX,
float aspectRatioY
)
float aspectRatioY)
{
Left = left;
Right = right;

View file

@ -201,7 +201,29 @@ namespace Ryujinx.Graphics.Gpu
texture.SynchronizeMemory();
_context.Renderer.Window.Present(texture.HostTexture, pt.Crop, swapBuffersCallback);
ImageCrop crop = pt.Crop;
if (texture.Info.Width > pt.Info.Width || texture.Info.Height > pt.Info.Height)
{
int top = crop.Top;
int bottom = crop.Bottom;
int left = crop.Left;
int right = crop.Right;
if (top == 0 && bottom == 0)
{
bottom = Math.Min(texture.Info.Height, pt.Info.Height);
}
if (left == 0 && right == 0)
{
right = Math.Min(texture.Info.Width, pt.Info.Width);
}
crop = new ImageCrop(left, right, top, bottom, crop.FlipX, crop.FlipY, crop.IsStretched, crop.AspectRatioX, crop.AspectRatioY);
}
_context.Renderer.Window.Present(texture.HostTexture, crop, swapBuffersCallback);
pt.ReleaseCallback(pt.UserObj);
}