VBO inside a display list

Hi,

if I try to use glDrawElements with an element vbo inside a display list, it crashes on ati machines (several, different driver versions). Isn’t this allowed? I can’t seem to find any mention of it being allowed or not allowed in the specs I’ve read, but of course I could have missed it.

It works fine on the nvidia machines I’ve tried.

Yes I know it’s a silly thing to do, just curious as to why it didn’t work as I couldn’t find anything saying it’s not possible :slight_smile:

According to OpenGL Red Book v2 page 288 you can’t use glBindBuffer(), glBufferData() inside a display list.

(I also tried this a while back and found that, indeed, it didn’t work!)

Hi,

it seems to be an ATI Driver problem, along with not allowing display lists inside display list and throwing exceptions on out of memory instead of setting GL_OUT_OF_MEMORY. (First I recognized this problem on a Notebook with Mobility Radeon, so I wrote an email to its vendor. No answer, except that they told me, the email was forwarded to ATI.)
Just for the record: I’ve never had such problems with Matrox Millenium, 3DLabs Oxygen and Wildcats or Nvidias GoForce and Quadro graphic adapters.

IMHO: I can not recommend ATI/AMD graphic adapters for OpenGL applications as long as the drivers have such bugs. (Even if R600 will be the best chip in the whole universe. :wink:

Originally posted by Joseph Steel:
According to OpenGL Red Book v2 page 288 you can’t use glBindBuffer(), glBufferData() inside a display list.
I don’t have access to the Red Book v2, but the OpenGL Specifications 2.1 does not state anything under BindBuffer or BufferData regarding display lists.

Also, under the display list section (p 244) it says Certain commands, when called while compiling a display list, are not compiled into the display list but are executed immediately. These commands fall in several categories including: and lists among others BindBuffer and BufferData.

So it would seem that the specs and the red book is in direct contradiction, or?

Cheers

Originally posted by Shinta:
it seems to be an ATI Driver problem, along with not allowing display lists inside display list and throwing exceptions on out of memory instead of setting GL_OUT_OF_MEMORY.
Sounds encouraging…Guess I’ll have to insert a few extra checks here and there.

Cheers

So it would seem that the specs and the red book is in direct contradiction, or?
Not neccesarily. I don’t have this version of the redbook, so I can’t check the exact wording. But the redbook author propably meant that you can not compile a glBindBuffer call into a display list.

Anyway, if in doubt, you should always look at the specs. If there really is a contradiction between multiple sources, the spec should always be the correct one.

Originally posted by Overmind:
Not neccesarily. I don’t have this version of the redbook, so I can’t check the exact wording. But the redbook author propably meant that you can not compile a glBindBuffer call into a display list.

Yes, this struck me a while after replying. So I guess this is a driver bug then. Yay :smiley:

Thanks for all the replies.

After a bit of investigation, it appears that the driver interprets the indices pointer in the glDrawElements/glDrawRangeElements call as an actual pointer instead of an offset. I’ve checked that the buffer is bound by using glGet with GL_ELEMENT_ARRAY_BUFFER_BINDING.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.