Расширение Present (X11)
Подробнее
- Автор
- Keith Packard
- Год
- 2013
- Тип
- Расширение X
Расширение X, позволяющее клиенту сказать «покажи этот pixmap в этом окне на следующем кадре» и получить уведомление, когда это случилось: способ X11 синхронизироваться с развёрткой без знания OpenGL сервером.
До 2013 года X-программе, которая хотела менять буферы синхронно с дисплеем, приходилось идти через GLX и SwapBuffers из DRI2, что предполагало, что и сервер, и драйвер говорят на OpenGL. Кит Паккард написал Present, чтобы выделить именно этот кусок: единственный запрос PresentPixmap просит сервер скопировать или перевернуть содержимое pixmap-а в окно на заданном кадре, считаемом в MSC — счётчике медиапотока. Сервер отвечает CompleteNotify, когда обмен реально стал видимым (с отметкой времени), и IdleNotify, когда клиент может использовать pixmap снова. Если окно закрывает весь экран и ничто не мешает, получается настоящий page flip, а не копирование.
Расширение вышло в X.Org Server 1.15 в декабре 2013 года вместе с DRI3, который сам занимается разделением буферов через файловые дескрипторы; вместе они заменили DRI2. На них построена поддержка GL и Vulkan для X11 в Mesa, Xwayland переводит PresentPixmap прямо в кадры композитора Wayland, а компонующий оконный менеджер может применять тот же механизм для своего оверлея. Это один из редких случаев, когда X11 получил современный графический конвейер задним числом — как раз перед тем, как большинство перестало этим интересоваться.