diff options
Diffstat (limited to 'src/Ryujinx.Graphics.Vulkan')
-rw-r--r-- | src/Ryujinx.Graphics.Vulkan/ResourceBindingSegment.cs | 4 | ||||
-rw-r--r-- | src/Ryujinx.Graphics.Vulkan/ResourceLayoutBuilder.cs | 12 | ||||
-rw-r--r-- | src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs | 21 |
3 files changed, 7 insertions, 30 deletions
diff --git a/src/Ryujinx.Graphics.Vulkan/ResourceBindingSegment.cs b/src/Ryujinx.Graphics.Vulkan/ResourceBindingSegment.cs index 9de46e61..8902f13e 100644 --- a/src/Ryujinx.Graphics.Vulkan/ResourceBindingSegment.cs +++ b/src/Ryujinx.Graphics.Vulkan/ResourceBindingSegment.cs @@ -8,15 +8,13 @@ namespace Ryujinx.Graphics.Vulkan public readonly int Count; public readonly ResourceType Type; public readonly ResourceStages Stages; - public readonly ResourceAccess Access; - public ResourceBindingSegment(int binding, int count, ResourceType type, ResourceStages stages, ResourceAccess access) + public ResourceBindingSegment(int binding, int count, ResourceType type, ResourceStages stages) { Binding = binding; Count = count; Type = type; Stages = stages; - Access = access; } } } diff --git a/src/Ryujinx.Graphics.Vulkan/ResourceLayoutBuilder.cs b/src/Ryujinx.Graphics.Vulkan/ResourceLayoutBuilder.cs index 0b87d800..f5ac3968 100644 --- a/src/Ryujinx.Graphics.Vulkan/ResourceLayoutBuilder.cs +++ b/src/Ryujinx.Graphics.Vulkan/ResourceLayoutBuilder.cs @@ -34,22 +34,12 @@ namespace Ryujinx.Graphics.Vulkan _ => throw new ArgumentException($"Invalid resource type \"{type}\"."), }; - ResourceAccess access = IsReadOnlyType(type) ? ResourceAccess.Read : ResourceAccess.ReadWrite; - _resourceDescriptors[setIndex].Add(new ResourceDescriptor(binding, 1, type, stages)); - _resourceUsages[setIndex].Add(new ResourceUsage(binding, type, stages, access)); + _resourceUsages[setIndex].Add(new ResourceUsage(binding, type, stages)); return this; } - private static bool IsReadOnlyType(ResourceType type) - { - return type == ResourceType.UniformBuffer || - type == ResourceType.Sampler || - type == ResourceType.TextureAndSampler || - type == ResourceType.BufferTexture; - } - public ResourceLayout Build() { var descriptors = new ResourceDescriptorCollection[TotalSets]; diff --git a/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs b/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs index 1e56d1e8..346fd916 100644 --- a/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs +++ b/src/Ryujinx.Graphics.Vulkan/ShaderCollection.cs @@ -162,8 +162,7 @@ namespace Ryujinx.Graphics.Vulkan currentDescriptor.Binding, currentCount, currentDescriptor.Type, - currentDescriptor.Stages, - ResourceAccess.ReadWrite)); + currentDescriptor.Stages)); } currentDescriptor = descriptor; @@ -181,8 +180,7 @@ namespace Ryujinx.Graphics.Vulkan currentDescriptor.Binding, currentCount, currentDescriptor.Type, - currentDescriptor.Stages, - ResourceAccess.ReadWrite)); + currentDescriptor.Stages)); } segments[setIndex] = currentSegments.ToArray(); @@ -206,16 +204,9 @@ namespace Ryujinx.Graphics.Vulkan { ResourceUsage usage = setUsages[setIndex].Usages[index]; - // If the resource is not accessed, we don't need to update it. - if (usage.Access == ResourceAccess.None) - { - continue; - } - if (currentUsage.Binding + currentCount != usage.Binding || currentUsage.Type != usage.Type || - currentUsage.Stages != usage.Stages || - currentUsage.Access != usage.Access) + currentUsage.Stages != usage.Stages) { if (currentCount != 0) { @@ -223,8 +214,7 @@ namespace Ryujinx.Graphics.Vulkan currentUsage.Binding, currentCount, currentUsage.Type, - currentUsage.Stages, - currentUsage.Access)); + currentUsage.Stages)); } currentUsage = usage; @@ -242,8 +232,7 @@ namespace Ryujinx.Graphics.Vulkan currentUsage.Binding, currentCount, currentUsage.Type, - currentUsage.Stages, - currentUsage.Access)); + currentUsage.Stages)); } segments[setIndex] = currentSegments.ToArray(); |