无法将 OpenGL ARB_gpu_shader_int64 扩展与 Mesa 一起使用

无法将 OpenGL ARB_gpu_shader_int64 扩展与 Mesa 一起使用

我正在研究 OpenGL 着色器,我需要 uint64_t 类型等...但是,当我执行 glxinfo 时,此扩展名不在列表中。

我正在使用 Mesa 18.0.5,并且这一页告诉 radeonsi 驱动程序从 17.1.0 开始支持该扩展。

我的 GPU 是 AMD Radeon HD 8730M。我正在使用该radeon驱动程序,但切换到amdgpu没有帮助。

问题:如何在我的着色器中使用 uint64?通过切换到另一个驱动程序?通过更新梅萨?还是我的GPU太旧了?

我尝试编译的着色器:

#version 450
#extension GL_ARB_gpu_shader5 : enable
#extension GL_ARB_gpu_shader_int64 : enable

void main()
{
  uint64_t foo = 0ul;
}

我有:

0:3(12): warning: extension `GL_ARB_gpu_shader_int64' unsupported in fragment shader
0:7(11): error: syntax error, unexpected NEW_IDENTIFIER, expecting ',' or ';'

glxinfo 输出:

name of display: :0.0
display: :0  screen: 0
direct rendering: Yes
server glx vendor string: SGI
server glx version string: 1.4
server glx extensions:
    GLX_ARB_create_context, GLX_ARB_create_context_profile,
    [...]
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.0.5
OpenGL core profile shading language version string: 4.50
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
    GL_3DFX_texture_compression_FXT1, GL_AMD_conservative_depth,
    [...]

答案1

知道了。

Mesa 确实使用了我的集成图形芯片组。通过使用环境变量启动所有命令DRI_PRIME=1,我可以直接使用我的 GPU,从而启用所需的扩展。

但是,我不确定每次或全局设置此环境变量是否是一个好的解决方案。

相关内容