如何在 OS 编程中从 VGA 切换到 SVGA

How to switch from VGA to SVGA in OS programming

我正在尝试理解所有 OS 理论。但是这里有一个问题,我在网上找不到任何信息来切换 SVGA(或 HDMI)以在显示器上绘图。我已经知道我们为 VGA 分配了 4x4096 KB 的视频内存,但实际上,如果我们想要 1080x720 分辨率,它是有限的。所以 - 如何切换到 SVGA(或 HDMI)?可能是系统调用或 I/O 请求? - 之后如何重新定义显存地址? - 奖金问题:如何使用加速硬件技术?

预先感谢您的回答,对于我最终的英语错误感到抱歉

分辨率大于 VGA 的唯一常见 low-level 标准是 VESA BIOS 扩展 (VBE)。我不知道 UEFI 向后兼容性涵盖的范围有多广,因为它现在几乎从未使用过。

BIOS 扩展就像 driver 内置在卡本身中。要切换视频模式或指向 VRAM,您必须通过它的中断调用正确的 VBE 服务。 ROM "driver",设计用于特定硬件,执行所需的操作并 returns 结果。

不幸的是,VBE 没有涵盖硬件加速,因此随着 GPU 变得越来越重要,它们变得越来越过时。没有开发出合适的替代品,所以如果你想使用裸硬件,你必须知道 每个 视频芯片(或者,至少,如果它们足够接近的话,一个芯片系列)并编写每个 driver。如果 PDF 是免费的,那很容易(我用过 3dfx,很简单:写入端口 N,等到端口 M 上的位 R 变为 1 等)。

问题是,你必须对每个芯片都这样做。

如果您想了解所有这些端口和 I/O 是如何触发的,您还可以阅读一些 Linux driver 来源。