Были же какие то тесты где dxvk выдавал больше fps чем нативный directx12 в виндоуз. И по этому поводу виндузятники вроде как пытаются вкрячивать dxvk в виндоуз для некоторых игр. Без ссылок потому что лень, читал где то на реддит.
Ага там по графикам тоже почему то dx11 в винде. Хз почему, может ФК5 dx12 не работает …
Могу ошибаться, но разработчики тогда решили отказаться от dx12.
dx11 часто уступает по производительности dxvk, особенно при сравнении на адм-шных карточках.
с dx12 под виндой тоже не всё гладко. Там остро встает проблема компиляции шейдеров, которую привыкли обходить под линуксом костылями. Из-за чего тот же елден ринг под виндой идет с рывками.
Могу ошибаться, но разработчики тогда решили отказаться от dx12
Приятель занимающийся геймдевом говорит что разница между dx11 и dx12 фундаментальная. И «переход» с dx11 на 12 невозможен, нужно полностью переделывать и переписывать движок. По затратам это сравнимо с переходом на Vulkan. Ещё он говорит что трансляция dx11 в Vulkan действительно может быть быстрее чем нативная реализация, за счёт более продвинутой архитектуры Vulkan и более «умного» взаимодействия с железом через поддерживающие Vulkan драйверы. А вот с трансляцией dx12 уже не так очевидно, так как на низком уровне реализации используются схожие с Vulkan методы работы с железом.
Пффф. Под Линукс есть одна онлайн игрушка, разработчики которой умудрились написать её так, что она регулярно перестаёт работать при обновлении kernel. Обновилоось ядро? Игра не работает? И не заработает до следующего обновления ядра. Да и тогда не факт.
А вот с трансляцией dx12 уже не так очевидно, так как на низком уровне реализации используются схожие с Vulkan методы работы с железом.
С dx12 бывает другая забавная ситуация. Компиляция шейдеров вызывает фризы в играх и трансляция в вулкан в этом плане сама по себе ничего не даёт. Но для вулкана были созданы костыли, которые позволяют обойти проблему, типа раздачи готовых шейдеров стимом и компиляция перед запуском игры. Из-за чего и dx12 игры порой идут под линуксом лучше.
С dx12 бывает другая забавная ситуация. Компиляция шейдеров вызывает фризы в играх и трансляция в вулкан в этом плане сама по себе ничего не даёт. Но для вулкана были созданы костыли, которые позволяют обойти проблему, типа раздачи готовых шейдеров стимом и компиляция перед запуском игры. Из-за чего и dx12 игры порой идут под линуксом лучше.
Да, это так. А с другой стороны, читал что транслятор пока не умеет в динамическое освобождение памяти, и из за этого во многих dx12 игрушках видеопамять «течёт» при работе через vkd3d. Обладателям топовых видюх с большими объёмами памяти на борту это не сильно мешает, а вот те у кого восемь и менее гигов видеопамяти сталкиваются. Лично у меня ПЕЧ1660СУПИР с шестью гигами, и я замечаю что Киберпанк например подтекает, приходится перезапускать движок после нескольких часов игры.
dx12 оно. Онли. Они с Микрософт эксклюзивно законтрактились, поскольку были одними из первых кто заявил о разработке движка на dx12. Типа флагманский движок, раскроющий весь потанцевал dx12. Ну, они тогда обещали обильно и много.
Короче сказки не рассказывайте. Windows это first-class платформа для ПК, все оптимизации и игр и драйверов идут под неё. Эмуляция (даже такая высокоуровневая, как Wine/DXVK) не может быть быстрее оригинала. Без использования трюков, типа игнорирования каких-то вызовов, какие эмулятор не поддерживает. Или например нерабочего VSync - в статье FPS на Windows как раз крутится около 120, что как бы намекает.
В статье не представлено видео сравнение. Вообще никаких пруфов, только циферки.
Так что то, как работает на линуксе вполне может по факту быть эквивалентом более низких настроек под виндой за счёт нерабочих эффектов. И с VSync вопрос не раскрыт.
Вот, например, в том видео, ссылку на которое я давал выше, можно заметить, что DX9 криво передал воду, а реализация DXVK (Vulkan) эту воду исправила.
В обратную сторону это, очевидно, тоже работает. Наверняка найдутся игры, где на DXVK будут какие-то косяки в сравнении с DX. Например, нечто подобное: Linux непригоден для просмотра котиков
Не неси бред пожалуйста. Во первых WINE это «WINE IS NOT EMULATOR» он прям так и называется. Так что в этом контексте забудь про слово эмуляция и не срамись. Но да ладно допустим ты просто так к слову сказал. Но всё же дополню WINE это реализация Windows API ,также как например на линуксе есть реализация POSIX API или OpenGL API никакой разницы.
Теперь по поводу трансляции из одного API в другое. Тут опять же когда ты пишешь print() ты используешь API своего языка которое транслируется на системное API. Питон, жава, луа, прочие, трансляция вызовов везде куда не плюнь. Сама по себе трансляция это не что-то эдакое это то что везде и всюду и без чего вообще ничего не работает нигде и никогда за исключением голой сишечки писечьки (и то даже тут есть прослойки на уровне libc-ядро)
Вместо выполнения инструкции напрямую её надо преобразовать.
Преобразовывать ничего не надо, но вот вызывать лишний раз функцию надо и то не всегда. Смысл существования DXVK в том что он экономит такты процессора так что накладные расходы на трансляцию одного API в другое ничтожны.
Если директикс упирается в ГПУ от DXVK толку не будет, будет падение производительности за счёт наличия накладных расходов на трасляцию
Если директиск упирается в процессор то как ни странно и не внезапно за счёт того же процессора после трансляции для него работы становится меньше, порой в разы.
К примеру выделение VBO в директикс например 1миллион тактов, трансляция выделения VBO из директикс в вулкан 300 тактов, выделение VBO на вулкане 50000 тактов и получаем что нативное выполение жрёт лям тактов проца, а с трансляцией всего 50300, в ~19 раз быстрее с трансляцией чем без неё.
Справедливости ради есть обратные случаи когда директикс некий вызов делает быстро допустим нам в 1000 тактов, тогда как вулкан сделает этоже тоже быстро тоже в 1000 но + ещё 300 на накладные расходы уйдёт, в этом случае будет медленно.