diff options
Diffstat (limited to 'Ryujinx.Graphics.OpenGL/Renderer.cs')
-rw-r--r-- | Ryujinx.Graphics.OpenGL/Renderer.cs | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/Ryujinx.Graphics.OpenGL/Renderer.cs b/Ryujinx.Graphics.OpenGL/Renderer.cs new file mode 100644 index 00000000..56ba7624 --- /dev/null +++ b/Ryujinx.Graphics.OpenGL/Renderer.cs @@ -0,0 +1,84 @@ +using OpenTK.Graphics.OpenGL; +using Ryujinx.Graphics.GAL; +using Ryujinx.Graphics.GAL.Sampler; +using Ryujinx.Graphics.GAL.Texture; +using Ryujinx.Graphics.Shader; + +namespace Ryujinx.Graphics.OpenGL +{ + public class Renderer : IRenderer + { + public IComputePipeline ComputePipeline { get; } + public IGraphicsPipeline GraphicsPipeline { get; } + + private Counters _counters; + + private Window _window; + + public IWindow Window => _window; + + internal TextureCopy TextureCopy { get; } + + public Renderer() + { + ComputePipeline = new ComputePipeline(this); + GraphicsPipeline = new GraphicsPipeline(); + + _counters = new Counters(); + + _window = new Window(); + + TextureCopy = new TextureCopy(); + } + + public IShader CompileShader(ShaderProgram shader) + { + return new Shader(shader); + } + + public IBuffer CreateBuffer(int size) + { + return new Buffer(size); + } + + public IProgram CreateProgram(IShader[] shaders) + { + return new Program(shaders); + } + + public ISampler CreateSampler(SamplerCreateInfo info) + { + return new Sampler(info); + } + + public ITexture CreateTexture(TextureCreateInfo info) + { + return new TextureStorage(this, info).CreateDefaultView(); + } + + public void FlushPipelines() + { + GL.Finish(); + } + + public Capabilities GetCapabilities() + { + return new Capabilities(HwCapabilities.SupportsAstcCompression); + } + + public ulong GetCounter(CounterType type) + { + return _counters.GetCounter(type); + } + + public void InitializeCounters() + { + _counters.Initialize(); + } + + public void ResetCounter(CounterType type) + { + _counters.ResetCounter(type); + } + } +} |