Research Projects: CGLX
So for what is CGLX good for and what does it do for you. In general CGLX will allow OpenGL applications to be displayed on a visualisation cluster like a tiled display or a multi projector based system for VR applications. Currently displaying OpenGL content on multible displays would require using the proxybased XDMX server or utilizing Chromium.
Since DMX runs basically on one "head" workstation with a display manager which handles all graphic content for all the tiles in the array, XDMX is limited to a small display array and not scalable without dramatic performence penalties. XDMX is also not able to take advantage of the graphics cards on the rendering nodes, which means no hardware acceleration is available.
Chromium on the other side is able to take advantage of the hardware acceleration on the tile nodes, but it comes with another limitation. Chromium uses tile sorting processes to determine which node in the cluster needs to draw which sections of the OpenGL Content. After splitting the graphics content Chromium will send out this information over the network to each node in the cluster. Stream Processing Units on these nodes will read these "OpenGL Streams" an directly pass it to the graphics card on the nodes. Chromium can be configures using first-sort or last-sort behavior which allows all nodes in the visualization cluster to draw on one single image on dedicated output server node. Two disadvantages can be found when using chromium. The time needed to sort and split OpenGl commands increases with the number of tiles installed. Because these streams need to be send trough the network this also displaysbb a natural limitation in scalability. Another disadvantage with Chromium is that the whole OpenGL API (1.2) had to be reimplemented to enable Chromium split and sort graphic content by intercepting all OpenGl commands. This approch allows conventional OpenGl applications to be linked against the Chromium library. This means that without changing any code, applications can then run on a chromium-based visualization cluster.
CGLX was developped to overcome some especially performance related issues with cluster based visualisation for OpenGL applications. The key idea behind CGLX is that each node in a visualization cluster will be running the same application and utilizing the local graphics card with all available hardware acceleration. CGLX will intercept only a view selected OpenGL calls, by reimplementing them. Internally CGLX will handle all the communication between the application on the nodes and the head application. All information that needs to be distributed among the nodes will be handled by CGLX and its communication layer.
To run an OpenGl applcation on a cluster the application first needes to be compiled against the cglX.lib. CGLX needs to know how the cluster (tile Display) looks like. Therefore the CGLX's configuration tool 'csconfig' needs to be executed. This application needs to run on the head node of the cluster. It allows the node configuration and starting of applications. To start an application on the rendering nodes (tiles) "csconfig" contacts the CGLX demons (csdemon) on the rendering nodes. After the connection between the configuration tool (csconfig) and the demons (csdemons) is established the nodes can be configured (resolution, tile position, synchronisation,...).
This research is supported in part by the California Institute for Telecommunications and Information Technology (Calit2).
Related Resarch Projects
This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by the author's copyright. This work may not be reposted without the explicit permission of the copyright holder.