Что такое косвенный рендеринг и как он влияет на производительность графики?
Кроме того, это специфичный для Linux термин или его можно использовать в контексте других операционных систем?
Косвенный рендеринг - это когда удаленное приложение отображается на локальном компьютере. Он передает графические данные по протоколу X11. Как это работает, зависит как от сетевого подключения для передачи данных, так и от того, насколько хороша ваша локальная карта gfx.
Это применимо к любой системе с картой gfx и работающим X-сервером (windows или linux)
Косвенный рендеринг в основном означает, что весь конвейер рендеринга проходит через GLX/X11. Это компромисс, который обычно приводит к большему потреблению ресурсов, а также к большей задержке и иногда к снижению скорости рендеринга.
Упрощенно для целей иллюстрации я опишу это здесь.
Прямой рендеринг:
Приложение -> LibGL -> Драйвер -> Аппаратное обеспечение
Непрямой рендеринг
Приложение -> LibGL -> Xorg -> Драйвер -> Аппаратное обеспечение
Преимущества косвенного рендеринга в том, что он уменьшает количество ошибок, связанных с драйверами, не требует доступа пользователя к видеокарте (функция безопасности) и позволяет выполнять рендеринг по сети.
Недостатки косвенного рендеринга заключаются в том, что он имеет более длительный срок службы конвейера и его конвейер использует больше ресурсов (в частности, пропускную способность памяти и время процессора).
Непрямой рендеринг обычно приводит к снижению производительности, особенно в приложениях, которые имеют высокую нагрузку на процессор или рассчитаны на использование конвейера рендеринга с низкой задержкой.
В некоторых редких случаях прямой рендеринг может быть быстрее в приложениях, которые плохо обрабатывают буфер короткой очереди в конвейере прямого рендеринга. Как и в случае, когда буфер печати ускоряет печать, это может быть связано с ошибками или ограничениями в приложениях, которые зависят от скорости, с которой исходящие асинхронные вызовы рендеринга могут передаваться потоком.
Косвенный рендеринг в отличие от прямого рендеринга означает, что вы используете какой-то программный рендеринг вместо того, чтобы использовать графическую карту. Результат плохой 3D-рендеринга.
Косвенный рендеринг означает отсутствие аппаратного ускорения графики.