Drawing Open-Source Triangles On The ATI RV770
On Monday AMD released the open-source R600/700 3D code to begin fostering the development of an open-source 3D driver for their newer ATI hardware while the related programming documentation still on the way. This code that's finally out in the public domain brings basic EXA acceleration and X-Video support, but on the 3D side there isn't any usable OpenGL support. It is expected that there will be a modest level of open-source 3D support for the ATI R600 and R700 series in the first half of 2009 for end-users, but for now there is just the DRM code and an r600_demo program. In this article we are taking a brief look at this r600_demo debugging utility on the RV770 hardware.
The r600_demo program is described as a "DRM/DRI exercise utility" designed for hardware driver hackers. This utility was originally derived from the earlier r300_demo code, but since then this code has been virtually rewritten in its entirety. Among the capabilities of r600_demo is dumping the GPU and DRM states, command processor setup testing, more extensive command processor tests, triangle testing, texture tests, and GPU reset ability. This open-source code also supports dumping all known GPU registers as well as manually setting register values for testing. The r600_demo can also provide direct ring programming capabilities. Over 18,000 lines of code make up this program.
While r600_demo is not intended for end-users, if you are an enthusiast or developer interested in trying out this experimental code it can be found in the r600_demo Git repository at FreeDesktop.org. Running r600_demo requires a relatively recent version of the xf86-video-radeonhd driver and the latest DRM code (currently found in the r6xx-r7xx-support branch of mesa/drm). In order to use r600_demo, DRI must be enabled and any form of 2D acceleration be disabled from the xorg.conf. As the r600_demo code feeds commands to the hardware through the DRM and doesn't use OpenGL or anything else interpretive, there is no need for Mesa or any other dependencies. The r600_demo utility is programmed to work just on the R600 and R700 series. We had run the latest development code for the RadeonHD driver, R600/700 DRM, and r600_demo on an Ubuntu 8.10 installation with a ATI Radeon HD 4870.
We have triangles! Albeit not anything fancy like glxgears, there's just two triangles to show in the corner of the display.