using Ryujinx.Graphics.GAL.Multithreading.Commands.TextureArray; using Ryujinx.Graphics.GAL.Multithreading.Model; using System.Linq; namespace Ryujinx.Graphics.GAL.Multithreading.Resources { /// /// Threaded representation of a texture and sampler array. /// class ThreadedTextureArray : ITextureArray { private readonly ThreadedRenderer _renderer; public ITextureArray Base; public ThreadedTextureArray(ThreadedRenderer renderer) { _renderer = renderer; } private TableRef Ref(T reference) { return new TableRef(_renderer, reference); } public void Dispose() { _renderer.New().Set(Ref(this)); _renderer.QueueCommand(); } public void SetSamplers(int index, ISampler[] samplers) { _renderer.New().Set(Ref(this), index, Ref(samplers.ToArray())); _renderer.QueueCommand(); } public void SetTextures(int index, ITexture[] textures) { _renderer.New().Set(Ref(this), index, Ref(textures.ToArray())); _renderer.QueueCommand(); } } }