Add copy dependency for some incompatible texture formats (#4380)

* Add copy dependency for some incompatible texture formats

* Simplify compatibility check
This commit is contained in:
gdkchan 2023-02-21 19:21:57 -03:00 committed by GitHub
parent 1f1e2a7f03
commit c3a5716a95
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 814 additions and 47 deletions

View file

@ -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);