Vulkan: Improve texture barrier usage, timing and batching (#6240)
* WIP barrier batch * Add store op to image usage barrier * Dispose the barrier batch * Fix encoding? * Handle read and write on the load op barrier. Load op consumes read accesses but does not add one, as the only other operation that can read is another load. * Simplify null check * Insert barriers on program change in case stale bindings are reintroduced * Not sure how I messed this one up * Improve location of bindings barrier update This is also important for emergency deferred clear * Update src/Ryujinx.Graphics.Vulkan/BarrierBatch.cs Co-authored-by: Mary Guillemard <thog@protonmail.com> --------- Co-authored-by: Mary Guillemard <thog@protonmail.com>
This commit is contained in:
parent
4218311e6a
commit
31ed061bea
18 changed files with 442 additions and 176 deletions
|
@ -68,6 +68,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
internal HelperShader HelperShader { get; private set; }
|
||||
internal PipelineFull PipelineInternal => _pipeline;
|
||||
|
||||
internal BarrierBatch Barriers { get; private set; }
|
||||
|
||||
public IPipeline Pipeline => _pipeline;
|
||||
|
||||
public IWindow Window => _window;
|
||||
|
@ -381,6 +383,8 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
|
||||
HelperShader = new HelperShader(this, _device);
|
||||
|
||||
Barriers = new BarrierBatch(this);
|
||||
|
||||
_counters = new Counters(this, _device, _pipeline);
|
||||
}
|
||||
|
||||
|
@ -914,6 +918,7 @@ namespace Ryujinx.Graphics.Vulkan
|
|||
BufferManager.Dispose();
|
||||
DescriptorSetManager.Dispose();
|
||||
PipelineLayoutCache.Dispose();
|
||||
Barriers.Dispose();
|
||||
|
||||
MemoryAllocator.Dispose();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue