Add support for large sampler arrays on Vulkan (#6489)
* Add support for large sampler arrays on Vulkan * Shader cache version bump * Format whitespace * Move DescriptorSetManager to PipelineLayoutCacheEntry to allow different pool sizes per layout * Handle array textures with different types on the same buffer * Somewhat better caching system * Avoid useless buffer data modification checks * Move redundant bindings update checking to the backend * Fix an issue where texture arrays would get the same bindings across stages on Vulkan * Backport some fixes from part 2 * Fix typo * PR feedback * Format whitespace * Add some missing XML docs
This commit is contained in:
parent
808803d97a
commit
3e6e0e4afa
83 changed files with 3263 additions and 955 deletions
|
@ -48,7 +48,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
internal MemoryAllocator MemoryAllocator { get; private set; }
|
||||
internal HostMemoryAllocator HostMemoryAllocator { get; private set; }
|
||||
internal CommandBufferPool CommandBufferPool { get; private set; }
|
||||
internal DescriptorSetManager DescriptorSetManager { get; private set; }
|
||||
internal PipelineLayoutCache PipelineLayoutCache { get; private set; }
|
||||
internal BackgroundResources BackgroundResources { get; private set; }
|
||||
internal Action<Action> InterruptAction { get; private set; }
|
||||
|
@ -414,8 +413,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
CommandBufferPool = new CommandBufferPool(Api, _device, Queue, QueueLock, queueFamilyIndex);
|
||||
|
||||
DescriptorSetManager = new DescriptorSetManager(_device, PipelineBase.DescriptorSetLayouts);
|
||||
|
||||
PipelineLayoutCache = new PipelineLayoutCache();
|
||||
|
||||
BackgroundResources = new BackgroundResources(this, _device);
|
||||
|
@ -507,6 +504,11 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
return BufferManager.CreateSparse(this, storageBuffers);
|
||||
}
|
||||
|
||||
public IImageArray CreateImageArray(int size, bool isBuffer)
|
||||
{
|
||||
return new ImageArray(this, size, isBuffer);
|
||||
}
|
||||
|
||||
public IProgram CreateProgram(ShaderSource[] sources, ShaderInfo info)
|
||||
{
|
||||
bool isCompute = sources.Length == 1 && sources[0].Stage == ShaderStage.Compute;
|
||||
|
@ -539,6 +541,11 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
return CreateTextureView(info);
|
||||
}
|
||||
|
||||
public ITextureArray CreateTextureArray(int size, bool isBuffer)
|
||||
{
|
||||
return new TextureArray(this, size, isBuffer);
|
||||
}
|
||||
|
||||
internal TextureView CreateTextureView(TextureCreateInfo info)
|
||||
{
|
||||
// This should be disposed when all views are destroyed.
|
||||
|
@ -925,7 +932,6 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
HelperShader.Dispose();
|
||||
_pipeline.Dispose();
|
||||
BufferManager.Dispose();
|
||||
DescriptorSetManager.Dispose();
|
||||
PipelineLayoutCache.Dispose();
|
||||
Barriers.Dispose();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue