When connected to a remote x-server using indirect glx, the glDrawElements client side vertex array routine has a bug for large arrays. The bug is in routine emit_DrawElements_old in file: Mesa/src/glx/x11/indirect_vertex_array.c If the number of elements is too large to fit into a single X packet, it has to be spilt into multiple requests using the X RenderLarge command. emit_DrawElements_old loops through the number of requests required, outputting the maximum number of elements for a single request each time. But it does not increment the start element pointer, so that the first batch of elements is repeatedly sent in every request. Elements towards the end of the input array are therefore never sent, and not rendered. The emit_DrawElements_old routine implements the GL 1.1 DrawArrays protocol. This is the current protocol ("old" is a misnomer) used by X servers which support OpenGL, including Xorg 7.x. The bug can be demonstrated by sending a large glDrawElements array to a remote display server.
Created attachment 11257 [details] [review] Updated version of CVS HEAD Patched file attached.
Thanks. I've checked in your patch. Though, your version inadvertantly undid a fix in the __glXGetArrayType() function (return array type, not the enable flag). I've fixed that.
Mass version move, cvs -> git
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.