【问题标题】:Writing a driver to fool Linux systems about having a GPU编写驱动程序来欺骗 Linux 系统关于拥有 GPU
【发布时间】:2012-07-27 03:43:31
【问题描述】:

我正在为基于 Linux 的系统编写“模拟 GPU 驱动程序”。我的意思是,我只是想编写一个驱动程序(显然是在 X-server 后面)来回答 X 的 API 调用并带有一些调试消息。

换句话说,我想欺骗 Linux,让其拥有一个真正的 GPU。所以我可以在基于控制台的系统中为 GUI 加速包创建一个测试平台。

现在,如果我在基于 Linux 控制台的系统中执行 GUI 加速包;它会因为缺少真正的 GPU(或者更好的 GPU 驱动程序)而死。

所以我想知道:

  • 有可能吗? (编写一个 GPU 驱动程序来欺骗 Linux 以获得真正的 GPU)
  • 在开始编写代码之前,您推荐哪些资源?
  • 网上有没有类似的项目?

PS:我是一位经验丰富的 ANSI-C 程序员,但我对 *nix 下的真正内核/驱动程序开发一无所知(不过请阅读一些有关 USB 驱动程序开发的教程),因此有关这些领域的任何资源都将是真的很感激。提前致谢。

【问题讨论】:

  • 您真的有兴趣查看那些“调试”消息还是只是希望应用程序运行?对于后者,有虚拟 X 服务器。
  • 是的,我真的很感兴趣,但是请您给我一些这些虚拟 X 服务器项目的链接吗?提前致谢。
  • 一些 OpenCL 实现只能在 CPU 上运行。
  • @3p3r:该服务器实际上包含在 Xorg 中,称为Xvfb (manpage)。如果你不怕一些 bash,你可以查看 Gentoo 的 virtualx.eclass 的使用示例(那里用于运行需要 X11 的测试)。
  • @MichałGórny 这正是我要找的东西!请把它放在一个答案中,我会接受它:D 谢谢。

标签: c linux driver x11


【解决方案1】:

您正在寻找的实际上是 Xorg 服务器套件的一部分,它被称为 Xvfb(虚拟帧缓冲区)。

如果您不怕有点复杂的 bash,您可以查看 Gentoo 的 virtualx.eclass 的使用示例(我们使用它来运行需要 X11 的测试)。

【讨论】:

    【解决方案2】:

    Mesa 项目是一个很好的起点——它在软件中实现了 OpenGL。它有办法诱使操作系统认为它是 OpenGL 驱动程序。

    【讨论】:

    • Mesa 我认为是软件级别的,它是“之后”X-server 而不是“之前”它。我的意思是这个包调用了 X 的 API,对吧?它在某种程度上是“重定向”或 OpenGL 调用,对吧?
    • Mesa 将运行在 Xvfb 之上,因此您可以在没有任何图形硬件的情况下运行整个 3D X 服务器。但是,这不会帮助您开发非 X 项目,例如加速控制台! Mesa 和 Xvfb 不提供内核级显卡抽象。
    猜你喜欢
    • 2020-07-15
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多