vk.com

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

Выход DXVK 2.0 слоя для трансляции Direct3D 9, 10 и 11 в Vulkan

  DXVK - это слой, который преобразовывает вызовы D3D9, D3D10 и D3D11 в Vulkan вместо OpenGL, таким образом прибавляя производительность в играх. Благодаря объединенным усилиям Philip Rebohle и Joshua Ashton, вышла в свет новая версия DXVK.

  Для работоспособности нового релиза DXVK необходим Vulkan версии не ниже 1.3. Многие функции в этом релизе, особенно изменения в компиляции шейдеров, требуют использования современных функций Vulkan, таких как Dynamic Rendering, Extended Dynamic State и Null Descriptors. Из-за значительных изменений, необходимых для их использования, разработчики посчитали нецелесообразно поддерживать и тестировать более старую версию Vulkan, которая не поддерживает эти функции.

  Чтобы уменьшить вероятность нехватки адресного пространства в 32-битных играх D3D9, DXVK теперь будет использовать файлы с отображением памяти для хранения текстур теней. Это позволит освободить память, которая не используется игрой, освобождая таким образом значительные объемы адресного пространства, вплоть до нескольких сотен мегабайт.

  Это изменение не влияет на 64-битные игры, так как адресное пространство не является проблемой. Оно также не затрагивает D3D10 или D3D11, поскольку загрузка ресурсов в этих API работает по-другому и гораздо эффективнее расходует память.

  Была улучшена поддержка функции VK_EXT_attachment_feedback_loop_layout, чтение из активной цели рендеринга в играх D3D9 теперь поддерживается должным образом, что ранее вызывало артефакты рендеринга на более новом оборудовании AMD и требовало обходных путей на уровне драйвера. Также в релиз вошли функции D3D9, которые ранее были в альфа-тестировании для более точного соответствия поведению реализации Nvidia. Это устраняет неточности в различных играх. Опция d3d9.alphaTestWiggleRoom была удалена, и игры, которым ранее требовалась эта опция, теперь должны работать нормально.

  Библиотеки DLL относящиеся к D3D10 с этого релиза более не будут поставляться, так как реализация D3D10 в WIne предоставляется больше возможностей, необходимых для запуска игр использующих эти библиотеки. Однако, сам API D3D10 по-прежнему поддерживается через d3d10core.dll.

  DXVK теперь поддерживает D3D11 Feature Level 12_1 со следующими новыми функциями:

  • Tiled Resources улучшены до уровня 3, при условии, что поддерживаются соответствующие функции Vulkan: sparse binding и sparse residency.
  • Conservative Rasterization улучшена до уровня 3, при условии, что поддерживаются соответствующие функции в Vulkan.
  • Rasterizer Ordered Views, при условии поддержки соответствующих функций блокировки шейдеров фрагментов Vulkan.

  Хотя известно, что ни одна игра не использует эти функции непосредственно в D3D11, некоторые игры и программы запуска игр полагаются на поддержку функций, согласованных между D3D11 и D3D12, чтобы пользователи могли включить D3D12 в опциях игры. Кроме того, DXVK теперь поддерживает запросы функций D3D11_FEATURE_SHADER_CACHE и D3D11_FEATURE_D3D11_OPTIONS5.

  Примечание: Драйверы AMD Vulkan в настоящее время не поддерживают блокировку фрагментных шейдеров и ограничены уровнем возможностей 12_0.

  Примечание: Драйвер ANV от Intel в настоящее время не поддерживает соответствующие функции Vulkan и поэтому ограничен уровнем возможностей 11_1. Это относится как к DXVK, так и к vkd3d-proton.

   

  В драйверах с поддержкой библиотеки VK_EXT_graphics_pipeline_library, включая функцию IndependentInterpolationDecoration, шейдеры Vulkan теперь будут компилироваться во время загрузки игрой шейдеров D3D, а не во время прорисовки. Это уменьшает или устраняет заикание при компиляции шейдеров во многих играх.

  В играх, которые загружают шейдеры во время экранов загрузки или в меню, это может привести к длительным периодам очень высокой загрузки процессора, особенно на слабых процессорах. В затронутых этим явлением играх рекомендуется дождаться окончания компиляции шейдеров перед запуском игры, чтобы избежать заикания и низкой производительности. Активность шейдерного компилятора можно отслеживать с помощью DXVK_HUD=compiler.

  Примечание: Соответствующие функции Vulkan в настоящее время поддерживаются только драйверами Nvidia (версия 520.56.06 или более поздняя). В будущем ожидается улучшение поддержки драйверов.

 

  Исправления и улучшения

  • Улучшено поведение ожидающих цепочек подкачки DXGI.
  • Улучшена реализация статистики кадров DXGI.
    Примечание: реализация все еще не точна, особенно в сценариях с несколькими дисплеями или при использовании переменной частоты обновления.
  • Устранены ограничения на количество ресурсов.
  • Удалено несколько обходных путей для конкретных драйверов Vulkan или версий драйверов. В первую очередь это относится к прекэшированию шейдеров в Steam, поскольку генерируемый код шейдеров больше не так сильно различается в зависимости от версии драйвера и поддерживаемого набора функций.
  • Шейдеры D3D11 теперь используют модель памяти Vulkan для более точной реализации правил когерентности UAV в вычислительных шейдерах.
  • Исправлены различные проблемы с методами D3D11.3 WriteToSubresource и ReadFromSubresource.
  • Исправлены различные проблемы эмуляции запросов в приложениях D3D9.
  • Исправлена бесшовная фильтрация кубической карты в приложениях D3D9.
  • Исправлены проблемы при рендеринге в DXGI_FORMAT_A8_UNORM (D3D11) или D3DFMT_A8 (D3D9) с включенным смешиванием.
  • Исправлена ошибка с наложением двух источников при привязке нескольких целей рендеринга, что могло привести к непредсказуемым результатам. Это касается Elex 2.
  • Исправлена логика распределения памяти на интегрированной графике Intel.
  • Изменено поведение переменной окружения DXVK_STATE_CACHE.
  • Изменена переменная окружения DXVK_PERF_EVENTS на DXVK_DEBUG.
  • Alan Wake: исправлена регрессия, из-за которой на графических процессорах AMD на экране появлялись серые прямоугольники.
  • Alice Madness Returns: Исправлена проблема с мигающими яркими пятнами.
  • Anomaly: Warzone Earth: Исправлена тупиковая ситуация при запуске игры.
  • Beyond Good and Evil: включено ограничение 60 FPS, чтобы обойти ошибки игры.
  • Dragon Age Origins: Решена проблема с нехваткой памяти при выходе из игры с помощью  alt+tab.
  • Empire: Total War: Исправлен рендеринг.
  • Final Fantasy XV: улучшена производительность при включении VXAO.
  • Grand Theft Auto IV: отключена поддержка форматов текстур DF, чтобы игра рендерила зеркала в более высоком качестве.
  • Heroes Of Annihilated Empires: Исправлены вылеты.
  • Limit King Of Fighters XIII: Включено ограничение 60 FPS для устранения ошибок в игре.
  • Metal Gear Solid V: Ground Zeroes: устранение проблем с потоковой передачей текстур на графических процессорах с 4 Гб или более VRAM.
  • SiN Episodes: Emergence: Работа над проблемой нехватки памяти, вызванной тем, что игра создает бесконечное количество текстур.
  • Sonic Generations: Улучшена производительность за счет снижения синхронизации GPU.
  • Spider Man: Shattered Dimensions: Исправлена проблема с освещением.
  • The Ship: Решена проблема с нехваткой памяти, вызванная тем, что игра создает бесконечное количество текстур.
  • Warhammer Online: Включено ограничение в 100 FPS для 64-битного исполняемого файла для устранения ошибок в игре/
  • Ys Seven: Исправлена ошибка, из-за которой в игре отображался только черный экран.

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