aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Vulkan/PipelineLayoutCacheEntry.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Graphics.Vulkan/PipelineLayoutCacheEntry.cs')
-rw-r--r--src/Ryujinx.Graphics.Vulkan/PipelineLayoutCacheEntry.cs26
1 files changed, 12 insertions, 14 deletions
diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineLayoutCacheEntry.cs b/src/Ryujinx.Graphics.Vulkan/PipelineLayoutCacheEntry.cs
index 2c966115..eeb25dc0 100644
--- a/src/Ryujinx.Graphics.Vulkan/PipelineLayoutCacheEntry.cs
+++ b/src/Ryujinx.Graphics.Vulkan/PipelineLayoutCacheEntry.cs
@@ -1,6 +1,7 @@
using Ryujinx.Graphics.GAL;
using Silk.NET.Vulkan;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
namespace Ryujinx.Graphics.Vulkan
{
@@ -16,7 +17,7 @@ namespace Ryujinx.Graphics.Vulkan
private readonly int[] _dsCacheCursor;
private int _dsLastCbIndex;
- private PipelineLayoutCacheEntry(VulkanRenderer gd, Device device)
+ private PipelineLayoutCacheEntry(VulkanRenderer gd, Device device, int setsCount)
{
_gd = gd;
_device = device;
@@ -25,27 +26,24 @@ namespace Ryujinx.Graphics.Vulkan
for (int i = 0; i < CommandBufferPool.MaxCommandBuffers; i++)
{
- _dsCache[i] = new List<Auto<DescriptorSetCollection>>[PipelineBase.DescriptorSetLayouts];
+ _dsCache[i] = new List<Auto<DescriptorSetCollection>>[setsCount];
- for (int j = 0; j < PipelineBase.DescriptorSetLayouts; j++)
+ for (int j = 0; j < _dsCache[i].Length; j++)
{
_dsCache[i][j] = new List<Auto<DescriptorSetCollection>>();
}
}
- _dsCacheCursor = new int[PipelineBase.DescriptorSetLayouts];
+ _dsCacheCursor = new int[setsCount];
}
- public PipelineLayoutCacheEntry(VulkanRenderer gd, Device device, uint stages, bool usePd) : this(gd, device)
- {
- DescriptorSetLayouts = PipelineLayoutFactory.Create(gd, device, stages, usePd, out var pipelineLayout);
- PipelineLayout = pipelineLayout;
- }
-
- public PipelineLayoutCacheEntry(VulkanRenderer gd, Device device, ShaderSource[] shaders) : this(gd, device)
+ public PipelineLayoutCacheEntry(
+ VulkanRenderer gd,
+ Device device,
+ ReadOnlyCollection<ResourceDescriptorCollection> setDescriptors,
+ bool usePushDescriptors) : this(gd, device, setDescriptors.Count)
{
- DescriptorSetLayouts = PipelineLayoutFactory.CreateMinimal(gd, device, shaders, out var pipelineLayout);
- PipelineLayout = pipelineLayout;
+ (DescriptorSetLayouts, PipelineLayout) = PipelineLayoutFactory.Create(gd, device, setDescriptors, usePushDescriptors);
}
public Auto<DescriptorSetCollection> GetNewDescriptorSetCollection(
@@ -58,7 +56,7 @@ namespace Ryujinx.Graphics.Vulkan
{
_dsLastCbIndex = commandBufferIndex;
- for (int i = 0; i < PipelineBase.DescriptorSetLayouts; i++)
+ for (int i = 0; i < _dsCacheCursor.Length; i++)
{
_dsCacheCursor[i] = 0;
}