aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Vulkan/Effects/FsrScalingFilter.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2023-05-21 14:04:21 -0300
committerGitHub <noreply@github.com>2023-05-21 14:04:21 -0300
commit5626f2ca1c49342b20772224f956147df6957b5a (patch)
tree9e60d080754e3686d75cc8606db5967126d2c1b9 /src/Ryujinx.Graphics.Vulkan/Effects/FsrScalingFilter.cs
parent402f05b8ef013807997589ecc0a8ff50267dcd23 (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.cs32
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);