3D Rendering in the Cloud
01 September 2012
Many modern applications and window systems perform 3D rendering. For a cloud system to support such applications, that 3D rendering must be performed in the cloud, because the end-user equipment cannot be relied upon to contain the necessary rendering hardware. All systems that perform 3D rendering in the cloud are faced with two fundamental and related problems, namely: (1) How to enable an arbitrary number of users to produce rendered pixel streams, and (2) how to transfer those pixel streams out of the server's frame buffers and into one or more encoders, for transmission to the user. In our cloud system we have implemented a new form of display virtualization that solves both these problems in a lowlevel and transparent manner. Using our display virtualization (which we call VCRTC), the cloud system can support an arbitrary number of pixel streams (bounded only by memory and bandwidth resources), and it can dynamically associate those streams with encoders. VCRTCs are completely transparent to the applications: No application needs to be modify, recompiled, or even relinked to use VCRTCs. Because they are low-level and transparent, VCRTCs are also a general mechanism with utility beyond cloud systems. For example, with only a month of effort, VCRTCs have been used to implement full hardware-based rendering for a certain class of display devices that until now did not support hardware-based rendering on Linux.