using Ryujinx.Graphics.GAL.Multithreading.Commands.Shader; using Ryujinx.Graphics.GAL.Multithreading.Model; using Ryujinx.Graphics.Shader; namespace Ryujinx.Graphics.GAL.Multithreading.Resources { class ThreadedShader : IShader { private ThreadedRenderer _renderer; private ShaderStage _stage; private string _code; public IShader Base; public ThreadedShader(ThreadedRenderer renderer, ShaderStage stage, string code) { _renderer = renderer; _stage = stage; _code = code; } internal void EnsureCreated() { if (_code != null && Base == null) { Base = _renderer.BaseRenderer.CompileShader(_stage, _code); _code = null; } } public void Dispose() { _renderer.New().Set(new TableRef(_renderer, this)); _renderer.QueueCommand(); } } }