可以在内核中使用OpenGL吗?

9
我能在Linux内核中使用OpenGL吗?也就是说,我想要提高一些代码的性能,所以使用GPU会使另一个驱动程序受益。可以确定GPU将固定在构建此内核的计算机上。
如果我听起来很天真,请原谅,我只是想要了解大致情况。
谢谢!
3个回答

5

OpenGL是用于在屏幕上显示3D图形的技术,我不太清楚您想在内核中以何种方式使用它。

如果您是指利用GPU的计算能力进行某些计算,我认为在内核的某些部分中这是可行的,但我怀疑它是否值得这样做。


我正在考虑进行一些GPGPU编程,即流处理。 - Albus Dumbledore
1
@阿不思·邓布利多:为什么要在内核中做这个?我们希望尽可能少地在内核模式下运行。 - datenwolf
嗯,是的,但据我所了解,它将成为一个设备驱动程序的一部分,我需要稍微修改一下。 - Albus Dumbledore
@阿不思·邓布利多:是GPU设备驱动程序,还是完全不同的东西? - datenwolf
某种特殊类型的显示器的显示驱动程序 - Albus Dumbledore

4

不行,最大的原因是内核无法使用浮点数运算。此外,从内核中访问这样的驱动程序是一个非常糟糕的想法。我不知道内核是否能够链接到用户模式库(如libGL.so或libOpenCL.so)。


2
可以在内核模式下使用FPU,但这非常困难和繁琐。通常情况下不应该这样做。不幸的是,最近我不得不处理一些设备,需要在内核模块中进行浮点运算 - datenwolf
谢谢大家。不过我还在想,是否可能从内核中加载OpenGL库呢? :-) - Albus Dumbledore
2
@阿不思·邓布利多:不可能的。用户空间库期望的环境与内核中所找到的完全不同。 - datenwolf

3
  • GPU并不是你所想象的那样工作。
  • 你想加速什么?只是一些标准计算吗?内核代码并不比用户空间代码运行得更快!实际上有些事情甚至更慢。
  • 你知道,即使在内核中使用浮点单元(FPU)也是相当困难和不鼓励的。
  • GPU计算并不是一个万能的解决方案。

感谢您的建议!我想要实现的是使用流处理范例来实现更有效率的代码。 - Albus Dumbledore
那么这个东西应该做什么?这个驱动程序是为哪种硬件而设计的?是什么类型的数据? - datenwolf
我只关心从内核中调用OpenGL是否可能和可行。 - Albus Dumbledore
一个词:不!所有现有的OpenGL实现完全存在于用户空间。实际上,所有Linux图形驱动程序也都在那里。DRI / DRM只是通过统一的内核接口访问基本图形硬件功能的非常薄的层。但到目前为止,当前图形驱动程序的所有更高级别函数都在用户空间中。这包括OpenGL。但是,如果有足够的时间、资源和工作,将OpenGL完全移入内核是可能的。但是没有人会这样做,因为内核并不是实现这些东西的正确位置。 - datenwolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接