SourceProgramRequest.cs 1012 B

1234567891011121314151617181920212223242526272829303132
  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. private TransformFeedbackDescriptor[] _transformFeedbackDescriptors;
  9. public SourceProgramRequest(ThreadedProgram program, IShader[] shaders, TransformFeedbackDescriptor[] transformFeedbackDescriptors)
  10. {
  11. Threaded = program;
  12. _shaders = shaders;
  13. _transformFeedbackDescriptors = transformFeedbackDescriptors;
  14. }
  15. public IProgram Create(IRenderer renderer)
  16. {
  17. IShader[] shaders = _shaders.Select(shader =>
  18. {
  19. var threaded = (ThreadedShader)shader;
  20. threaded?.EnsureCreated();
  21. return threaded?.Base;
  22. }).ToArray();
  23. return renderer.CreateProgram(shaders, _transformFeedbackDescriptors);
  24. }
  25. }
  26. }