[Mesa-users] glGetString(GL_EXTENSIONS) omits mapbuffer extension

Simon Que sque at chromium.org
Fri Feb 17 18:09:25 PST 2012


TL;DR: GL_EXTENSIONS string does not contain "GL_OES_mapbuffer", but
the mapbuffer extension functions are still available through
eglGetProcAddress().

I am using Mesa GLESv2 with Linaro's glmark2 benchmark.  The benchmark
uses the functions "glMapBufferOES" and "glUnmapBufferOES" from the
"GL_OES_mapbuffer" extension, as seen in this function:

http://git.linaro.org/gitweb?p=people/afrantzis/glmark2.git;a=blob;f=src/canvas-x11-egl.cpp;h=f69e6f40a32832c5cb12eafc94afc8d5d320887e;hb=HEAD#l256

What this function does:
1. Call glGetString(GL_EXTENSIONS), to get a string containing all the
extensions.
2. Checks for "GL_OES_mapbuffer" in the extension list string from Step #1.
3. If "GL_OES_mapbuffer" is found in Step #2, it proceeds to get the
functions gl[Map|UnMap]BufferOES.
4. If it is not found, the function takes no action, and the benchmark
later fails because it was not given the map/unmap functions.

However, I was able to get the map/unmap functions by bypassing the
check in Step #2 and calling eglGetProcAddress() regardless of whether
the string contained the mapbuffer extension.  And then the benchmark
runs successfully, meaning that the mapbuffer extension actually does
exist, it is just not being exported in by glGetString(GL_EXTENSIONS).

For reference, I am building Mesa with the following configuration:
./configure --prefix=/usr --build=x86_64-pc-linux-gnu
--host=i686-pc-linux-gnu --mandir=/usr/share/man
--infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc
--localstatedir=/var/lib --disable-option-checking --with-driver=dri
--disable-glut --without-demos --enable-xcb --enable-egl
--enable-gles1 --enable-gles2 --enable-shared-glapi --enable-gallium
--disable-debug --enable-glx-tls --disable-glw --disable-motif
--enable-asm --with-dri-drivers=,i915,i965
--with-gallium-drivers=,swrast,i915 --with-egl-platforms=drm

The only GL_OES extensions contained in the GL_EXTENSIONS string are:
GL_OES_read_format
GL_OES_EGL_image

Simon


More information about the mesa-users mailing list