Estou trabalhando em shaders OpenGL, e preciso de tipos uint64_t, etc... Porém, quando faço glxinfo, essa extensão não está na lista.
Estou usando o Mesa 18.0.5, e esta página informa que a extensão é compatível com drivers radeonsi de 17.1.0.
Minha GPU é uma AMD Radeon HD 8730M. Estou usando o radeon
driver, mas mudar para amdgpu
não está ajudando.
Pergunta : como posso usar o uint64 em meus shaders? Mudando para outro driver? Atualizando o Mesa? Ou minha GPU é muito antiga?
O shader que tento compilar:
#version 450
#extension GL_ARB_gpu_shader5 : enable
#extension GL_ARB_gpu_shader_int64 : enable
void main()
{
uint64_t foo = 0ul;
}
Eu obtive:
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 ';'
saída 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,
[...]
Entendi.
O Mesa estava de fato usando meu chipset gráfico integrado. Ao iniciar todos os comandos com a variável de ambiente
DRI_PRIME=1
, consegui usar diretamente minha GPU, habilitando assim as extensões solicitadas.No entanto, não tenho certeza se definir essa variável de ambiente toda vez ou globalmente é uma boa solução.