mesa: implement a display list / glBitmap texture atlas
authorBrian Paul <brianp@vmware.com>
Wed, 3 Feb 2016 16:35:42 +0000 (09:35 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 18 Feb 2016 02:57:48 +0000 (19:57 -0700)
commitb26ddda12fe7dbb6a4e6af3b47c1e837cc7ebb03
treea220397fcbea69d3e6dea7e0eece28186c82a7ba
parent6f4a725073fcef6b7b5a7b9acdc99539fa3fa1f4
mesa: implement a display list / glBitmap texture atlas

This improves the performance of applications which use glXUseXFont()
or wglUseFontBitmaps() and glCallLists() to draw bitmap text.

Basically, we collect all the glBitmap images from the display lists
and put them into a texture atlas.  To render the bitmaps for a
glCallLists() command, we render a set of textured quads where each
quad is textured with one bitmap image.  Actually, the rendering part
has to be done by the Mesa driver or Mesa/gallium state tracker.

Note that GLUT demos that use glutBitmapCharacter() don't benefit
from this.

v2, per Nicolai Hähnle:
- check the max tex rect size is at least 1024.
- add comment in dd.h that texture_rectangle is required.
- in _mesa_DeleteLists(), try to delete the atlas before the list(s)

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/mesa/main/dd.h
src/mesa/main/dlist.c
src/mesa/main/dlist.h
src/mesa/main/mtypes.h
src/mesa/main/shared.c