LINUX.ORG.RU

Как должен работать Optimus на Linux?

 , , , ,


0

2

Вопрос навеян темой На пути к поддержке NVIDIA Optimus .

Есть абстрактная задача: собрать и запустить приложение, которое использует шейдеры 3.3+ (и прочие вкусности современных видеоадаптеров).

Из железа и драйверов:

  • встроенная Intel HD, которая управляется mesa 3.0 (одна реализация libGL)
  • дискретная nVidia, которая управляется nvidia blob 304.43+ (вторая реализация libGL), или даже nouveau

Допустим, будущее наступило, и Optimus работает на Linux (без костылей и bumblebee).

Вопрос: как оно должно работать, и с какой libGL (и прочими) линковать приложения?

А неизвестно, как поступит нвидия в плане реализации libgl для оптимуса, поэтому заранее сложно предположить.

post-factum ★★★★★
()
Ответ на: комментарий от Reset

Судя по доке должны быть API библиотеки, которые уже решают какую имплементацию использовать.

Перед запуском приложения должна создаться таблица диспетчеризации (напр. для libOpenGL), по которой и будут производиться вызовы к vendor OpenGL. Я только не понял по какому принципу будет выбираться vendor.

Вижу в issues (libEGL конечно, но хоть что-то):

(6) How should libEGL.so select the vendor?

Mesa's EGL implementation seems like at least a good starting point for these heuristics.

Допустим, будет приблизительно так, как описано в доке. Остается вопрос: есть приложения, которым достаточно возможностей mesa, некоторым надо больше. Как декларируются эти потребности в приложении?

То есть к примеру: приложение хочет создать GLXContext версии 4.2, однако mesa умеет только 3.0. Функция glXCreateContextAttribsARB принимает Display* в качестве параметра. Если драйвера mesa и nvidia работают на разных дисплеях, то достаточно будет вызвать что-то наподобии:

Display *display = XOpenDisplay( getDisplay("nvidia") );
GLXContext *ctx = glXCreateContextAttribsARB(display, /* ...  */);
и мы получим таблицу диспетчеризации для библиотек с vendor=nvidia на этом контексте?

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

Вот, все-таки, огораживатели: ну неужели сложно было сделать в BIOS'е выбор рабочей видеокарты?

Теряются все преимущества оптимуса (энергосбережение и т д). В текущем виде (с bumblebee) это работает довольно сносно, хотя и коряво.

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

ну неужели сложно было сделать в BIOS'е выбор рабочей видеокарты?

На лету — ключевые слова.

post-factum ★★★★★
()
Ответ на: комментарий от unfo

А в чем корявость? Жду ноутбук с чертовым оптимусом. Меня интересует одно: будет ли по-человечески nVidia'вская карточка работать? Интеловская нафиг не сдалась.

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

В арче с bumblebee нет никаких проблем.

Отдельные окна сможешь рендерить на nvidia, все остальное будет на интеле.

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

Работает, с bumblebee. Немного медленнее из-за virtualgl, но всё-же работает.

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

А на бучном экране что, не вариант?

// P.S. А хрюндель встанет на такие буки? А то жинка умоляет оставить ей гигов 15 под мастдайку, чтобы она в игрульки могла играть.

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

А если я все хочу?

VirtualGL. на основе которого построен bumblebee, умеет рендерить только отдельные приложения.

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

С моей точки зрения — совершенно ненужная.

Извини, но тут ты бредишь. Вот тебе юзкейз: Сидел я на диване, сёрфил нет (ест на интеграшке, чтобы экономить заряд батареи) и тут мне взбрело в голову поиграть в Дяблу. Что я делаю? Ставлю ноут на стол, подрубаю питание, клаву, мышь и играю. Ясен пень, что играть я предпочту на дискретке, а сёрфить нет на интеграшке. Вопрос - а начерта мне перезагружаться, чтобы поиграть\съэкономить заряд батареи?

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

P.S. А хрюндель встанет на такие буки?

Вылазь из криокамеры и ставь семёрку, семёрка вполне ок всегда была.

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

Не вырывай слова из контекста. Вместо дяблы может быть $(любая-другая-программа) активно использующая GPU.

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

Optimus laptops have two video chips: an integrated Intel and a discrete nVidia one. If the port (DisplayPort / HDMI / VGA) is wired to the Intel chip, you do not need to do anything special to get external monitors to work.

When the port is wired into the nvidia chip, you can currently not expand the screen over monitors. The monitor may still be used as extra screen (with no desktop running on it) or to run the full desktop on it (with no output on the Intel LVDS output, a.k.a. «the laptop display»).

Редко видеоразъем воткнут в нвидию, чаще интел.

Да и для ноутбука дополнительные мониторы то еще извращение.

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

А CUDA работает?

Да, с ней все нормально.

P.S. А хрюндель встанет на такие буки?

Насчет этого очень большие сомнения.

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

С версии 1.5.6 wine полностью «искаропки» тянет третью диаблу.

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

Вот тебе юзкейз: Сидел я на диване, сёрфил нет

если представить (гипотетически) что драйвера для Nvidia хорошие (а не гавно, сравнивая с Intel) — то наверно лучше бы было бы сёрфить интернеты — через Nvidia...

...ведь интернеты они же теперь уж — трёхмерные :)... там webGL есть :)

user_id_68054 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.