gpt4 book ai didi

opengl - Raspberry Pi 用户级图形驱动程序的内部工作原理(不是固件或内核部分)

转载 作者:行者123 更新时间:2023-12-04 08:51:20 27 4
gpt4 key购买 nike

我试图从 https://github.com/raspberrypi/userland 中了解 Raspberry Pi 图形驱动程序代码的用户区部分。

到目前为止我的理解是:
- 固件 blob 在 GPU 中运行并提供类似 OpenGL 的接口(interface),在较低级别上,该接口(interface)基于在称为 VCHIQ 的多个 28 位字 FIFO(其他 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,而且我对技术也不是很熟悉,但前段时间我一直在为我的私有(private)项目深入研究 GPU,所以我会告诉你我知道的。

GPU 是 VideoCore IV,其文档位于 Broadcom's website .

此外,在 the Raspberry Pi Wiki您可以在左边的图片中看到 VCHIQ 在内核驱动程序中,因此您可以在内核源代码中查找实现细节。

也许这也有一些帮助:VideoCore IV Programmer's Manual .关于文件:

This is a independent documentation project based on a combination of static analysis and trial and error on real hardware. This work is 100% independent from and not sanctioned by or connected with Broadcom or its agents. No Broadcom documents or materials were used beyond those publicly available.



至于软件本身, The Khronos Group提供 OpenGL ES 和 OpenVG 实现,但它不是开源的。您可以从他们的网站上获取文档,但我怀疑您会找到如此低级别的任何内容。

希望能帮助到你。

关于opengl - Raspberry Pi 用户级图形驱动程序的内部工作原理(不是固件或内核部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com