From 611bec6e44effa90554c95ed1fe4dd4812893947 Mon Sep 17 00:00:00 2001 From: gdkchan <gab.dark.100@gmail.com> Date: Wed, 10 Nov 2021 15:37:49 -0300 Subject: Implement DrawTexture functionality (#2747) * Implement DrawTexture functionality * Non-NVIDIA support * Disable some features that should not affect draw texture (slow path) * Remove space from shader source * Match 2D engine names * Fix resolution scale and add missing XML docs * Disable transform feedback for draw texture fallback --- .../Multithreading/Commands/DrawTextureCommand.cs | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs (limited to 'Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs') diff --git a/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs new file mode 100644 index 00000000..41a852bb --- /dev/null +++ b/Ryujinx.Graphics.GAL/Multithreading/Commands/DrawTextureCommand.cs @@ -0,0 +1,31 @@ +using Ryujinx.Graphics.GAL.Multithreading.Model; +using Ryujinx.Graphics.GAL.Multithreading.Resources; + +namespace Ryujinx.Graphics.GAL.Multithreading.Commands +{ + struct DrawTextureCommand : IGALCommand + { + public CommandType CommandType => CommandType.DrawTexture; + private TableRef<ITexture> _texture; + private TableRef<ISampler> _sampler; + private Extents2DF _srcRegion; + private Extents2DF _dstRegion; + + public void Set(TableRef<ITexture> texture, TableRef<ISampler> sampler, Extents2DF srcRegion, Extents2DF dstRegion) + { + _texture = texture; + _sampler = sampler; + _srcRegion = srcRegion; + _dstRegion = dstRegion; + } + + public static void Run(ref DrawTextureCommand command, ThreadedRenderer threaded, IRenderer renderer) + { + renderer.Pipeline.DrawTexture( + command._texture.GetAs<ThreadedTexture>(threaded)?.Base, + command._sampler.GetAs<ThreadedSampler>(threaded)?.Base, + command._srcRegion, + command._dstRegion); + } + } +} -- cgit v1.2.3-70-g09d2