Запуск игры с использованием 3D-ускорения в отдельном виртуальном терминале замедляется, если не выполняется от имени пользователя root

Я собрал простой скрипт для запуска Neverwinter Nights из отдельного виртуального терминала:

#!/bin/bash
read -r -d '' myrcfile <<'EOF'
#!/bin/bash
cd /path/to/game
./nwn
EOF

XINITRC=<(echo "${myrcfile}") xinit -- :1 vt8

Хотя это работает, игровой процесс довольно изменчив. Для справки, он работает нормально из исходного / стандартного экземпляра X.

Я возился с schedtool чтобы увидеть, смогу ли я сделать это лучше, и сначала мне показалось, что мне это удалось, но на самом деле улучшение произошло не благодаря schedtool, а скорее потому, что я [наивно] сделал это:

sudo schedtool ${parms} -e ./nwn
^^^^

... потому что некоторые из schedtoolДля параметров требуется root (примечание: ${parms} это различные комбинации schedtool параметры). schedtool не был ответственным за улучшение скорости - sudo было. Чтобы убедиться, что это так, я заменил последнюю строку внутреннего скрипта на gnome-terminal -c 'sudo ./nwn' и, конечно же, он работает без нареканий.

У кого-нибудь есть хорошее предложение, как это сделать?

Вот некоторые из вещей, которые я пробовал:

  • Запустите X под sudo, затем вставьте su -c ./nwn myusername в сценарии
  • Запустил игру & X как мой пользователь, затем побежал schedtool от отдельного виртуального терминала сsudo изменить настройки текущего запущенного процесса, но ничего не изменилось
    • Это, кажется, указывает schedtool не собирается делать ничего хорошего

1 ответ

Решение

Я просто понял это. Я добавил себя в video а также games группа. Я не уверен, кто это сделал, но это сработало.

Одна странность, с которой я столкнулся, когда возился с этим: перед изменением группы я запустил glxgears; В качестве пользователя root он получал примерно тот же FPS, как если бы я запускал его из сеанса по умолчанию, но как мой пользователь сообщал о скорости около 500 кадров в секунду.

Другие вопросы по тегам