diff options
author | gdkchan <gab.dark.100@gmail.com> | 2023-02-21 19:21:57 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-21 19:21:57 -0300 |
commit | c3a5716a95ea93cba9488189fb36d594db5083bc (patch) | |
tree | de4a15d2b88bf069193c30f09f19bd7ab139135a /Ryujinx.Graphics.OpenGL/Image/TextureView.cs | |
parent | 1f1e2a7f03aad988cb04045eee18a360a807d13f (diff) |
Add copy dependency for some incompatible texture formats (#4380)1.1.632
* Add copy dependency for some incompatible texture formats
* Simplify compatibility check
Diffstat (limited to 'Ryujinx.Graphics.OpenGL/Image/TextureView.cs')
-rw-r--r-- | Ryujinx.Graphics.OpenGL/Image/TextureView.cs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.OpenGL/Image/TextureView.cs b/Ryujinx.Graphics.OpenGL/Image/TextureView.cs index 68cd2d30..44df441f 100644 --- a/Ryujinx.Graphics.OpenGL/Image/TextureView.cs +++ b/Ryujinx.Graphics.OpenGL/Image/TextureView.cs @@ -127,6 +127,12 @@ namespace Ryujinx.Graphics.OpenGL.Image int layers = Math.Min(Info.GetLayers(), destinationView.Info.GetLayers() - firstLayer); _renderer.TextureCopyMS.CopyNonMSToMS(this, destinationView, 0, firstLayer, layers); } + else if (destinationView.Info.BytesPerPixel != Info.BytesPerPixel) + { + int layers = Math.Min(Info.GetLayers(), destinationView.Info.GetLayers() - firstLayer); + int levels = Math.Min(Info.Levels, destinationView.Info.Levels - firstLevel); + _renderer.TextureCopyIncompatible.CopyIncompatibleFormats(this, destinationView, 0, firstLayer, 0, firstLevel, layers, levels); + } else { _renderer.TextureCopy.CopyUnscaled(this, destinationView, 0, firstLayer, 0, firstLevel); @@ -145,6 +151,10 @@ namespace Ryujinx.Graphics.OpenGL.Image { _renderer.TextureCopyMS.CopyNonMSToMS(this, destinationView, srcLayer, dstLayer, 1); } + else if (destinationView.Info.BytesPerPixel != Info.BytesPerPixel) + { + _renderer.TextureCopyIncompatible.CopyIncompatibleFormats(this, destinationView, srcLayer, dstLayer, srcLevel, dstLevel, 1, 1); + } else { _renderer.TextureCopy.CopyUnscaled(this, destinationView, srcLayer, dstLayer, srcLevel, dstLevel, 1, 1); |