LWN.net Logo

Raspberry Pi VideoCore driver code released

Raspberry Pi VideoCore driver code released

Posted Oct 24, 2012 15:22 UTC (Wed) by swetland (subscriber, #63414)
In reply to: Raspberry Pi VideoCore driver code released by cthart
Parent article: Raspberry Pi VideoCore driver code released

For PC GPU cards and for the majority of SoC GPUs, there is significant software that runs on the host CPU to transform OpenGL (or DirectX) command/data streams into whatever native formats the GPU understands, shader compilers, etc.

In the Broadcom VideoCore implementation, the embedded RISC processor in the GPU does all of this (including the shader compiler, I'm told), and the interface exposed to the host is the OpenGL|ES API (via RPC). Firmware to support this is downloaded at some point during/after boot.

At the end of the day, from the perspective of the person on the other side, you get an open source driver and no proprietary code that has to run on the host (big win), but from the perspective of "opening up their GPU drivers" it's sort of apples and oranges -- the BCM GPU driver is RPC glue and stubs, the drivers from (most) other vendors contain a pile of "secret sauce" related to how the hardware works.


(Log in to post comments)

Raspberry Pi VideoCore driver code released

Posted Oct 24, 2012 16:00 UTC (Wed) by arnd (subscriber, #8866) [Link]

I only briefly looked at the source code, but I can confirm that the shader compiler, like almost anything else, is indeed just called via RPC into the VideoCore.

Describing this as a fully open source graphics stack is of course a gigantic marketing stunt, but I also agree that it is a major step forward. Not so much because of the technical merits of that code but because it shows how even a company that is as closed as Broadcom can move towards an open ecosystem, and because it provides a good argument to counter all the SoC and GPU companies that require proprietary blobs running in user space or even in the kernel.

It's worth mentioning that the same GPU is used in the BCM28145/55 smartphone SoCs, and I really hope that having a completely open user space implementation gives Broadcom an advantage in Android products that leads to other companies moving to even more open graphics stacks.

Since you mentioned other implementations: are you aware of any GPU besides this one that has everything including the shader compiler in the GPU itself and can do the same trick?

Raspberry Pi VideoCore driver code released

Posted Oct 24, 2012 21:15 UTC (Wed) by swetland (subscriber, #63414) [Link]

Nope -- every other GPU implementation I've seen thus far requires the shader compiler and even the general translation from OpenGLES API to native formats and command queues to happen on the host side. Including a full general purpose processor in the GPU block is unique to Broadcom to the best of my knowledge (though it is similar to how a lot of codec blocks work -- a pretty powerful, relatively general purpose cpu or dsp combined with dedicated hw accel units for heavy lifting).

Raspberry Pi VideoCore driver code released

Posted Oct 24, 2012 23:30 UTC (Wed) by pabs (subscriber, #43278) [Link]

The best thing about giant marketing stunts is that they can be used as blunt objects to beat other vendors with :D

Copyright © 2013, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds