VKD3D

VKD3D логотип

VKD3D — это реализация Direct3D 12 с открытым исходным кодом, разрабатываемая в рамках проекта Wine. Библиотека предоставляет совместимый с Direct3D 12 API, транслируя его вызовы в команды Vulkan, что позволяет запускать Windows-приложения на Unix-подобных системах.

Проект VKD3D начал развиваться в 2015 году как ответ Microsoft на выпуск DirectX 12. Изначально разрабатываемый CodeWeavers, проект был передан сообществу Wine и стал ключевым компонентом для поддержки современных игр и приложений. VKD3D служит основой для более специализированного форка VKD3D-Proton.

VKD3D работает как слой перевода, преобразующий вызовы Direct3D 12 в эквивалентные команды Vulkan. Проект реализует архитектуру, схожую с оригинальным D3D12, включая систему управления ресурсами, конвейеры состояния и механизмы синхронизации.

Для работы VKD3D требуется система с полной поддержкой Vulkan и совместимыми драйверами.

Минимальные системные требования

Операционная система: Linux, FreeBSD или macOS с поддержкой Vulkan

Графический API: Vulkan 1.1 или выше

Графические драйверы: Mesa 21.0+ для открытых драйверов или проприетарные драйверы NVIDIA/AMD

Wine: Версия 5.0 или выше для базовой функциональности

Зависимости: SPIRV-Tools, Vulkan-Headers, Wine-Staging (рекомендуется)

Для оптимальной работы рекомендуется последняя стабильная версия Wine (7.0+), современные графические драйверы с поддержкой Vulkan 1.3 и система с достаточным объемом оперативной памяти.

VKD3D — это проект с открытым исходным кодом, разрабатываемый международным сообществом энтузиастов и компаний. Разработка ведется в сотрудничестве с проектом Wine и регулярно интегрируется в его основные релизы.

Архитектура и компоненты

Библиотека времени выполнения: Основная библиотека vkd3d.dll, предоставляющая API Direct3D 12.

Компилятор шейдеров: Инструменты для трансляции шейдеров HLSL в SPIR-V, используемые Vulkan.

Слой трансляции ресурсов: Система управления памятью и ресурсами GPU, эмулирующая поведение D3D12.

Интеграция с Wine: Глубокая интеграция с архитектурой Wine для обработки вызовов Win32 API.

Ключевые возможности

Поддержка основных функций D3D12: Command lists, bundles, pipeline state objects, root signatures.

Управление ресурсами: Heaps, descriptors, resource barriers и residency management.

Многопоточность: Полная поддержка многопоточного рендеринга и синхронизации.

Кроссплатформенность: Работа на различных Unix-подобных системах с поддержкой Vulkan.

Отладка и профилирование: Инструменты для отладки приложений D3D12.

Отличия от VKD3D-Proton

Целевое назначение: VKD3D ориентирован на общую совместимость, VKD3D-Proton — оптимизирован для игр.

Производительность: VKD3D-Proton содержит больше оптимизаций для конкретных игр и сценариев.

Частота обновлений: VKD3D обновляется вместе с Wine, VKD3D-Proton имеет более частые релизы.

Поддержка расширений: VKD3D-Proton быстрее внедряет поддержку новых D3D12 расширений.

Поддерживаемые приложения

Игры: Многие игры с поддержкой DirectX 12, особенно те, которые не требуют экспериментальных функций.

Бенчмарки: 3DMark Time Spy, некоторые другие тестовые программы.

Профессиональные приложения: Некоторые CAD и научные приложения, использующие D3D12 для вычислений.

Демонстрационные программы: Официальные демо Microsoft и образцы кода.

Установка и использование

Через Wine-Staging: Самый простой способ — использование Wine-Staging, который включает предварительно собранный VKD3D.

Сборка из исходников: Для получения последних изменений можно собрать VKD3D самостоятельно из Git репозитория.

Дистрибутивные пакеты: Многие дистрибутивы Linux предоставляют пакеты vkd3d в своих репозиториях.

Конфигурация: Настройка через переменные окружения Wine и параметры запуска приложений.

VKD3D — это фундаментальный проект, который заложил основу для совместимости DirectX 12 на Unix-платформах. Хотя для игровых сценариев часто рекомендуется использовать VKD3D-Proton, оригинальный VKD3D остается важным компонентом экосистемы Wine, обеспечивающим базовую совместимость и служащим тестовой платформой для новых функций.

Исходный код в официальном репозитории Wine.
  • Просмотров: 334

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