[comp.sys.amiga.programmer] Explanation of the RAWBLIT format

curious@sundaes.Eng.Sun.COM (Silly Boy) (06/19/91)

Hi, recently I heard mention of the RAWBLIT format on this newsgroup.
I'm curious about how it works and what it does.

Does it make blitting go faster?
Can it eliminate flicker?
Does it require a Chubby agnus?

I'd really appreciate it if the person who mentioned it, or anyone
who knows about it could enlighten me.

Thanks.

sschaem@starnet.uucp (Stephan Schaem) (06/20/91)

The idea in raw blit is 'interleaved' planes, so you have one blit for
all plane.
Its faster because you init the bliter once.
Its 'eliminate' flicker because it simple to sync to the VBeam, and even
without sync the 'size change' efect is defenectly better.....
Actually there are only advantage doing this, but not for all tasks.
For example you will need a FULL mask of the object, or use nultiple
pass.(Memory angry)                      
Also 'hardware' Vertical flip cant be done in raw blit.
etc...

So to use RAWBLIT, interleave you bitplane, and your object data...

mykes@amiga0.SF-Bay.ORG (Mike Schwartz) (06/24/91)

In article <1991Jun20.011733.22036@starnet.uucp> sschaem@starnet.uucp (Stephan Schaem) writes:
>
>The idea in raw blit is 'interleaved' planes, so you have one blit for
>all plane.
>Its faster because you init the bliter once.
>Its 'eliminate' flicker because it simple to sync to the VBeam, and even
>without sync the 'size change' efect is defenectly better.....
>Actually there are only advantage doing this, but not for all tasks.
>For example you will need a FULL mask of the object, or use nultiple
>pass.(Memory angry)                      
>Also 'hardware' Vertical flip cant be done in raw blit.
>etc...
>
>So to use RAWBLIT, interleave you bitplane, and your object data...


In other words:

Screen (destination) Format:
Plane0 scanline 0
Plane1 scanline 0
Plane2 scanline 0
Plane3 scanline 0
Plane0 scanline 1
Plane1 scanline 1
Plane2 scanline 1
Plane3 scanline 1

This is done using the BPLMOD feature of the hardware.  All the
screen bitplanes must be allocated as one contiguous chunk (32000
bytes for 4 plane lo-res). 

Source bitmap format:
Plane0 scanline 0
Plane1 scanline 0
Plane2 scanline 0
Plane3 scanline 0
Plane0 scanline 1
Plane1 scanline 1
Plane2 scanline 1
Plane3 scanline 1

As you can see, the blitter will blit to all planes from the source to
the destination with one blit operation.  A side effect of this format
is that the blitter will be blitting a scan-line 4 planes at a time,
which reduces the effects of beam collision (i.e. when the beam collides
with the screen where the blitter has only partially completed a blit.

Now for the cost.  Using standard bitplane orientation, you need to 
calculate a mask plane to be used with 3-input (cookie cut) blits.  The
same mask plane is used for each of the plane blit operations.  Using the
rowblit technology, software must compute the mask slightly differently:

Source bitmap format:
mask scanline 0
mask scanline 0
mask scanline 0
mask scanline 0
mask scanline 1
mask scanline 1
mask scanline 1
mask scanline 1

In other words, you mask data is 4x larger.


RowBlitting is a major benefit to graphic intensive software, especially
games.  The time that it takes to set up the blitter for single plane
blits is significant, especially when using EHB mode.  EHB mode takes
50% of the CPU cycles due to screen DMA.  During VBL, the blitter has
100% access to the CHIP bus, so you really want to keep the blitter (not
CPU) busy as much of VBL as possible.

--
****************************************************
* I want games that look like Shadow of the Beast  *
* but play like Leisure Suit Larry.                *
****************************************************