ABSTRACT

These two steps require multiple calls to the driver. The driver is responsible for translating these function calls into commands to be sent to the GPU. The driver is provided by the GPU vendor and could be considered as a black box where only the vendor knows what is being done by each function call. At first, it seems reasonable to think that the drivers are filling a FIFO command queue that will be used to render the next frame. However, the driver’s behavior can be very different depending on the vendor and/or platform. For example, a GPU driver for desktop computers has to take into account the wide variety of hardware that makes drivers a lot more complex than their counterpart on consoles, for which the platform is entirely and reliably known [Carmack 11]. Indeed, on such a platform, the driver can be specifically optimized for the installed hardware, whereas on the PC, the API requires a higher level of abstraction. Therefore, we should assume that each call to the OpenGL API

will result in costly driver operations such as resource management, current state error checking, or multiple shared context threads synchronizations.