В ядро Linux 3.12 будет добавлена экспериментальная поддержка Render Nodes и Modesetting Nodes. Разработчик из RedHat Дэвид Эйрли (David Airlie), отвечающий разработку подсистемы рендеринга (DRM), уже добавил данный код в дерево drm-next, которое позднее войдет в состав ядра Linux версии 3.12.
Из наиболее очевидных преимуществ данной технологии называется возможность выполнения GPGPU-вычислений без требования к наличию активного дисплея и/или композитного сервера, а также возможность более гибкого управления правами доступа. В настоящее время все операции рендеринга и смены видеорежимов делаются через один и тот же интерфейс, что накладывает ряд ограничений на управление правами доступа. В частности, это приводит к ситуации когда права на любую операцию ускорения рендеринга и права на переключение видеорежимов не могут выставляться независимо.
Кроме того, в отличие от традиционных GPU, в SoC на основе ARM переключение видеорежимов зачастую может осуществляться иным устройством нежели устройством используемым для ускорения рендеринга, что создает дополнительные проблемы при реализации видеодрайверов для таких SoC. Кроме того, это может требовать запуска X-сервера с правами root. Также невозможно, например, запустить два разных дисплейных сервера, один из которых заведовал бы одним видеовыходом, а другой - другим. Указанный патч устраняет данные проблемы.
Работа была выполнена Дэвидом Германом (David Herrmann) в рамках программы GSoC. Смысл инициативы в основном сводится к тому чтобы расщепить существующие в данный момент "монолитные" устройства вида /dev/dri/card{num} на 2 подтипа устройств: Rendering Nodes (/dev/dri/renderD{num}) и ModeSetting Nodes (/dev/dri/modeset{num}). Первые устройства по своей сути являются по выражению Грега Кроа-Хартмана "большими FPU" и отвечают за аппаратное ускорение рендеринга сцен и обсчета вычислительных заданий GPGPU.
Rendering Nodes позволят проводить вычисления на GPU или рендеринг без вывода на экран (например, для того чтобы вывести его на экран силами иного GPU). Это позволяет ПО использовать вычислительные мощности GPU не предполагая при этом взятие на себе полной ответственности за переключение видеорежимов данного GPU. Устройства ModeSetting Nodes отвечают за выставление видеорежимов и подобную активность.
С точки зрения видеодрайверов, становится возможным публиковать устройства которые делают только рендеринг, но не имеют своего видеовыхода, а также устройства "контроллер дисплея", которые умеют производить видеовывод и переключение режимов, но не обладают собственной инфраструктурой ускорения рендеринга. Обмен между устройствами предлагается делать путем использования DMA-BUF.
Из наиболее очевидных преимуществ данной технологии называется возможность выполнения GPGPU-вычислений без требования к наличию активного дисплея и/или композитного сервера, а также возможность более гибкого управления правами доступа. В настоящее время все операции рендеринга и смены видеорежимов делаются через один и тот же интерфейс, что накладывает ряд ограничений на управление правами доступа. В частности, это приводит к ситуации когда права на любую операцию ускорения рендеринга и права на переключение видеорежимов не могут выставляться независимо.
Кроме того, в отличие от традиционных GPU, в SoC на основе ARM переключение видеорежимов зачастую может осуществляться иным устройством нежели устройством используемым для ускорения рендеринга, что создает дополнительные проблемы при реализации видеодрайверов для таких SoC. Кроме того, это может требовать запуска X-сервера с правами root. Также невозможно, например, запустить два разных дисплейных сервера, один из которых заведовал бы одним видеовыходом, а другой - другим. Указанный патч устраняет данные проблемы.
Работа была выполнена Дэвидом Германом (David Herrmann) в рамках программы GSoC. Смысл инициативы в основном сводится к тому чтобы расщепить существующие в данный момент "монолитные" устройства вида /dev/dri/card{num} на 2 подтипа устройств: Rendering Nodes (/dev/dri/renderD{num}) и ModeSetting Nodes (/dev/dri/modeset{num}). Первые устройства по своей сути являются по выражению Грега Кроа-Хартмана "большими FPU" и отвечают за аппаратное ускорение рендеринга сцен и обсчета вычислительных заданий GPGPU.
Rendering Nodes позволят проводить вычисления на GPU или рендеринг без вывода на экран (например, для того чтобы вывести его на экран силами иного GPU). Это позволяет ПО использовать вычислительные мощности GPU не предполагая при этом взятие на себе полной ответственности за переключение видеорежимов данного GPU. Устройства ModeSetting Nodes отвечают за выставление видеорежимов и подобную активность.
С точки зрения видеодрайверов, становится возможным публиковать устройства которые делают только рендеринг, но не имеют своего видеовыхода, а также устройства "контроллер дисплея", которые умеют производить видеовывод и переключение режимов, но не обладают собственной инфраструктурой ускорения рендеринга. Обмен между устройствами предлагается делать путем использования DMA-BUF.