mirror of
https://git.naxdy.org/Mirror/Ryujinx.git
synced 2025-02-21 16:43:35 +00:00
Fix some validation errors related to texel block view usage flag and invalid image barrier base level
This commit is contained in:
parent
03955d6b04
commit
3767cf4ce5
2 changed files with 7 additions and 9 deletions
|
@ -69,10 +69,13 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
layers,
|
layers,
|
||||||
levels);
|
levels);
|
||||||
|
|
||||||
|
uint copySrcLevel = (uint)srcLevel;
|
||||||
|
uint copyDstLevel = (uint)dstLevel;
|
||||||
|
|
||||||
for (int level = 0; level < levels; level++)
|
for (int level = 0; level < levels; level++)
|
||||||
{
|
{
|
||||||
var srcSl = new ImageSubresourceLayers(srcAspectFlags, (uint)srcLevel, (uint)srcLayer, (uint)layers);
|
var srcSl = new ImageSubresourceLayers(srcAspectFlags, copySrcLevel, (uint)srcLayer, (uint)layers);
|
||||||
var dstSl = new ImageSubresourceLayers(dstAspectFlags, (uint)dstLevel, (uint)dstLayer, (uint)layers);
|
var dstSl = new ImageSubresourceLayers(dstAspectFlags, copyDstLevel, (uint)dstLayer, (uint)layers);
|
||||||
|
|
||||||
(srcOffsets.Element0, srcOffsets.Element1) = ExtentsToOffset3D(srcRegion, srcInfo.Width, srcInfo.Height, level);
|
(srcOffsets.Element0, srcOffsets.Element1) = ExtentsToOffset3D(srcRegion, srcInfo.Width, srcInfo.Height, level);
|
||||||
(dstOffsets.Element0, dstOffsets.Element1) = ExtentsToOffset3D(dstRegion, dstInfo.Width, dstInfo.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);
|
api.CmdBlitImage(commandBuffer, srcImage, ImageLayout.General, dstImage, ImageLayout.General, 1, region, filter);
|
||||||
|
|
||||||
srcLevel++;
|
copySrcLevel++;
|
||||||
dstLevel++;
|
copyDstLevel++;
|
||||||
|
|
||||||
if (srcInfo.Target == Target.Texture3D || dstInfo.Target == Target.Texture3D)
|
if (srcInfo.Target == Target.Texture3D || dstInfo.Target == Target.Texture3D)
|
||||||
{
|
{
|
||||||
|
|
|
@ -90,11 +90,6 @@ namespace Ryujinx.Graphics.Vulkan
|
||||||
|
|
||||||
var flags = ImageCreateFlags.ImageCreateMutableFormatBit;
|
var flags = ImageCreateFlags.ImageCreateMutableFormatBit;
|
||||||
|
|
||||||
if (info.BlockWidth != 1 || info.BlockHeight != 1)
|
|
||||||
{
|
|
||||||
flags |= ImageCreateFlags.ImageCreateBlockTexelViewCompatibleBit;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cubeCompatible = info.Width == info.Height && layers >= 6;
|
bool cubeCompatible = info.Width == info.Height && layers >= 6;
|
||||||
|
|
||||||
if (type == ImageType.ImageType2D && cubeCompatible)
|
if (type == ImageType.ImageType2D && cubeCompatible)
|
||||||
|
|
Loading…
Reference in a new issue