Разработчик (и) | X.Org Foundation |
---|---|
Первоначальный выпуск | 6 апреля 2004 г.; 16 лет назад (2004-04-06) |
Стабильный выпуск | 1.20.8 / 29 марта 2020 г.; 7 месяцев назад (2020-03-29) |
Репозиторий | |
Написано на | C |
Операционная система | Межплатформенность |
Размер | 3,7 МиБ |
Доступно на | английском языке |
Тип | Сервер отображения |
Лицензия | Лицензия MIT |
Веб-сайт | www.x.org |
X.Org Server - это бесплатная реализация с открытым исходным кодом X Window System дисплейный сервер под управлением X.Org Foundation.
Доступны реализации клиентской стороны протокола, например в форме Xlib и XCB.
Службы, с которыми X.Org Foundation поддерживает X Server, включают упаковку выпусков; сертификация (платно); оценка улучшений кода; разработка веб-сайта и распределение денежных пожертвований. Релизы кодируются, документируются и упаковываются глобальными разработчиками.
X. Org Server реализует на стороне сервера базовый протокол X Window System версии 11 (X11) и его расширения, например RandR.
Версия 1.16.0 объединяет поддержку запуска и управления на основе systemd, что повысило производительность и надежность загрузки.
Независимый от устройства X (DIX) - это часть сервера X.Org, которая взаимодействует с клиентами и реализует программный рендеринг. Основной цикл и доставка событий являются частью DIX.
X-сервер имеет огромное количество функций, которые необходимо реализовать для поддержки протокола X core. Сюда входят кодовые таблицы, растеризация и кеширование глифов, XLFD и основной API рендеринга, который рисует графические примитивы.
Зависимый от устройства X (DDX) - это часть x-сервера, которая взаимодействует с оборудованием. В исходном коде сервера X.Org каждый каталог под «hw» соответствует одному DDX. Оборудование включает графические карты, а также мышь и клавиатуру. Каждый драйвер зависит от оборудования и реализован как отдельный загружаемый модуль.
По историческим причинам сервер X.Org все еще содержит драйверы графических устройств, поддерживающие некоторую форму ускорения 2D-рендеринга. В прошлом установка режима выполнялась драйвером графического устройства X-сервера, специфичным для некоторого оборудования видеоконтроллера (например, GPU ). К этой функции настройки режима была добавлена дополнительная поддержка 2D-ускорения, когда это стало доступным для различных графических процессоров. Функциональность установки режима была перемещена в DRM и предоставляется через интерфейс установки режима DRM, новый подход называется «установка режима ядра» (KMS). Но ускорение 2D-рендеринга осталось.
В Debian драйверы 2D-графики для сервера X.Org упакованы индивидуально и называются xserver-xorg-video- *. После установки файл драйвера для 2D-графики находится в / usr / lib / xorg / modules / drivers /
. Пакет xserver-xorg-video-nouveau устанавливает nouveau_drv.so
размером 215 КБ, проприетарный драйвер Nvidia GeForce устанавливает файл размером 8 МБ с именем nvidia_drv. поэтому
и Radeon Software устанавливает fglrx_drv.so
размером около 25 МБ.
Доступные бесплатные драйверы графических устройств с открытым исходным кодом разрабатываются в рамках проекта Mesa 3D. Хотя их можно перекомпилировать по мере необходимости, разработка проприетарных драйверов 2D-графики DDX значительно упрощается, если сервер X.Org поддерживает стабильный API / ABI во многих своих версиях.
В версии 1.17 был поддержан общий метод настройки режима. Пакет xf86-video-modesetting
, пакет Debian назывался xserver-xorg-video-modesetting
, был удален, а общий DDX для установки режимов был перемещен в серверный пакет чтобы стать DDX с поддержкой KMS по умолчанию, поддерживающим подавляющее большинство графических процессоров AMD, Intel и NVidia.
7 апреля 2016 года сотрудник AMD Мишель Дэнзер выпустил xf86-video-ati
версию 7.7.0 и xf86-video-amdgpu
версию 1.1.0, последнюю включая поддержку их микроархитектуры Polaris.
Существуют (как минимум) XAA (XFree86 Acceleration Architecture), EXA, UXA и SNA.
XAA - это API-интерфейс между Device-Independent-X (DIX) и Device-Dependent-X (DDX), драйвером 2D-графики, здесь, например, с ядром Linux.. В X Window System, XFree86 Acceleration Architecture (XAA ) - это архитектура драйвера для создания 2D-изображения видеокарты. аппаратное ускорение, доступное для X-сервера. Он был написан в 1996 году и впервые выпущен в XFree86 версии 3.3. Он был полностью переписан для XFree86 4.0. Он был снова удален из X.Org Server 1.13.
Большинство драйверов реализуют ускорение с помощью модуля XAA. XAA включен по умолчанию, хотя ускорение отдельных функций может быть отключено при необходимости в файле конфигурации сервера (XF86Configили xorg.conf).
Драйвер был исходной платформой разработки для XAA.
В выпуске X.Org Server 6.9 / 7.0, EXA был выпущен в качестве замены XAA, поскольку XAA почти не дает преимущества в скорости для текущих видеокарт. EXA рассматривается как промежуточный шаг к преобразованию всего X-сервера на использование OpenGL.
Glamour - это универсальный аппаратно-независимый драйвер 2D-ускорения для X-сервера, который переводит примитивы визуализации X в операции OpenGL, используя любые существующие 3D-драйверы OpenGL. В этом смысле он функционально аналогичен Quartz Extreme и QuartzGL (ускорение 2D-производительности) для Apple Quartz Compositor.
Конечная цель GLAMOUR состоит в том, чтобы устареть и заменить все драйверы графических устройств DDX 2D и архитектуры ускорения, тем самым избегая необходимости писать специальные драйверы X 2D для каждого поддерживаемого графического набора микросхем. Для Glamour требуется 3D-драйвер с поддержкой шейдеров..
Настройка производительности Glamour была принята для Google Summer of Code 2014. Glamour поддерживает Xephyr и DRI3 и может повысить производительность некоторых операций на 700–800%. С момента включения в версию 1.16 сервера X.Org, разработка Glamour была продолжена, и были опубликованы исправления для выпуска 1.17.
Для экземпляров сервер X.Org, работающий в гостевой системе в виртуализированной среде : xf86-video-qxl, драйвер для «видеоустройства QXL». SPICE использует этот драйвер, хотя работает и без него.
В репозиториях Debian он называется xserver-xorg-video-qxl, см. https://packages.debian.org/buster/xserver-xorg-video-qxl
В Debian драйверы, относящиеся к вводу, находятся в / usr / lib / xorg / modules / input /
. Такие драйверы называются, например, evdev_drv.so
, mouse_drv.so
, synaptics_drv.so
или wacom_drv.so
.
С версией 1.16 сервер X.Org получил поддержку для библиотеки libinput в виде оболочки с именем xf86-input-libinput. На XDC 2015 в Торонто libratbag была представлена как универсальная библиотека для поддержки настраиваемых мышей. xserver-xorg-input-joystick
- это модуль ввода для сервера X.Org для управления классическими джойстиками и геймпадами, которые не предназначен для игр под X, а для управления курсором с помощью джойстика или геймпада.
Сервер X.Org и любой x-клиент работают как отдельные процессы. В Unix / Linux процесс ничего не знает о других процессах. Чтобы он мог взаимодействовать с другим процессом, он полностью полагается на ядро, которое управляет обменом данными через доступные механизмы межпроцессного взаимодействия (IPC). Доменные сокеты Unix используются для связи с процессами, запущенными на одном компьютере. Вызов специальных функций сокета является частью интерфейса системного вызова. Хотя сокеты интернет-домена можно использовать локально, сокеты домена Unix более эффективны, так как они не имеют служебных данных протокола (контрольные суммы, порядок байтов и т. Д.).
Сервер X.Org не использует D-Bus.
Сокеты - это наиболее распространенный метод межпроцессного взаимодействия (IPC) между процессами X-сервера и его различных X-клиентов. Он предоставляет интерфейс прикладного программирования (API) для связи в домене TCP / IP, а также локально только в домене UNIX. В транспортном интерфейсе X описано несколько других API, например TLI (интерфейс транспортного уровня). Для других вариантов IPC между клиент-сервером X требуются системные расширения X Window, например MIT Shared Memory Extension (MIT-SHM).
Многопользовательская конфигурация относится к сборка одного компьютера с несколькими «местами», позволяющая нескольким пользователям сесть за компьютер, войти в систему и использовать компьютер одновременно независимо. К каждому компьютеру подключено несколько клавиатур, мышей и мониторов, каждое «место» имеет одну клавиатуру, одну мышь и один монитор. «Место» состоит из всех аппаратных устройств, назначенных конкретному рабочему месту. Он состоит как минимум из одного графического устройства (видеокарта или просто вывода и подключенного монитора), клавиатуры и мыши. Он также может включать видеокамеры, звуковые карты и многое другое.
Из-за ограничений системы VT в ядре Linux и протокола ядра X (в частности, как X определяет связь между корневым окном и выводом графической карты), многопользовательский режим не работает прямо из коробки для обычного дистрибутива Linux, но требует специальной настройки.
Существуют следующие методы настройки многопользовательской сборки:
Используемые параметры командной строки xorg-server:
-isolateDevice bus-id
Ограничить сброс устройства (вывод) на устройство с идентификатором шины. Строка идентификатора шины имеет вид bustype: bus: device: function (например, «PCI: 1: 0: 0»). В настоящее время поддерживается только изоляция устройств PCI; т.е. этот параметр игнорируется, если тип bustype отличается от "PCI".vtXX
по умолчанию, например, Debian 9 Stretch равен 7, т.е. нажав Ctrl+ Alt+F7, пользователь может переключиться на VT, на котором запущен xorg-server.Только пользователь на первом мониторе может использовать консолей vt и можно использовать Ctrl+ Alt+Fx, чтобы выбрать их. У других пользователей есть экран входа в систему GDM и они могут использовать xorg-server в обычном режиме, но не имеют vt.
Несмотря на то, что один пользователь может использовать несколько мониторов, подключенных к разным портам одной видеокарты (см. RandR), метод, основанный на нескольких экземплярах xorg-сервера, похоже, требует нескольких PCI видеокарты.
Можно настроить многопользовательскую среду с использованием только одной видеокарты, но из-за ограничений протокола X это требует использования протокола управления X Display Manager XDMCP.
Существует также Xdmx (Распределенное множество заголовков X).
Современная X.Org Foundation возникла в 2004 году, когда орган, курировавший стандарты X и опубликовавший официальную эталонную реализацию, объединил усилия с бывшими разработчиками XFree86. X11R6.7.0, первая версия сервера X.Org, была разветвлена из XFree86 4.4 RC2. Непосредственной причиной форка было несогласие с новой лицензией на окончательную версию XFree86 4.4, но несколько разногласий между участниками всплыли еще до разделения. Многие из предыдущих разработчиков XFree86 присоединились к проекту X.Org Server.
В 2005 году были приложены большие усилия для модульности исходного кода сервера X.Org, в результате чего к концу года был выпущен двойной выпуск. В выпуске X11R7.0.0 добавлена новая модульная система сборки на основе GNU Autotools, а в X11R6.9.0 сохранена старая система сборки imake, причем оба выпуска используют одну и ту же кодовую базу. С тех пор ветка X11R6.9 остается замороженной, а вся текущая разработка ведется в модульной ветви. Новая система сборки также принесла использование стандартного dlloader динамического компоновщика для загрузки подключаемых модулей и драйверов, исключая старый собственный метод. В результате модульности двоичные файлы X11 перемещались из своего собственного дерева подкаталогов / usr / X11R6в глобальное дерево / usrво многих Unix системы.
В июне 2006 года была предпринята еще одна попытка переместить базу исходного кода сервера X.Org с CVS на git. Обе попытки преследовали долгосрочную цель привлечь в проект новых разработчиков. По словам Алана Куперсмита:
Некоторые из наших усилий здесь носили технологический характер - одной из движущих сил конверсии с Imake на automake и с CVS на git было использование инструментов, с которыми разработчики уже были знакомы и с которыми они были продуктивны из других проектов. Проект Modularization, который разбил X.Org из одного гигантского дерева на более чем 200 маленьких, имел цель сделать возможным исправление ошибки в одной библиотеке или драйвере без необходимости загружать и создавать много мегабайт программного обеспечения и шрифтов, которые не изменялись.
В версии 7.1 фреймворк KDrive (небольшая реализация X, написанная Кейт Паккард, не основанная на XFree86, разработанная разработчиками X.Org использованный в качестве испытательной площадки для новых идей, например EXA ) был интегрирован в основную кодовую базу сервера X.Org.
В 2008 году новый DRI2, основанный на драйвере настройки режима ядра (KMS), заменил DRI. Это изменение также стало важной вехой в архитектуре сервера X.Org, поскольку драйверы были перемещены с сервера и пользовательского пространства (UMS) в пространство ядра.
. начальные версии расширений DRI3 и Present были написаны и закодированы Кейт Паккард для обеспечения более быстрого и без разрывов 2D-рендеринга. К концу года реализация GLX была переписана Адамом Джексоном в Red Hat.
Version | Date | X11 Release | Основные характеристики |
---|---|---|---|
Старая версия, больше не поддерживается: 1.0 | 21 декабря 2005 г. | X11R7.0 (1.0.1) | Изначально модульная X-сервер, EXA архитектура |
Старая версия, больше не поддерживается: 1.1 | 22 мая 2006 г. | X11R7.1 (1.1.0) | Интеграция с KDrive, поддержка AIGLX |
Старая версия, больше не поддерживается: 1.2 | 22 января 2007 г. | X11R7.2 (1.2.0) | Автоконфигурация, расширенная поддержка менеджеров композитинга на основе GL |
Старая версия, больше не поддерживается: 1.3 | 19 апреля 2007 г. | RandR 1.2 | |
Старая версия, больше не поддерживается: 1.4 | 6 сентября 2007 г. | X11R7.3 (1.4.0) | Поддержка горячего подключения ввода |
Старая версия, больше не поддерживается: 1.5 | 3 сентября 2008 г. | X11R7.4 (1.5.1) | MPX |
Старая версия, больше не поддерживается: 1.6 | 25 февраля 2009 г. | RandR 1.3, DRI2, XInput 1.5 | |
Старая версия, больше не поддерживается: 1.7 | 1 октября 2009 г. | X11R7.5 ( 1.7.1) | XInput 2.0, многопозиционный X |
Старая версия, больше не поддерживается: 1.8 | 2 апреля 2010 г. | xorg.conf.d, обработка ввода udev | |
Старая версия, больше не поддерживается: 1.9 | 20 августа 2010 | X11R7.6 (1.9.3) | |
Старая версия, больше не поддерживается: 1.10 | 25 февраля 2011 г. | X Synchronization Fences | |
Старая версия, больше не поддерживается: 1.11 | 26 августа 2011 | ||
Старая версия, больше не поддерживается: 1.12 | 4 марта 2012 г. | X11R7.7 (1.12.2) | XInput 2.2 (включая поддержку multi-touch) |
Старая версия, больше не поддерживается: 1.13 | 5 сентября 2012 г. | Новый API драйвера DDX, DRI2 разгрузка, RandR 1.4, OpenGL 3.x + контексты, удаление XAA | |
Старая версия, больше не поддерживается: 1.14 | 5 марта 2013 г. | XInput 2.3 | |
Старая версия, больше не поддерживается: 1.15 | 27 декабря 2013 г. | DRI3 и расширения Present | |
Более старая версия, но все еще поддерживается: 1.16 | 17 июля 2014 г. | XWayland DDX, ускорение GLAMOUR, поддержка устройств без PCI, systemd-logind поддержка (X без root), получена поддержка библиотеки libinput в виде оболочки под названием xf86-input-libinput | |
Старая версия, но все еще поддерживается: 1.17 | 4 Февраль 2015 г. | Интеграция прежнего xf86-video-modesettingуниверсального драйвера DRM / KMS, добавлена поддержка DRI2 с GLAMOUR | |
Старая версия, но все еще поддерживается: 1.18 | 9 ноября 2015 г. | RandR 1.5 | |
Старая версия, но все еще поддерживается: 1.19 | 15 ноября 2016 | Потоковый ввод, синхронизация PRIME, ограничение и деформация указателя XWayland, Windows DRI поддержка расширений | |
Текущая стабильная версия: 1.20 | 10 мая 2018 г. | Улучшения системы сборки Meson, GLXVND позволяет использовать отдельные драйверы OpenGL для разных X-экранов, аренда RandR улучшает Steam VR поддержка | |
Легенда: Старая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия Будущая версия |
Викискладе есть медиафайлы, относящиеся к X.Org Server. |