Введение
Xinerama — это расширение для X Window System, которое позволяет приложениям и менеджерам окон использовать два или более физических дисплея как единый большой виртуальный дисплей. Разработанное под названием PanoramiX Мэдлин Т. Асмус из группы разработки Unix X Server компании Digital Equipment Corporation, программное обеспечение было передано в The Open Group для выпуска X11 Release 6.4 (X11R6.4) и переименовано в Xinerama. Впоследствии оно было включено в выпуск XFree86 4.0 в 1998 году и выпуск Solaris 7 11/99. По словам руководителя проекта X Server Роба Лембри, название было вдохновлено технологией широкоэкранного кинотеатра Cinerama. «Мы были разочарованы тем, что у нас были мощные машины Alpha с несколькими дисплеями, и мы не могли перемещать приложения между ними. Разработка была вызвана скорее разочарованием, чем стремлением к конкурентному преимуществу». Преимущества Xinerama включают возможность разворачивать окна только до размеров активного физического дисплея и отображать новые всплывающие окна на активном физическом дисплее.
Xinerama is an extension to the X Window System that enables X applications and window managers to use two or more physical displays as one large virtual display. Developed under the name PanoramiX by Madeline T. Asmus of the Digital Equipment Corporation's Unix X Server Engineering Group, the software was contributed to The Open Group for X11 Release 6.4 (X11R6.4) and renamed Xinerama. It was then incorporated into the XFree86 4.0 release in 1998 and the Solaris 7 11/99 release. According to X Server project lead Rob Lembree, the name was inspired by the Cinerama widescreen theatre process. "We were frustrated by having big Alpha machines with multiple displays, and being unable to move applications from one to another. It was developed as much out of frustration as out of competitive advantage." Xinerama advantages include the ability to only maximize windows to the dimensions of the active physical display, and to allow new pop up windows on the active physical display.
Общая теория работы
Когда Xinerama включена в X-сервере, несколько экранов X можно объединить в единое рабочее пространство. Эта объединенная рабочая область позволяет перемещать окна между экранами X.
Расширение XINERAMA
Расширение Xinerama предоставляет клиентам информацию о компоновке оконных областей в едином рабочем пространстве. Данные о смещении и размере позволяют клиентам принимать обоснованные решения о размещении окон, их разворачивании на весь экран и других событиях взаимодействия с пользователем.
Использование в средах, не относящихся к XINERAMA
Архитектура клиент-сервер X-сервера позволяет серверу предоставлять клиенту информацию Xinerama, независимо от того, активна ли инфраструктура Xinerama. RandR и технология TwinView от NVIDIA используют эту возможность для предоставления менеджерам окон и клиентам информации о расположении выходов относительно буфера кадров.
Общая глубина цвета
Xinerama требует, чтобы все физические экраны имели одинаковую разрядность. Например, экран с 8-битной глубиной цвета нельзя объединять с экраном с 16-битной глубиной цвета.
Рендаринг на аппаратном уровне
В некоторых реализациях прямой рендеринг OpenGL работает только на одном экране. Окна, предназначенные для отображения 3D-графики на других экранах, часто оказываются черными, что особенно часто встречается в случае 3D-заставок. Реализация OpenGL для Solaris SPARC, а также проприетарные драйверы ATI и nVidia для Linux поддерживают аппаратное ускорение рендеринга для всех экранов в режиме Xinerama.
Статическая конфигурация
Физические экраны нельзя динамически добавлять или удалять, и изменить разрешение экрана невозможно. Это особенно неудобно для пользователей мобильных компьютеров, которые могут использовать внешний физический дисплей в дополнение к встроенному экрану, но только в определенных местах. В таких случаях рекомендуется использовать RandR или одно-GPU методы от ATI или nVidia. Отсутствие поддержки добавления и удаления экранов в Xinerama приводит к ряду проблем:
Окна могут отображаться на экране, который не подключен к компьютеру. Пользователю приходится перетаскивать эти окна на основной экран, не видя их. Видеосигнал, отправляемый на отключенные дисплеи, потребляет энергию впустую и может сократить время работы от батареи. Становится сложно использовать устройство в разных местах, где доступные внешние экраны могут быть сконфигурированы по-разному. Эти проблемы связаны с реализацией Xinerama, а не с его архитектурой, и могут быть устранены в ходе дальнейшей разработки.
Поддержка менеджера окон
Некоторые оконные менеджеры и среды рабочего стола имеют ограниченное понимание отдельных физических экранов в Xinerama, из-за чего рабочий стол просто растягивается на физические экраны, а не организуется как единое целое. Оконный менеджер может разместить новое окно на неожиданном экране, что может сбивать с толку и раздражать. Тем не менее, Xinerama предоставляет возможность перемещать окна между экранами.
Мертвое пространство
Физические дисплеи не обязаны иметь одинаковое разрешение, а виртуальная область отображения не обязательно должна быть прямоугольной, если физические дисплеи, из которых она состоит, имеют разные размеры. Некоторые менеджеры окон предполагают, что область отображения прямоугольная, и обеспечивают это, создавая лишнее "неиспользуемое пространство" по краям дисплея. Менеджеру окон необходимо учитывать Xinerama, чтобы не размещать новые окна в этой неиспользуемой области.
Ресурс
Asmus, Madeline T. (декабрь 1995) "Расширение PanoramiX" THE X RESOURCE 16: Практический журнал системы X Window. С. 59–73.