[FIXED] new ATI 10.1 drivers don't support some GL1x functions?

Started by indexunknown, January 30, 2010, 21:44:11

Previous topic - Next topic

indexunknown

I upgraded my HD 3650 to 10.1 drivers: (these are totally official ones, not any beta or anything)
GL_VENDOR: ATI Technologies Inc.
GL_RENDERER: ATI Radeon HD 3600 Series
GL_VERSION: 3.2.9252 Compatibility Profile Context

and now with lwjgl 2.2.1 i get a lot of exception with basic GL11 and GL12 functions being not supported.
for example:

java.lang.IllegalStateException: Function is not supported
   at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:64)
   at org.lwjgl.opengl.GL11.glLightModeli(GL11.java:1892)   <-- basic stuff
   at Game.initGL(Game.java:136)
or
java.lang.IllegalStateException: Function is not supported
   at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:64)
   at org.lwjgl.opengl.GL11.glLightModel(GL11.java:1900)    <-- what am i supposed to use instead of this one
   at Game.initGL(Game.java:151)
or
java.lang.IllegalStateException: Function is not supported
   at org.lwjgl.BufferChecks.checkFunctionAddress(BufferChecks.java:64)
   at org.lwjgl.opengl.GL11.glMatrixMode(GL11.java:1961) 
   at Game.initGL(Game.java:163)

is this an april fools joke because on amd forum it seems there are lots of issues with programs that use opengl and these drivers are installed by everyone who do updates.

spasi

I can confirm this, latest AMD drivers are seriously broken. I can't create anything but a 3.2 core context (even though it says it's a Compatibility context), all deprecated functions are missing.

If I use no ContextAttribs or ContextAttribs with any version < 3.2, I get a 3.2 core context.
If I use ContextAttribs with 3.2 and Compatibility profile, I get a 3.2 core context.
If I use ContextAttribs with 3.2 and Core profile or no profile at all, I get an OpenGL error on context initialization.

A joke indeed.

elias4444

Hmmm... try running this: http://www.tommytwisters.com/games/tommybench/files/tommybench.jnlp

Let me know if it works or not. I'll try scrounging up an ATI machine to experiment on.
=-=-=-=-=-======-=-=-=-=-=-
http://www.tommytwisters.com

elias4444

Ok, I've verified this with lwjgl 2.2.2. However, I ran one of my older games (not sure which version of lwjgl it's using - at least version 2), and it ran fine with the new ATI drivers.
=-=-=-=-=-======-=-=-=-=-=-
http://www.tommytwisters.com

elias4444

I went back through each version of LWJGL to version 2.1.0.

2.1.0 works just fine with the new ATI drivers. I'm not sure why there's this sudden incompatibility between the 2.2 series and the 10.1 ATI drivers, but there you go. I hope this helps in some way to figure out what the problem is (as it appears to be an LWJGL issue).

Let me know if there's anything else I can do to help.


=-=-=-=-=-======-=-=-=-=-=-
http://www.tommytwisters.com

Matzon


indexunknown

benchmark worked fine. don't know what's wrong , minecraft, runescape work also fine, maybe new lwjgl changed something.

spasi

I found out what the problem with LWJGL is, this ATI driver doesn't expose ARB_compatibility and I kinda assumed that it should exist in a 3.2 compatibility context. Working on a fix, will let you know when it's up.

kappa

sounds like a critical bug, worthy of a LWJGL 2.2.3 release :)

spasi

Matzon, should I also remove support for non-direct buffers? We haven't had any different opinions so far (http://lwjgl.org/forum/index.php/topic,3172.0.html), but I don't feel like making this decision alone. Not sure how many LWJGL users visit this forum, it's a non-trivial change and might break existing code.

spasi

Committed. The ATI fix works fine, a bunch of AMD extensions have been added, indirect buffer support has been removed. Grab a fresh build when it's up and let me know how it goes.

indexunknown

now with GL11.glLightModel(GL11.GL_LIGHT_MODEL_AMBIENT, FloatBuffer.wrap(new float[] { 0.1f, 0.1f, 0.1f, 1.0f }));   
      
i get java.lang.IllegalArgumentException: FloatBuffer is not direct
   at org.lwjgl.BufferChecks.checkDirect(BufferChecks.java:122)
   at org.lwjgl.BufferChecks.checkBuffer(BufferChecks.java:177)
   at org.lwjgl.opengl.GL11.glLightModel(GL11.java:1838)

i guess now have to construct the float buffers differently

elias4444

Yes, he mentioned that he removed support for non-direct buffers. But trust me, it's for the best. Just revamp your code to use direct buffers instead (and reuse them when possible, like in the case of setting your lightmodel).
=-=-=-=-=-======-=-=-=-=-=-
http://www.tommytwisters.com

Evil-Devil

Nice to see nondirect buffers gone. Never seen any use for them when dealing with heap data so I won't miss them ^^

elias4444

Just verified that the ATI driver problem is fixed in the nightly build. Thanks Spasi!!!
=-=-=-=-=-======-=-=-=-=-=-
http://www.tommytwisters.com