Любое распределение, которое старается не устанавливать тяжелый менеджер окон, сделает приятно. Для максимального выбора Debian будет прекрасен в более старой системе. Ваше реальное решение который менеджер окон использовать. Я использовал FVWM на ноутбуке, сделанном в 1996, и это было много достаточно быстро. Более современные "легкие" менеджеры окон являются, вероятно, также соответствующими.
Косвенный рендеринг означает, что протокол GLX будет использоваться для передачи команд OpenGL, и X.org сделает реальный рисунок.
Прямой рендеринг означает, что приложение может получить доступ к аппаратным средствам непосредственно без связи с X.org сначала через мезаструктуру.
Прямой рендеринг быстрее, поскольку он не требует изменения контекста в процесс X.org.
Разъяснение: В обоих случаях рендеринг сделан GPU (или технически - может быть сделан GPU). Однако в косвенном рендеринге процесса похож:
В прямом рендеринге
Обратите внимание на то, что, потому что OpenGL был разработан таким способом, который может работать по сети, косвенный рендеринг быстрее, затем был бы наивная реализация архитектуры т.е. позволяет отправлять буч команд сразу. Однако существуют немного служебные с точки зрения процессорного времени, проведенного для протокола обработки и контекстных переключений.
Во-первых, LIBGL_ALWAYS_INDIRECT
флаг, связанный с Мезаструктурой 3D клиентская реализация OpenGL (libGL.so). Это не будет работать с двоичными драйверами от других поставщиков (например, Nvidia).
Во-вторых, для ответа на вопрос непосредственно продержитесь, я посмотрел на Меза-код работы флага как это:
Пред ~2008, когда Мезаструктура работала с косвенным X-сервером (например, Вы сделали ssh -X
или явно устанавливает Ваш дисплей на нелокальный сервер), он вошел бы в список зрительного ряда GLX, обеспеченного удаленным X-сервером, доступным Вашему приложению GLX. Вызовы приложения, например, glXChooseVisual () и Мезаструктура нашли бы что-то разумным для соответствия, и последующий glFoo()
вызовы были бы отправлены на удаленный X-сервер, где они выполнялись любым libGL, удаленный X-сервер был сцеплен до (вероятно, Ваш GPU).
Вокруг конца Мезаструктуры 2008 был изменен так, чтобы это хотело использовать свой внутренний рендерер программного обеспечения OpenGL (драйвер Xlib) для удаленного X соединений. (Некоторые дистрибутивы как SuSE конкретно исправили это для возвращения к старому поведению.) Это только умерло бы, если бы удаленный X-сервер предложил визуальное GLX, которое точно соответствовало одному из внутреннего рендерера программного обеспечения. (Иначе Вы получили бы общее, "Ошибка: не мог получить RGB, С двойной буферизацией визуальный".), Если бы такое визуальное было найдено затем Мезаструктуру, то представил бы все glFoo()
команды с локальным (к приложению) ЦП и нажатие результат к удаленному X-серверу с помощью растровых изображений (XPutImage()
); Установка LIBGL_ALWAYS_INDIRECT=1
(до Мезаструктуры работали бы 17,3 любых значений, с тех пор необходимо использовать 1, или верный) говорит Мезаструктуре игнорировать нормальный прямой рендеринг или внутренний рендерер программного обеспечения и использовать косвенный рендеринг как привыкший к.
Выбор косвенного рендеринга или прямого рендеринга программного обеспечения будет влиять на две вещи:
Версия OpenGL
Производительность
glGetInteger()
100 раз на кадр затем даже на быстрой LAN каждый из тех запросов легко поднимет 1 мс, или общее количество на 100 мс на кадр, означая, что Вы никогда не могли получать больше чем 10 кадр/с в своем приложении.glGetInteger()
звонки отвечают непосредственно в течение микро или наносекунды.Так, Вы видите без точных деталей Вашего приложения и Ваших сетевых характеристик, невозможно сказать, лучше ли прямой рендеринг программного обеспечения или косвенный рендеринг для какой-либо данной ситуации.
В Вашем случае кажется выполнением локального kwin экземпляра, таким образом, эффект LIBGL_ALWAYS_INDIRECT
должен вызвать косвенный рендеринг к Вашему локальному X-серверу. Это, по-видимому, любой изменения kwin
поведение (только OpenGL 1.4) или избегает некоторой другой ошибки.
Определенно Вы хотите удалить этот флаг, когда базовая проблема устраняется.
LIBGL_ALWAYS_INDIRECT=1
работал бы с ним (т.е. косвенное обходное решение рендеринга обычно необходимо для усовершенствованного использования OpenGL, такого как составной объект wm). – Maciej Piechotka 31.08.2010, 23:43