Here's a respin of the VBO fixes, incorporating feedback from Roland, Brian, and Ian.
I'm not entirely happy with this series. If you look at the resulting code, we end up marking the range invalid if: 1. (int) start + basevertex < 0 2. (int) end + basevertex < 0 3. start + basevertex >= _MaxElement 4. end + basevertex >= _MaxElement but in two separate blocks. Mesa master emits a warning about case 4, which this series removes. This series causes a warning to be emitted for 2 and 3. No warning is ever emitted for case 1. Prior to this series, Mesa didn't do 1 and 2 (the < 0 checks) at all. I'm tempted to just throw out all of these checks and just do: if (all_vbo_rendering) /* all VBOs, no user-space arrays at all */ index_bounds_valid = false; since the whole DrawRangeElements optimization is basically irrelevant for VBOs. Cases 3 and 4 should only happen for VBOs anyway, as _MaxElement is set to 2,000,000,000 for user-space arrays. I don't think we have many (any?) tests for these corner cases, so I'm a bit hesitant about changing this. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev