Reduce copy destination size by target mipmap level, rather than source size. (#959)

* Change destination size by target mipmap level, rather than source.

* Check dst for Texture3D rather than src.
This commit is contained in:
riperiperi 2020-02-29 20:50:44 +00:00 committed by GitHub
parent 6204f0e47a
commit f35af5f703
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -14,19 +14,19 @@ namespace Ryujinx.Graphics.OpenGL
int srcDepth = src.DepthOrLayers; int srcDepth = src.DepthOrLayers;
int srcLevels = src.Levels; int srcLevels = src.Levels;
srcWidth = Math.Max(1, srcWidth >> dstLevel);
srcHeight = Math.Max(1, srcHeight >> dstLevel);
if (src.Target == Target.Texture3D)
{
srcDepth = Math.Max(1, srcDepth >> dstLevel);
}
int dstWidth = dst.Width; int dstWidth = dst.Width;
int dstHeight = dst.Height; int dstHeight = dst.Height;
int dstDepth = dst.DepthOrLayers; int dstDepth = dst.DepthOrLayers;
int dstLevels = dst.Levels; int dstLevels = dst.Levels;
dstWidth = Math.Max(1, dstWidth >> dstLevel);
dstHeight = Math.Max(1, dstHeight >> dstLevel);
if (dst.Target == Target.Texture3D)
{
dstDepth = Math.Max(1, dstDepth >> dstLevel);
}
// When copying from a compressed to a non-compressed format, // When copying from a compressed to a non-compressed format,
// the non-compressed texture will have the size of the texture // the non-compressed texture will have the size of the texture
// in blocks (not in texels), so we must adjust that size to // in blocks (not in texels), so we must adjust that size to