diff options
author | Laszlo Agocs <laszlo.agocs@digia.com> | 2014-08-06 16:08:14 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@digia.com> | 2014-08-07 09:03:32 +0200 |
commit | 1b1dd22486155c21fc0d10bb07b7bbb4324c2bf9 (patch) | |
tree | e875c62d6a69cb72e76135b68edab364bfcfa0d4 /src/gui/opengl | |
parent | ed7894dd77962fb4e5fa58706bd99f69a3f333c3 (diff) |
Do not use GLES3 functions in a GLES2 context
Just like the recent fix for VAOs on iOS, where we might deploy a
GLES3-enabled binary on a GLES2-only system, the same issue is
potentially present for blitFramebuffer and renderbufferStorageMultisample.
Handle this properly.
Change-Id: I87268478f1de479dc2c106b46d6e9b84e866fcd5
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Diffstat (limited to 'src/gui/opengl')
-rw-r--r-- | src/gui/opengl/qopenglfunctions.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp index f3d3d0b47b..877cc6864d 100644 --- a/src/gui/opengl/qopenglfunctions.cpp +++ b/src/gui/opengl/qopenglfunctions.cpp @@ -3195,11 +3195,12 @@ static void QOPENGLF_APIENTRY qopenglfResolveBlitFramebuffer(GLint srcX0, GLint GLbitfield mask, GLenum filter) { #ifdef QT_OPENGL_ES_3 - ::glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); -#else + if (QOpenGLContext::currentContext()->format().majorVersion() >= 3) + ::glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); + else +#endif RESOLVE_FUNC_VOID(ResolveEXT | ResolveANGLE | ResolveNV, BlitFramebuffer) (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter); -#endif } static void QOPENGLF_APIENTRY qopenglfResolveRenderbufferStorageMultisample(GLenum target, GLsizei samples, @@ -3207,11 +3208,12 @@ static void QOPENGLF_APIENTRY qopenglfResolveRenderbufferStorageMultisample(GLen GLsizei width, GLsizei height) { #ifdef QT_OPENGL_ES_3 - ::glRenderbufferStorageMultisample(target, samples, internalFormat, width, height); -#else + if (QOpenGLContext::currentContext()->format().majorVersion() >= 3) + ::glRenderbufferStorageMultisample(target, samples, internalFormat, width, height); + else +#endif RESOLVE_FUNC_VOID(ResolveEXT | ResolveANGLE | ResolveNV, RenderbufferStorageMultisample) (target, samples, internalFormat, width, height); -#endif } static void QOPENGLF_APIENTRY qopenglfResolveGetBufferSubData(GLenum target, qopengl_GLintptr offset, qopengl_GLsizeiptr size, GLvoid *data) |