Say I have a gpu driver (mali400) that I can reverse engineer on a SoC (raspberry pi like). On that SoC, there is a HDMi output.
Now, to be able to stream data (a video, a game) to a hdmi monitor or a TV connected to the gpu output, should I implement hdmi in my OS or is the gpu able to sort everything out by itself, converting image to the right format automatically?
I don't get who is responsible for what here.
On Raspberry Pi the GPU (VideoCore) handles the communication with the display device. Everything you have to do is to send some "commands" to the GPU to set the video mode and get the address for the video memory. Pixels written in the video memory are drawn in the display (no need for additional commands).
I believe the most SoCs with GPU works this way. Anyway, you should look for the documentation of your SoC (this kind of information is there).