mirror of
https://github.com/Ryujinx/SDL.git
synced 2025-02-26 10:36:55 +00:00
video: SDL_GL_GetAttribute needs to operate on FBO 0.
If a different FBO is bound, this would return incorrect results. Fixes #5082.
This commit is contained in:
parent
2363ddc330
commit
e4000c0284
|
@ -3842,10 +3842,23 @@ SDL_GL_GetAttribute(SDL_GLattr attr, int *value)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attachmentattrib && isAtLeastGL3((const char *) glGetStringFunc(GL_VERSION))) {
|
if (attachmentattrib && isAtLeastGL3((const char *) glGetStringFunc(GL_VERSION))) {
|
||||||
glGetFramebufferAttachmentParameterivFunc = SDL_GL_GetProcAddress("glGetFramebufferAttachmentParameteriv");
|
/* glGetFramebufferAttachmentParameteriv needs to operate on the window framebuffer for this, so bind FBO 0 if necessary. */
|
||||||
|
GLint current_fbo = 0;
|
||||||
|
void (APIENTRY *glGetIntegervFunc) (GLenum pname, GLint * params) = SDL_GL_GetProcAddress("glGetIntegerv");
|
||||||
|
void (APIENTRY *glBindFramebufferFunc) (GLenum target, GLuint fbo) = SDL_GL_GetProcAddress("glBindFramebuffer");
|
||||||
|
if (glGetIntegervFunc && glBindFramebufferFunc) {
|
||||||
|
glGetIntegervFunc(GL_DRAW_FRAMEBUFFER_BINDING, ¤t_fbo);
|
||||||
|
}
|
||||||
|
|
||||||
|
glGetFramebufferAttachmentParameterivFunc = SDL_GL_GetProcAddress("glGetFramebufferAttachmentParameteriv");
|
||||||
if (glGetFramebufferAttachmentParameterivFunc) {
|
if (glGetFramebufferAttachmentParameterivFunc) {
|
||||||
|
if (glBindFramebufferFunc && (current_fbo != 0)) {
|
||||||
|
glBindFramebufferFunc(GL_DRAW_FRAMEBUFFER, 0);
|
||||||
|
}
|
||||||
glGetFramebufferAttachmentParameterivFunc(GL_FRAMEBUFFER, attachment, attachmentattrib, (GLint *) value);
|
glGetFramebufferAttachmentParameterivFunc(GL_FRAMEBUFFER, attachment, attachmentattrib, (GLint *) value);
|
||||||
|
if (glBindFramebufferFunc && (current_fbo != 0)) {
|
||||||
|
glBindFramebufferFunc(GL_DRAW_FRAMEBUFFER, current_fbo);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue