diff options
author | riperiperi <rhy3756547@hotmail.com> | 2020-05-24 14:44:12 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-24 15:44:12 +0200 |
commit | d941f4c07099bd365f6b0e8efb1cd727ae422009 (patch) | |
tree | 83497457216b85749f7366ab9c1a1046d8d1e5cc /Ryujinx.Graphics.OpenGL/Pipeline.cs | |
parent | 6416bc193843702fc9d77be24e7b5b86c2b5e68c (diff) |
Remember bound framebuffer to avoid glGetInteger use. (#1273)
glGetInteger seems to sync with GPU which is less than ideal, and slowing down texture copies.
Diffstat (limited to 'Ryujinx.Graphics.OpenGL/Pipeline.cs')
-rw-r--r-- | Ryujinx.Graphics.OpenGL/Pipeline.cs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.OpenGL/Pipeline.cs b/Ryujinx.Graphics.OpenGL/Pipeline.cs index 05383f5d..affb4efc 100644 --- a/Ryujinx.Graphics.OpenGL/Pipeline.cs +++ b/Ryujinx.Graphics.OpenGL/Pipeline.cs @@ -28,6 +28,9 @@ namespace Ryujinx.Graphics.OpenGL private bool _depthTest; private bool _hasDepthBuffer; + private int _boundDrawFramebuffer; + private int _boundReadFramebuffer; + private TextureBase _unit0Texture; private ClipOrigin _clipOrigin; @@ -956,12 +959,18 @@ namespace Ryujinx.Graphics.OpenGL { _framebuffer = new Framebuffer(); - _framebuffer.Bind(); + int boundHandle = _framebuffer.Bind(); + _boundDrawFramebuffer = _boundReadFramebuffer = boundHandle; GL.Enable(EnableCap.FramebufferSrgb); } } + internal (int drawHandle, int readHandle) GetBoundFramebuffers() + { + return (_boundDrawFramebuffer, _boundReadFramebuffer); + } + private void UpdateDepthTest() { // Enabling depth operations is only valid when we have |