what is the difference between a Linux or software-controlled framebuffer and a GPU memory? Is there any good pictorial guide to explain how Linux framebuffer works? On an embedded board with GPU, do we normally use framebuffer or GPU to process a live videofeed?
1 Answer
A framebuffer is an area of memory whose content is ready to be displayed. There can be multiple framebuffers in memory at the same time: one (for each monitor) that's currently displayed (front buffer) and others that are being prepared (back buffers or working buffers).
A framebuffer may be filled by any part of the system: by firmware running on the GPU, by the kernel running on the CPU, by the X server, by an application…
A GPU offers drawing functionality that is faster than having software running on the main CPU calculate the pixels one by one. This functionality can include things like “fill this rectangle with a uniform color”, “copy this rectangle to this position”, “shrink this rectangle by 1.5”, “apply this color mask”, “calculate a perspective of this 3D object”, “decompress this MPEG stream”, …
Rendering a video is typically done in the GPU whenever possible. The specialized hardware in the GPU is better (faster, using less power, using less memory bandwidth) at it than a general-purpose CPU.