Projects » Amiga OS 4 Projects » RadeonHD Driver » RadeonHD Development Log » 2D Blitter Acceleration for R5xx Chipsets is Done

2D Blitter Acceleration for R5xx Chipsets is Done

Hardware acceleration of 2D blitter operations for R5xx chipsets (Radeon X1000 series cards) was completed last with the exception of blitting patterns. This is another milestone in the development of the RadeonHD for Amiga OS 4.x graphics driver. Blitting patterns was left out because it is a less frequently used operation that cannot be performed efficiently by the R5xx's 2D acceleration hardware. Instead, it would require using the R5xx's 3D capabilities. This will be added later, after hardware compositing is added (which also uses the 3D capabilities).

The performance of the 2D hardware-accelerated blitter can be seen in the following table:

Operation Radeon 9000

(operations/s)
Radeon X1550
no hardware acceleration

(operations/s)
Radeon X1550
with hardware acceleration

(operations/s)
RectFill() 3567 58 4477
RectFill() pattern 174 53 59
WritePixel() 404601 428043 82235
WriteChunkyPixels() 4026 1192 1201
WritePixelArray8() 4027 1196 1206
WritePixelLine8() 179666 123706 55925
DrawEllipse() 79010 22213 18371
DrawCircle() 83256 23857 19450
Draw() 11142 2848 28989
Draw() Hor/Ver 63881 7395 30679
ScrollRaster() X 191 1 265
ScrollRaster() Y 185 1 264
PutText() 38518 9167 26192
BltBitMap() 32704 33 20615
BltBitMapRastPort() 32137 33 20245
BltMapScale() 884 11 304

These results were obtained using P96Speed. All tests were performed using a 1920x1080 RGBA screen. The Radeon X1550 tests were performed with the Radeon X1550 as secondary graphics card, so it is possible that the Radeon 9000 was still involved in some of the operations.

Some operations were performed faster by the Radeon X1550, others were faster on the Radeon 9000. Confusingly, there are some operations (e.g., WritePixel()) which were faster on the Radeon X1550 without hardware acceleration. My suspicions are that these operations are still rendered by the CPU, and the bitmap was in main memory during these operations for the non hardware accelerated version; that way, the slow 33 MHz PCI bus would not be the bottleneck.

The speed of operation depends on the speed of the bus to the graphics card as well as the speed of the GPU performing the operation, and how big an area is covered by the operation. In the tests above, a faster card that is constrained by a 33 MHz PCI bus (I can't use the faster 66 PCI MHz slot simultaneously with the AGP slot) is compared to a slower card on a bus with four times the theoretical upload speed (via a 2xs AGP port). This is probably why some operations are faster on the Radeon X1550 while others are faster on the older Radeon 9000 pro. For example, RectFill() fills both large and small rectangles, and the Radeon X1550 comes out on top. BltBitMap(), on the other hand, blits small uniformly sized squares, meaning that the time taken to upload the commands is much more significant when compared to the time taken by the GPU to perform the operation.

What is clear from the above results, is the huge difference that hardware accelerated blitter makes. It transforms the graphics from being slow and sluggish, to being fast and responsive. There is also a possibility that the speed could be improved further later, since the commands are currently transferred in PIO mode, instead of using DMA.



Projects » Amiga OS 4 Projects » RadeonHD Driver » RadeonHD Development Log » 2D Blitter Acceleration for R5xx Chipsets is Done

Post your comment

Comments

  • Well done Hans good work. What OS 4.1 could really use is a better range of supported graphics cards.

    Posted by NovaCoder, 11/05/2009 7:43pm (8 years ago)

RSS feed for comments on this page | RSS feed for all comments


Projects » Amiga OS 4 Projects » RadeonHD Driver » RadeonHD Development Log » 2D Blitter Acceleration for R5xx Chipsets is Done