LINUX.ORG.RU

Как заставить mesa использовать только ту версию OpenGL, что подерживается карточкой?

 , , , ,


0

1

Здрасти. Нигде не нахожу внятного ответа.

С недавнего времени заметил на одном лаптопе, что все опенжиельные программы и браузер как-то нехорошо едят проц и выяснил, что mesa показывает и в glxinfo и браузеру версию OpenGL 4.6. А на моём интеле HD Graphics 5500 - максимум 4.3 (и то в теории, сам интел долго поддерживал только 3.3, или около того). Видимо новая mesa накручивает циферки и недостающий функционал добивает процессором (через llvm, или как оно там). В некоторых случаях это было бы приятно, но только когда я сам этого хочу. Ещё загвоздка - пристроен nvidia оптимус. Может современные драйвера научились между GPU пробрасывать работу и поэтому интел показывает бо́льшую версию опенжиела?

Я хочу заблокировать версию на интеле и заставить месу работать ТОЛЬКО с GPU, не эмулировать на проце. Это реально? (ну и не сломать работу энвидии при этом, да)

П.С. Я с этой Манджарой совсем распустился, отвык ковыряться в железе!

★★★

Видимо новая mesa накручивает циферки и недостающий функционал добивает процессором (через llvm, или как оно там).

Если там в glxinfo явно указан llvmpipe в качестве рендера, тогда да, OpenGL на процессоре у тебя рендерится, в ином же случае используется твоя GPU, не важно какая там версия OpenGL в выводе.

Можешь через переменные окружения Mesa задать версию OpenGL.

MESA_GL_VERSION_OVERRIDE=4.1
MESA_GLES_VERSION_OVERRIDE=4.1
MESA_GLSL_VERSION_OVERRIDE=410
Kron4ek ★★★★ ()
Последнее исправление: Kron4ek (всего исправлений: 1)
Ответ на: комментарий от Kron4ek

Спасибо, да, эти переменные окружения - первое что пришло в голову, но тут сложнее. Вот что показывает:

glxinfo | grep OpenGL
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) HD Graphics 5500 (BDW GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.3.3
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.3.3
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.3.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
Вспоминаются какие-то обрывки вычитаного в каких-то новостях про изменения работ интеловского «драйвера» месы, про «прозрачное» подключение llvm на лету, вот это вот всё. Но нигде не найду конкретного чтива.

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

Вот что показывает

Это просто вывод или уже с теми переменными?

Вспоминаются какие-то обрывки вычитаного в каких-то новостях про изменения работ интеловского «драйвера» месы, про «прозрачное» подключение llvm на лету, вот это вот всё. Но нигде не найду конкретного чтива.

Я допускаю, что такое возможно, но тоже нигде упоминания этого не могу найти, так что это маловероятно.

Твоя HD 5500 же не сильно старая, мне кажется вполне нормально, что в Mesa для нее OpenGL 4.6 реализован.

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

Покопался в системе, оказывается я когда-то ВРУЧНУЮ захардкодил для интела драйвер modesetting. Почему? Не помню. Убрал modesetting, перезагрузился, в логах иксов всё нормально, нед glamoregl, нет modesetting, но выхлоп glxinfo тот-же. Интересно то, что раньше при modesetting показывало драйвер не интел, а то ли glamoregl, то ли что-то другое. А теперь всегда интел, что и ввело меня в заблуждение. Интересно.

Короче. Вечером вернусь - продолжу ковыряния уже на гарантировано интеле :)

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

Убрал modesetting, перезагрузился, в логах иксов всё нормально, нед glamoregl, нет modesetting, но выхлоп glxinfo тот-же.

Это нормально, версия OpenGL не зависит от того, используется ли modesetting или xf86-video-intel. И в том, и в другом случае OpenGL через Mesa реализуется.

А теперь всегда интел, что и ввело меня в заблуждение. Интересно.

Насколько я знаю, это на новом драйвере Iris (не путать с графикой Intel Iris) всегда отображается Intel в строке «vendor string», если включишь старый i965 драйвер, то там должен быть другой текст.

MESA_LOADER_DRIVER_OVERRIDE=i965 glxinfo | grep OpenGL
Kron4ek ★★★★ ()
Ответ на: комментарий от gremlin_the_red

Это из официальной информации по моему процу от самого инетла. 4.3. При чём дооооолгое время (по крайней мере в линуксе) была доступна 3.3, или что-то типа того.

И не надо повышать требований, API должно как-то реализовать графическое ядро процессора. А если оно небыло заложено изначально, то как это делать? Там через фирмварю это можно сделать? Не знаю.

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

Так, ну, без modesetting ноут действительно стал похолоднее, но не идеально. (а чистил я его на прошлой неделе).

Попробовал подставить i965. И заметил, что сильно меняется строка «shading language version string». На современном интеле и том, что в связке с modesetting работал шейдинглэнгвич 4.60, а на i965 1.30. Вот, наверное, где загвоздка.

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

Это из официальной информации по моему процу от самого инетла. 4.3

Они просто не следят за каждым релизом месы (твой проц вышел в 2015, а сама OpenGL 4.6 — в 2017, да ещё пока в месу добавили, ещё три года прошло, кто тебе будет через 6 лет спецификацию править, на неё уже забили давно). Покажи хоть одну видяшку, которая умеет только 4.3 и ни версией больше. И у красных и у зелёных за 3.3 начинаются сразу карты с 4.6. Одним маленьким исключением является только TeraScale, у некоторых из которых нет аппаратного FP64, поэтому только OpenGL 4.2, а остальные TeraScale поддерживаются драйвером r600, в котором не допилена 4.6, поэтому даже те, что с FP64 имеют только 4.5.

API должно как-то реализовать графическое ядро процессора

Не все части API жёстко завязаны на железе. Например, повышением версии OpenGL до 4.6 для твоего проца в прошлом году состоялось после добавления поддержки шейдеров SPIR-V. Это чисто программная задача. То же касается способов работы с разными буферами и т.д.

gremlin_the_red ★★★ ()
Последнее исправление: gremlin_the_red (всего исправлений: 1)
Ответ на: комментарий от gremlin_the_red

Может быть. Но факт - комп стал постоянно шуметь. Валенок из радиатора я уже вытащил, и во время простоя он прям холодный, температура в районе 35° держится. А стоит видео на ютубе запустить - шумит сразу. Или игру какую, температура подскакивает с пол пинка.

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

И в месе, и на винде. Я так понимаю, они просто изначально стали писать драйвер вулкана с оглядкой на Gen9 видяшки, несмотря на то, что аппаратные возможности Gen8 тоже позволяли. А поддержка SPIR-V делается именно для портабельности между Vulkan/DirectX/OpenGL. Вот и не оказалось 4.6 в официальных дровах для винды для видяшек Gen8. А в месе пилили, пилили, и допилили.

gremlin_the_red ★★★ ()

Короче, не знаю что так влияет, переключал и так и этак, плацебо работает, а комп жюжжит. Помогло отключение турбы в tlp. Ну и после добил плацебу intel-undervolt. Что характерно: после отключения турбы проц стал работать БЫСТРЕЕ?!? В смысле отзывчивости. Такие же проблемы были на моём самсунге, он при турбах тупо перегревался, вылетал, лочился и всячески нехорошо себя вёл, тогда надо было вручную править msr (или как её). Теперь и этот комп идёт к тому же. Старые ядра ставить не хочу. Хочу наблюдать за деградацией линукса из первых рядов.

ChekPuk ★★★ ()

чё ты за херню выдумываешь? при программном рендеринге бы в glxinfo было бы написано llvm. чё-то там «прозрачно» через llvm делать нельзя, или программный рендеринг или аппаратный, смешивать не выйдет

это просто у тебя проц говно, и реально нагружен

anonymous ()
Ответ на: комментарий от ChekPuk

на мобильных процах ограничение теплопакета общее для проца и видео встройки. если ты разгоняешь проц - ты одновременно ЗАМЕДЛЯЕШЬ видео и наоборот. короче, ноутбуки говно как обычно и их владельцы не люди

anonymous ()
Ответ на: комментарий от anonymous

Так то он не выдумывает.

Вот как пример: https://www.phoronix.com/forums/forum/linux-graphics-x-org-drivers/open-source-amd-linux/1233385-mesa-s-r600-driver-nears-feature-complete-nir-support-for-radeon-hd-5000-6000-series?p=1233473#post1233473

То есть на Radeon 5xxx будет OpenGL 4.3 хотя они не поддерживают fp64.

Вообще Opengl почти всегда часть функций эмулировалась софтварно. Достаточно вспомнить Riva TNT2, для которой драйвер показывал OpenGL 1.2, а в реальности не было аппаратной поддержки даже 1.0, так как T&L появился только в Geforce 256. Или minigl драйвер для Voodoo 2/3…

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

тогдашний опенжоель был до-шейдерный. сейчас такое не прокатит. максимум шейдерами на видяхе программно что-то эмулировать, но всё ещё не на проце

anonymous ()
Ответ на: комментарий от anonymous

> чё ты за херню выдумываешь? при программном рендеринге бы в glxinfo было бы написано llvm

Одно из преимуществ OpenGL - возможность реализовывать программно те функции, которые отсутствуют аппаратно. https://www.phoronix.com/scan.php?page=news_item&px=MTM2MTA В MESA для i965 добавлен код для «предпоследнего» нереализованного расширения OpenGL: GL_ARB_ES3_1_compatibility (комментарий)

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

нет такой возможности

Есть. На Intel D2500HN под хрюшей у меня так OpenGL работал. Чисто софтово. Такого торомозного OpenGL я со времён 98 винды и программного рендеринга не видал.

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

Если на линуксе используется процессорный (чисто программный) бэкэнд для рендеринга опенжиеля, то пишет драйвер llvm. Так, например на древней невидии с драйвером nouveau и драйвером modesetting.

Нормальная же работа месовских дров всё равно подразумевает выполнение некоторых вещей на процессоре. И я не знаю прав я или не прав, но подозреваю, что современная меса на моём старом интеле выносит слишком много операций на процессор.

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

А раньше не прогревала потому что... ?

Мой предыдущий лаптоп тоже такую проблему имел, но его максимум был что-то около 3.3. и там чего-то шейдерного не хватало и шейдеры были на проце (по официальной версии интела, лень искать). Тогда нешейдерных игр было больше и игры имели переключатель - с шейдерами/без и разница ооочень чувствовалась. Например, в Astromenace. Его автор тут где-то на лоре ходит, мы с ним это обсуждали. Опенжиель без шейдеров сейчас уже и не найти, наверное, все и вся сидит на шейдерах, от этого аппаратное ускорение в фоксе на таком проце не ускоряет, а замедляет отрисовку и нагружает проц вдвойне.

Какое-то время мой теперешний комп был вперде, всё мог хорошо, но теперь стал прихрамывать и чем новее ядра и месы, тем больше. Мне кажется, что из-за той же проблемы, он говорит программам, что видяха могет то и это, проги с радостю нагружают его соответствующими плюшками, рассчитывая разгрузить проц для других вещей, но в реальности меса отдаёт часть операций процу и он работает ещё больше, потому что и данные гоняет и ещё и считает за видяху и ещё и своими делами занимается. Вот тебе и тенпература.

ChekPuk ★★★ ()
Последнее исправление: ChekPuk (всего исправлений: 1)
Ответ на: комментарий от salozar

То ли ты не читал мой ответ, то ли я не понимаю как это «потому что раньше твоя видяха видимо не фурычила и тормозила». А как это на практике, можешь описать?

ChekPuk ★★★ ()