Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f470a8e7 authored by Tao Wu's avatar Tao Wu
Browse files

opengl: Check GL_EXT_debug_marker before using it.

The old code just use eglGetProcAddress to get function pointers
without checking if GL_EXT_debug_marker is supported. This doesn't
work for some implementation like MESA. If GL_EXT_debug_marker isn't
supported, reset those function pointers to gl_noop.

Bug: 155935219
Test: manual - Run dEQP-GLES2.functional.debug_marker#random on ARCVM

Change-Id: I93fa8fb419ccde46fef6dd9a2a4ec84f15db3284
parent d451a471
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -309,6 +309,18 @@ void egl_context_t::onMakeCurrent(EGLSurface draw, EGLSurface read) {
            gl_extensions = exts;
            if (gl_extensions.find("GL_EXT_debug_marker") == std::string::npos) {
                gl_extensions.insert(0, "GL_EXT_debug_marker ");
                // eglGetProcAddress could return function pointers to these
                // functions while they actually don't work. Fix them now.
                __eglMustCastToProperFunctionPointerType* f;
                f = (__eglMustCastToProperFunctionPointerType*)&gEGLImpl.hooks[version]
                            ->gl.glInsertEventMarkerEXT;
                if (*f != gl_noop) *f = gl_noop;
                f = (__eglMustCastToProperFunctionPointerType*)&gEGLImpl.hooks[version]
                            ->gl.glPushGroupMarkerEXT;
                if (*f != gl_noop) *f = gl_noop;
                f = (__eglMustCastToProperFunctionPointerType*)&gEGLImpl.hooks[version]
                            ->gl.glPopGroupMarkerEXT;
                if (*f != gl_noop) *f = gl_noop;
            }

            // tokenize the supported extensions for the glGetStringi() wrapper