diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2023-05-21 14:04:21 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-21 14:04:21 -0300 |
| commit | 5626f2ca1c49342b20772224f956147df6957b5a (patch) | |
| tree | 9e60d080754e3686d75cc8606db5967126d2c1b9 /src/Ryujinx.Graphics.Vulkan/Effects/FsrScalingFilter.cs | |
| parent | 402f05b8ef013807997589ecc0a8ff50267dcd23 (diff) | |
Replace ShaderBindings with new ResourceLayout structure for Vulkan (#5025)
* Introduce ResourceLayout
* Part 1: Use new ResourceSegments array on UpdateAndBind
* Part 2: Use ResourceLayout to build PipelineLayout
* Delete old code
* XML docs
* Fix shader cache load NRE
* Fix typo
Diffstat (limited to 'src/Ryujinx.Graphics.Vulkan/Effects/FsrScalingFilter.cs')
| -rw-r--r-- | src/Ryujinx.Graphics.Vulkan/Effects/FsrScalingFilter.cs | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/Ryujinx.Graphics.Vulkan/Effects/FsrScalingFilter.cs b/src/Ryujinx.Graphics.Vulkan/Effects/FsrScalingFilter.cs index 5f15f15f..e9952126 100644 --- a/src/Ryujinx.Graphics.Vulkan/Effects/FsrScalingFilter.cs +++ b/src/Ryujinx.Graphics.Vulkan/Effects/FsrScalingFilter.cs @@ -54,29 +54,29 @@ namespace Ryujinx.Graphics.Vulkan.Effects var scalingShader = EmbeddedResources.Read("Ryujinx.Graphics.Vulkan/Effects/Shaders/FsrScaling.spv"); var sharpeningShader = EmbeddedResources.Read("Ryujinx.Graphics.Vulkan/Effects/Shaders/FsrSharpening.spv"); - var computeBindings = new ShaderBindings( - new[] { 2 }, - Array.Empty<int>(), - new[] { 1 }, - new[] { 0 }); - - var sharpeningBindings = new ShaderBindings( - new[] { 2, 3, 4 }, - Array.Empty<int>(), - new[] { 1 }, - new[] { 0 }); + var scalingResourceLayout = new ResourceLayoutBuilder() + .Add(ResourceStages.Compute, ResourceType.UniformBuffer, 2) + .Add(ResourceStages.Compute, ResourceType.TextureAndSampler, 1) + .Add(ResourceStages.Compute, ResourceType.Image, 0).Build(); + + var sharpeningResourceLayout = new ResourceLayoutBuilder() + .Add(ResourceStages.Compute, ResourceType.UniformBuffer, 2) + .Add(ResourceStages.Compute, ResourceType.UniformBuffer, 3) + .Add(ResourceStages.Compute, ResourceType.UniformBuffer, 4) + .Add(ResourceStages.Compute, ResourceType.TextureAndSampler, 1) + .Add(ResourceStages.Compute, ResourceType.Image, 0).Build(); _sampler = _renderer.CreateSampler(GAL.SamplerCreateInfo.Create(MinFilter.Linear, MagFilter.Linear)); _scalingProgram = _renderer.CreateProgramWithMinimalLayout(new[] { - new ShaderSource(scalingShader, computeBindings, ShaderStage.Compute, TargetLanguage.Spirv) - }); + new ShaderSource(scalingShader, ShaderStage.Compute, TargetLanguage.Spirv) + }, scalingResourceLayout); _sharpeningProgram = _renderer.CreateProgramWithMinimalLayout(new[] { - new ShaderSource(sharpeningShader, sharpeningBindings, ShaderStage.Compute, TargetLanguage.Spirv) - }); + new ShaderSource(sharpeningShader, ShaderStage.Compute, TargetLanguage.Spirv) + }, sharpeningResourceLayout); } public void Run( @@ -160,10 +160,8 @@ namespace Ryujinx.Graphics.Vulkan.Effects _pipeline.ComputeBarrier(); // Sharpening pass - _pipeline.SetCommandBuffer(cbs); _pipeline.SetProgram(_sharpeningProgram); _pipeline.SetTextureAndSampler(ShaderStage.Compute, 1, _intermediaryTexture, _sampler); - _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(2, bufferRanges) }); var sharpeningRange = new BufferRange(sharpeningBufferHandle, 0, sizeof(float)); _pipeline.SetUniformBuffers(stackalloc[] { new BufferAssignment(4, sharpeningRange) }); _pipeline.SetImage(0, destinationTexture); |
