Tom Flynn wrote:
Hi there,

Background:
I'm currently running an application on a machine which has no graphics and setting my display to another machine that has an NVidia card in it (and has the nvidia closed-source drivers). The application makes several calls to glDrawArrays(). One section of the code uses glInterleavedArrays(), the rest of the app uses glVertexPointer() and friends.

Xorg 6.8.2 on machine with no graphics.
Nvidia 1.0-6629, Xorg 6.8.0 on machine with graphics.

The symtoms:
With the section of code that uses glInterleavedArrays() disabled...
1) Run the app on my target machine and I just see a blank window on my nvidia machine. 2) Replace glDrawArrays() with glDrawElements() (via an LD_PRELOADED library i made), everything I expected shows up on screen.

Now, with the section of code that uses glInterleavedArrays() enabled and glDrawArrays() replaced with glDrawElements()...
  3) Bunch of white triangles that don't quite look right.
4) Replace glInterleavedArrays() with glVertexPointer(), glEnableClientState(), etc., everything shows up correctly.

Given this, it seems as if glDrawArrays() and glInterleavedArrays() are either not being sent correctly, or not being recieved correctly. Any suggestions on how to narrow this down and tell which machine is behaving badly?

Hi Tom,

Sounds like you're exercising GLX indirect rendering. You're using the GLX/DRI-enabled libGL.so from Mesa or X.org, I presume?

Under normal circumstances, all the vertex array rendering commands get unrolled into ordinary glBegin/glVertex/glNormal/glEnd calls. That's because the vertex arrays themselves only exist on the client side so sending the array drawing commands to the server wouldn't work.

You might have just found a simple bug in the client-side GLX code in libGL. The code for glInterleavedArrays() is in Mesa/src/glx/x11/vertarr.c if you want to look it over. I don't have time to test anything right now.

BTW, vertex arrays can be stored server-side with the GL_ARB_vertex_buffer_object extension. In that case, the glDrawArrays/Elements calls would get sent over the wire. We don't yet support this feature, though.

-Brian


-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download
it for free - -and be entered to win a 42" plasma tv or your very own
Sony(tm)PSP.  Click here to play: http://sourceforge.net/geronimo.php
_______________________________________________
Mesa3d-dev mailing list
Mesa3d-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev

Reply via email to