【问题标题】:Can one use OpenGL in the Kernel?可以在内核中使用 OpenGL 吗?
【发布时间】:2011-07-04 04:10:21
【问题描述】:

我可以在 Linux 内核中使用 OpenGL 吗?也就是说,我想提高一些代码的性能,所以使用 GPU 将有利于另一个驱动程序。可以肯定的是,GPU 会固定在要构建此内核的机器上。

对不起,如果我听起来很幼稚,我只是想暂时了解一下总体情况。

谢谢!

【问题讨论】:

    标签: linux opengl kernel driver


    【解决方案1】:

    OpenGL是用来在屏幕上显示3D的,我真的不知道你想在内核中以哪种方式使用它。

    如果您的意思是使用 GPU 的计算能力进行某些计算,我认为这在内核的某些部分是可行的,但我怀疑这是否值得。

    【讨论】:

    • 我正在考虑做一些 GPGPU 编程,即流处理。
    • @Albus Dumbeldore:为什么要在内核中这样做?人们希望在内核模式下花费尽可能少的时间。
    • 嗯,是的,但据我正确理解,它将成为设备驱动程序的一部分,我需要稍作修改。
    • @Albus Dumbleore:GPU 设备驱动程序,还是完全不同的东西?
    • 用于某些特殊类型显示器的显示驱动程序
    【解决方案2】:
    • GPU 根本无法按照您想象的方式工作。
    • 您想加速什么?只是一些标准的计算?内核代码的运行速度并不比用户空间代码快!实际上有些事情甚至更慢。
    • 您知道,即使在内核中使用浮点单元 (FPU) 也是非常重要且不鼓励的。
    • GPU 计算不是灵丹妙药。

    【讨论】:

    • 感谢您的好建议!我想要实现的是实现一些如果使用流处理范式实现会更高效的代码。
    • 那么这玩意要怎么做呢?该驱动程序适用于哪种硬件。什么样的数据。
    • 我只对从内核中调用 OpenGL 是否可行和可行感兴趣。
    • 一句话:不!所有现有的 OpenGL 实现都完全存在于用户空间中。实际上所有的 Linux 图形驱动程序也都在那里。 DRI/DRM 只是一个非常薄的层,用于通过统一的内核接口访问基本的图形硬件功能。但是到目前为止,当前图形驱动程序的所有高级功能都在用户空间中。这包括 OpenGL。但是,只要有足够的时间、资源和工作,就可以将 OpenGL 完全移入内核。但是没有人会这样做,因为内核不是实现这些东西的正确位置。
    【解决方案3】:

    不,你不能,最大的原因是你不能在内核中使用浮点数学。此外,从内核中访问此类驱动程序是一个非常糟糕的主意。我不知道内核是否能够链接到用户模式库(libGL.so 或 libOpenCL.so)。

    【讨论】:

    • 可以在内核模式下使用 FPU,但是非常困难和乏味。通常它不应该是必需的。不幸的是,我最近不得不处理一些设备,这需要我在内核模块 gah 中进行浮点运算。
    • 谢谢大家。我仍然想知道是否可以从内核中加载 opengl 库。 :-)
    • @Albus Dumbledore:不,这不可能。用户空间库所期望的环境与内核中的环境完全不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多