Вышла новая версия D7VK 2.4

Вышла новая версия D7VK 2.4 — проекта, превращающего старые версии Direct3D (3, 5, 6, 7) в современный Vulkan. Несмотря на то что проект находится в режиме поддержки (maintenance mode), этот релиз приносит несколько важных изменений: введены ограничения на размеры поверхностей и разрешения (максимум 1080p), добавлена опция сохранения соотношения сторон при растягивании back buffer, а также улучшена обработка интервалов презентации. Кроме того, разработчики анонсировали новый смежный проект — GXVK, реализацию Glide поверх DXVK.

Ограничения размеров поверхностей и разрешений

Традиционно ранние D3D и DDraw имели ограничения на максимальные размеры поверхностей (2048 пикселей) и режимов отображения (2048 x 1536). Многие игры либо откатывались к безопасному разрешению (например, 640 x 480), либо просто падали при превышении этих лимитов. Теперь D7VK принудительно применяет эти ограничения, маскируя более высокие разрешения, даже если они сообщаются адаптером или монитором.

Как следствие, 1080p становится максимальным «современным» разрешением для D7VK. Впрочем, большинство игр того времени всё равно не предлагали разрешений с соотношением сторон, отличным от 5:4 или 4:3, так что вы всё равно ограничены 1280 x 1024 или 1600 x 1200.

Если вы настаиваете на возврате старого поведения (без гарантий, что это будет работать), можно включить размеры поверхностей и разрешения до 16K, следуя инструкциям в readme.

Растягивание back buffer и Wayland

В D7VK v2.3 и более ранних версиях по умолчанию растягивался back buffer для соответствия экрану, если его размер был меньше размера экрана. Этот путь часто использовался на Wayland. В v2.4 это поведение было улучшено и отключено по умолчанию из-за известных ограничений.

Что работает хорошо:

  • Добавлен новый режим, который сохраняет оригинальное соотношение сторон при подгонке к экрану. Он включён по умолчанию, но может быть отключён опцией ddraw.preserveAspectRatio = False.
  • Эта опция работает только при ручном включении подгонки back buffer к разрешению экрана через ddraw.backBufferResize = True.

Ограничения:

  • Изменение размера back buffer отключено по умолчанию, так как игры, копирующие данные между back buffer DDraw и D7VK, будут работать некорректно из-за разницы в размерах поверхностей.
  • При изменении размера не применяется повышение резкости или фильтрация, поэтому результат может выглядеть размытым.

Рекомендуемый способ решения проблем с соотношением сторон и отображением на Wayland описан в readme проекта. Используйте эти обходные пути только в крайнем случае — выполнение работы композитора не входит в задачи D7VK.

GXVK — реализация Glide поверх DXVK

Разработчики анонсировали новый смежный проект — GXVK, реализацию Glide (Windows), использующую бэкенд Vulkan от DXVK. Над ним активно работал @CkNoSFeRaTU. Уже доступна ранняя альфа-версия, которая может запускать некоторые игры.

Glide и ранний D3D постоянно конкурировали по функциональности. В целом Glide почти всегда был лучшим выбором по сравнению с D3D5/3, тогда как в эпоху D3D7/6 «конкуренция» была более тонкой. Существует также ряд игр, эксклюзивных для Glide, которые теперь получают доступ к открытой реализации Vulkan.

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

  • Переписывание на DXVK: Подтянут последний код DXVK, включая present timing.
  • Сохранение соотношения сторон: Реализовано для растягивания back buffer, само растягивание отключено по умолчанию.
  • Ограничения размеров DDraw: Принудительно применяются традиционные ограничения с опцией пропуска проверок для смелых.
  • Опция совместимости соотношения сторон: Позволяет сообщать приложению только режимы 4:3 и 5:4. Необходимо для Earth 2150 и аддонов, которые падают при использовании 16:9.
  • Улучшена обработка интервалов презентации: Исправлены проблемы с отсутствующим текстом/графикой в Re-Volt и 3DMark 2000, а также другие проблемы в играх, переключающих VSync.
  • Исправлена ошибка с включением VSync: При использовании легаси-флипов поверхностей.
  • Добавлена опция принудительной обработки гамма-рампы: Может помочь решить проблемы с гаммой.
  • H.E.D.Z.: Исправлена ошибка с нулевым указателем при отсоединении вьюпорта (спасибо @ksc-1).
  • Унификация структур описания поверхностей: Снижено потребление памяти и немного ускорены операции.
  • Улучшено отслеживание блокировок вершинных буферов: Для учёта множественных одновременных блокировок.
  • Улучшен путь инициализации объектов на основе IClassFactory.
  • Переработан обходной путь кэширования HWND: Теперь всегда используется последний установленный HWND.

D7VK 2.4 — это ещё один шаг вперёд для проекта, который, даже находясь в режиме поддержки, продолжает радовать пользователей важными улучшениями. А анонс GXVK открывает новую главу в эмуляции старых API.

Релиз уже доступен на GitHub-странице проекта.

  • Просмотров: 14

Этот веб-сайт использует технические и функциональные файлы cookie. Чтобы зарегистрировать учетную запись, связаться с нами, получить наши продукты или услуги, вы должны принять нашу Политику Конфиденциальности. Нажимая кнопку «Принять» или щелкая любую ссылку на этой странице, вы соглашаетесь на использование файлов cookie и принимаете нашу Политику использования cookie-файлов.