Mar*_*sse 8 opengl driver raspberry-pi
我试图从https://github.com/raspberrypi/userland了解Raspberry Pi图形驱动程序代码的用户区部分
到目前为止,我的理解是: - 固件blob在GPU中运行并提供类似OpenGL的接口,在较低级别上,它基于在多个28位字FIFO之一上传递的消息(字节数组) VCHIQ(其他VCHIQ队列与图形无关) - 在CPU部分,OpenGL调用被转换为GPU的消息.访问低级设施(消息队列或VCHIQ - 我还没有在代码中找到该部分)需要一个Linux内核模块,但不会发生高级逻辑. - GPU部分已关闭,但这对我来说没问题.(ARM)CPU部分是AFAIK,打开
我的最终目标是与使用裸机(不使用Linux)的GPU进行通信,但封闭的固件blob完好无损.作为第一个目标,我想了解OpenGL调用实际上是如何传递给GPU的.除此之外的任何事情都不是这个问题的一部分.
但是,我一直在寻找实际的代码.OpenGL调用使用RPC_CALL*和RPC_DO,后者调用khronos_server_lock_func_table().但是,代码中似乎缺少该功能,令我惊讶的是,我在Google上找不到任何有用的功能.
我的问题: - 我还在ARM CPU方面,还是我没有注意到移动到GPU领域?如果是后者,我在哪里越过那条线? - 假设我还在CPU端 - 该功能的代码在哪里?它是开放的,还是我们在CPU端实际上有封闭的部分?网络上的所有来源似乎都表明CPU的代码是100%开放的. - 在哪一点上,C OpenGL函数的实现实际上是向GPU发送消息?我有点期待调用代表VCHIQ的内核功能在某些时候发生,可能是作为设备文件实现的.
我不完全明白你打算如何在不使用 Linux 的情况下访问 GPU,而且我对技术细节也不太熟悉,但前段时间我一直在为我的私人项目深入研究 GPU,所以我会告诉你我知道的。
GPU 是 VideoCore IV,其文档可在Broadcom 网站上找到。
另外,在Raspberry Pi Wiki上,您可以在左图中看到 VCHIQ 位于内核驱动程序中,因此您可以在内核源代码中查找实现细节。
也许这也可能有一些帮助:VideoCore IV Programmer's Manual。关于文档:
这是一个基于静态分析和真实硬件上的反复试验相结合的独立文档项目。这项工作 100% 独立于 Broadcom 或其代理商,且不受其批准或与之相关。除公开提供的文件或材料外,没有使用任何博通文件或材料。
至于软件本身,Khronos Group提供了 OpenGL ES 和 OpenVG 实现,但它不是开源的。您可以从他们的网站获取文档,但我怀疑您会找到如此低级别的任何内容。
希望能帮助到你。