Mesa добавляет опцию «Блокировать исчерпанные буферы» для уменьшения задержки

После того, как эта идея обсуждалась около года, в Mesa 22.3 появилась новая опция производительности под названием «block_on_depleted_buffers» для ожидания буферов в конце свопа для уменьшения задержки — возможное преимущество в один кадр.

Когда включена новая опция «блокировать исчерпанные буферы», клиент блокируется до тех пор, пока не будет доступен новый буфер. Это останавливает выполнение клиента до тех пор, пока новый буфер не будет доступен, и в этот момент клиент продолжит рисование. За счет блокировки в конце подкачки, а не поведения по умолчанию, когда блокировка становится доступной, представляемый кадр немного новее с возможным сокращением задержки на один кадр.

Разработчик с открытым исходным кодом Роман Гилг работал над этим патчем, основанным на патче, начатом Мишелем Данцером, который, в свою очередь, начал его после того, как Пьер-Лу А. Гриффе из Valve год назад открыл тикет Mesa об обеспечении следующего буфера в конце патча. SwapBuffers() для уменьшения воспринимаемой задержки. Известный инженер Valve, ориентированный на Linux, резюмировал ситуацию так:
Обычный шаблон, которому следуют типичные наивные клиентские приложения (что верно для большинства игр), — это «выборка времени, симуляция, рисование, представление, повторение». В сценариях с привязкой к графическому процессору длина цепочки обмена является основным способом, которым приложение в конечном итоге блокируется, чтобы не слишком опережать графический процессор. Если вместо указанного выше следующий кадровый буфер будет проверяться сразу в конце SwapBuffers(), прежде чем вернуться в клиентское приложение, в описанном выше сценарии задержка, видимая пользователю, будет на один кадр меньше. Это также будет соответствовать тому, что делают другие драйверы и графические стеки.

Параметр block_on_depleted_buffers не включен по умолчанию, поскольку он может привести к пропуску кадров, если клиенту требуется слишком много времени для создания нового кадра. Valve уже использовала эту опцию/патч в SteamOS и Steam Deck, чтобы помочь уменьшить воспринимаемую задержку.

Более подробную информацию об этой опции можно найти в этом запросе на слияние, открытом восемь месяцев назад Романом Гилгом и теперь объединенном со вчерашним днем для Mesa 22.3. Это изменение затрагивает общий код DRI3 Mesa и, таким образом, не ограничивается каким-либо конкретным аппаратным драйвером Mesa.

Mesa 22.3 с этой опцией должна быть стабильной примерно в конце ноября или декабре, в зависимости от того, как проходит цикл выпуска после начала фазы замораживания функций / кандидата на выпуск в начале ноября.
Поделиться:

Похожие публикации

Тут ничего нет

Нет комментариев