DirectX 12 появится на Mac, но путь может быть долгим
Несколько лет назад Valve наняла часть команды CodeWeavers для помощи в создании инструмента Proton. И теперь с его помощью можно запускать Windows-игры из каталога Steam на Linux-системах без необходимости использовать специальные версии или патчи. Благодаря этому 80% из 100 самых популярных игр Steam уже доступны на Linux.
Теперь перед командой CodeWeavers стоит очередной вызов. Компания поставила перед собой цель обеспечить совместимость CrossOver (решение для запуска Windows-программ в ОС Linux и macOS) с DirectX 12. Фактически, разработчикам CrossOver предстоит обеспечить поддержку DirectX 12 в двух разных игровых средах. При этом в случае Mac ожидается больше препятствий, чем с Linux.
CrossOver использует библиотеку VKD3D для запуска игр с DirectX 12. Эта библиотека трёхмерной графики построена на основе Vulkan. В настоящее время ведётся большая работа по повышению производительности VKD3D. С помощью расширения индексации дескрипторов Vulkan, которое обеспечивает функциональность, аналогичную множеству дескрипторов DirectX 12, дескрипторы Vulkan записываются реже и используется гораздо меньше видеопамяти. Поддержка DirectX 12 на Linux появится в 2022 году с выходом версии CrossOver 22.
В случае Mac – всё сложнее из-за низкоуровневого API-интерфейса Apple Metal. Он появился в 2014 году и был разработан специально для графических процессоров Apple. И, поскольку он был ориентирован на аппаратные компоненты Apple, он отличается от OpenGL, Vulkan или D3D12 и его предшественников.
В целом, Metal иначе выполняет тесселяцию, в нём отсутствуют геометрические шейдеры и некоторые другие компоненты. Также существует проблема с ограничением ресурсов. Как правило, играм требуется доступ как минимум к 1 млн SRV (shader resource view). Metal поддерживает вдвое меньше. Этого лимита достаточно для индексации дескрипторов Vulkan, но не для D3D12. В результате многие игры DirectX 12 не будут запускаться. Ещё одна проблема состоит в том, что DirectX 12 использует виртуальные адреса (VA) GPU. Но Apple еще предстоит добавить поддержку VA. Компания считает, что существующего буфера аргументов достаточно для нужд игр.
С учётом всех этих трудностей, в CodeWeavers ожидают, что поддержка DirectX 12 на Mac появится не ранее версии CrossOver 23.