OSDN Git Service

i965: Allocate just enough space for user clip planes in uniform arrays.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 26 Aug 2013 04:38:29 +0000 (21:38 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 28 Aug 2013 21:12:48 +0000 (14:12 -0700)
commitdf06745c5adb524e15d157f976c08f1718f08efa
tree497a20b0b9367e4baeed7546cfabe5225253491d
parent72b3c6c96f971fbaf438289e5e89ccf324a49ca7
i965: Allocate just enough space for user clip planes in uniform arrays.

Previously, we allocated space in brw_vs_prog_data's params and
pull_params arrays for MAX_CLIP_PLANES vec4s---even when it wasn't
necessary.

On a 64-bit architecture, this used 0.5 kB of space (8 clip planes *
4 floats per plane * 8 bytes per float pointer * 2 arrays of pointers =
512 bytes).  Since this cost was per-vertex shader, it added up.

Conveniently, we already store the number of clip plane constants in the
program key.  By using that, we can allocate the exact amount of space
needed.  For the common case where user clipping is disabled, this means
0 bytes.

While we're here, mention exactly what code requires this extra space,
since it wasn't obvious.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
src/mesa/drivers/dri/i965/brw_vs.c