Hands-on Projects for the Linux Graphics Subsystem
The main parts that X Server interacts with the video card were developed mainly in section 3.2.2 and section 7.
Section 3.2.2 covered the InitOutput() function that was called by the main() routine to handle the output processing. The first sections of 3.3.3 described mainly the configuration and the initialization of the video card. It was the last two sections section 18.104.22.168 and section 22.214.171.124 that actually included the routines that dispatch the X Client requests which handle Graphic Context (GC) manipulation, window manipulation and the Root Window (the initial window) initialization.
As we saw at section 126.96.36.199 for the current configuration those routines are grouped into two sets. The first are the mi (Machine Independent) routines and the second the fb (Frame Buffer) routines. As we read at X.Org Manual pages:
|When the X server is requested to render drawing primitives, it does so by calling drawing functions through the graphics context's operation function pointer table (i.e., the GCOps functions). These functions render the basic graphics operations such as drawing rectangles, lines, text or copying pixmaps. Default routines are provided either by the MI layer, which draws indirectly through a simple span interface, or by the framebuffer layers (e.g., CFB, MFB, FB), which draw directly to a linearly mapped frame buffer.|
Section 188.8.131.52 describes the process where the frame buffer is mapped to the video card memory.
Section 7.1 and section 7.1.1 discuss a complete example of a x Client request dispatching that involves the routines mentioned previously. Those sections should be read after section 1, section 2 and section 184.108.40.206.