Today (http://www.opengl.org/news/permalink/ati_catalyst_driver_9.1_to_add_full_support_for_op engl_3.0/) ATI released Catalyst 9.1 driver with full OpenGL 3.0 context. I thought maybe it's time to move my code to 3.0 context. Tried to install new Catalyst and all I can say - I'm very disappointed.

If I don't use WGL_ARB_create_context then all is ok - OGL 2.1 works fine. But if I try to create 3.0 context (it doesn't matter forward compatible or not) things gets "interesting":

I'm afraid to imagine what else there is broken if even simple things like getting version does not work...

(this happens on Vista 32-bit, HD2400)

Groovounet

01-29-2009, 10:09 AM

... :(

what about the extension string when you create an OpenGL 2.1 context?

martinsm

01-29-2009, 10:23 AM

As I said - in OGL 2.1 everything works fine. If I skip WGL_ARB_create_context part and use context returned from wglCreateContext then everything runs fine:
glGetString(GL_EXTENSIONS) returns normal string.
Also glGetStringi(GL_EXTENSIONS, i) returns correct string values where i=0..glGetIntegerv(GL_NUM_EXTENSIONS)-1

Groovounet

01-29-2009, 10:37 AM

I was more expecting some kind of extension list to see if the feature are actually implemented.

This is not a valid shader. You have to set the value of the fragment color and the position of the vertex at least.

martinsm

02-05-2009, 10:55 AM

In full context such empty fragment shader works fine without error message ;)
I'm using empty fragment shader with shadow map rendering (using only depth attachment for FBO) in OGL2. Works fine till now. Is this really illegal?

An empty fragment shader is perfectly legal. It just writes undefined values to the color output then.

martinsm

02-06-2009, 02:44 AM

Mars_999: what do you want to tell with that? There is no such thing as ftransform() and gl_FragColor ir forward compatible context.

k_szczech

02-06-2009, 08:23 AM

So you all went back to writting "hello world" shaders?
"OpenGL 3.0 - A Big Step in the Right Direction"

Of course it's not OpenGL's fault, that drivers don't work, but perhaps clean API would address this problem better...

rpggamer

02-08-2009, 10:25 AM

For the shader problem, try defining GLSL version 1.30 in the shader. That seems to of fixed the compile errors I was getting. Kind of strange though, hopefully they fix these problems with their next release.

Fragment shader compile error:
Fragment shader failed to compile with the following errors:
ERROR: 0:2: '' : Declaration must include a precision qualifier or the default precision must have been previously declared.
ERROR: 0:3: '' : Declaration must include a precision qualifier or the default precision must have been previously declared.
ERROR: compilation errors. No code generated.

Then everything compiles and links fine (after adding same precision to vertex shader) Thanks rpggamer! I assumed that GL3 forward compatible context by default expects GLSL version 1.30, but I guess you can expect many strange things from ATI ;)

Now when shader program compiles and links fine, I'm getting next error - glBindBuffer(GL_ARRAY_BUFFER, id) generates GL_INVALID_OPERATION error in forward compatbile context. It doesn't matter if VAO is bound or not. id is generated correctly with glGenBuffers. Any suggestions here?
Even glBindBuffer(GL_ARRAY_BUFFER, 0) generates same GL_INVALID_OPERATION.