Тепер доступний VKD3D-Proton v2.14, який вносить кілька покращень у Direct3D 12 до рівня Vulkan, який використовується Proton від Valve для запуску ігор Windows у Linux.
Це безпосередньо використовується Proton, тому вам не потрібно нічого робити самостійно для цього в Steam Deck / Desktop Linux. Proton Experimental, як і GE-Proton, зазвичай отримує зміни з нього досить регулярно.
Для нових функцій є реалізація статистики кадрів DXGI, новий глобальний обмежувач частоти кадрів, підтримка плоских відеоформатів, таких як NV12, покращена підтримка генерації кадрів DLSS3 через dxvk-nvapi, а також деякі покращення продуктивності.
Купа спеціальних покращень для таких ігор, як World of Warcraft, Final Fantasy XVI, Dragon Age: Veilguard, Helldivers 2, Star Wars: Outlaws, The First Descendant, Skull & Bones, Hunt: Showdown, Red Dead Redemption тощо.
На фото – Перший приплід
особливості
- Застосування статистики кадрів DXGI (розкрито DXVK DXGI).
- Застосуйте глобальний обмежувач частоти кадрів (див
VKD3D_FRAME_RATE
абоDXVK_FRAME_RATE
).
Це також покращує поведінку презентації з інтервалом > 1, оскільки ми використовуємо обмежувач кадрів
подвійних подарунків зараз. Це також дозволяє підтримувати цільову частоту кадрів у повноекранному режимі в DXGI, яка зазвичай передбачає перемикання режимів. - Впровадити підтримку плоского формату відео, наприклад NV12.
- Правильно реалізуйте глибинну поляризацію D24 зараз на AMD, коли
VK_EXT_depth_bias_control
підтримується. - Відкрити новий командний інтерфейс, який дозволяє, напр. у dxvk-nvapi для реалізації генерації кадрів DLSS3.
- Використовуйте VK_KHR_compute_shader_derivatives, якщо доступно.
- Використовуйте VK_EXT_device_generated_commands, якщо вони доступні. Звіт про виконання непрямого рівня 1.1.
- Реалізуйте купу розвантаження GPU з останніх AgilitySDK. Дозволяє чітко керувати ReBAR замість евристичних хаків в іграх за допомогою нового API.
- Реалізація ID3DDestructionNotifier. Виправляє деякі конкретні ігри, які очікують, що це буде підтримуватися.
Реалізація
- Трохи зменште розвантаження VRAM на RDNA2 і 3 графічних процесорах
VK_MESA_image_alignment_control
піддається. - Зменште навантаження на процесор для ігор, які знову і знову вимагають підтримки формату свопчейн.
- Видаліть стару евристику, яка надає перевагу 2 кадрам затримки залежно від використовуваного BufferCount.
За замовчуванням у DXGI встановлено значення 3, і використання 2 спричиняло деякі проблеми з продуктивністю в різних іграх із обмеженим графічним процесором,
особливо на палубі.VKD3D_SWAPCHAIN_LATENCY_FRAMES
все ще доступний як перевизначення для забезпечення суворішого за умовчанням. - Перепишіть логіку подання черги, щоб краще обробляти складні шаблони подання, такі як FSR3 3.1 Frame Generation.
У реалізаціях із єдиною чергою графіки vkd3d-proton тепер намагатиметься виконати базове програмне планування роботи GPU.
У деяких інших випадках це може знизити продуктивність GPUVKD3D_CONFIG=no_staggered_submit
це спосіб відключити цей кодовий шлях.
Особливо великим покращенням є FF XVI на RADV з FSR 3 frame-gen, у деяких випадках з майже подвоєною продуктивністю.
Ми все ще чекаємо належного виправлення на рівні ядра, щоб повністю вирішити цю проблему. - Перепишіть логіку подання черги, щоб використовувати менше “фіктивних” повідомлень очікування/сигналу.
Це обходить патологічні навантаження процесора на amdgpu, які в деяких випадках займають більше 20 мс для надсилання роботи. - Перепишіть логіку подання черги, щоб зробити розріджені оновлення ефективнішими.
Виправлення та обхідні шляхи
- Повторно обробіть різні запити на мультивибірку, щоб зробити специфікації точнішими.
- Виправте помилку поведінки MSAA у World of Warcraft.
- Обхідний шлях/сумнівне використання ID3D12PipelineLibrary у FF XVI.
- Завжди використовуйте власні 16-розрядні цілі числа для min16int. Виправляє деякі реальні помилки, коли шейдери очікують, що min16int завжди буде реалізовано як 16-бітний.
- Виправте помилку гри, яка призводила до збоїв GPU в Dragon Age: Veilguard на RADV.
- Завжди транслюйте відповідні функції середовища з плаваючою комою в шейдери DXBC. Виправляє проблемні очі в Dragon Age: Veilguard у NV.
- Виправте потенційні невикористані помилки для деяких випадків оновлення ресурсів.
- Правильно перевіряйте, коли програма намагається виділити дуже велику купу дескрипторів.
Виправляє невизначену поведінку Stalker 2. - Багато різних виправлень у dxil-spirv, як завжди.
- Виправте несправну поведінку amdgpu zeroram на ядрах 6.10+. Виправляє випадковий екстремальний збій у Helldivers 2 на AMD.
- Вирішено проблему NV, через яку GPU «зависає» під час завантаження файлу збереження в Star Wars: Outlaws.
- Виправте дублювання між зображеннями BC <-> RGBA в деяких випадках.
- Додайте обхідний шлях для помилки ігрового процесу в The First Descendant, яка в деяких випадках призводить до пошкоджених відображень кубічної карти.
- Виправлено проблеми з черепом і кістками під час запуску на графічних процесорах NV, вимкнувши підтримку Reflex.
- Пошук рішення: у відповідності відсутні точні специфікатори вершинних шейдерів, що призводить до неправильного відтворення.
- Робота з низькою продуктивністю процесора в Red Dead Redemption.
Різне / Налагодження
- Додати підтримку для instruction_qa_checks. Для глибокого налагодження це дозволяє нам отримувати сповіщення, коли NaN та Inf генеруються в шейдерах.
Для внутрішнього використання QA. - Додайте детальний контроль поведінки QA на основі кожного шейдера. Щоб звузити питання.
- Видаліть купу старих і застарілих рішень для драйверів NV. Новим відсіченням є серія 535.
- Налаштуйте SDKVersion на 614, щоб відповідати останній стабільній версії AgilitySDK.
- Додайте додатковий шлях коду для підтримки DXBC через офіційну бібліотеку dxilconv.
Цей код не ввімкнено у версіях випуску,
і наразі призначений лише як спосіб використання інструментів контролю якості для шейдерів DXBC.
Перегляньте всі покращення в журналі змін.