aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Gpu/Image/TexturePool.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Image/TexturePool.cs')
-rw-r--r--Ryujinx.Graphics.Gpu/Image/TexturePool.cs16
1 files changed, 16 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.Gpu/Image/TexturePool.cs b/Ryujinx.Graphics.Gpu/Image/TexturePool.cs
index 59f2e901..e26dc501 100644
--- a/Ryujinx.Graphics.Gpu/Image/TexturePool.cs
+++ b/Ryujinx.Graphics.Gpu/Image/TexturePool.cs
@@ -67,6 +67,22 @@ namespace Ryujinx.Graphics.Gpu.Image
}
else
{
+ if (texture.ChangedSize)
+ {
+ // Texture changed size at one point - it may be a different size than the sampler expects.
+ // This can be triggered when the size is changed by a size hint on copy or draw, but the texture has been sampled before.
+
+ TextureDescriptor descriptor = GetDescriptor(id);
+
+ int width = descriptor.UnpackWidth();
+ int height = descriptor.UnpackHeight();
+
+ if (texture.Info.Width != width || texture.Info.Height != height)
+ {
+ texture.ChangeSize(width, height, texture.Info.DepthOrLayers);
+ }
+ }
+
// Memory is automatically synchronized on texture creation.
texture.SynchronizeMemory();
}