В поисках возможности запустить игру Halo Infinite под Linux через Steam Play (Proton) с графическими процессорами AMD GFX6/GCN 1.0, автор драйверов с открытым исходным кодом от Valve, Самуэль Питойсет (Samuel Pitoiset) добавил поддержку VK_NV_device_generated_commands для этих оригинальных графических процессоров Radeon GCN.
Самуэль Питойсет добавил в драйвер Mesa RADV поддержку NV_device_generated_commands для графических процессоров GFX6. VK_NV_device_generated_commands - это расширение NVIDIA, позволяющее генерировать ряд критических графических команд для буферов команд. Согласно спецификации расширения:
При рендеринге большого количества объектов устройство может быть использовано для реализации ряда критически важных функций, таких как обновление матриц или реализация окклюзионной выборки, выборки фруста, сортировки спереди назад и т.д. Реализация этих функций на устройстве не требует специального расширения, поскольку приложение может свободно определять свои собственные структуры данных и просто обрабатывать их с помощью шейдеров.
Однако, если приложение хочет быстро запустить рендеринг конечного потока объектов, то нерасширенный Vulkan заставляет приложение считывать обработанный поток и выдавать графическую команду с хоста. Для очень больших сцен накладные расходы на синхронизацию и затраты на создание буфера команд могут стать менее трудоемкими. Это расширение позволяет приложению генерировать поток изменений состояния и команд на стороне устройства и эффективно преобразовывать его в буфер команд без необходимости считывать его обратно на хост.
Более того, оно позволяет вносить инкрементные изменения в такие командные буферы, манипулируя только частичными секциями командного потока. Нерасширенный Vulkan, требует повторного создания целых командных буферов в таком сценарии или синхронизации обновлений на хосте.
По поводу добавления этого расширения на GFX6, Питоисет прокомментировал в запросе на слияние: "Наслаждайтесь игрой в Halo Infinite на GFX6. :-)".
Но позже он обновил текст, добавив: "Возможно, нет, потому что это может потребовать sparse, который есть в gfx8+ :(". Так что пока неясно, сможет ли он запустить Halo Infinite на GPU GCN, если не придумает какое-нибудь обходное решение для отсутствия разреженных текстур. В любом случае, приятно видеть, что разработчики Valve работают над улучшением поддержки этих устаревших графических процессоров. GFX6 охватывает графические процессоры Cape Verde, Pitcairn, Tahiti, Oland и Hainan.
Поддержка GFX6 NV_device_generated_commands находится в Mesa 23.2-devel, которая будет выпущена в следующем квартале.