Opengl 如何将虚拟GPU添加到Qemu中?

Opengl 如何将虚拟GPU添加到Qemu中?,opengl,graphics,qemu,Opengl,Graphics,Qemu,我想知道如何在Qemu中添加虚拟GPU? 有人告诉我,这涉及到添加一个新的图形输出模块,该模块使用OpenGL?您可能会提到 我建议您首先阅读源代码,了解如何将已实现的虚拟图形适配器的命令转换为图形输出。然后您应该重写它,改为使用OpenGL命令。一旦你做到了这一点,你必须真正发明一个新的,虚拟的GPU来提供客户系统。我甚至不想模仿GeForce或Radeon。GeForces没有公开记录 qemu没有为实现GPU提供真正的API。当然,有一些内部API用于实现VESA和S3仿真,但是一个新的G

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

您可能会提到

我建议您首先阅读源代码,了解如何将已实现的虚拟图形适配器的命令转换为图形输出。然后您应该重写它,改为使用OpenGL命令。一旦你做到了这一点,你必须真正发明一个新的,虚拟的GPU来提供客户系统。我甚至不想模仿GeForce或Radeon。GeForces没有公开记录

qemu没有为实现GPU提供真正的API。当然,有一些内部API用于实现VESA和S3仿真,但是一个新的GPU将要求您再次进行大量的操作

虚拟硬件应该提供一些I/O来传递图形命令和数据。理论上,您可以在那里传递完整的OpenGL命令集。然而OpenGL是硬件不可知的,而实际上您实现了“硬件”,所以您必须在这方面找到一些平衡。然后在qemu中,您必须实现该虚拟硬件以适当地执行渲染命令


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

Android emulator的可能副本可以做到这一点,并且是基于QEMU的,因此您可能希望了解它的来源:再次非常感谢datenwolf,您是一位英雄。我现在就开始做这件事,我会让你知道我是怎么做的。你不会有机会告诉我Qemu源中哪个文件与虚拟图形适配器有关吗?在过去的半个小时里,我一直在看它,特别是hw文件夹,我有点担心puzzled@Tomau000:我已经很久没有乱用qemu代码了。我认为最好的方法是使用像cscope或egypt(在这里找到)这样的工具来跟踪图形输出中的数据流(只需grep包含SDL_video.h头的源代码)。然后,我将开始用调用OpenGL(您可以保留SDL来创建窗口和处理输入事件)来代替使用SDL函数来绘制东西。一旦你得到了qemu,它使用OpenGL进行图形输出,你就可以开始思考,如何传递3D命令了。谢谢你的所有输入datenwolf。我想,建议的步骤让我不知所措,这让我很困惑。不过我想让你看看我遇到的东西。。此链接包含有人创建的apk,该apk在android emulator上运行nehe opengl教程!!你认为它包含我们一直在讨论的相关材料吗?i、 e.内核驱动程序和其他驱动程序?Tom^Woops,在查看源代码后,我发现所有的都是移植到opengl es上的教程。。