svga: implement an index buffer translation cache
authorBrian Paul <brianp@vmware.com>
Wed, 31 Aug 2016 20:49:41 +0000 (14:49 -0600)
committerBrian Paul <brianp@vmware.com>
Sat, 17 Sep 2016 16:09:00 +0000 (10:09 -0600)
commit4f74b379aa05e133cdd19865662eceacee4f63f4
tree934b907b9f6c06cd24fbaae6a705b0719045812e
parent581292a78c67335814a3ffb33409f7a62ecedd79
svga: implement an index buffer translation cache

Some OpenGL apps, like Cinebench R15, have many glDrawElements(GL_QUADS)
calls.  Since we don't directly support quads we have to convert these
calls into GL_TRIANGLES which involves generating a new index buffer.

This patch saves the new/translated index buffer in the hope that it
can be reused for a later draw call.

Cinebench R15 increases by about 20% with this change.
The NobelClinician Viewer app also hits this code.
Tested with full piglit run.

Reviewed-by: Charmaine Lee <charmainel@vmware.com>
src/gallium/drivers/svga/svga_draw_elements.c
src/gallium/drivers/svga/svga_resource_buffer.c
src/gallium/drivers/svga/svga_resource_buffer.h
src/gallium/drivers/svga/svga_screen.c
src/gallium/drivers/svga/svga_screen.h