动机 – 用C(和装配,如果需要)编写程序,为屏幕红色的矩形区域着色.
STRICT要求 – 在文本/控制台模式下使用最小的实用程序和接口运行GNU / Linux.所以没有X(或类似Wayland / Mir),没有非默认(内核提供的POSIX,LSB等)库或接口,除了监视器的设备驱动程序之外没有其他假设.
实际上,我正在寻找的是有关如何编写程序的信息,该程序最终将通过VGA端口发送信号并通过电缆连接到显示器,以便为屏幕的特定部分着色.
抱歉,如果这听起来很粗鲁,但没有“你为什么要这样做?”或者“你为什么不使用ABC库?”回答.我试图了解如何编写X服务器的实现或内核帧缓冲(/ dev / fb0)库.可以提供指向C库源的链接.
no extra assumptions except the presence of the device driver for the monitor.
这意味着您可以使用X或Wayland,因为这些是Linux上的图形驱动程序基础结构.
Linux(内核)本身不包含任何图形基元.它提供了一些与GPU通信的接口,在其上分配内存并配置屏幕上的帧缓冲.但除了原始帧缓冲内存访问外,Linux内核无法执行绘图操作.为此,您需要在用户空间中使用一些基础结构
Wayland构建于DRI2之上,后者又与DRM Kernel-API对话.然后你需要GPU依赖状态跟踪器. Mesa为许多GPU提供状态跟踪器,并提供OpenGL和OpenVG前端.
NVidia和ATI propiatary,闭源图形驱动程序仅适用于X.因此,对于那些使用GPU的人来说,你必须使用X.就是这样.
除此之外,您可以通过/ dev / fbdev操作屏幕上的帧缓冲存储器,但这只是像素推动,没有任何GPU加速.