Fix some validation errors
This commit is contained in:
parent
0afa8f2c14
commit
84e8590d3f
3 changed files with 17 additions and 8 deletions
|
@ -103,12 +103,19 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
usage |= BufferUsageFlags.IndirectBufferBit;
|
||||
}
|
||||
|
||||
var externalMemoryBuffer = new ExternalMemoryBufferCreateInfo
|
||||
{
|
||||
SType = StructureType.ExternalMemoryBufferCreateInfo,
|
||||
HandleTypes = ExternalMemoryHandleTypeFlags.HostAllocationBitExt,
|
||||
};
|
||||
|
||||
var bufferCreateInfo = new BufferCreateInfo
|
||||
{
|
||||
SType = StructureType.BufferCreateInfo,
|
||||
Size = (ulong)size,
|
||||
Usage = usage,
|
||||
SharingMode = SharingMode.Exclusive,
|
||||
PNext = &externalMemoryBuffer,
|
||||
};
|
||||
|
||||
gd.Api.CreateBuffer(_device, in bufferCreateInfo, null, out var buffer).ThrowOnError();
|
||||
|
|
|
@ -20,6 +20,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
ImageUsageFlags.TransferSrcBit |
|
||||
ImageUsageFlags.TransferDstBit;
|
||||
|
||||
public readonly ImageUsageFlags StorageImageUsageFlags;
|
||||
|
||||
public const AccessFlags DefaultAccessMask =
|
||||
AccessFlags.ShaderReadBit |
|
||||
AccessFlags.ShaderWriteBit |
|
||||
|
@ -78,7 +80,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
var sampleCountFlags = ConvertToSampleCountFlags(gd.Capabilities.SupportedSampleCounts, (uint)info.Samples);
|
||||
|
||||
var usage = GetImageUsage(info.Format, info.Target, gd.Capabilities.SupportsShaderStorageImageMultisample);
|
||||
StorageImageUsageFlags = GetImageUsage(info.Format, info.Target, gd.Capabilities.SupportsShaderStorageImageMultisample);
|
||||
|
||||
var flags = ImageCreateFlags.CreateMutableFormatBit;
|
||||
|
||||
|
@ -106,7 +108,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
ArrayLayers = layers,
|
||||
Samples = sampleCountFlags,
|
||||
Tiling = ImageTiling.Optimal,
|
||||
Usage = usage,
|
||||
Usage = StorageImageUsageFlags,
|
||||
SharingMode = SharingMode.Exclusive,
|
||||
InitialLayout = ImageLayout.Undefined,
|
||||
Flags = flags,
|
||||
|
|
|
@ -60,7 +60,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
gd.Textures.Add(this);
|
||||
|
||||
var format = _gd.FormatCapabilities.ConvertToVkFormat(info.Format);
|
||||
var usage = TextureStorage.GetImageUsage(info.Format, info.Target, gd.Capabilities.SupportsShaderStorageImageMultisample);
|
||||
var usage = storage.StorageImageUsageFlags;
|
||||
var levels = (uint)info.Levels;
|
||||
var layers = (uint)info.GetLayers();
|
||||
|
||||
|
@ -100,7 +100,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
unsafe Auto<DisposableImageView> CreateImageView(ComponentMapping cm, ImageSubresourceRange sr, ImageViewType viewType, ImageUsageFlags usageFlags)
|
||||
{
|
||||
var usage = new ImageViewUsageCreateInfo
|
||||
var imageViewUsage = new ImageViewUsageCreateInfo
|
||||
{
|
||||
SType = StructureType.ImageViewUsageCreateInfo,
|
||||
Usage = usageFlags,
|
||||
|
@ -114,7 +114,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
Format = format,
|
||||
Components = cm,
|
||||
SubresourceRange = sr,
|
||||
PNext = &usage,
|
||||
PNext = &imageViewUsage,
|
||||
};
|
||||
|
||||
gd.Api.CreateImageView(device, imageCreateInfo, null, out var imageView).ThrowOnError();
|
||||
|
@ -123,11 +123,11 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
ImageUsageFlags shaderUsage = ImageUsageFlags.SampledBit;
|
||||
|
||||
if (info.Format.IsImageCompatible())
|
||||
if (storage.Info.Format.IsImageCompatible())
|
||||
{
|
||||
shaderUsage |= ImageUsageFlags.StorageBit;
|
||||
}
|
||||
|
||||
|
||||
_imageView = CreateImageView(componentMapping, subresourceRange, type, shaderUsage);
|
||||
|
||||
// Framebuffer attachments and storage images requires a identity component mapping.
|
||||
|
@ -154,7 +154,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
}
|
||||
else
|
||||
{
|
||||
subresourceRange = new ImageSubresourceRange(aspectFlags, (uint)firstLevel, levels, (uint)firstLayer, (uint)info.Depth);
|
||||
subresourceRange = new ImageSubresourceRange(aspectFlags, (uint)firstLevel, 1, (uint)firstLayer, (uint)info.Depth);
|
||||
|
||||
_imageView2dArray = CreateImageView(identityComponentMapping, subresourceRange, ImageViewType.Type2DArray, usage);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue