Mesa에서 OpenGL ARB_gpu_shader_int64 확장을 사용할 수 없습니다.

Mesa에서 OpenGL ARB_gpu_shader_int64 확장을 사용할 수 없습니다.

저는 OpenGL 셰이더 작업을 하고 있는데 uint64_t 유형 등이 필요합니다. 하지만 glxinfo를 실행하면 이 확장이 목록에 없습니다.

저는 메사 18.0.5를 사용하고 있으며이 페이지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=1GPU를 직접 사용할 수 있으므로 필요한 확장이 활성화됩니다.

그러나 이 환경 변수를 매번 설정하거나 전역적으로 설정하는 것이 좋은 해결책인지는 확실하지 않습니다.

관련 정보