mesa/src
Kenneth Graunke 26ee6f23a9 mesa: Delete VAO _MaxElement code and index buffer bounds checking.
Fredrik's implementation of ARB_vertex_attrib_binding introduced new
gl_vertex_attrib_array and gl_vertex_buffer_binding structures, and
converted Mesa's older gl_client_array to be derived state.  Ultimately,
we'd like to drop gl_client_array and use those structures directly.

One hitch is that gl_client_array::_MaxElement doesn't correspond to
either structure (unlike every other field), so we'd have to figure out
where to store it.  The _MaxElement computation uses values from both
structures, so it doesn't really belong in either place.  We could put
it in the VAO, but we'd have to pass it around everywhere.

It turns out that it's only used when ctx->Const.CheckArrayBounds is
set, which is only set by the (rarely used) classic swrast driver.
It appears that drivers/x11 used to set it as well, which was intended
to avoid segmentation faults on out-of-bounds memory access in the X
server (probably for indirect GLX clients).  However, ajax deleted that
code in 2010 (commit 1ccef926be).

The bounds checking apparently doesn't actually work, either.  Non-VBO
attributes arbitrarily set _MaxElement to 2 * 1000 * 1000 * 1000.
vbo_save_draw and vbo_exec_draw remark /* ??? */ when setting it, and
the i965 code contains a comment noting that _MaxElement is often bogus.

Given that the code is complex, rarely used, and dubiously functional,
it doesn't seem worth maintaining going forward.  This patch drops it.

This will probably mean the classic swrast driver may begin crashing on
out of bounds vertex buffer access in some cases, but I believe that is
allowed by OpenGL (and probably happened for non-VBO accesses anyway).
There do not appear to be any Piglit regressions, either.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
Acked-by: Roland Scheidegger <sroland@vmware.com>
2014-09-19 00:43:01 -07:00
..
egl egl: Restrict multiplication in calloc arguments to use compile-time constants 2014-09-03 18:37:02 -07:00
gallium vc4: Add support for stencil operations. 2014-09-18 17:46:43 -07:00
gbm gbm: Log at least one dlerror() when we fail to open any drivers. 2014-07-30 22:31:30 -07:00
getopt
glsl glsl: fix error message for redeclaring gl_PerVertex as output 2014-09-17 08:33:16 +12:00
glx include: move sarea.h next to it's only user 2014-08-21 21:47:37 +01:00
gtest gtest: Update to 1.7.0. 2014-04-14 00:06:53 -07:00
hgl gallium/targets: Break haiku state_tracker out to own directory 2014-08-28 21:27:29 -04:00
loader loader: fds can be 0 2014-09-06 10:24:25 +10:00
mapi glapi: Add KHR_debug functions to check_table test 2014-09-04 12:29:14 +10:00
mesa mesa: Delete VAO _MaxElement code and index buffer bounds checking. 2014-09-19 00:43:01 -07:00
util util: move shared rgtc code to util (v2) 2014-09-17 11:27:25 +10:00
Makefile.am automake: handle gallium SUBDIRs in gallium/Makefile 2014-08-13 00:46:54 +01:00
SConscript util: Move ralloc to a new src/util directory. 2014-08-04 11:06:58 -07:00