Some years back I developed something like this for TVC but never got around to a release. I designed a simple shader, wrote an assembler, and a graphical simulator that let me set breakpoints, view registers in several formats, etc, with interactive display of the framebuffer contents all in an X gui. I wanted to start with integer math only, so I also created a floating point library in the shader's assembly language. After discovering what a PITA it was to write complex shader programs in assembly, I started on a compiler, but ran out of time.
The shaders were going to plug into the TVC's MU and command data buses, just like all the other functional units. The shaders were Harvard architecture with 4 -> then 8 registers and were designed to be somewhat pleasant to program in assembly. I don't think it had a CCR.
The shaders were designed to be mostly independent, but each had a built-in DMA unit, that could be triggered via the shader's software to pull and post framebuffer contents (which could be any sort of data). Execution control and gross synchronization was going to be done through the command bus. I vaguely remember thinking about building some sort of block of hardware based mutexes into the memory controller.
The novel bit (I thought) about the shaders was that the program and memory spaces were going on separate bram's that could be updated independently. This meant you could either move a new program to a fixed unit of work, or move another section of data to an existing program; whichever required the least memory traffic. I also vaguely remember thinking about partitioning the memories so that they could be updated with the next program or data while they were executing their current job.
That code is not in front of me. I'll have to dig it up and get a release out in case anyone might find it useful.
-John -- John R. Culp [email protected] _______________________________________________ Open-graphics mailing list [email protected] http://lists.duskglow.com/mailman/listinfo/open-graphics List service provided by Duskglow Consulting, LLC (www.duskglow.com)
