aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs
diff options
context:
space:
mode:
authorriperiperi <rhy3756547@hotmail.com>2024-02-17 03:21:37 +0000
committerGitHub <noreply@github.com>2024-02-17 00:21:37 -0300
commit31ed061beae779b0a750e1344c76a75af8275f91 (patch)
treee98519a8ab7bf6bc804d950c3ffc8c6c107928fd /src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs
parent4218311e6aa2a6b134e56f4206f9ef87d863419e (diff)
Vulkan: Improve texture barrier usage, timing and batching (#6240)1.1.1199
* 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>
Diffstat (limited to 'src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs')
-rw-r--r--src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs
index b4e966ca..243480a8 100644
--- a/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs
+++ b/src/Ryujinx.Graphics.GAL/Multithreading/Commands/SetImageCommand.cs
@@ -1,17 +1,20 @@
using Ryujinx.Graphics.GAL.Multithreading.Model;
using Ryujinx.Graphics.GAL.Multithreading.Resources;
+using Ryujinx.Graphics.Shader;
namespace Ryujinx.Graphics.GAL.Multithreading.Commands
{
struct SetImageCommand : IGALCommand, IGALCommand<SetImageCommand>
{
public readonly CommandType CommandType => CommandType.SetImage;
+ private ShaderStage _stage;
private int _binding;
private TableRef<ITexture> _texture;
private Format _imageFormat;
- public void Set(int binding, TableRef<ITexture> texture, Format imageFormat)
+ public void Set(ShaderStage stage, int binding, TableRef<ITexture> texture, Format imageFormat)
{
+ _stage = stage;
_binding = binding;
_texture = texture;
_imageFormat = imageFormat;
@@ -19,7 +22,7 @@ namespace Ryujinx.Graphics.GAL.Multithreading.Commands
public static void Run(ref SetImageCommand command, ThreadedRenderer threaded, IRenderer renderer)
{
- renderer.Pipeline.SetImage(command._binding, command._texture.GetAs<ThreadedTexture>(threaded)?.Base, command._imageFormat);
+ renderer.Pipeline.SetImage(command._stage, command._binding, command._texture.GetAs<ThreadedTexture>(threaded)?.Base, command._imageFormat);
}
}
}