Delete ResourceAccess (#5626)
* Delete ResourceAccess * Set write flag for vertex/geometry as compute output buffers
This commit is contained in:
parent
f631933e60
commit
ddb6493896
7 changed files with 37 additions and 70 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue