Ryujinx/src/Ryujinx.Graphics.Vulkan
riperiperi ca59c3f499
Vulkan: Feedback loop detection and barriers (#7226)
* Vulkan: Feedback loop improvements

This PR allows the Vulkan backend to detect attachment feedback loops. These are currently used in the following ways:

- Partial use of VK_EXT_attachment_feedback_loop_layout
  - All renderable textures have AttachmentFeedbackLoopBitExt
  - Compile pipelines with Color/DepthStencil feedback loop flags when present
- Support using FragmentBarrier for feedback loops (fixes regressions from https://github.com/Ryujinx/Ryujinx/pull/7012 )

TODO:
- AMD GPUs may need layout transitions for it to properly allow textures to be used in feedback loops.
- Use dynamic state for feedback loops. The background pipeline will always miss since feedback loop state isn't known on the GPU project.
- How is the barrier dependency flag used? (DXVK just ignores it, there's no vulkan validation...)
- Improve subpass dependencies to fix validation errors

* Mark field readonly

* Add feedback loop dynamic state

* fix: add MoltenVK resolver workaround

fix: add MoltenVK resolver workaround

* Formatting

* Fix more complaints

* RADV dcc workaround

* Use dynamic state properly, cleanup.

* Use aspects flags in more places
2024-09-01 21:28:16 -03:00
..
Effects Vulkan: Defer guest barriers, and improve image barrier timings (#7012) 2024-07-17 20:21:32 -03:00
MoltenVK Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
Queries Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
Shaders Vulkan: Device Local and higher invocation count for buffer conversions (#5623) 2023-09-02 17:58:15 -03:00
Auto.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
AutoFlushCounter.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BackgroundResources.cs Use draw clear on Adreno, instead of vkCmdClearAttachments (#7013) 2024-07-10 17:52:45 -03:00
BarrierBatch.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
BitMap.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BitMapStruct.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BufferAllocationType.cs Implement support for multi-range buffers using Vulkan sparse mappings (#5427) 2023-12-04 20:30:19 +01:00
BufferHolder.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
BufferManager.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
BufferMirrorRangeList.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
BufferState.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
BufferUsageBitmap.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
CacheByRange.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
CommandBufferPool.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
CommandBufferScoped.cs Remove CommandBufferScoped Dependencies (#6958) 2024-07-16 17:01:06 -03:00
Constants.cs Vulkan: Use push descriptors for uniform bindings when possible (#6154) 2024-02-16 21:41:30 -03:00
DescriptorSetCollection.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
DescriptorSetManager.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
DescriptorSetTemplate.cs Add support for bindless textures from shader input (vertex buffer) on Vulkan (#6577) 2024-04-22 15:05:55 -03:00
DescriptorSetTemplateUpdater.cs Vulkan: Use push descriptors for uniform bindings when possible (#6154) 2024-02-16 21:41:30 -03:00
DescriptorSetUpdater.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
DisposableBuffer.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableBufferView.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableFramebuffer.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableImage.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableImageView.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableMemory.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposablePipeline.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableRenderPass.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
DisposableSampler.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
EnumConversion.cs GPU: Migrate buffers on GPU project, pre-emptively flush device local mappings (#6794) 2024-05-19 16:53:37 -03:00
FeedbackLoopAspects.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
FenceHelper.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
FenceHolder.cs Disallow concurrent fence waits on Adreno (#7001) 2024-07-07 19:33:28 -03:00
FormatCapabilities.cs Implement X8Z24 texture format (#6315) 2024-02-15 19:06:26 -03:00
FormatConverter.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
FormatTable.cs Implement X8Z24 texture format (#6315) 2024-02-15 19:06:26 -03:00
FramebufferParams.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
HardwareCapabilities.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
HashTableSlim.cs Vulkan: Add Render Pass / Framebuffer Cache (#6182) 2024-01-31 23:49:50 +01:00
HelperShader.cs Vulkan: Defer guest barriers, and improve image barrier timings (#7012) 2024-07-17 20:21:32 -03:00
HostMemoryAllocator.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
IdList.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
ImageArray.cs Fix NRE when using buffer image array (#7159) 2024-08-21 00:49:17 +01:00
IndexBufferPattern.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
IndexBufferState.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
MemoryAllocation.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
MemoryAllocator.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
MemoryAllocatorBlockList.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
MultiFenceHolder.cs Disallow concurrent fence waits on Adreno (#7001) 2024-07-07 19:33:28 -03:00
NativeArray.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
PersistentFlushBuffer.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
PipelineBase.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
PipelineConverter.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
PipelineDynamicState.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
PipelineFull.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
PipelineHelperShader.cs Vulkan: Add Render Pass / Framebuffer Cache (#6182) 2024-01-31 23:49:50 +01:00
PipelineLayoutCache.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
PipelineLayoutCacheEntry.cs Vulkan separate descriptor set fixes (#6895) 2024-06-02 22:40:28 -03:00
PipelineLayoutFactory.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
PipelineState.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
PipelineUid.cs GPU: Remove unused dynamic state and pipeline settings (#6796) 2024-06-02 22:32:10 -03:00
RenderPassCacheKey.cs Vulkan: Add Render Pass / Framebuffer Cache (#6182) 2024-01-31 23:49:50 +01:00
RenderPassHolder.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
ResourceArray.cs Fix NRE when using buffer image array (#7159) 2024-08-21 00:49:17 +01:00
ResourceBindingSegment.cs Add support for large sampler arrays on Vulkan (#6489) 2024-04-07 18:25:55 -03:00
ResourceLayoutBuilder.cs Vulkan: Defer guest barriers, and improve image barrier timings (#7012) 2024-07-17 20:21:32 -03:00
Ryujinx.Graphics.Vulkan.csproj Migrate to .NET 8 (#5887) 2023-11-15 17:41:31 +01:00
SamplerHolder.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
Shader.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
ShaderCollection.cs Vulkan: Defer guest barriers, and improve image barrier timings (#7012) 2024-07-17 20:21:32 -03:00
SpecInfo.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
StagingBuffer.cs Vulkan: Use staging buffer for temporary constants (#6168) 2024-01-25 19:29:53 +01:00
SyncManager.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues (#5378) 2023-07-01 12:31:42 +02:00
TextureArray.cs Fix NRE when using buffer image array (#7159) 2024-08-21 00:49:17 +01:00
TextureBuffer.cs Texture loading: reduce memory allocations (#6623) 2024-04-14 17:06:14 -03:00
TextureCopy.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
TextureStorage.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
TextureView.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
Vendor.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
VertexBufferState.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
VertexBufferUpdater.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00
VulkanConfiguration.cs Vulkan: Use push descriptors for uniform bindings when possible (#6154) 2024-02-16 21:41:30 -03:00
VulkanDebugMessenger.cs Fix some Vulkan validation errors (#5452) 2023-07-14 09:08:52 +02:00
VulkanException.cs Allow skipping draws with broken pipeline variants on Vulkan (#5807) 2024-01-26 13:58:57 -03:00
VulkanInitialization.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
VulkanInstance.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
VulkanPhysicalDevice.cs Use driver name instead of vendor name in the status bar for Vulkan. (#6146) 2024-01-26 01:07:20 +01:00
VulkanRenderer.cs Vulkan: Feedback loop detection and barriers (#7226) 2024-09-01 21:28:16 -03:00
Window.cs Vulkan: Update Silk.NET to 2.21 (#7266) 2024-09-01 17:33:11 -03:00
WindowBase.cs editorconfig: Set default encoding to UTF-8 (#5793) 2023-12-04 14:17:13 +01:00