When it comes to real-time graphics, performance is what deﬁnes the possible from
the impossible; it is what sets the boundaries.
A lack of performance might come from a lack of understanding of the platform
we are working on. This may have a dramatic negative impact on the tile-based
GPUs leading the OpenGL ES world. In his chapter, “Performance Tuning for Tile-
Based Architectures,” Bruce Merry presents key tile-based GPU architecture features
and how to take advantage of them. Jon McCaffrey follows this discussion in his
chapter “Exploring Mobile vs. Desktop OpenGL Performance,” which shows the
performance-scale differences between the mobile and desktop worlds.
Performance is not only the concern of GPU architectures, it is also the direct
result of how we write software. With GPUs whose performances increase at a faster
rate than CPUs, we are more and more often CPU-bound, leaving us incapable to
beneﬁt from all the GPU power. S´ebastien Hillaire, in his chapter “Improving Per-
formance by Reducing Calls to the Drivers,” introduces some fundamental concepts
to reduce CPU overhead with a legacy ﬂavor.
In his chapter “Indexing Multiple Vertex Arrays,” Arnaud Masserann comes back
to one of the most fundamental elements for GPU performance: how we submit
vertex array data to the GPU. He provides a directly applicable method to ensure that
vertex indexing will be used even on assets not organized this way, like COLLADA
Finally, sometimes we are left with no choice: to scale performance, we must scale
the number of GPUs used for rendering. This is the topic of Shalini Venkataraman
in her chapter “Multi-GPU Rendering on NVIDIA Quadro .” She explains how to
efﬁciently use multiple GPUs for rendering and integrate their work to build the ﬁnal
This page intentionally left blankThis page intentionally left blank