GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Dare un senso alle versioni di Glxinfo Opengl?

Qual è la differenza tra tutte le diverse stringhe di versione nell'output del comando glxinfo?

L'ho già chiesto qui, ma non ho ricevuto molte risposte e, comunque, sembra che ci siano altre domande correlate su AskUbuntu.

L'output di glxinfo|grep OpenGL segue,

 glxinfo |grep Open
    Vendor: Intel Open Source Technology Center (0x8086)
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) HD Graphics 520 (Skylake GT2) 
OpenGL core profile version string: 4.5 (Core Profile) Mesa 13.0.2
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:
OpenGL version string: 3.0 Mesa 13.0.2
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 13.0.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
.

Perché il "profilo principale" è 4.5 , mentre la stringa della versione OpenGL è 3.0?

Risposta accettata:

OpenGL ES è un sottoinsieme della specifica OpenGL originale ed è progettato per sistemi embedded come smartphone. Non sono sicuro al 100% del motivo per cui i numeri di versione non corrispondono, ma non lo fanno. L'ultima versione è 4.5 per OpenGL e 3.2 per OpenGL ES. Questo spiega il motivo della parte OpenGL ES del tuo output. Nel tuo caso, hai il supporto per le ultime versioni di OpenGL e OpenGL ES.

Noterai che le voci OpenGL e OpenGL ES hanno una stringa di versione e una stringa di versione della lingua di ombreggiatura. Prima di OpenGL 3.3, il numero di versione di OpenGL e il numero di versione della lingua di ombreggiatura non corrispondevano. Credo che questo sia il motivo per cui hanno voci separate nell'output (poiché possono ovviamente essere diverse per l'hardware più vecchio). Come si vede nel tuo output, il numero di versione (4.5) corrisponde alla versione della lingua di ombreggiatura (anche 4.5).

La parte più difficile (e di cui non sono sicuro al 100%) è la "stringa della versione OpenGL".

Da quello che ho visto su diverse macchine completamente diverse, questo sembra essere limitato alla versione 3.0. La versione della lingua di ombreggiatura per 3.0 è 1.3, quindi la stringa della versione della lingua di ombreggiatura ha senso per questa versione di OpenGL. Tuttavia, perché la versione è limitata a 3.0? I miei pensieri sono i seguenti:

La versione 3.0 ha introdotto la deprecazione (vedi questo link). Da qui provengono anche i due profili separati, "Core" e "Compatibilità". Qualsiasi implementazione di OpenGL deve solo implementare la specifica "core" per essere valida.

Correlati:Mac OS X non si avvia dal menu di grub in Ubuntu Precise su Apple MBA (5,2)?

Se leggi le note sulla versione di Mesa per una particolare versione, vedrai una dichiarazione relativa a questo problema relativo al profilo principale/di compatibilità. Quanto segue è stato tratto dalle note di rilascio per l'ultima versione 17.0.0 qui:

Mesa 17.0.0 implements the OpenGL 4.5 API, but the version reported by glGetString(GL_VERSION) or glGetIntegerv(GL_MAJOR_VERSION) / glGetIntegerv(GL_MINOR_VERSION) depends on the particular driver being used. Some drivers don't support all the features required in OpenGL 4.5. OpenGL 4.5 is only available if requested at context creation because compatibility contexts are not supported.

Nota l'ultima parte "OpenGL 4.5 è disponibile solo se richiesto durante la creazione del contesto perché i contesti di compatibilità non sono supportati" . Pertanto, penso che la "stringa di versione OpenGL" sia la versione supportata per un contesto di profilo di "compatibilità" (o in altre parole, per il supporto di qualsiasi funzionalità deprecata prima della versione 3.0).


Ubuntu
  1. Quale versione di PHP e MySQL utilizza il tuo VPS?

  2. Come utilizzare due diverse versioni di Wine sulla stessa installazione?

  3. Versione del pacchetto aggiornato?

  4. Dare un senso al tuo backup Plesk

  5. Comprensione delle versioni RPM e degli schemi di denominazione

Come controllare la versione di Ubuntu

Come passare tra diverse versioni di comandi in Linux

Come passare tra più versioni Java su Debian

Come trovare la versione di Ubuntu

Come controllare la versione OpenGL?

Come modificare la versione di PHP in cPanel