0
0
Fork 0
mirror of https://github.com/ryujinx-mirror/ryujinx.git synced 2025-01-09 17:41:57 +00:00
ryujinx-fork/src/Ryujinx.Graphics.Vulkan
riperiperi 93cd327873
Vulkan: Device Local and higher invocation count for buffer conversions ()
Just some simple changes to the buffer conversion shaders. (stride conversion, D32S8 to D24S8)

The first change is using a device local buffer for converted vertex buffers, since they're only read/written on the GPU. These paths don't trigger on NVIDIA, but if you force them to use it demonstrates the full extent writing to host owned memory from compute absolutely destroys them. AMD GPUs are less heavily affected by this issue, but since the game in question was writing 230MB from compute, I imagine it should have some effect.

The second change is allowing the buffer conversion shaders to scale their work group count. While dividing the work between 32 invocations works OK for M1 macs, it's not so great for anything with more cores like AMD GPUs, which should be able to do a lot more parallel copies. Now, it scales by roughly 100 elements per invocation.

Some stride change cases could be improved further by either limiting vertex buffer size somehow (reading the index buffer could help, but is always risky) or only updating regions that changed, rather than invalidating the whole thing.
2023-09-02 17:58:15 -03:00
..
Effects Move support buffer update out of the backends () 2023-07-11 14:07:41 -03:00
MoltenVK [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
Queries Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
Shaders Vulkan: Device Local and higher invocation count for buffer conversions () 2023-09-02 17:58:15 -03:00
Auto.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
AutoFlushCounter.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
BackgroundResources.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
BitMap.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
BitMapStruct.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
BufferAllocationType.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
BufferHolder.cs Vulkan: Device Local and higher invocation count for buffer conversions () 2023-09-02 17:58:15 -03:00
BufferManager.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
BufferMirrorRangeList.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
BufferState.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
BufferUsageBitmap.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
CacheByRange.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
CommandBufferPool.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
CommandBufferScoped.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
Constants.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
DescriptorSetCollection.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
DescriptorSetManager.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
DescriptorSetUpdater.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
DisposableBuffer.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
DisposableBufferView.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
DisposableFramebuffer.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
DisposableImage.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
DisposableImageView.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
DisposableMemory.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
DisposablePipeline.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
DisposableRenderPass.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
DisposableSampler.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
EnumConversion.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
FenceHelper.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
FenceHolder.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
FormatCapabilities.cs Implement scaled vertex format emulation () 2023-08-16 08:30:33 -03:00
FormatConverter.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
FormatTable.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
FramebufferParams.cs Implement support for masked stencil clears on Vulkan () 2023-08-18 05:25:54 +00:00
HardwareCapabilities.cs Fix vote and shuffle shader instructions on AMD GPUs () 2023-08-16 21:31:07 -03:00
HashTableSlim.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
HelperShader.cs Vulkan: Device Local and higher invocation count for buffer conversions () 2023-09-02 17:58:15 -03:00
HostMemoryAllocator.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
IdList.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
IndexBufferPattern.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
IndexBufferState.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
MemoryAllocation.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
MemoryAllocator.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
MemoryAllocatorBlockList.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
MultiFenceHolder.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
NativeArray.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
PersistentFlushBuffer.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
PipelineBase.cs Implement support for masked stencil clears on Vulkan () 2023-08-18 05:25:54 +00:00
PipelineConverter.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
PipelineDynamicState.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
PipelineFull.cs Implement support for masked stencil clears on Vulkan () 2023-08-18 05:25:54 +00:00
PipelineHelperShader.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
PipelineLayoutCache.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
PipelineLayoutCacheEntry.cs Replace ShaderBindings with new ResourceLayout structure for Vulkan () 2023-05-21 14:04:21 -03:00
PipelineLayoutFactory.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
PipelineState.cs Fix vote and shuffle shader instructions on AMD GPUs () 2023-08-16 21:31:07 -03:00
PipelineUid.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
ResourceBindingSegment.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
ResourceLayoutBuilder.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
Ryujinx.Graphics.Vulkan.csproj Implement support for masked stencil clears on Vulkan () 2023-08-18 05:25:54 +00:00
SamplerHolder.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
SemaphoreHolder.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
Shader.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
ShaderCollection.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
SpecInfo.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
StagingBuffer.cs Vulkan: Periodically free regions of the staging buffer () 2023-08-16 23:06:46 +02:00
SyncManager.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
TextureBuffer.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
TextureCopy.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
TextureStorage.cs Fix some Vulkan validation errors () 2023-07-14 09:08:52 +02:00
TextureView.cs Fix some Vulkan validation errors () 2023-07-14 09:08:52 +02:00
Vendor.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
VertexBufferState.cs Vulkan: Buffer Mirrors for MacOS performance () 2023-08-14 14:18:47 -03:00
VertexBufferUpdater.cs [Ryujinx.Graphics.Vulkan] Address dotnet-format issues () 2023-07-01 12:31:42 +02:00
VulkanConfiguration.cs Fix some Vulkan validation errors () 2023-07-14 09:08:52 +02:00
VulkanDebugMessenger.cs Fix some Vulkan validation errors () 2023-07-14 09:08:52 +02:00
VulkanException.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
VulkanInitialization.cs Fix vote and shuffle shader instructions on AMD GPUs () 2023-08-16 21:31:07 -03:00
VulkanInstance.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
VulkanPhysicalDevice.cs Move solution and projects to src 2023-04-27 23:51:14 +02:00
VulkanRenderer.cs Geometry shader emulation for macOS () 2023-08-29 21:10:34 -03:00
Window.cs Implement color space passthrough option () 2023-08-07 18:54:05 +01:00
WindowBase.cs Implement color space passthrough option () 2023-08-07 18:54:05 +01:00