using Ryujinx.Graphics.GAL.Multithreading.Commands.Program; using Ryujinx.Graphics.GAL.Multithreading.Model; namespace Ryujinx.Graphics.GAL.Multithreading.Resources { class ThreadedProgram : IProgram { private ThreadedRenderer _renderer; public IProgram Base; internal bool Compiled; public ThreadedProgram(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 byte[] GetBinary() { ResultBox box = new ResultBox(); _renderer.New().Set(Ref(this), Ref(box)); _renderer.InvokeCommand(); return box.Result; } public ProgramLinkStatus CheckProgramLink(bool blocking) { ResultBox box = new ResultBox(); _renderer.New().Set(Ref(this), blocking, Ref(box)); _renderer.InvokeCommand(); return box.Result; } } }