Newest JOGL exception on portable computer running ATI Mobility Radeon 9700

Yeah well. Topic says it all. We are currently using JOGL for a large commercial project and everything worked fine before updating to new JSR beta 3.
Works on stationary computers running various cards and OS’s.

Crashes on our ATI Mobility Radeon 9700 ACER laptops (crap I know, but it used to work)
It appears to be shader related only. ATM I have no simple reproduction example, but the crash is consistent enough.

The error I get is:

Exception in thread “main” javax.media.opengl.GLException:
javax.media.opengl.GLException: Method “glShaderSource” not available
at
javax.media.opengl.Threading.invokeOnOpenGLThread(Threading.java:205)
at
javax.media.opengl.GLCanvas.maybeDoSingleThreadedWorkaround(GLCanvas.java:237)
at javax.media.opengl.GLCanvas.display(GLCanvas.java:130)

Thanks in advance

Odin Jensen

What operating system are you running?

Could you please try the current nightly build? A lot of changes have gone in since beta 3 around proper support on X11 OSs in particular with ATI hardware.

Cool. I’ll try that.
It’s on Windows2k and XP btw.

Still no go with latest nightly build (11/4)
Remember this used to work on the previous JOGL (pre-JSR231).

It says that “glShaderSource” is not available. That’s rather odd. I suppose any program with a vertex + fragment shader in GLSL will give you the same error.

Regards

Odin

What are the output of glGetString(GL_VERSION) and glGetString(GL_VENDOR)?

We added version checks around the various core OpenGL entry points in recent JOGL versions. My guess is that you were getting lucky with a driver that didn’t officially support OpenGL 2.0.

Vendor: ATI Technologies Inc.
Version: 1.4.4145 WinXP Release

But it’s really besides the point. Our project worked on the very same computer, with the same OS installation and driver.
Obviously you broke existing functionality. This needs to be resolved as we have a major commercial building software product, that’s dependent on JOGL for rendering.
If this is not resolved ASAP, I’ll have to replace JOGL for something else, which would be a pity as we’re quite happy with JOGL so far.

Nothing broke, but some things did change. A decision was made by the JSR committee that a lot of the API calls that had both ARB extensions and then became part of the core, were to be wrapped only in the core API. The GL Shader methods only became part of the core in 2.0 and were extensions to 1.5 - prior to that they didn’t exist. Your drivers are reporting 1.4. That means you’re making calls to APIs that don’t exist for your driver, which JOGL is correctly barfing on now (it didn’t always). As such, it is your responsibility at the application level to make calls to JOGL to find out which version is supported on the current hardware and only make the appropriate API calls.

Relax.

What does GL.isExtensionAvailable(“GL_ARB_shader_objects”) return? If it returns true (as I would guess), you should probably be able to replace your calls to glShaderSource with calls to glShaderSourceARB and your application should not only be more correct with respect to OpenGL semantics but should also work with the current version of JOGL.

This is only true for extensions that were folded into the OpenGL 1.3 core (and previous releases). It doesn’t apply to this particular situation.

That’s all a I wanted. A fix :slight_smile:
Yep, you’re right. I’m a moron. Without the ARB appended, it’s a core function and glShaderSource if only core in 2.0
Not many cards support 2.0 correctly, although the have all the features as extensions :slight_smile:
I do however suspect, more people will run into this, but at least now there’s a forum entry detailing the problem and the fix.
Works 100%

Thanks for your help.

Odin

Ta Ken, I thought it was from 1.4 and earlier, not 1.3.