| Another Idea to Improve the AMIGA Chipset | page 1 2
|
|---|
|
|---|
Gunnar von Boehn Germany
| | (Moderator) Posts 5775 23 Apr 2009 07:02
| As we are brainstorming with fancy ideas on improving the AMIGA chipset here comes mine. I think a small deficiencie of the AMIGA blitter is that it can not reuse one of its sources. The AMIGA Blitter is perfect for copying BITMAPS and masking them. You can use the AMIGA BLITTER perfectly to opaque copy memory and to blit BOBS. To copy a BOB the AMIGA Blitter needs to use 3 SOURCES and 1 DESTINATION. SRC A = Background SRC B = BOB SRC C = BOB-MASK DST = Background write again This works fine. Only to be able to copy BOBS which multiply planes - You either need to start the blitter one time per plane. Or you need to have a BOB-MASK that doublecated per plane. The first is more overhead - the last wastes memory. If one SRC could loop then you could copy a BOB with one go without the need of more memory. Cheers
| |
Marcel Verdaasdonk Netherlands
| | Posts 3975 23 Apr 2009 07:31
| Make use of cache for the blitter instead of just a buffer. Try and keep the last 10 actions done by the blitter in cache. Maybe 25 actions, but i don't think the gain would increase after 10. This means you could go back 10 times on SRC A, B or C. Or copy DST to another place on the playing field.I am not explaining this correctly but that is because i haven't slept. Shame on me but i need to have more hours i a day to finish me work. :( I think Caching and besides that still buffering would be a advantage here.
| |
Gunnar von Boehn Germany
| | (Moderator) Posts 5775 23 Apr 2009 07:56
| Marcel Verdaasdonk wrote:
| Make use of cache for the blitter instead of just a buffer.
|
A cache would NOT help here. The point was to reduce the memory requirement for BOBS that use interleave bit plane mode. A cache for the blitter is bad because of a number of reasons. A) A cache has the tremendous disadvantage of being very expensive in HW. B) We have only a limited amount of cache resources - to give the Blitter a cache you would have to steal it from the 3D core. C) A cache for the blitter is difficult to do as it needs to be write able too. Instead doing very complex way that give more work than benefit we should focus on the small elegant solutions. Please let us loook for good improvements which we could for little HW investment.
| |
Thierry Atheist Canada
| | Posts 1828 23 Apr 2009 09:30
| Please excuse me, I have no idea what I'm talking about, but, does the copper use registers, more registers for copper????
| |
Channel Z
| | Posts 227 23 Apr 2009 10:21
| @Thierry The copper's purpose is to write to the other custom chips. For example telling the blitter to write something to memory, or changing a color in the current palette. The copper does this by waiting for a certain beam position being drawn on the screen, and what it is supposed to wait for and what custom chip register it should write to is decided by the programmer in a copper list. Because it is only writing to the custom chip registers (and cannot write elsewhere in RAM by itself), it wouldn't need more/bigger registers if there aren't hundreds of new custom chip registers that need to be addressed. A copper that can write anywhere in RAM would be cool, but the way Amiga is built is having the copper telling the blitter to do so. About the idea itself: anything that can improve 2D performance is worth having a look at in my book! :D
| |
Claudio Wieland Germany
| | (Natami Team) Posts 703 23 Apr 2009 13:57
| Gunnar von Boehn wrote:
| As we are brainstorming with fancy ideas on improving the AMIGA chipset here comes mine. I think a small deficiencie of the AMIGA blitter is that it can not reuse one of its sources. The AMIGA Blitter is perfect for copying BITMAPS and masking them. You can use the AMIGA BLITTER perfectly to opaque copy memory and to blit BOBS. To copy a BOB the AMIGA Blitter needs to use 3 SOURCES and 1 DESTINATION. SRC A = Background SRC B = BOB SRC C = BOB-MASK DST = Background write again This works fine. Only to be able to copy BOBS which multiply planes - You either need to start the blitter one time per plane. Or you need to have a BOB-MASK that doublecated per plane. The first is more overhead - the last wastes memory. If one SRC could loop then you could copy a BOB with one go without the need of more memory. Cheers
|
Hi Gunnar, if you maybe could explain a bit more detailed what exact kind of screenmode you are targeting? I got a bit confused about your description. I have rough suspicions about your aim, maybe if you clarify further, I may be of help. Claudio
| |
Team Chaos Leader USA
| | (Moderator) Posts 2094 23 Apr 2009 14:00
| 99% of newly written software will be using chunky modes, not planar. True?
| |
Erik Bauer Italy
| | Posts 301 23 Apr 2009 14:15
| Depends, AFAIK planar had it's advantages in 2D games. But I can be mistaken, in this case please correct and instruct me ;-)
| |
Samuel D Crow USA
| | (Natami Team) Posts 1295 23 Apr 2009 16:35
| The only advantage of planar graphics over chunky is that you can have graphics modes that take less than 8 bits per pixel and use less memory. If you have only 6 bits per pixel, for example, the bit-packing would be a detriment to the chunky display but the bit planar display will happily use 6 bitplanes to represent 64 colors. @Gunnar I think the idea of putting a counter on the mask plane is a great idea. It will allow us to reuse the mask plane's contents for all of the bitplanes per row to work. The disadvantage of this approach is that we'd have to cut up the BOBs into memory access width swaths to take advantage of the interleave rather than using the full width. It adds a little complexity but I think it's worth it.
| |
Gunnar von Boehn Germany
| | (Moderator) Posts 5775 23 Apr 2009 16:37
| My example was for "normal" Blitter behavior for interleaved PLANAR BITMAPS. On AMIGA you could have interleaved or non-interleaved bitmap screens. Interleaved bitmaps had the advantage that you could copy 1 bob with 1 Blitter call. But to only use 1 call you needed a mask that repeated itself for all the SRC planes. On non interleaved planer screens you needed for one Bob 1 Blitter call per plane - But you only needed a 1 plane mask. This did save memory. My proposal was to add a loop counter to the blitter allowing it to stay ion the MASK and to only add the MODULA ádd the next line and not after each plane. This would combine the advantages of both PLANAR types. Only 1 Blitter call needed but small MASK. My example was planar only. While the normal AMIGA Blitter could also be used for CHUNKY modes - some new features might come even more handy for chunky modes. As for example the 3Dcore could be used to blit BOBS and to rotate them for free ....
| |
Jeremy Mika USA
| | Posts 29 23 Apr 2009 16:52
| Hmmm... certainly nothing wrong with the loop counter / modula method... What if MASK was a pointer to a list of pointers (for each plane). @MASK ----- MASK0 MASK1 ... MASK7 The Blitter would read this list at the start of the copy and set up 8 internal pointers for each plane. The idea here is that you COULD specify unique non-interleaved masks for each plane for some possible effects (though I can't think of any practical uses right now).
| |
Gunnar von Boehn Germany
| | (Moderator) Posts 5775 23 Apr 2009 16:54
| Jeremy Mika wrote:
| Hmmm... certainly nothing wrong with the loop counter / modula method... What if MASK was a pointer to a list of pointers (for each plane). @MASK ----- MASK0 MASK1 ... MASK7 The Blitter would read this list at the start of the copy and set up 8 internal pointers for each plane. The idea here is that you COULD specify unique non-interleaved masks for each plane for some possible effects (though I can't think of any practical uses right now).
|
Nice idea but this would be a bigger change. My idea would only be a very small change. It would only add a 3bit register to the blitter. But it would reduce the size of a 8 plane interleaved bob by 45%. Small change with relative big effect - and the behavior is fully backward compatible.
| |
Jens Drößler Germany
| | Posts 136 23 Apr 2009 17:09
| Soooo, just go for it°
| |
Claudio Wieland Germany
| | (Natami Team) Posts 703 23 Apr 2009 17:27
| Yes, this sounds like a very good idea to me. Just do it ^^ .
| |
Thierry Atheist Canada
| | Posts 1828 23 Apr 2009 19:22
| Jeremy Mika wrote:
| (though I can't think of any practical uses right now).
|
Hi Jeremy,There may be as many as 1,000 math formulae that started life this way....
| |
Marcel Verdaasdonk Netherlands
| | Posts 3975 23 Apr 2009 21:11
| you could add it as a flag like loop mask or something this would take a S-R latch and a and nand or Xor gate. And this would take up in total 4 xor gate and a extra XOR gate or NAND or AND gate, depending on the set flag situation you would like to have. you would need to add some control logic for checking the flag then but this is one of the cheaper ways i can think of.
| |
Gunnar von Boehn Germany
| | (Moderator) Posts 5775 24 Apr 2009 05:58
| Erik Bauer wrote:
| Depends, AFAIK planar had it's advantages in 2D games. But I can be mistaken, in this case please correct and instruct me ;-)
|
The main advantage of planar was that you could save memory on low color screens. But this advantage is not important anymore. A general advantage of the AMIGA chipset is that you could scroll for free. On a PC you needed to copy the whole screen to scroll it. The free scolling advantage of the AMIGA chipset is valid to both the old PLANAR and the new SuperAGA chunky modes. Chunky has some advantages. A) Cookie Cut Bobs. To copy a BOB you need no mask anymore but could select the transparence with a color. This saves memory and makes copying faster. B) 3D or rotation effects need where you set each pixel individually - are much better to do on CHUNKY then on PLANAR. For a new game I would propably pick a 16bit chunky mode as it easier to paint GFX for and easy to use.
| |
Erik Bauer Italy
| | Posts 301 24 Apr 2009 08:08
| Very well then... So strange that in my mind I was convinced that Planar had some advantages reguarding scrolling and blitting speed...
| |
Amiga Believer Canada
| | Posts 282 24 Apr 2009 21:36
| I think it is a good idea, however, I think that there should be a cut-off date about the features which go in this version of the chipset. I would say that this feature should either be the last feature to add in this version of the chipset or the first feature that is kept for the next version. If not, the boards shall never get out. I really think that it would be good to try to get the developper board out as soon as possible and the consumer board on July the 24th 2010, the 25th anniversary of the Amiga 1000. Releasing the consumer version on that date can be used as a marketing element.
| |
Gunnar von Boehn Germany
| | (Moderator) Posts 5775 25 Apr 2009 05:18
| Amiga Believer wrote:
| I think it is a good idea, however, I think that there should be a cut-off date about the features which go in this version of the chipset. I would say that this feature should either be the last feature to add in this version of the chipset or the first feature that is kept for the next version. If not, the boards shall never get out.
|
Adding this feature or any new Chipset feature is independent of the board release date. The board release date is only depending on the dates when the mainboard design is finished and when the mainboards are manufactured. By design the Natami chipset can always (at any time) be updated with new features by loading them into the chipset. I think the upgradebility of the Natami is its beauty. The mainbaord has a flash which contains its setting. (Like the Kickstart disk of the A1000) Installing a new chipset with more features is possible at any time. Cheers
| |
|