If you want, go ahead and compile it now and plug the raspberry pi into a monitor or television with a HDMI interface. As we’re now including new hardware into the mix it’s possible that your monitor or TV doesn’t support the resolution and colour depth that the example is hard coded to use.
It’s an example that’s designed to be simple rather than supporting every HDMI panel out there. I’m using an old Hanns-G HUD19 monitor with DVI-HDMI adaptor.
The size of the framebuffer memory block is given by: The number of bytes per pixel sets the number of colours available.
The Raspberry-Pi GPU supports 8-bit, but in this mode the 8-bit value corresponds to a palette entry, and the palette appears to be very limited A palette mode can be really useful as it’s fast (minimal amount of memory required for the graphics) and can be really useful for some special effects by simply altering the palette.
This mailbox is responsible for negotiating the framebuffer.
We need some code to be able to read and write data from the mailbox and we also need to define the data structure defined by the framebuffer mailbox documentation.
It’s a specialised processor, but also a powerful processor and most people would like to run code on it, just like we’re running code on the GPU itself, but alas the GPU information is still under NDA (Non-Disclosure Agreement) terms.
Broadcom however, did release some information and some of the most interesting information is in the [ (BCM21553 Graphics Driver).The ARM014 tutorial introduces a few new peices of the puzzle.Firstly, as an aid to debugging now the code is getting more complex it introduces the mini UART which means we can have a basic “console”.As we’ve bothered with the standard c library we can see how to tie the standard library functions like to the UART.Secondly, it introduces the mailbox property interface which is a method of the ARM processor talking to the GPU.This tutorial shows how a 700MHz (or 900MHz) processor doesn’t give you carte-blanche to program in C and end up with an optimised output.