vbo: Avoid extra validation of DrawElements.
authorEric Anholt <eric@anholt.net>
Tue, 11 Aug 2009 19:31:01 +0000 (12:31 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 12 Aug 2009 18:28:34 +0000 (11:28 -0700)
commit2708ddfb06a36d8568e2aa130bf1f7d551fcd309
treef70549bf497750fc2f865d846069d504852bc014
parentef3ad412c746203727324edbd4cbe04079332d7c
vbo: Avoid extra validation of DrawElements.

This saves mapping the index buffer to get a bounds on the indices that
drivers just drop on the floor in the VBO case (cache win), saves a bonus
walk of the indices in the CheckArrayBounds case, and other miscellaneous
validation.  On intel it's a particularly a large win (50-100% in my app)
because even though we let the indices stay in both CPU and GPU caches, we
still end up waiting for the GPU to be done with the buffer before reading
from it.

Drivers that want the min/max_index fields must now check index_bounds_valid
and use vbo_get_minmax_index before using them.
17 files changed:
src/mesa/drivers/dri/i965/brw_draw.c
src/mesa/drivers/dri/i965/brw_draw.h
src/mesa/drivers/dri/r300/r300_draw.c
src/mesa/state_tracker/st_cb_rasterpos.c
src/mesa/state_tracker/st_draw.c
src/mesa/state_tracker/st_draw.h
src/mesa/state_tracker/st_draw_feedback.c
src/mesa/tnl/t_context.c
src/mesa/tnl/t_draw.c
src/mesa/tnl/tnl.h
src/mesa/vbo/vbo.h
src/mesa/vbo/vbo_exec_array.c
src/mesa/vbo/vbo_exec_draw.c
src/mesa/vbo/vbo_rebase.c
src/mesa/vbo/vbo_save_draw.c
src/mesa/vbo/vbo_split_copy.c
src/mesa/vbo/vbo_split_inplace.c