vk.com

Выберите язык

Вышла новая версия VKD3D-Proton 2.9

 

 VKD3D-Proton - это форк VKD3D, целью которого является реализация полного API Direct3D 12 поверх Vulkan. Проект служит для разработки поддержки Direct3D 12 в Proton.

 

В этом выпуске собраны некоторые значительные новые разработки.

 
Разделение d3d12core.dll

Некоторые игры начали предполагать, что DLL расположены аналогично AgilitySDK, где d3d12.dll - это просто загрузчик, а d3d12core.dll содержит реальную реализацию.
vkd3d-proton теперь также реализует это разделение. Возможно, что различные скрипты должны быть обновлены для работы с обеими библиотеками DLL. После установки d3d12.dll в префикс, необходимо обновлять только d3d12core.dll, так как d3d12.dll в любом случае является тривиальным shim'ом.

Улучшения производительности

- Значительно снижены требования к системной памяти при первом запуске приложения.
Код SPIR-V хранился в памяти "на всякий случай", чтобы потом его можно было перекомпилировать, но теперь это не так.
- Использование библиотек VK_EXT_graphics_pipeline_libraries позволяет избежать заикания при компиляции шейдеров в некоторых экстремальных случаях.
- Улучшена производительность при использовании некоторых плохих шаблонов запросов окклюзии, например, в Elden Ring.
- VK_EXT_descriptor_buffer увеличит производительность процессора еще больше, с помощью "сверхбыстрых" путей, специфичных для конкретного производителя.
  Микробенчмарки для копирования одиночных дескрипторов теперь значительно быстрее родных драйверов D3D12 как на RADV, так и на NVIDIA.
  Цифры производительности Intel пока неизвестны, но ожидается победа и там.
- Улучшено поведение переподписки VRAM, когда VK_EXT_pageable_device_local_memory поддерживается. (Вклад NVIDIA, спасибо!)
Это позволяет реализовать API Evict и MakeResident полезным образом.
VK_EXT_memory_priority также используется для статических приоритетов в качестве запасного варианта.

Особенности

Добавление VK_EXT_image_sliced_view_of_3d для поддержки нарезанных 3D БПЛА.
Улучшена поддержка DXR 1.1 с помощью VK_EXT_pipeline_library_group_handles.
Реализация VK_EXT_fragment_shader_interlock. Завершение работы над FL 12.1.
Переход на Vulkan 1.3 в качестве минимальной версии.
Теперь поддерживаются интерфейсы взаимодействия D3D11on12.
Это совместимо с DXVK 2.2, который фактически реализует 11on12.
Удаление устаревшего свопчейна
Старая реализация swapchain теперь отсутствует.
Требуется DXVK 2.1, поскольку теперь мы используем общий код.
Это означает, что больше не будет отката к версиям DXVK до 2.1 или Wine DXGI.

Поддержка нативных свопчейнов Linux

Новый swapchain может поддерживать нативные поверхности Linux.
Демо-приложения в demos/ с функциональным swapchain теперь собираются и на Linux.

Обходные пути для драйверов

KHR_present_wait в настоящее время отключен в драйверах NVIDIA из-за ошибки, которая возникала на некоторых установках PRIME.
Это должно быть исправлено в последних бета-версиях драйверов, и это обходное решение в конечном итоге будет удалено, когда будет подтвержденная основная версия, которая исправит эту проблему.
Обходное решение ошибки RADV, вызывающей раздувание памяти в кэшах шейдеров. Это может сэкономить несколько сотен мегабайт памяти, что очень важно для некоторых игр, требовательных к памяти, чтобы избежать нестабильности.
Устранение ошибки NVIDIA с одновременным отправлением очереди при использовании семафоров временной шкалы.
Исправлена куча необъяснимых ошибок Xid 109 CTX_SWITCH_TIMEOUT во многих играх.

Исправления и обходные пути для игр

Как обычно, различные исправления для игр. Перечислять отдельные игры сейчас становится нецелесообразно,
и лучше обратиться к другим источникам для получения информации о совместимости с конкретными играми.
Как обычно, куча исправлений в dxil-spirv для исправления ошибок шейдеров.

Разное

В Wine используйте winevulkan.dll, а не vulkan-1.dll, если он доступен.
Обходит некоторые игры, которые подключают Vulkan, несмотря на использование D3D12.
Улучшена совместимость с играми, полагающимися на некоторые детали AgilitySDK.
Улучшает совместимость системы сборки с различными версиями widl.
VKD3D_CONFIG=dxr теперь также включает DXR 1.1. dxr11 сохраняется для совместимости.
Исправлено значение MinLuminance метаданных HDR.
Добавлен VKD3D_LIMIT_TESS_FACTORS для работы с чрезмерной тесселяцией. Включено для Wo Long.
(Разработчики) Улучшена поддержка отладки с более подробной информацией о хлебных крошках.
(Разработчики) Вставка более действенной информации в захватах и журналах.
(Разработчики) Ведение журнала непосредственно в Wine, когда это доступно. Это делает PROTON_LOG=1 более надежным.
(Разработчики) Установка имен потоков и в сборке Win32.
(Разработчики) Использование родной конвенции вызова Linux вместо ms_abi.

Более подробную информацию смотрите здесь.