Fix reinterpret when texture sizes are different
This commit is contained in:
parent
5b63ef71ba
commit
10a0baf627
1 changed files with 12 additions and 2 deletions
|
@ -447,7 +447,9 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NewImage.Format == OldImage.Format)
|
if (NewImage.Format == OldImage.Format &&
|
||||||
|
NewImage.Width == OldImage.Width &&
|
||||||
|
NewImage.Height == OldImage.Height)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -459,7 +461,11 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
||||||
|
|
||||||
GL.BindBuffer(BufferTarget.PixelPackBuffer, CopyPBO);
|
GL.BindBuffer(BufferTarget.PixelPackBuffer, CopyPBO);
|
||||||
|
|
||||||
GL.BufferData(BufferTarget.PixelPackBuffer, Math.Max(ImageUtils.GetSize(OldImage), ImageUtils.GetSize(NewImage)), IntPtr.Zero, BufferUsageHint.StreamCopy);
|
//The buffer should be large enough to hold the largest texture.
|
||||||
|
int BufferSize = Math.Max(ImageUtils.GetSize(OldImage),
|
||||||
|
ImageUtils.GetSize(NewImage));
|
||||||
|
|
||||||
|
GL.BufferData(BufferTarget.PixelPackBuffer, BufferSize, IntPtr.Zero, BufferUsageHint.StreamCopy);
|
||||||
|
|
||||||
if (!Texture.TryGetImageHandler(Key, out ImageHandler CachedImage))
|
if (!Texture.TryGetImageHandler(Key, out ImageHandler CachedImage))
|
||||||
{
|
{
|
||||||
|
@ -475,8 +481,12 @@ namespace Ryujinx.Graphics.Gal.OpenGL
|
||||||
GL.BindBuffer(BufferTarget.PixelPackBuffer, 0);
|
GL.BindBuffer(BufferTarget.PixelPackBuffer, 0);
|
||||||
GL.BindBuffer(BufferTarget.PixelUnpackBuffer, CopyPBO);
|
GL.BindBuffer(BufferTarget.PixelUnpackBuffer, CopyPBO);
|
||||||
|
|
||||||
|
GL.PixelStore(PixelStoreParameter.UnpackRowLength, OldImage.Width);
|
||||||
|
|
||||||
Texture.Create(Key, ImageUtils.GetSize(NewImage), NewImage);
|
Texture.Create(Key, ImageUtils.GetSize(NewImage), NewImage);
|
||||||
|
|
||||||
|
GL.PixelStore(PixelStoreParameter.UnpackRowLength, 0);
|
||||||
|
|
||||||
GL.BindBuffer(BufferTarget.PixelUnpackBuffer, 0);
|
GL.BindBuffer(BufferTarget.PixelUnpackBuffer, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue