【问题标题】:How do I add a virtual GPU into Qemu?如何在 Qemu 中添加虚拟 GPU?
【发布时间】:2011-08-12 23:07:20
【问题描述】:

我想知道如何在 Qemu 中添加虚拟 GPU? 有人告诉我这涉及添加一个使用 OpenGL 的新图形输出模块?

【问题讨论】:

标签: opengl graphics qemu


【解决方案1】:

你可能参考Create virtual hardware, kernel, qemu for Android Emulator in order to produce OpenGL graphics

我建议您做的第一件事是阅读源代码,如何将已实现的虚拟图形适配器的命令转换为图形输出。然后你应该重写它,改为使用 OpenGL 命令。一旦你得到了这个,你就必须真正发明一个新的虚拟 GPU 来提供来宾系统。我什至不会尝试模拟 GeForce 或 Radeon。无论如何,GeForce 都没有公开记录。

qemu 没有提供真正的 API 来实现 GPU。当然,有一些内部 API 用于实现 VESA 和 S3 仿真,但新的 GPU 将需要你重新做很多。

虚拟硬件应该提供一些 I/O 来传递绘图命令和数据。理论上,您可以在那里传递完整的 OpenGL 命令。然而 OpenGL 与硬件无关,而您实际上实现了“硬件”,因此您必须在那里找到一些平衡点。然后在 qemu 中,您必须实现该虚拟硬件以适当地执行渲染命令。

最后但同样重要的是,您必须为该虚拟硬件实现驱动程序,这将涉及向 Mesa 添加新驱动程序并为 Xorg 创建驱动程序。

【讨论】:

  • 再次非常感谢 datenwolf,你是英雄。我现在就开始做这件事,会告诉你我的进展如何。
  • 你不可能告诉我 Qemu 源代码中的哪个文件与虚拟图形适配器有关吗?在过去的半个小时里,我一直在查看它,特别是 hw 文件夹,有点困惑
  • @Tomau000:我已经很久没有搞乱 qemu 代码了。我认为最好的方法是使用 cscope 或 egypt 之类的工具(在此处找到 gson.org/egypt)从图形输出中追溯数据流(只需 grep 源以包含 SDL_video.h 标头)。然后我会开始用调用 OpenGL 来替换使用 SDL 函数来绘制东西(你可以保留 SDL 来创建窗口和处理输入事件)。一旦你得到了 qemu,它使用 OpenGL 进行图形输出,你就可以开始思考如何传递 3D 命令了。
  • 感谢您的所有输入 datenwolf。我认为建议的步骤超出了我的想象,它变得非常混乱。但是,我想向您展示我遇到的一些东西.. code.google.com/p/nehe-android/downloads/list 此链接包含某人创建的 apk,它在 android 模拟器上运行 nehe opengl 教程!你认为它包含我们一直在讨论的相关材料吗?即内核驱动程序和其他?汤姆
  • ^ 哎呀,在查看了源代码后,我发现它只是移植到 opengl es 上的教程..
猜你喜欢
  • 2022-11-24
  • 2018-08-05
  • 1970-01-01
  • 2016-05-10
  • 1970-01-01
  • 2017-02-27
  • 2018-02-26
  • 2021-10-31
  • 2015-06-06
相关资源
最近更新 更多