Вышла новая версия D7VK 2.1 — проекта, превращающего старые версии Direct3D (3, 5, 6, 7) в современный Vulkan. В этом релизе разработчики сосредоточились на оптимизации загрузки и снижении накладных расходов при создании и уничтожении объектов. Хотя громких прыжков производительности нет, некоторые игры загружаются вдвое быстрее, а общая база кода стала более управляемой.
Оптимизация загрузки и снижение накладных расходов
Основная работа в этом релизе была проведена «под капотом»:
- Снижение накладных расходов при создании объектов: Уменьшено отслеживание жизненного цикла объектов, что улучшило время загрузки и запуска в широком спектре игр.
- Оптимизация буферов вершин: Добавлен «оптимистичный» путь для ранней инициализации буферов вершин D3D7/6, устраняющий скачки времени кадра при первом доступе к объекту.
- Улучшена загрузка и выгрузка поверхностей: Добавлены новые уловки для игнорирования ненужных передач данных.
- Сокращение накладных расходов DDraw: Оптимизированы объекты и вспомогательные библиотеки DDraw.
Улучшения производительности в конкретных играх
- Empire Earth: The Art of Conquest: Время запуска до начала интро сокращено с 3–4 секунд до примерно 1 секунды. Также улучшена производительность при большом количестве юнитов на экране.
- Arx Fatalis: Исправлена проблема с падением при запуске (use-after-free). Добавлен необязательный прямой путь для вызовов GetDC/ReleaseDC, который даёт прирост FPS на 5–10% во время геймплея, но может снижать производительность в главном меню.
- Project I.G.I. и Sonic World DX: Повышена общая производительность за счёт использования управляемых вершинных буферов.
- Blade of Darkness, Knight Rider, Silent Hunter II: Небольшое, но заметное улучшение производительности при рендеринге «божественных лучей» (god rays).
Исправления и новые возможности
- Resident Evil 2 (розничная версия): Добавлена опция альтернативного центрирования пикселей (по аналогии со старыми опциями драйверов ATI/NVIDIA), исправляющая артефакты на фоновых изображениях.
- MechWarrior 3: Исправлены отсутствующие фоны главного меню.
- Поддержка R3G3B2 8-битных цветовых поверхностей: Добавлена поддержка (отключена по умолчанию, так как в большинстве случаев лучше использовать 16-битные форматы).
- ARM-архитектуры: Добавлены вспомогательные функции ProcessVertices() без SSE2 для сравнительного тестирования (ARM-нативных DDraw-игр не существует).
Интересный бенчмарк
Разработчики провели показательное сравнение: D7VK v2.1 на ноутбуке с процессором Lunar Lake (Core Ultra 7 256V) с общим TDP CPU + GPU 37 Вт (работающем от батареи!) показал результаты, близкие к D7VK v1.12 на RTX 4070 с TDP 200 Вт. Это наглядно демонстрирует прогресс оптимизации.
Рекомендация: Если вы всё ещё используете версию v1.x, настоятельно рекомендуется обновиться до v2.1 — вы получите значительный прирост производительности, особенно на старых CPU.
Релиз D7VK 2.1 уже доступен на GitHub-странице проекта.