diff --git a/Ryujinx.Graphics.Vulkan/TextureCopy.cs b/Ryujinx.Graphics.Vulkan/TextureCopy.cs index edcdecaea..05e110936 100644 --- a/Ryujinx.Graphics.Vulkan/TextureCopy.cs +++ b/Ryujinx.Graphics.Vulkan/TextureCopy.cs @@ -69,10 +69,13 @@ namespace Ryujinx.Graphics.Vulkan layers, levels); + uint copySrcLevel = (uint)srcLevel; + uint copyDstLevel = (uint)dstLevel; + for (int level = 0; level < levels; level++) { - var srcSl = new ImageSubresourceLayers(srcAspectFlags, (uint)srcLevel, (uint)srcLayer, (uint)layers); - var dstSl = new ImageSubresourceLayers(dstAspectFlags, (uint)dstLevel, (uint)dstLayer, (uint)layers); + var srcSl = new ImageSubresourceLayers(srcAspectFlags, copySrcLevel, (uint)srcLayer, (uint)layers); + var dstSl = new ImageSubresourceLayers(dstAspectFlags, copyDstLevel, (uint)dstLayer, (uint)layers); (srcOffsets.Element0, srcOffsets.Element1) = ExtentsToOffset3D(srcRegion, srcInfo.Width, srcInfo.Height, level); (dstOffsets.Element0, dstOffsets.Element1) = ExtentsToOffset3D(dstRegion, dstInfo.Width, dstInfo.Height, level); @@ -87,8 +90,8 @@ namespace Ryujinx.Graphics.Vulkan api.CmdBlitImage(commandBuffer, srcImage, ImageLayout.General, dstImage, ImageLayout.General, 1, region, filter); - srcLevel++; - dstLevel++; + copySrcLevel++; + copyDstLevel++; if (srcInfo.Target == Target.Texture3D || dstInfo.Target == Target.Texture3D) { diff --git a/Ryujinx.Graphics.Vulkan/TextureStorage.cs b/Ryujinx.Graphics.Vulkan/TextureStorage.cs index d1a8b444e..21e16abed 100644 --- a/Ryujinx.Graphics.Vulkan/TextureStorage.cs +++ b/Ryujinx.Graphics.Vulkan/TextureStorage.cs @@ -90,11 +90,6 @@ namespace Ryujinx.Graphics.Vulkan var flags = ImageCreateFlags.ImageCreateMutableFormatBit; - if (info.BlockWidth != 1 || info.BlockHeight != 1) - { - flags |= ImageCreateFlags.ImageCreateBlockTexelViewCompatibleBit; - } - bool cubeCompatible = info.Width == info.Height && layers >= 6; if (type == ImageType.ImageType2D && cubeCompatible)