Por que minha versão do OpenGL ficou em 3.0 apesar do novo hardware e software?

4

Eu preciso usar um programa no meu laptop que requer o OpenGL 3.3 ou melhor. Aparentemente, minha versão "efetiva" do OpenGL é 3.0. Abaixo está a saída do glxinfo. Este é o xubuntu 16.10 e a placa gráfica é Intel HD 5500. Então, eu não entendo o que está errado, parece que tanto o hardware quanto o software devem estar atualizados para obter pelo menos 3.3. Espero que alguém possa ajudar!

glxinfo|grep OpenGL
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 5500 (Broadwell GT2) 
OpenGL core profile version string: 4.3 (Core Profile) Mesa 12.0.3
OpenGL core profile shading language version string: 4.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 12.0.3
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 12.0.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:
    
por smwilsonau 18.11.2016 / 16:39

2 respostas

1

Resposta curta: Sua versão do OpenGL não está em 3.0 . A linha "String de versão do perfil principal do OpenGL" exibe seu OpenGL suportado como "4.3".

Explicação mais detalhada: Esta versão complicada está relacionada a alterações feitas no OpenGL versão 3.0, até o qual todas as versões do OpenGL eram totalmente compatíveis. A partir do OpenGL versão 3.0, alguns recursos foram marcados como obsoletos e os drivers mais recentes não precisam necessariamente suportá-los para serem compatíveis com OpenGL 3.1+.

Para possibilitar que os drivers OpenGL suportem funções obsoletas e, ao mesmo tempo, sejam totalmente compatíveis com as versões 3.1+, o OpenGL introduziu perfis "principais" e "compatíveis".

Basicamente, se você executar um aplicativo no contexto do perfil "compatível", você terá acesso a todos os recursos do OpenGL até uma versão específica, incluindo todas as funções reprovadas. Este não é o caso quando se executa uma aplicação no contexto do perfil "core".

Minha especulação é que, para aplicativos sem reconhecimento de contexto, a versão do OpenGL pode ser propositalmente relatada como 3.0 para compatibilidade máxima. Isso é onde variáveis de ambiente como MESA_GL_VERSION_OVERRIDE=4.3 são úteis.

Para mais informações: Contexto do OpenGL

    
por Cieniek 06.01.2018 / 21:20
1

Acho que o aplicativo pode estar apenas puxando a string de versão e reportando-a. No entanto, não acho que isso represente a versão máxima disponível e possivelmente não o que o aplicativo está usando. Meu "OpenGL Versão String" é relatado exatamente o mesmo que o seu e eu estou desenvolvendo usando o OpenGL 3.2 neste sistema.

Se você executar o comando glxinfo | grep Max , deverá receber uma lista que detalha as versões máximas disponíveis para o perfil principal, o perfil de compatibilidade, etc. Eu executaria isso e veria o que ele relata. Eu acho que ele reportará sua versão do perfil do núcleo máximo como 4.3 (não 3.0). Se assim for, não acho que você tenha um problema de driver.

Eu olhei rapidamente para o aplicativo de software e não vi nenhuma menção a um requisito para o OpenGL 3.3. No entanto, o site sugere que existem grandes diferenças entre diferentes GPUs.

Eles parecem oferecer suporte, por isso, se você ainda tiver problemas, talvez seja melhor verificar se eles podem ajudar ainda mais.

Espero que ajude.

Atualizado para o glmark2

glmark2 é um benchmark OpenGL (ES) 2.0. Novamente, isso pode estar apenas puxando a string de versão. Pesquisei outros aplicativos de benchmark e encontrei o GFXBench disponível aqui . Se você baixar, instalar e executar isso e, em seguida, selecione "Info" na parte inferior da tela, parece fornecer sua versão máxima do OpenGL. O meu diz "3.3 (Core)", que é a versão máxima correta que o meu cartão suporta.

Ele também inclui testes que exigem V4.xe nenhum será executado na minha configuração, então isso pode valer a pena tentar.

Variáveis de ambiente do Mesa atualizadas

Acabei de encontrar a variável de ambiente do Mesa MESA_GL_VERSION_OVERRIDE . Mais informações aqui . Afirma que esta variável:

changes the value returned by glGetString(GL_VERSION) and possibly the GL API type.

Eu tentei o seguinte comando no meu sistema:

MESA_GL_VERSION_OVERRIDE=3.3 glxinfo | grep OpenGL

e isso deu o seguinte para a string de versão do OpenGL e a string de versão da linguagem de sombreamento OpenGL:

OpenGL version string: 3.3 (Core Profile) Mesa 12.0.3
OpenGL shading language version string: 3.30

Isto não é o que foi reportado sem a variável de ambiente. Pode valer a pena tentar usar essa variável de ambiente ao executar seu aplicativo, pois isso pode forçar a versão correta a ser usada. Você usaria:

MESA_GL_VERSION_OVERRIDE=4.3 command

Onde você simplesmente substituiria o comando pelo comando que você usa para executar seu aplicativo.

    
por gsxruk 21.11.2016 / 20:08