4 ms·
There are two major programmable parts to the GPU - the Videocore CPU (VPU) and the shader processors (QPU). The VPU is dual core with a 16 way SIMD integer un
by hermanhermitage 13y ago
There are two major programmable parts to the GPU - the Videocore CPU (VPU) and the shader processors (QPU).
The VPU is dual core with a 16 way SIMD integer unit with a 64x64 byte vector register file, and 32 register 32 bit scalar register file. Its accessible now, for instance see:
https://github.com/hermanhermitage/videocoreiv/wiki/VideoCore-IV-Kernels-under-Linux https://github.com/hermanhermitage/videocoreiv/wiki/VideoCor...
There are a few people targeting compilers and assemblers at the VPU. I think vbcc will probably come first, but I'm aware of people hacking on gcc and llvm.
I generate all assembly from emit() calls in C, but I may publish a better assembler soon.
The QPU work is not so advanced, but we actually have had a handle on the QPU instruction format for a while now, but we need more hands on deck to expose it in the open. There is also a challenge of hooking into the blob and dispatching QPU fragments. I would hope we have something working by the Q3.
See https://github.com/hermanhermitage/videocoreiv/wiki/VideoCore-IV-3d-Graphics-Pipeline https://github.com/hermanhermitage/videocoreiv/wiki/VideoCor... for some preliminary background.
The QPU instructions have 3 VLIW style slots - <fp-add; fp-mul; signal>.
I'll push a qpu.arch when I get some time back on the raspberrypi.