Jump to content
  • Advertisement
Sign in to follow this  
LHLaurini

OpenGL Help understanding glewinfo.txt

This topic is 1072 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I was doing some tests with OpenGL in my laptop, which has an Intel HD Graphics 3000, compatible with DirectX 10.1 and OpenGL 3.1. I compiled glew and saw an interesting executable named glewinfo. I opened it and it generated a glewinfo.txt file. Then I took a look at it.

GLEW version 1.13.0
Reporting capabilities of pixelformat 3
Running on a Intel(R) HD Graphics 3000 from Intel
OpenGL version 3.1.0 - Build 9.17.10.4229 is supported

GL_VERSION_1_1:                                                OK 
---------------

GL_VERSION_1_2:                                                OK 
---------------
  glCopyTexSubImage3D:                                         OK
  glDrawRangeElements:                                         OK
  glTexImage3D:                                                OK
  glTexSubImage3D:                                             OK

GL_VERSION_1_2_1:                                              OK 
-----------------

GL_VERSION_1_3:                                                OK 
---------------
  glActiveTexture:                                             OK
  glClientActiveTexture:                                       OK
  glCompressedTexImage1D:                                      OK
  glCompressedTexImage2D:                                      OK
  glCompressedTexImage3D:                                      OK
  glCompressedTexSubImage1D:                                   OK
  glCompressedTexSubImage2D:                                   OK
  glCompressedTexSubImage3D:                                   OK
  glGetCompressedTexImage:                                     OK
  glLoadTransposeMatrixd:                                      OK
  glLoadTransposeMatrixf:                                      OK
  glMultTransposeMatrixd:                                      OK
  glMultTransposeMatrixf:                                      OK
  glMultiTexCoord1d:                                           OK
  glMultiTexCoord1dv:                                          OK
  glMultiTexCoord1f:                                           OK
  glMultiTexCoord1fv:                                          OK
  glMultiTexCoord1i:                                           OK
  glMultiTexCoord1iv:                                          OK
  glMultiTexCoord1s:                                           OK
  glMultiTexCoord1sv:                                          OK
  glMultiTexCoord2d:                                           OK
  glMultiTexCoord2dv:                                          OK
  glMultiTexCoord2f:                                           OK
  glMultiTexCoord2fv:                                          OK
  glMultiTexCoord2i:                                           OK
  glMultiTexCoord2iv:                                          OK
  glMultiTexCoord2s:                                           OK
  glMultiTexCoord2sv:                                          OK
  glMultiTexCoord3d:                                           OK
  glMultiTexCoord3dv:                                          OK
  glMultiTexCoord3f:                                           OK
  glMultiTexCoord3fv:                                          OK
  glMultiTexCoord3i:                                           OK
  glMultiTexCoord3iv:                                          OK
  glMultiTexCoord3s:                                           OK
  glMultiTexCoord3sv:                                          OK
  glMultiTexCoord4d:                                           OK
  glMultiTexCoord4dv:                                          OK
  glMultiTexCoord4f:                                           OK
  glMultiTexCoord4fv:                                          OK
  glMultiTexCoord4i:                                           OK
  glMultiTexCoord4iv:                                          OK
  glMultiTexCoord4s:                                           OK
  glMultiTexCoord4sv:                                          OK
  glSampleCoverage:                                            OK

GL_VERSION_1_4:                                                OK 
---------------
  glBlendColor:                                                OK
  glBlendEquation:                                             OK
  glBlendFuncSeparate:                                         OK
  glFogCoordPointer:                                           OK
  glFogCoordd:                                                 OK
  glFogCoorddv:                                                OK
  glFogCoordf:                                                 OK
  glFogCoordfv:                                                OK
  glMultiDrawArrays:                                           OK
  glMultiDrawElements:                                         OK
  glPointParameterf:                                           OK
  glPointParameterfv:                                          OK
  glPointParameteri:                                           OK
  glPointParameteriv:                                          OK
  glSecondaryColor3b:                                          OK
  glSecondaryColor3bv:                                         OK
  glSecondaryColor3d:                                          OK
  glSecondaryColor3dv:                                         OK
  glSecondaryColor3f:                                          OK
  glSecondaryColor3fv:                                         OK
  glSecondaryColor3i:                                          OK
  glSecondaryColor3iv:                                         OK
  glSecondaryColor3s:                                          OK
  glSecondaryColor3sv:                                         OK
  glSecondaryColor3ub:                                         OK
  glSecondaryColor3ubv:                                        OK
  glSecondaryColor3ui:                                         OK
  glSecondaryColor3uiv:                                        OK
  glSecondaryColor3us:                                         OK
  glSecondaryColor3usv:                                        OK
  glSecondaryColorPointer:                                     OK
  glWindowPos2d:                                               OK
  glWindowPos2dv:                                              OK
  glWindowPos2f:                                               OK
  glWindowPos2fv:                                              OK
  glWindowPos2i:                                               OK
  glWindowPos2iv:                                              OK
  glWindowPos2s:                                               OK
  glWindowPos2sv:                                              OK
  glWindowPos3d:                                               OK
  glWindowPos3dv:                                              OK
  glWindowPos3f:                                               OK
  glWindowPos3fv:                                              OK
  glWindowPos3i:                                               OK
  glWindowPos3iv:                                              OK
  glWindowPos3s:                                               OK
  glWindowPos3sv:                                              OK

GL_VERSION_1_5:                                                OK 
---------------
  glBeginQuery:                                                OK
  glBindBuffer:                                                OK
  glBufferData:                                                OK
  glBufferSubData:                                             OK
  glDeleteBuffers:                                             OK
  glDeleteQueries:                                             OK
  glEndQuery:                                                  OK
  glGenBuffers:                                                OK
  glGenQueries:                                                OK
  glGetBufferParameteriv:                                      OK
  glGetBufferPointerv:                                         OK
  glGetBufferSubData:                                          OK
  glGetQueryObjectiv:                                          OK
  glGetQueryObjectuiv:                                         OK
  glGetQueryiv:                                                OK
  glIsBuffer:                                                  OK
  glIsQuery:                                                   OK
  glMapBuffer:                                                 OK
  glUnmapBuffer:                                               OK

GL_VERSION_2_0:                                                OK 
---------------
  glAttachShader:                                              OK
  glBindAttribLocation:                                        OK
  glBlendEquationSeparate:                                     OK
  glCompileShader:                                             OK
  glCreateProgram:                                             OK
  glCreateShader:                                              OK
  glDeleteProgram:                                             OK
  glDeleteShader:                                              OK
  glDetachShader:                                              OK
  glDisableVertexAttribArray:                                  OK
  glDrawBuffers:                                               OK
  glEnableVertexAttribArray:                                   OK
  glGetActiveAttrib:                                           OK
  glGetActiveUniform:                                          OK
  glGetAttachedShaders:                                        OK
  glGetAttribLocation:                                         OK
  glGetProgramInfoLog:                                         OK
  glGetProgramiv:                                              OK
  glGetShaderInfoLog:                                          OK
  glGetShaderSource:                                           OK
  glGetShaderiv:                                               OK
  glGetUniformLocation:                                        OK
  glGetUniformfv:                                              OK
  glGetUniformiv:                                              OK
  glGetVertexAttribPointerv:                                   OK
  glGetVertexAttribdv:                                         OK
  glGetVertexAttribfv:                                         OK
  glGetVertexAttribiv:                                         OK
  glIsProgram:                                                 OK
  glIsShader:                                                  OK
  glLinkProgram:                                               OK
  glShaderSource:                                              OK
  glStencilFuncSeparate:                                       OK
  glStencilMaskSeparate:                                       OK
  glStencilOpSeparate:                                         OK
  glUniform1f:                                                 OK
  glUniform1fv:                                                OK
  glUniform1i:                                                 OK
  glUniform1iv:                                                OK
  glUniform2f:                                                 OK
  glUniform2fv:                                                OK
  glUniform2i:                                                 OK
  glUniform2iv:                                                OK
  glUniform3f:                                                 OK
  glUniform3fv:                                                OK
  glUniform3i:                                                 OK
  glUniform3iv:                                                OK
  glUniform4f:                                                 OK
  glUniform4fv:                                                OK
  glUniform4i:                                                 OK
  glUniform4iv:                                                OK
  glUniformMatrix2fv:                                          OK
  glUniformMatrix3fv:                                          OK
  glUniformMatrix4fv:                                          OK
  glUseProgram:                                                OK
  glValidateProgram:                                           OK
  glVertexAttrib1d:                                            OK
  glVertexAttrib1dv:                                           OK
  glVertexAttrib1f:                                            OK
  glVertexAttrib1fv:                                           OK
  glVertexAttrib1s:                                            OK
  glVertexAttrib1sv:                                           OK
  glVertexAttrib2d:                                            OK
  glVertexAttrib2dv:                                           OK
  glVertexAttrib2f:                                            OK
  glVertexAttrib2fv:                                           OK
  glVertexAttrib2s:                                            OK
  glVertexAttrib2sv:                                           OK
  glVertexAttrib3d:                                            OK
  glVertexAttrib3dv:                                           OK
  glVertexAttrib3f:                                            OK
  glVertexAttrib3fv:                                           OK
  glVertexAttrib3s:                                            OK
  glVertexAttrib3sv:                                           OK
  glVertexAttrib4Nbv:                                          OK
  glVertexAttrib4Niv:                                          OK
  glVertexAttrib4Nsv:                                          OK
  glVertexAttrib4Nub:                                          OK
  glVertexAttrib4Nubv:                                         OK
  glVertexAttrib4Nuiv:                                         OK
  glVertexAttrib4Nusv:                                         OK
  glVertexAttrib4bv:                                           OK
  glVertexAttrib4d:                                            OK
  glVertexAttrib4dv:                                           OK
  glVertexAttrib4f:                                            OK
  glVertexAttrib4fv:                                           OK
  glVertexAttrib4iv:                                           OK
  glVertexAttrib4s:                                            OK
  glVertexAttrib4sv:                                           OK
  glVertexAttrib4ubv:                                          OK
  glVertexAttrib4uiv:                                          OK
  glVertexAttrib4usv:                                          OK
  glVertexAttribPointer:                                       OK

GL_VERSION_2_1:                                                OK 
---------------
  glUniformMatrix2x3fv:                                        OK
  glUniformMatrix2x4fv:                                        OK
  glUniformMatrix3x2fv:                                        OK
  glUniformMatrix3x4fv:                                        OK
  glUniformMatrix4x2fv:                                        OK
  glUniformMatrix4x3fv:                                        OK

GL_VERSION_3_0:                                                OK 
---------------
  glBeginConditionalRender:                                    OK
  glBeginTransformFeedback:                                    OK
  glBindFragDataLocation:                                      OK
  glClampColor:                                                OK
  glClearBufferfi:                                             OK
  glClearBufferfv:                                             OK
  glClearBufferiv:                                             OK
  glClearBufferuiv:                                            OK
  glColorMaski:                                                OK
  glDisablei:                                                  OK
  glEnablei:                                                   OK
  glEndConditionalRender:                                      OK
  glEndTransformFeedback:                                      OK
  glGetBooleani_v:                                             OK
  glGetFragDataLocation:                                       OK
  glGetStringi:                                                OK
  glGetTexParameterIiv:                                        OK
  glGetTexParameterIuiv:                                       OK
  glGetTransformFeedbackVarying:                               OK
  glGetUniformuiv:                                             OK
  glGetVertexAttribIiv:                                        OK
  glGetVertexAttribIuiv:                                       OK
  glIsEnabledi:                                                OK
  glTexParameterIiv:                                           OK
  glTexParameterIuiv:                                          OK
  glTransformFeedbackVaryings:                                 OK
  glUniform1ui:                                                OK
  glUniform1uiv:                                               OK
  glUniform2ui:                                                OK
  glUniform2uiv:                                               OK
  glUniform3ui:                                                OK
  glUniform3uiv:                                               OK
  glUniform4ui:                                                OK
  glUniform4uiv:                                               OK
  glVertexAttribI1i:                                           OK
  glVertexAttribI1iv:                                          OK
  glVertexAttribI1ui:                                          OK
  glVertexAttribI1uiv:                                         OK
  glVertexAttribI2i:                                           OK
  glVertexAttribI2iv:                                          OK
  glVertexAttribI2ui:                                          OK
  glVertexAttribI2uiv:                                         OK
  glVertexAttribI3i:                                           OK
  glVertexAttribI3iv:                                          OK
  glVertexAttribI3ui:                                          OK
  glVertexAttribI3uiv:                                         OK
  glVertexAttribI4bv:                                          OK
  glVertexAttribI4i:                                           OK
  glVertexAttribI4iv:                                          OK
  glVertexAttribI4sv:                                          OK
  glVertexAttribI4ubv:                                         OK
  glVertexAttribI4ui:                                          OK
  glVertexAttribI4uiv:                                         OK
  glVertexAttribI4usv:                                         OK
  glVertexAttribIPointer:                                      OK

GL_VERSION_3_1:                                                OK 
---------------
  glDrawArraysInstanced:                                       OK
  glDrawElementsInstanced:                                     OK
  glPrimitiveRestartIndex:                                     OK
  glTexBuffer:                                                 OK

GL_VERSION_3_2:                                                MISSING 
---------------
  glFramebufferTexture:                                        OK
  glGetBufferParameteri64v:                                    MISSING
  glGetInteger64i_v:                                           MISSING

GL_VERSION_3_3:                                                OK 
---------------
  glVertexAttribDivisor:                                       OK

GL_VERSION_4_0:                                                MISSING 
---------------
  glBlendEquationSeparatei:                                    OK
  glBlendEquationi:                                            OK
  glBlendFuncSeparatei:                                        OK
  glBlendFunci:                                                OK
  glMinSampleShading:                                          MISSING

GL_VERSION_4_1:                                                MISSING 
---------------

GL_VERSION_4_2:                                                MISSING 
---------------

GL_VERSION_4_3:                                                MISSING 
---------------

GL_VERSION_4_4:                                                MISSING 
---------------

GL_VERSION_4_5:                                                MISSING 
---------------
  glGetGraphicsResetStatus:                                    MISSING
  glGetnCompressedTexImage:                                    MISSING
  glGetnTexImage:                                              MISSING
  glGetnUniformdv:                                             MISSING

There is much more, but I think the rest is just extensions. I'm uploading the original file if you'd like to take a look:

[attachment=30119:glewinfo.txt]

 

Now to the actual question: It seems that my GPU supports OpenGL 3.1 and 3.3 entirely, but doesn't support all features of 3.2 and 4.0. Does that mean I could actually use OpenGL 4.0 as long as I don't rely on the missing features (glGetBufferParameteri64vglGetInteger64i_v and glMinSampleShading) or I would not be able to do that just because there are some features missing?

 

I've been working a lot with DirectX which is much simpler to me (because of feature levels), so that is just weird to me. Sorry for my stupidity and thanks for reading.

Share this post


Link to post
Share on other sites
Advertisement
According to wikipedia and references, you get OpenGL 3.1 on the windows drivers and 3.3 on the oss Linux drivers.

glew is not a very good library. So I don't expect that output to be very useful/accurate.
Most likely it just uses some broken logic somewhere to detect what versions are supported.

That said, on Linux using mesa3d you get OpenGL 3.3 only as a Core version.
And I think some versions in between like 3.2 are not supported at all.

Share this post


Link to post
Share on other sites

According to wikipedia and references, you get OpenGL 3.1 on the windows drivers and 3.3 on the oss Linux drivers.

glew is not a very good library. So I don't expect that output to be very useful/accurate.
Most likely it just uses some broken logic somewhere to detect what versions are supported.

That said, on Linux using mesa3d you get OpenGL 3.3 only as a Core version.
And I think some versions in between like 3.2 are not supported at all.

 
I tried glxinfo on Ubuntu. Yep, you're right.

OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile 
OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.5.9
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile

(...)

OpenGL version string: 3.0 Mesa 10.5.9
OpenGL shading language version string: 1.30
OpenGL context flags: (none)

(...)

OpenGL ES profile version string: OpenGL ES 3.0 Mesa 10.5.9
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00

So, on Ubuntu I can use 3.3 (core) or 3.0 and on Windows I can use 3.1? Also, does "core" mean deprecated stuff is removed?

 

EDIT: Okay, got it. Core is "no extensions". Thank you for your answer.

Edited by LHLaurini

Share this post


Link to post
Share on other sites
In this context I mean core as what you first guessed: no stuff that is deprecated in 3.3. You still can use extensions all you want.

Share this post


Link to post
Share on other sites


glew is not a very good library. So I don't expect that output to be very useful/accurate.


Where did you get that information or come by that conclusion ? For what it does GLEW is very good and its most certainly accurate ( nothing is perfect ). Do you have another GL extension parsing and function pointer handling library that does better, in mind ? The information GLEW is presenting is queried from the driver, though its possible, its not presented correctly. Now to the op's question.

If you have some means of creating an OpenGL context, you can verify the information yourself by querying the GL_VERSION string another good tool you can use to verify is GLView by RealTech VR.

Share this post


Link to post
Share on other sites

In this context I mean core as what you first guessed: no stuff that is deprecated in 3.3. You still can use extensions all you want.

 

Oh, okay. Thank you.

 

 


glew is not a very good library. So I don't expect that output to be very useful/accurate.


Where did you get that information or come by that conclusion ? For what it does GLEW is very good and its most certainly accurate ( nothing is perfect ). Do you have another GL extension parsing and function pointer handling library that does better, in mind ? The information GLEW is presenting is queried from the driver, though its possible, its not presented correctly. Now to the op's question.

If you have some means of creating an OpenGL context, you can verify the information yourself by querying the GL_VERSION string another good tool you can use to verify is GLView by RealTech VR.

 

 

I'm going to use gl3w. I prefer it because I found it somewhat simpler.

Share this post


Link to post
Share on other sites
Where did you get that information or come by that conclusion ? For what it does GLEW is very good and its most certainly accurate ( nothing is perfect ). Do you have another GL extension parsing and function pointer handling library that does better, in mind ? The information GLEW is presenting is queried from the driver, though its possible, its not presented correctly. Now to the op's question.

 

By using it. Glew has some broken logic when testing for extensions. And after I went looking for a better library to do the job I didn't found anything I like. So I made my own.

Share this post


Link to post
Share on other sites

There are two things in play here: The OpenGL context that you can create and the OpenGL features you can use.

 

As you guessed, with your card in Windows you can create an OpenGL 3.1 context, and an OpenGL 3.3 context in Linux.

 

What does that means? That you can use all the features up to that context version, contexts are inclusive so OpenGL 3.3 context has 3.0, 3.1 and 3.2 features. If your card didn't supported a 3.2 feature but all of 3.3 features, that doesn't means you can create a 3.3 context since you're missing the required 3.2 features, and 3.3 includes 3.2.

 

Now, while your card supports those contexts, it also supports some of the features of other OpenGL versions. Thing is, since it only supports some features, then you card can't give you a higher context. However, you can use those other features as extensions.

 

So you create the highest context your card supports, and if you want, import the rest of the features your card supports as extensions. That way while you can't say, create an OpenGL 4.2 context, you could use some of the features introduced in that version via extensions.

 

For example, I use a 3.3 core context in my application, but most of the D3D10 cards out there support a few useful extensions of higher OpenGL versions, like arb_texture_storage, arb_shading_language_420pack, etc.

Share this post


Link to post
Share on other sites

There are two things in play here: The OpenGL context that you can create and the OpenGL features you can use.
 
As you guessed, with your card in Windows you can create an OpenGL 3.1 context, and an OpenGL 3.3 context in Linux.
 
What does that means? That you can use all the features up to that context version, contexts are inclusive so OpenGL 3.3 context has 3.0, 3.1 and 3.2 features. If your card didn't supported a 3.2 feature but all of 3.3 features, that doesn't means you can create a 3.3 context since you're missing the required 3.2 features, and 3.3 includes 3.2.
 
Now, while your card supports those contexts, it also supports some of the features of other OpenGL versions. Thing is, since it only supports some features, then you card can't give you a higher context. However, you can use those other features as extensions.
 
So you create the highest context your card supports, and if you want, import the rest of the features your card supports as extensions. That way while you can't say, create an OpenGL 4.2 context, you could use some of the features introduced in that version via extensions.
 
For example, I use a 3.3 core context in my application, but most of the D3D10 cards out there support a few useful extensions of higher OpenGL versions, like arb_texture_storage, arb_shading_language_420pack, etc.

 
Okay, got it. Your post explains very well the tests I was doing just 15 minutes ago. It seems I can create a 3.1 context on Windows and a 3.3 core one on Linux (but I didn't test compatibility profile yet). Even though I can't create a 3.3 context on Windows it seems I can use its features normally. But I checked this page and compared with Geeks3D GPU Caps Viewer and there were features missing, which doesn't make sense. (I also tried glfwExtensionSupported, same results) For example EXT_texture_compression_rgtc (OpenGL 3.0), EXT_copy_buffer (OpenGL 3.1) and ARB_texture_buffer_object (OpenGL 3.1) were missing (I didn't look for every extension). There are some OpenGL 4.0 extensions available (no tesselation though dry.png) like ARB_draw_buffers_blendARB_texture_buffer_object_rgb32 (but not its 3.1 non-rgb32 equivalent, WTF?) and ARB_texture_query_lod.
 
So I'm wondering how can I create an OpenGL 3.1 context if my GPU doesn't support all extensions? I suspect that is because of Intel's f***ed up drivers 'cause I tried to update my drivers multiple times, but it never really works. That may be an issue with the Windows driver, so I'm going to try on Ubuntu. Man, this is the third OS switch today.
 
EDIT: Also, GPU Caps Viewer says "GLSL Version: 1.40 - Intel Build 9.17.10.4229", but I'm using "#version 330 core" in both shaders. Maybe the driver's lying? huh.png
 
EDIT 2: On Ubuntu, OpenGL 3.3 core has all the features that were missing in the Windows version, except for ARB_geometry_shader4 (OpenGL 3.2) for which equivalent can be used normally from DirectX.

Edited by LHLaurini

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!