LINUX.ORG.RU

Отдельный X-сервер для приложения, тормоза в OpenGL

 ,


0

1

Доброго времени суток! Есть у меня тут нужда делать отдельный X-сервер для некоторых приложений, в частности — для полно-экранных игр.

Для запуска приложения делаю скрипт:

#!/bin/bash
X :2 -terminate &
sleep 2
DISPLAY=:2
/usr/bin/app

Но тут есть проблема, когда я работаю с иксами, запущенными таким образом — у меня тормозят игры, я так понял, что тормозит именно OpenGL, fps меньше 1, потому что обычные интерфейсы программ работают нормально. Если сделать наоборот, на изначальном X запустить игру, а на созданном 2-ом то, что было на первом, — тогда всё ок. Объясните, что я упускаю при создании нового X-сервера? Как сделать так, чтоб он был таким же полноценным по скорости, как и первый?

Благодарю!



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

А я запускаю вторые иксы так:

xinit /path/to/program -- :1

По сабжу, впрочем, ничего не скажу.

zavok
()

Какой дистрибутив? Какие драйвера? Какое железо? Что конкретно за приложение?

Но для начала тебе надо выяснить, работает ли вообще полноценный opengl на вторых иксах, это можно сделать запустив (в тех же отдельных иксах) любой простой бенчмарк который пишет информацию о версии OGL и расширенииях.

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

Дистрибутив: xubuntu 12.04 (есть compiz, openbox) Приложения разные, игры Steam, как через Wine, так и нативные для linux. Ну это если только по играм, проблема-то по большей части с ними, ведь они используют OpenGL. Железо: Radeon HD 5000M Series, включена дискретная карта, драйвера — опенсорц.

А вот и вывод glxinfo:

Для изначальных исков:

OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD REDWOOD
OpenGL version string: 2.1 Mesa 8.0.4
OpenGL shading language version string: 1.20
OpenGL extensions:

Для созданных позже:

OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 0x300)
OpenGL version string: 2.1 Mesa 8.0.4
OpenGL shading language version string: 1.20
OpenGL extensions:

Это уже интересно, что это в конечном итоге значит? Вторые иксы рисуют OpenGL через виртуальные драйвера? Как заставить рисовать напрямик?

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

Gallium 0.4 on llvmpipe

используется софтверная растеризация.

У тебя небось третий гном с перделками или прочий компиз на основных иксах?

x4DA ★★★★★
()

> Доброго времени суток! Есть у меня тут нужда делать отдельный X-сервер для некоторых приложений, в частности — для полно-экранных игр.

Попробуй actkbd для сворачиввания полноэкранных приложений в обычной конфигурации. У меня работает. Инструкция - в LOR Wiki в статье Games.

Тормоза странные. Открытый драйвер?

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

Нет, xfce с компизом и openbox. Впрочем в данный момент на обоих был опенбокс запущен. Но разницы вывода glxinfo это не делает.

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

Часто проблема больше не в том, как свернуть, — а в том как это потом обратно запилить. Half Life под вайном например скорее всего уже обратно не развернуть. Впрочем меня интересует именно работа с иксами, потому что помимо сворачивания, — для игры оконный менеджер ну совсем незачем, только FPS падает.

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

Тормоза только в созданных отдельных иксах, и судя по выводу glxinfo — это потому, что OpenGL идёт не на Xorg, а на что-то там виртуальное-рисовательное. Вот вопрос в том, — как сделать так, чтобы всё это шло на Xorg?

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

OpenGL идёт не на Xorg, а на что-то там виртуальное-рисовательное.

opengl-команды исполняются драйвером llvmpipe, вместо, r600g, соответственно они исполняются на CPU, а не на GPU.

Кстати, скажи версию mesa и ядра.

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

Ну Mesa видно в логе:

OpenGL version string: 2.1 Mesa 8.0.4

А ядро:

uname -r
3.2.0-32-generic

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

Дак а чего его вырубать если он не врублен? :) xfce сессия сейчас не запущена, а компиз только вместе с xfce загружается. Сама загрузка compiz прописана в xml-конфигах ~/.config/xfce4/blabla/bla.xml → compiz --replace blablabla. Он принципе не участвовал, когда я делал glxinfo | grep OpenGL, всё-равно что его и не было совсем у меня.

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

я думал, что меса не может создать два полноценных opengl контекста, но раз компиз у тебя вырублен, то тут хз.

надо думать.

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

Ну насчёт двух контекстов: два экземпляра glxgears работают, и ничего. Гипотетически всё должно работать на ура. Даже статьи есть о запуске игр в отдельном X-сервере для повышения FPS. Просто новые иксы в моём случае стартуются почему-то не совсем так, как ожидается.

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

1. Загрузился в Openbox; 2. Отключил питание неиспользуемой видеокарты:

echo 'OFF' > /sys/kernel/debug/vgaswitcheroo/switch # by root
3. Переключился на дискретную видеокарту:
echo 'DDIS' > /sys/kernel/debug/vgaswitcheroo/switch # by root
4. Разлогинился, чтобы видеокарта переключилась:
openbox --exit
5. Залогинился опять в Openbox; 6. Запустил новые иксы:
X :2 &
7. Получил ответ в консоль:

X.Org X Server 1.11.3
Release Date: 2011-12-16
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.42-26-generic i686 Ubuntu
Current Operating System: Linux unclechu-xubuntu 3.2.0-32-generic #51-Ubuntu SMP Wed Sep 26 21:32:50 UTC 2012 i686
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.2.0-32-generic root=UUID=5d1c626f-549b-453f-922b-084bc05ab94b ro quiet splash vt.handoff=7
Build Date: 29 August 2012  12:10:05AM
xorg-server 2:1.11.4-0ubuntu10.8 (For technical support please see http://www.ubuntu.com/support) 
Current version of pixman: 0.24.4
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.2.log", Time: Wed Dec 26 09:50:12 2012
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
(II) [KMS] Kernel modesetting enabled.

8. На первых иксах:

glxinfo | grep OpenGL
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD REDWOOD
OpenGL version string: 2.1 Mesa 8.0.4
OpenGL shading language version string: 1.20
OpenGL extensions:
9. На вторых иксах:
DISPLAY=:2 glxinfo | grep OpenGL
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 0x300)
OpenGL version string: 2.1 Mesa 8.0.4
OpenGL shading language version string: 1.20
OpenGL extensions:
10. Пусть бы там и был для чистоты эксперимента запущен Openbox:
DISPLAY=:2
openbox &
glxinfo | grep OpenGL
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 0x300)
OpenGL version string: 2.1 Mesa 8.0.4
OpenGL shading language version string: 1.20
OpenGL extensions:

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

Да, и номер сходится, и при запуске даже выдал:

(==) Log file: "/var/log/Xorg.2.log", Time: Wed Dec 26 09:50:12 2012

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

X2 строка 785:

[   699.492] (II) GLX: Initialized DRI2 GL provider for screen 0
Может тут собака зарыта? У GLX идёт отсылка к нулевому дисплею.

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

Я кажется нашёл занозу, проверенным временем методом тыка: запустил glxinfo от рута — и он стал выдавать не llvmpipe, а AMD REDWOOD, как и на нулевом дисплее. Когда я смотрел в процессах как запущены нулевые иксы, — я обратил внимание, что они запущены от root-а и сразу же запустил:

sudo X :2 &
Но это ситуацию не меняет, меняет ситуацию, когда само приложение запущено от рута, в частности glxinfo, почему для основного дисплея этого не требуется — вот в чём вопрос?

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

В общем получается всё дело в том, что не хватает привилегий на что-то там? От рута приложения запускать не вариант :) Нужно как-то получить права на работу с OpenGL.

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

xubuntu. Проверил, всё пашет как надо, решение: нужно добавить себя то-ли в группу video, то-ли в группу games, — сейчас уже лень выяснять в какую конкретно.

Благодарю за участие!

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