Amd-Graphics

無法將 OpenGL ARB_gpu_shader_int64 擴展與 Mesa 一起使用

  • March 27, 2019

我正在研究 OpenGL 著色器,我需要 uint64_t 類型等…但是,當我執行 glxinfo 時,此擴展不在列表中。

我正在使用 Mesa 18.0.5,並且此頁面告訴 17.1.0 的 radeonsi 驅動程序支持該擴展。

我的 GPU 是 AMD Radeon HD 8730M。我正在使用radeon驅動程序,但切換到amdgpu沒有幫助。

問題:如何在我的著色器中使用 uint64?通過切換到另一個驅動程序?通過更新 Mesa?還是我的 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,
   [...]

知道了。

Mesa 確實在使用我的集成圖形晶片組。通過使用環境變數啟動所有命令DRI_PRIME=1,我能夠直接使用我的 GPU,從而啟用所要求的擴展。

但是,我不確定每次或全域設置此環境變數是否是一個好的解決方案。

引用自:https://unix.stackexchange.com/questions/508950