I am trying to understand what the standard Amiga Blitter can do and how fast it is. As i am mostly an Atari coder i compare the Amiga Blitter with the Atari STE Blitter.
It seems that the Amiga Blitter is more flexible than the Atari one and can
- read from up to three source addresses
- draw and restore Bobīs (with mask)
- fill areas
- draw horizontal and diagonal lines
- copy from memory to memory
Anything i forgot?
I read on some internet pages that the Amiga Blitter can fill 1 million pixels per second. Can anyone approve this information because it sounds slow for me? And is this value for 4 planes or more? (By the way: The STE Blitter can fill 8 million pixels per second - 4 planes - 68k has to pause)
Is the Amiga-Blitter working parallel to the 68k or not?
According to the Amiga Hardware Reference manual the Blitter can fill polygons at 16 million pixels per second (I guess 1 plane) and can draw lines at 1 million pixels per second (basically it sets 1 bit for each word of data it writes).
Yeah of course the Amiga Blitter runs in parallel to the CPU :0) The basic idea is the CPU uses the even cycles while the chipset uses the odd cycles (maybe the other way round). There is also a flag on the Blitter which if set will override the CPU if both the Blitter and CPU are requesting the same cycle.
The Amigas Blitter can also combine the data from it's 3 DMA sources in 256 different ways.
It can also do rectangular masking on one, and data shifting on two of the three input sources in order to facilitate drawing operations at arbitrary pixel positions, and it can draw its lines between any arbitrary points (not just horizontal and diagonal, though maybe you did mean arbitrary by this) with a 16 pixel pattern.
Drawing and copying are not unique operation modes, but rather different settings and combinations of the input data. The three input sources used together with shifting, masking and any logical combination of these allow you to configure the blitter to do anything from a simple memory clear or copy, per pixel scrolling of bitmaps, to drawing of masked graphics into your bitmaps with only a single blitter call.
As for the speed, the general formula says a blitter operation takes 4, 6 or 8 clock cycles per each 16 bit word it processes depending on how many input sources you use, and 8 cycles per pixel (1 bitplane, 8 cycles per bit) in line drawing mode. On a ~7 MHz PAL Amiga 500 that should roughly equal the numbers Toffeeman gave you, not taking into account any other DMA competing for the memory cycles.
(I hope I got this right! Damn it was a long time ago...)