Hi Marek,

Back on Jan 10 you removed the per-vertex array max_index field (commit cdca3c58aa2d9549f5188910e2a77b438516714f). I believe this was a mistake.

I noticed today that the piglit draw-instanced-divisor test is failing. A bisection points to Jose's commit 17bbc1f0425b3768e26473eccea5f2570dcb26d3. But that's a red herring. If I disable the SSE code paths, the regression goes back to the Jan 10 change.

With the GL_ARB_instanced_arrays extension vertex array indexing changes quite a bit. Specifically, some arrays (those with divisors != 0) are now indexed by instance ID, not the primitive's vertex index. The draw_info::max_index field doesn't let us take this into account. I believe that we really need a per-array max_index value.

As an example, suppose we're drawing a star field with 1 million instanced stars, each star drawn as a 4-vertex quad. We might use a vertex array indexed by the instance ID to color the stars.

The draw call would look like:

glDrawArraysInstanced(GL_QUADS, 0, 4, 1000*1000);

In this case we'd have two vertex arrays. The first array is the quad vertex positions with four elements. The second array is the star colors with 1 million elements. As it is now, we're setting draw_info::max_index = 4 and we errantly clamp the index into the second array to 4 instead of 1 million.

As a temporary work around we can disable clamping of array indexes for instance arrays. But I think we need to revert the Jan 10 commit and then rework some of Jose's related changes.

-Brian

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to