LINUX.ORG.RU

Объясните мне пожалуйста, что происходит?

 , , ,


0

1

Короче, вот:

[ozzee@localhost ~] $ glxinfo | grep OpenGL
OpenGL vendor string: X.Org
OpenGL renderer string: AMD Radeon (TM) RX 460 Graphics (AMD POLARIS11 / DRM 3.19.0 / 4.14.8-300.fc27.x86_64, LLVM 4.0.1)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 17.2.4
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 17.2.4
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 17.2.4
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:

Но суть не в этой команде. А то что некоторые игры берут версию OpenGL из этой строчки:
OpenGL version string: 3.0 Mesa 17.2.4

А некоторые отсюда:
OpenGL core profile version string: 4.5 (Core Profile) Mesa 17.2.4


Почему так?

Навеяно вчерашними попытками запустить Dying Light под линем. Ну и еще когда-то Wolfenstein: The New Order под вайном. Эти игры брали версию именно отсюда:
OpenGL version string: 3.0 Mesa 17.2.4

Перемещено beastie из talks

Core Profile

А то было legacy.
То есть OpenGL стек разделен на две половины - первая реализует старые OpenGL 1.5, 2.0, 3.0 (для старых приложений), вторая реализует 3.2, 3.3, 4.x - новый стек со всякой тасселяцией, шлюхами и блек джеком для современных 3d приложений.

Как я понял по крайней мере.

uin ★★ ()
Последнее исправление: uin (всего исправлений: 1)

Dying Light

Просто в бил в гугл и получил это

It must be forced with an override, such as MESA_GL_VERSION_OVERRIDE=4.5 and MESA_GLSL_VERSION_OVERRIDE=450. A compatibility context is *not* required and forcing one with 4.5COMPAT or allow_higher_compat_version results in graphical artifacts.

Пробовал *_VERSION_OVERRIDE?

Aber ★★ ()
Ответ на: комментарий от ozz_is_here

Поздно, не взлетело, мне вернули деньги. Примерно час промудохался с игрой, надоело.

Ну как бы mesa она такая, нужно фан получать не только от самой игры, но и от церемонии приготовления. Я для Observer собрал свою версию mesa 17.3 с черипикнутым фиксом для UE4, процесс не менее интересен чем сама игра :) а может даже и более.

Aber ★★ ()
Ответ на: комментарий от ozz_is_here

Значит что новые возможности которые дает API OpenGL 4 (и некоторые из последних расширений API OpenGL 3) не захотели смешивать с говном мамонта и вынесли в отдельный стек.

То есть теперь если приложение говорит что работает через «OpenGL» - ему дают ту часть которая содержит API версий 1.5, 2.0 и 3.0, и всё. А если приложение говорит что я работаю через «OpenGL [Core Profile]» - ему дают тот самый новый стек который содержит OpenGL 4 ну и будущие версии.
По крайней мере в macOS примерно так реализовано. Не знал что в линуксе пошли тем же путем. Ну и правильно.

uin ★★ ()
Ответ на: комментарий от ozz_is_here

Вспомнил про одну wiki где перечислены проблемные игры:
https://www.gamingonlinux.com/wiki/Games_broken_on_Mesa
и пофикшенные
https://www.gamingonlinux.com/wiki/Games_with_recent_fixes_in_Mesa
Как видно Dying Light в последнем списке, даже коммит указан, нужно только посмотреть вошел ли этот коммит в ту версию mesa которую ты используешь.

Aber ★★ ()
Ответ на: комментарий от uin

Apple тащемта входит в консоциум

Это здесь вообще причём? Может они и участвовали в разработке такого подхода, но спецификация всё равно едина для всех, не очень понятно, чему ты удивился.

Chronos Group?

Khronos

Ну и новый стек у них обозвался Core Graphics что намекает

Намекает на то, что у них тоже не очень богатая фантазия.

redgremlin ★★★★★ ()