[Mesa-users] glCreateShader(GL_TESS_CONTROL_SHADER) causes glGetError()=INVALID_ENUM

Brian Paul brianp at vmware.com
Tue Aug 19 06:46:37 PDT 2014


On 08/18/2014 04:31 PM, patrick keshishian wrote:
> Greetings,
>
> This is my first post here, and I'm totally green with Mesa/
> OpenGL. So, I'm not certain if this is the proper list for my
> question(s). Feel free to direct me elsewhere in that case.
> I was hoping to lurk for some time before posting, but the
> list seems pretty quiet.
>
> I'm trying to wrap my head around all the terminology,
> different libraries, versions, etc. It's all a bit overwhelming
> to a newbie.
>
> With that introduction ...
>
> Is it expected that GLenum types are defined for "future"
> versions GL versions? e.g., GL_TESS_CONTROL_SHADER
> and GL_TESS_EVALUATION_SHADER require GL 4.0, yet,
> are defined in GL/glext.h.

There's lots of stuff defined in glext.h that won't be available in any 
particular OpenGL driver.


> This leads to confusion, when the source code making
> use of said GLenum compiles, but fails at runtime.
>
> Or am I completely confused and doing things the way
> not meant to be done?
>
> Appreciate any direction/advice from seasoned folks.

There's lots of vendors/versions of OpenGL.  You could build an OpenGL 
app that works fine on your system with a certain GPU/driver but fail 
miserably on another platform because it has a different GPU/driver and, 
thus, a different feature set.

So, OpenGL apps need to check at runtime what version of GL and which GL 
extensions are available.  This is typically done by calling 
glGetString(GL_VERSION), glGetString(GL_EXTENSIONS) and 
glXGetProcAddress().  This is all well-documented elsewhere (try looking 
for an OpenGL FAQ).

In the particular case above, tessellation shaders aren't available 
unless you have OpenGL 4.0 or the GL_ARB_tessellation_shader extension. 
  Mesa has neither yet.

-Brian



More information about the mesa-users mailing list