The title is pretty open-ended, but so is my question. It's not really even a specific question, I just have a major gap in my understanding of how graphical output works on ANY system, but in particular, I'm trying to figure it out for an Allwinner A33 (BPi-M2M). I'm hoping this forum can help me identify where I'm missing information. This is something that I've always kind of taken for granted on x86 systems. You plug in a monitor and pictures show up. I'm trying to learn how this works on embedded systems, and it's not as straightforward.
In the device tree for this board, there is already
a GPU node and
a simple framebuffer (though it needs to be enabled). The board has LVDS and MIPI-DSI outputs also. When it boots, there is a /dev/fb0 available, but no /dev/dri node and nothing in /sys/class/drm. Allwinner also has this concept of a
display engine, which is
also defined in the device tree, but I don't understand the role that it has.
If I want to attach a display to the BPi (LVDS or MIPI-DSI) and either get a virtual terminal on the display or run X (let's say for now I don't even need hardware acceleration), what would I need to do? There's a framebuffer, but in itself, isn't that just a chunk of memory in which you can compose a frame? What tells the system to send the data in that framebuffer to the actual LVDS or DSI pins? Does the video driver just
know to do that based on how LVDS/DSI is configured in the device tree? Or is that the purpose of the display engine?
My best guess is that you have to construct a kernel mode setting and add a `video=` argument to the bootargs. But even then, it seems like something else has to be configured in order to tell X (or something like fbcon) to start drawing things in the framebuffer.
In short, what steps do I need to take (in general) in order to get a system like this to produce video output that I can actually use with an LVDS or DSI panel?