LINUX.ORG.RU

Собрать X.Org с окном SDL в качестве экрана

 ,


0

1

Как собрать X.Org так, чтобы его можно было запустить в окне, а не на физическом экране? Окно желательно SDL, но можно и что-нибудь другое. В зависимостях, включая зависимости сборки, не должно быть libdrm, libpciaccess, mesa и т.п.. Поддержка OpenGL и аппаратного ускорения не обязательна.

Поиск в основном даёт вариант наоборот: сборку SDL под X11.

★★★★★

Как уже сказали, Xephyr. Вложенный X-севрер. Еще есть Xnest, но его состояние сейчас я не знаю, так как давно не пробовал.

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

https://en.wikipedia.org/wiki/Xephyr не?

Я так понимаю, что он создаёт окно в существующем X-сервере. Надо чтобы работало без существующего X-сервера в системе.

Также оно не хочет работать:

> /usr/local/bin/Xephyr :2
XKB: Failed to compile keymap
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.
(EE) 
Fatal server error:
(EE) Failed to activate virtual core keyboard: 2(EE) 
X512 ★★★★★
() автор топика
Ответ на: комментарий от ChekPuk

На Гайку прикручивать будешь?

И это тоже. Когда-то под Haiku был XSDL - X11 сервер с SDL в качестве ввода-вывода. Кажется он был в составе TiltOS. Сейчас сайт не работает и найти не получается.

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

Ну, погоди, ты сам попросил в окно.

Как собрать X.Org так, чтобы его можно было запустить в окне, а не на физическом экране?

Кого окно? Какое окно? Ну очевидно полагалось, что окно иксов. Оказывается, что и не это тебе нужно. Я вот вспоминаю, что сборки xserver-kdrive-sdl были когда-то. Видел мельком, поэтому не интересовался. kdrive сейчас в дереве xorg/xserver. Наверное, и опции компиляции для SDL есть. Вопрос надо провентилировать.

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

Есть еще вот такое чудо: https://github.com/NeoTerm/XServer

Похоже на то. Сборка по-видимому требует доработки напильником. Пока дошёл до sdksyms.o: undefined reference to ....

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

Посмотрел. Вывод на SDL был в kdrive очень давно. 12 лет назад где-то еще был, а потом исчез. В какой версии X.org трудно сказать, надо отследить. Но сейчас я уже не вижу. В версии xserver 1.2 еще был.

https://gitlab.freedesktop.org/xorg/xserver/-/tree/server-1.2-branch/hw/kdriv...

Мне кажется, что сейчас надо найти какой-то порт на SDL со стороны. Но вообще, интерес может предствлять именно актуальная кодовая база Xorg. Хотя и старые сервера протокол X11 исполняли.

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

Наверное, и опции компиляции для SDL есть.

В основном репозитории xserver упоминаний «SDL» нет. В «hw/kdrive» есть только ephyr. Может быть возможно перенести реализацию SDL из другого репозитория.

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

Мне кажется, что это как раз какой-то старый сервер, у которого еще была поддержка SDL, но его реанимировали. https://github.com/pelya/xserver-xsdl/blob/xsdl2/configure-xsdl.sh

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

В основном репозитории xserver упоминаний «SDL» нет.

Сейчас нет, но когда-то был. Можно для эксперимента попробовать найти самый последний релиз, когда это было и попробовать собрать. Вдруг чего. Вот выше по ссылке branch xserver-1.2 был еще. Может, и позже.

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

Релиз xserver-1.7. Вроде там еще kdrive/sdl есть, а вот в 1.8 уже нет. Я думаю, что аднроидовский сервер - это как раз форк Xorg примерно того времени.

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

Ну, со времен развала X Consortium и скатывания xfree86 адекватов там и не осталось, что как бы нам демонстрируют все эти годы. И адекватам взяться в общем негде.

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

Ну, да, не очень информативно. Я бы попробовал собрать сервер, в котором был SDL тогда и посмотреть, что там выходит. Я прошел по бренчам и так понимаю, что это xserver-1.7.

UPD: А если получится, то можно подумать над ревертом с киянкой.

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

Не знаю насколько нужен в твоей ситуации SDL, может тебе подойдет Xvfb ?

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

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

Они за что-то этих слонов не любят… А, xfree86, 2004…

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

А ввод он умеет?

скорей да - это же обычный сервер со встроенной эмуляцией фреймбуфера - буфер экрана отрисовывает в обычную память или в файл

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

Дык должен через corekbd или uevent.

Прямых зависимостей от драйверов ядра Линукс быть не должно. Ввод должен приходить из окна.

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

Тогда тебе к Xnest или Xephyr. Ну или kdrive допиливать.

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

Прямых зависимостей от драйверов ядра Линукс быть не должно. Ввод должен приходить из окна.

Вот в коде kdrive/sdl вроде бы мышь и клава есть. Я так понимаю, что те, которые из SDL. Но там с таймером что-то. Поллингом, что ли ловят. Я прямо просто взглянул, есть или нет, но как сделано, не разбирался. Последняя версия xserver-1.7.7. В версии 1.7.99 (это предрелизная 1.8) уже нет. Попробуй собрать. Это код 10-летней давности. Не так чтобы слишком давно.

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

Там товарищи ребейсили до новой кодовой базы, может помочь.

Те, которые в Андроиде? Или где? Андроидный сервер вроде тоже старый. Сейчас он есть еще?

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

Вот еще тебе умозрительная идея. В дереве xorg/driver есть драйвер xf86-video-nested (xf86-video-nested: driver to run Xorg on top of Xorg or something else).

https://gitlab.freedesktop.org/xorg/driver/xf86-video-nested/-/tree/master

Этот дравйер указывается в xorg.conf вместо драйвера видеокарты. Он в PCI, в железо, не лезет. Можно написать по образу и подобию драйвер xf86-video-sdl. Но как-то в опциях xorg.conf драйвера надо указывать, куда рисовать окно сервер, в какое окно. По идее, что-то может получиться. Ввод там же реализуется, как это не странно для драйвера вывода на видео. Если это реализуемо, то у тебя будет самый последний сервер, но только со специализированным драйвером.

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

Вот еще тебе умозрительная идея. В дереве xorg/driver есть драйвер xf86-video-nested (xf86-video-nested: driver to run Xorg on top of Xorg or something else).

Интересно, потом посмотрю.

Пока удалось перенести SDL в последнюю версию xserver, добавить в meson (autotools must die), скомпилировать и запустить. Падает в sdlCreateRes. Можно смотреть соседние исходники ephyr и починить по аналогии.

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