GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak dávat smysl verzím Glxinfo Opengl?

Jaký je rozdíl mezi všemi různými řetězci verzí ve výstupu příkazu glxinfo?

Už jsem se na to tady ptal, ale nedostal jsem mnoho odpovědí a každopádně se zdá, že na AskUbuntu je více souvisejících otázek.

Výstup glxinfo|grep OpenGL následuje,

 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:
.

Proč je „core profile“ 4.5, zatímco řetězec verze OpenGL je 3.0?

Přijatá odpověď:

OpenGL ES je podmnožinou původní specifikace OpenGL a je navrženo pro vestavěné systémy, jako jsou chytré telefony. Nejsem si 100% jistý, proč čísla verzí neodpovídají, ale neodpovídají. Nejnovější verze je 4.5 pro OpenGL a 3.2 pro OpenGL ES. To vysvětluje důvod OpenGL ES části vašeho výstupu. Ve vašem případě máte podporu pro nejnovější verze OpenGL i OpenGL ES.

Všimněte si, že položky OpenGL a OpenGL ES mají řetězec verze a řetězec verze stínovaného jazyka. Před OpenGL 3.3 se číslo verze OpenGL a číslo verze stínovacího jazyka neshodovaly. Věřím, že to je důvod, proč mají ve výstupu samostatné položky (protože se mohou samozřejmě lišit pro starší hardware). Jak je vidět ve vašem výstupu, číslo verze (4.5) odpovídá verzi stínovacího jazyka (také 4.5).

Nejtěžší část (a část, kterou si nejsem 100% jistý) je „řetězec verze OpenGL“.

Z toho, co jsem viděl na několika zcela odlišných počítačích, se zdá, že je to omezeno na verzi 3.0. Verze stínovacího jazyka pro 3.0 je 1.3, takže řetězec verze stínovacího jazyka má pro tuto verzi OpenGL smysl. Proč je však verze omezena na 3.0? Moje myšlenky jsou následující:

Verze 3.0 zavedla ukončení podpory (viz tento odkaz). Odtud také pocházejí dva samostatné profily, „Core“ a „Compatibility“. Jakákoli implementace OpenGL musí pouze implementovat „základní“ specifikaci, aby byla platná.

Související:Mac OS X se nespustí z nabídky grub v Ubuntu Precise na Apple MBA (5,2)?

Pokud si přečtete poznámky k vydání Mesa pro konkrétní verzi, uvidíte prohlášení týkající se tohoto problému s profilem jádra/kompatibility. Následující text byl převzat z poznámek k vydání pro nejnovější verzi 17.0.0 zde:

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.

Všimněte si poslední části „OpenGL 4.5 je k dispozici pouze na vyžádání při vytváření kontextu, protože kontexty kompatibility nejsou podporovány“ . Proto si myslím, že „řetězec verze OpenGL“ je podporovaná verze pro kontext profilu „kompatibility“ (nebo jinými slovy pro podporu jakékoli zastaralé funkce před verzí 3.0).


Ubuntu
  1. Verze aktualizovaného balíčku?

  2. Verze Xpra na Ubuntu 16.04?

  3. Jak pracovat s více verzemi Java pod Linuxem

  1. Jakou verzi PHP a MySQL používá vaše VPS?

  2. Jak používat dvě různé verze Wine na stejné instalaci?

  3. Porozumění verzím RPM a schématům pojmenování

  1. Jak zkontrolovat verzi PHP

  2. Nemůžete upgradovat Gnupg?

  3. Vysvětlení vaší zálohy Plesk