So ‘GPGPU’ (General Purpose GPU) programs are all the rage nowadays. I was wondering, who has good ideas of (calculation) tasks you could use the MSX v9938/58 VDP’s command engine for? Theoretically it is much faster than the Z80 :).
Some things the v9938 can do for you:
- logical operations with other data (from VRAM or CPU): and, or, xor, not, timp, tand, tor, txor, tnot
- 2 bit-precision rotates (in screen 6), i.e. multiplication and division by 4
- 2 bit shifts (using and for bit masks)
Maybe there is more you can do by e.g. using screen 12, or by placing the data in memory in clever structures, or by using the ‘transparent’ versions of the operators, or by storing data in screen 5 and reading it in screen 6…? Maarten (tH) mentioned that you can color the area between two white dots on a black background by doing an XOR copy one pixel to the left, those kinds of techniques are interesting applications.
I was thinking about my Tiger Tree Hash implementation (link), which does a lot of 64-bit operations which are relatively slow and the VDP could easily apply them to 8 bytes in one go, with carry-over. But I also need to additions/subtracts and odd-number shifts, and TTH is not very easily paralellisable, so I would need to move a lot of data back and forth between the CPU, which very likely causes too much overhead for this to be useful there.
So, any thoughts? Other types of calculations the VDP (or another MSX chip) can do, perhaps by coming up with clever combinations of these? And any applications for this? Certain kinds of hashes (CRC?), bitmap conversion, certain 3D calculations, folding@home, mp3 decoding :)?
Btw, you can also respond on my blog, if you want.