3 ms·
If it signed Amiga's death warrant, it was one of a long list of signatories. If I understand correctly, the performance impacts are complicated and are both w
by adrianmonk 8y ago
If it signed Amiga's death warrant, it was one of a long list of signatories.
If I understand correctly, the performance impacts are complicated and are both worse and better than your quick explanation goes into.
An example of how it might be worse: suppose I'm drawing a one-pixel-wide vertical line on a 32-color (5-plane) screen. I not only only need to 5 writes, but I also need to do 5 reads. Because it's a byte-addressable system and I need to change 1 bit but leave the other 7 bits unchanged. So I must read, apply a mask, and write.
One the other hand, if I'm copying a bitmap or filling an area, it doesn't create much performance penalty at all. Who cares whether I copy 500 bytes from one buffer memory location to another or 5 sets of 100 bytes from 5 memory locations to 5 others.
It also doesn't create much of a performance penalty if I'm drawing a horizontal line because those neighboring pixels are neighboring bits and you can do them all in one go. (You can get crazy and apply this to nearly-horizontal lines too.)
An interesting corollary of this is that horizontal lines are way faster to draw than vertical ones.
- rzzzt 8y agoEGA and up handles this by beefing up hardware support for read-modify-write operations and setting/unsetting bits in bulk, eg. you can XOR 8 pixels with a bit pattern on three out of four planes simultaneously with a single memory write.