CreateProgramCommand.cs 866 B

12345678910111213141516171819202122232425262728
  1. using Ryujinx.Graphics.GAL.Multithreading.Model;
  2. using Ryujinx.Graphics.GAL.Multithreading.Resources.Programs;
  3. namespace Ryujinx.Graphics.GAL.Multithreading.Commands.Renderer
  4. {
  5. struct CreateProgramCommand : IGALCommand
  6. {
  7. public CommandType CommandType => CommandType.CreateProgram;
  8. private TableRef<IProgramRequest> _request;
  9. public void Set(TableRef<IProgramRequest> request)
  10. {
  11. _request = request;
  12. }
  13. public static void Run(ref CreateProgramCommand command, ThreadedRenderer threaded, IRenderer renderer)
  14. {
  15. IProgramRequest request = command._request.Get(threaded);
  16. if (request.Threaded.Base == null)
  17. {
  18. request.Threaded.Base = request.Create(renderer);
  19. }
  20. threaded.Programs.ProcessQueue();
  21. }
  22. }
  23. }