aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs')
-rw-r--r--src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs33
1 files changed, 8 insertions, 25 deletions
diff --git a/src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs b/src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs
index cbac1cd4..b09a0667 100644
--- a/src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs
+++ b/src/Ryujinx.Graphics.Vulkan/DescriptorSetUpdater.cs
@@ -596,36 +596,19 @@ namespace Ryujinx.Graphics.Vulkan
}
}
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
private void Initialize(CommandBufferScoped cbs, int setIndex, DescriptorSetCollection dsc)
{
- var dummyBuffer = _dummyBuffer?.GetBuffer().Get(cbs).Value ?? default;
+ // We don't support clearing texture descriptors currently.
+ if (setIndex != PipelineBase.UniformSetIndex && setIndex != PipelineBase.StorageSetIndex)
+ {
+ return;
+ }
- uint stages = _program.Stages;
+ var dummyBuffer = _dummyBuffer?.GetBuffer().Get(cbs).Value ?? default;
- while (stages != 0)
+ foreach (ResourceBindingSegment segment in _program.ClearSegments[setIndex])
{
- int stage = BitOperations.TrailingZeroCount(stages);
- stages &= ~(1u << stage);
-
- if (setIndex == PipelineBase.UniformSetIndex)
- {
- dsc.InitializeBuffers(
- 0,
- 1 + stage * Constants.MaxUniformBuffersPerStage,
- Constants.MaxUniformBuffersPerStage,
- DescriptorType.UniformBuffer,
- dummyBuffer);
- }
- else if (setIndex == PipelineBase.StorageSetIndex)
- {
- dsc.InitializeBuffers(
- 0,
- stage * Constants.MaxStorageBuffersPerStage,
- Constants.MaxStorageBuffersPerStage,
- DescriptorType.StorageBuffer,
- dummyBuffer);
- }
+ dsc.InitializeBuffers(0, segment.Binding, segment.Count, segment.Type.Convert(), dummyBuffer);
}
}