vk.com

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

Выпущена новая версия VKD3D-Proton 2.14

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

Особенности:

- Реализована статистика кадров 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.
- Уменьшение нагрузки на процессор в играх, которые снова и снова запрашивают поддержку формата swapchain.
- Удалена старая эвристика, которая предпочитала 2 кадра задержки в зависимости от используемого BufferCount.
- По умолчанию в DXGI используется 3, а использование 2 вызывало некоторые проблемы с производительностью в различных играх с истощением GPU, особенно в Steam Deck. VKD3D_SWAPCHAIN_LATENCY_FRAMES по-прежнему доступна в качестве переопределения для более жесткого значения по умолчанию.
- Переписана логика отправки очередей, чтобы лучше справляться со сложными шаблонами отправки, такими как FSR3 3.1 Frame Generation.
- В реализациях с одной графической очередью vkd3d-proton теперь будет пытаться выполнять базовое программное планирование работы GPU.
В некоторых случаях это может снизить производительность GPU, поэтому VKD3D_CONFIG=no_staggered_submit - это способ отключить этот путь кода.
- Одним из особенно значительных улучшений является FF XVI на RADV с фрейм-геном FSR 3, производительность которого в некоторых случаях почти удвоилась. Мы все еще ждем соответствующего исправления на уровне ядра, чтобы полностью решить эту проблему.
- Переписана логика отправки очереди для использования меньшего количества «фиктивных» отправок ожидания/сигнала. Это позволяет обойти патологическую нагрузку на процессор в amdgpu, требующую в некоторых случаях 20 мс+ для отправки работы.
- Переписана логика отправки очередей для разреженных обновлений для большей эффективности.

Исправления и обходные пути:
- Переработаны различные запросы мультисэмплинга, чтобы они были более корректными с точки зрения спецификации.
- Устранение ошибок в поведении MSAA в World of Warcraft.
- Устранение ошибки/сомнительного использования ID3D12PipelineLibrary в FF XVI.
- Использование родных 16-битных целых чисел для min16int. Исправление некоторых реальных ошибок, когда шейдеры ожидали, что min16int всегда реализовано как 16-битное.
- Устранение игровой ошибки, приводящей к зависанию GPU в Dragon Age: Veilguard на RADV.
- В шейдерах DXBC всегда отображаются правильные режимы окружения с плавающей точкой. Исправление глюков с глазами в Dragon Age: Veilguard на NV.
- Исправление потенциальной ошибки use-after-free для некоторых случаев обновления разреженных ресурсов.
- Корректная проверка при попытке приложения выделить слишком большую кучу дескрипторов.
- Исправление неопределенного поведения Stalker 2.
- Как обычно, много мелких исправлений в dxil-spirv.
- Исправление неработающего поведения amdgpu zerovram на ядрах 6.10+. Исправление случайных экстремальных глюков в Helldivers 2 на AMD.
- Устранение проблемы NV, которая приводила к зависанию GPU при загрузке файла сохранения в Star Wars: Outlaws.
- Исправление копирования между BC <-> RGBA изображениями в некоторых случаях.
- Добавлено исправление ошибки в игре The First Descendant, которая в некоторых случаях приводила к поломке отражений кубических карт.
- Устранение падения Skull & Bones при запуске на NV GPU путем отключения поддержки Reflex.
- Обходное решение проблемы Hunt: Showdown, когда в вершинных шейдерах отсутствовали точные квалификаторы, что приводило к глюкам рендеринга.
- Устранение низкой производительности процессора в Red Dead Redemption.

Разное / Отладка:
- Добавлена поддержка проверки инструкций (instruction_qa_checks). Для глубокой отладки, позволяет получать уведомления о генерации NaNs и Infs в шейдерах.

Для внутреннего использования QA.
- Добавляет тонкий контроль поведения QA на основе каждого шейдера. Для сужения круга проблем.
- Удалена куча старых и устаревших обходных путей для драйверов NV. Новая отсечка - 535 серия.
- Увеличение версии SDKVersion до 614, чтобы соответствовать последней стабильной версии AgilitySDK.
- Добавлен дополнительный путь кода для поддержки DXBC через официальную библиотеку dxilconv.
Этот код не включен в релизных сборках, и в настоящее время предназначен только для использования преимуществ QA-инструментария для шейдеров DXBC.