IRenderer.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Ryujinx.Common.Configuration;
  2. using Ryujinx.Graphics.Shader;
  3. using System;
  4. namespace Ryujinx.Graphics.GAL
  5. {
  6. public interface IRenderer : IDisposable
  7. {
  8. event EventHandler<ScreenCaptureImageInfo> ScreenCaptured;
  9. IPipeline Pipeline { get; }
  10. IWindow Window { get; }
  11. void BackgroundContextAction(Action action);
  12. IShader CompileShader(ShaderStage stage, string code);
  13. BufferHandle CreateBuffer(int size);
  14. IProgram CreateProgram(IShader[] shaders, TransformFeedbackDescriptor[] transformFeedbackDescriptors);
  15. ISampler CreateSampler(SamplerCreateInfo info);
  16. ITexture CreateTexture(TextureCreateInfo info, float scale);
  17. void CreateSync(ulong id);
  18. void DeleteBuffer(BufferHandle buffer);
  19. ReadOnlySpan<byte> GetBufferData(BufferHandle buffer, int offset, int size);
  20. Capabilities GetCapabilities();
  21. IProgram LoadProgramBinary(byte[] programBinary);
  22. void SetBufferData(BufferHandle buffer, int offset, ReadOnlySpan<byte> data);
  23. void UpdateCounters();
  24. void PreFrame();
  25. ICounterEvent ReportCounter(CounterType type, EventHandler<ulong> resultHandler);
  26. void ResetCounter(CounterType type);
  27. void WaitSync(ulong id);
  28. void Initialize(GraphicsDebugLevel logLevel);
  29. void Screenshot();
  30. }
  31. }