Force crop when presentation cached texture size mismatches (#2957)
This commit is contained in:
parent
c05c8e09d4
commit
15131d4350
2 changed files with 24 additions and 3 deletions
|
@ -21,8 +21,7 @@ namespace Ryujinx.Graphics.GAL
|
|||
bool flipY,
|
||||
bool isStretched,
|
||||
float aspectRatioX,
|
||||
float aspectRatioY
|
||||
)
|
||||
float aspectRatioY)
|
||||
{
|
||||
Left = left;
|
||||
Right = right;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue