svga: try to emit fewer buffer rebind commands
authorBrian Paul <brianp@vmware.com>
Thu, 1 Sep 2016 00:28:00 +0000 (18:28 -0600)
committerBrian Paul <brianp@vmware.com>
Sat, 17 Sep 2016 16:09:00 +0000 (10:09 -0600)
commit581292a78c67335814a3ffb33409f7a62ecedd79
tree87a0a6dee430a41713431a752d44624ec6f0d035
parentee5f5e226906ff4e18f34d0e7d41aa82dcf51f70
svga: try to emit fewer buffer rebind commands

If a consecutive sequence of drawing commands references the same
vertex/index buffers, there should be no need to rebind the surfaces
for the second and subsequent drawing commands.

Apps that use multiple display lists benefit from this since the vertex
data for several display lists is often stored in one buffer.

In the case of the legacy E&S Glaze demo, this reduces the size of our
command buffers from 91KB to 44KB.  One WSI Fusion trace shows a 33%
reduction in command buffer sizes.

Tested with full piglit run.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/drivers/svga/svga_cmd.c
src/gallium/drivers/svga/svga_cmd.h
src/gallium/drivers/svga/svga_context.c
src/gallium/drivers/svga/svga_draw.c
src/gallium/drivers/svga/svga_winsys.h