Double buffering on ATI Radeon with XBIOS

Here is a video recording from Atari Falcon equipped with CT60, CTPCI (PCI bridge) and ATI Radeon 7000 graphics card. Short, interactive demo presents some new, hardware accelerated XBIOS functions. Mainly memory block filling, logical operations on those blocks (there’s 16 kinds of block operations) with screen double buffering (to avoid animation flickering, for a first time on Atari with Radeon ;> ). New, beta drivers were kindly provided by their author Didier Mequignon.
Technical stuff: Resolution presented is 640x480x32 bits per pixel@75hz(but it can be set to any resolution supported by graphics card), CPU Motorola mc68060 rev. 6 (@90mhz). In one frame logical screen is filled with black, from video buffer in video ram pre-loaded png image is copied, horizontal line is drawn on variable height, pixel in middle on the screen, after that another video memory fragment is copied to destination(offscreen buffer) with chosen block operation. Block operation types can be changed by pressing B key (for background image) and T(for logo). Additionally HELP key dumps all informations about video modes of current graphical card to log file (there’s plenty of them, so operation can take a while). Framerate is something like 66-75, so it’s not that bad. Try achieve it on VIDEL ;).

ATI Radeon double buffering with Atari XBIOS demo from nokturnal on Vimeo.

Hardware accelerated XBIOS functions used in demo aren’t present in last version of CTPCI/Radeon drivers from December 2010, they will be available in next release.
It’s worth to mention that the last version of drivers had incorrectly implemented Vsync() function(vertical sync) what prevents making double buffering at all. Currently data copying from local bus to CTPCI is very slow. BURST mode will be added for SDRAM->CTPCI communication (yes, only one directional), it may appear in future firmware updates, but there is no information what speed up we can expect. As a comparison I will give an example what can be done with operating on Radeon VRAM directly with CPU. We can fill one frame with black color and draw one horizontal line. And it is enough to produce a slideshow ;-).
For sure alot of functions is still missing, but it will change in future.

Here is full source code, compiled executable for above program with examples of usage of new functions. More detailed description will be soon.


About this entry