web-dev-qa-db-fra.com

Pourquoi ma version OpenGL est-elle bloquée à 3.0 malgré de nouveaux matériels et logiciels?

Je dois utiliser sur mon ordinateur portable un programme nécessitant OpenGL 3.3 ou une version supérieure. Apparemment, ma version "effective" d'OpenGL est la 3.0. Vous trouverez ci-dessous la sortie de glxinfo. Il s’agit de xubuntu 16.10 et la carte graphique est Intel HD 5500. Donc, je ne comprends pas ce qui ne va pas, il semble que le matériel et les logiciels devraient être suffisamment à jour pour obtenir au moins la version 3.3. J'espère que quelqu'un peut aider!

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:
5
smwilsonau

Réponse courte: Votre version d'OpenGL n'est pas bloquée à 3.0 . La ligne "Chaîne de version du profil de base OpenGL" affiche votre OpenGL pris en charge sous la forme "4.3".

Explication plus détaillée: Cette gestion de version compliquée est liée aux modifications apportées dans la version 3.0 d'OpenGL, à laquelle toutes les versions d'OpenGL étaient entièrement compatibles avec les versions antérieures. À partir de la version 3.0 d'OpenGL, certaines fonctionnalités ont été marquées comme obsolètes et les pilotes plus récents ne doivent pas nécessairement les prendre en charge pour être compatibles avec OpenGL 3.1+.

Pour permettre aux pilotes OpenGL de prendre en charge des fonctions obsolètes tout en étant parfaitement compatibles avec les versions 3.1 et ultérieures, OpenGL a introduit les profils "core" et "compatibles".

En gros, si vous exécutez une application dans le contexte du profil "compatible", vous avez la garantie d'avoir accès à toutes les fonctionnalités OpenGL, y compris toutes les fonctions obsolètes, jusqu'à une version donnée. Ce n'est pas le cas lors de l'exécution d'une application dans le contexte du profil "principal".

Ma spéculation est que, pour les applications ne connaissant pas le contexte, la version OpenGL pourrait être volontairement signalée comme 3.0 pour une compatibilité maximale. C’est là que des variables d’environnement telles que MESA_GL_VERSION_OVERRIDE=4.3 se sont révélées utiles.

Pour plus d'informations: Contexte OpenGL

1
Cieniek

Je pense que l'application peut simplement extraire la chaîne de version et la signaler. Cependant, je ne pense pas que cela représente la version maximale disponible et peut-être pas ce que l'application utilise. Ma "chaîne de version OpenGL" est identique à la vôtre et je développe sous OpenGL 3.2 sur ce système.

Si vous exécutez la commande glxinfo | grep Max, vous devriez recevoir une liste qui détaille les versions maximales disponibles pour le profil principal, le profil de compatibilité, etc. Je voudrais l'exécuter et voir ce qu'il indique. Je pense que la version 4.3 de votre profil de base principal sera rapportée. Si c'est le cas, je ne pense pas que vous ayez un problème de chauffeur.

J'ai brièvement examiné le logiciel et je n'ai vu aucune mention de la nécessité d'utiliser OpenGL 3.3. Cependant, leur site suggère qu'il existe de grandes différences entre les différents GPU.

Ils semblent offrir un soutien. Par conséquent, si vous rencontrez toujours des problèmes, il peut être préférable de voir s'ils peuvent vous aider davantage.

J'espère que cela pourra aider.

Mis à jour pour glmark2

glmark2 est un benchmark OpenGL (ES) 2.0. Encore une fois, cela peut être simplement en tirant la chaîne de version. J'ai recherché d'autres applications de référence dans Google et trouvé GFXBench disponible ici . Si vous téléchargez, installez et exécutez ceci, puis sélectionnez "Info" en bas de l'écran, il apparaît pour indiquer votre version OpenGL maximale. Mine indique "3.3 (Core)", qui correspond à la version maximale correcte prise en charge par ma carte.

Il inclut également des tests nécessitant V4.x et aucun ne fonctionnera sur ma configuration, cela vaut donc la peine d'essayer.

Variables d'environnement Mesa mises à jour

Je viens de tomber sur la variable d'environnement Mesa MESA_GL_VERSION_OVERRIDE. Plus d'informations ici . Il indique que cette variable:

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

J'ai essayé la commande suivante sur mon système:

MESA_GL_VERSION_OVERRIDE=3.3 glxinfo | grep OpenGL

et cela donnait ce qui suit pour la chaîne de version OpenGL et la chaîne de version du langage de shading OpenGL:

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

Ce n'est pas ce qui a été rapporté sans la variable d'environnement. Il peut être intéressant d'essayer d'utiliser cette variable d'environnement lors de l'exécution de votre application, car cela pourrait forcer l'utilisation de la version correcte. Vous utiliseriez:

MESA_GL_VERSION_OVERRIDE=4.3 command

Où vous voudriez simplement remplacer commande par la commande que vous utilisez pour exécuter votre application.

2
gsxruk