SourceProgramRequest.cs 770 B

123456789101112131415161718192021222324252627282930
  1. using System.Linq;
  2. namespace Ryujinx.Graphics.GAL.Multithreading.Resources.Programs
  3. {
  4. class SourceProgramRequest : IProgramRequest
  5. {
  6. public ThreadedProgram Threaded { get; set; }
  7. private IShader[] _shaders;
  8. public SourceProgramRequest(ThreadedProgram program, IShader[] shaders)
  9. {
  10. Threaded = program;
  11. _shaders = shaders;
  12. }
  13. public IProgram Create(IRenderer renderer)
  14. {
  15. IShader[] shaders = _shaders.Select(shader =>
  16. {
  17. var threaded = (ThreadedShader)shader;
  18. threaded?.EnsureCreated();
  19. return threaded?.Base;
  20. }).ToArray();
  21. return renderer.CreateProgram(shaders);
  22. }
  23. }
  24. }