aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.OpenGL/Pipeline.cs
diff options
context:
space:
mode:
authorriperiperi <rhy3756547@hotmail.com>2020-05-24 14:44:12 +0100
committerGitHub <noreply@github.com>2020-05-24 15:44:12 +0200
commitd941f4c07099bd365f6b0e8efb1cd727ae422009 (patch)
tree83497457216b85749f7366ab9c1a1046d8d1e5cc /Ryujinx.Graphics.OpenGL/Pipeline.cs
parent6416bc193843702fc9d77be24e7b5b86c2b5e68c (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.cs11
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