forked from Mirror/Ryujinx
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 flipY,
|
||||||
bool isStretched,
|
bool isStretched,
|
||||||
float aspectRatioX,
|
float aspectRatioX,
|
||||||
float aspectRatioY
|
float aspectRatioY)
|
||||||
)
|
|
||||||
{
|
{
|
||||||
Left = left;
|
Left = left;
|
||||||
Right = right;
|
Right = right;
|
||||||
|
|
|
@ -201,7 +201,29 @@ namespace Ryujinx.Graphics.Gpu
|
||||||
|
|
||||||
texture.SynchronizeMemory();
|
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);
|
pt.ReleaseCallback(pt.UserObj);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue