D7VK 2.2 улучшает поддержку Direct3D 3 для запуска классических игр Windows на Linux.

  • В D7VK 2.2 значительно улучшена поддержка Direct3D 3, исправлены проблемы с устройствами, буферами выполнения и преобразованием вершин.
  • Обновление также улучшает управление текстурами и прозрачность цветовых ключей, а также снижает накладные расходы на некоторых путях Direct3D 5 и 6.
  • D7VK 2.2 основан на DXVK 3.1 и продолжает улучшать запуск классических игр для Windows с использованием Wine и Proton в Linux.

Д7ВК 2.2

D7VK 2.2 теперь доступен как новая версия слоя трансляции графики, предназначенного для запуска классических игр Windows на Linux. Проект, созданный на основе DXVK, сосредоточен на трансляции старых API Direct3D 7, 6, 5 и 3 в Vulkan для использования с Wine и Proton, и эта новая версия посвящает значительную часть своей работы одной из областей, которая все еще имела наибольшие недостатки: поддержке Direct3D 3.

Обновление выходит всего через несколько недель после D7VK 2.1 и продолжает процесс совершенствования технологии, которая особенно интересна тем, кто хочет играть в игры конца 90-х и начала 2000-х годов на современных системах Linux. Помимо улучшения Direct3D 3, D7VK 2.2 включает в себя множество исправлений ошибок и внутренних доработок и основан на последней версии DXVK 3.1.

D7VK 2.2 ориентирован на Direct3D 3.

Главная новинка в D7VK 2.2 связана с Direct3D 3, API, который несколько отстал от других более старых технологий, поддерживаемых проектом. Хотя игры с Direct3D 3, которые разработчику удалось собрать и протестировать, уже работали с D7VK, всё ещё оставались некоторые некорректно реализованные крайние случаи и особенности поведения.

Это создавало особые проблемы, поскольку каталог игр, использующих Direct3D 3, сложно восстановить. Это очень старые игры, многие из которых больше не продаются или их трудно найти, что затрудняет тестирование всех возможных реализаций, которые могут встретиться на практике.

В этой версии разработчик переработал значительную часть реализации Direct3D 3, чтобы приблизить её к уровню зрелости, достигнутому другими API, совместимыми с D7VK.

Поведение устройств D3D3 соответствует исходному.

Одно из технических изменений касается переработки системы подсчета ссылок для устройств Direct3D 3. В D7VK 2.2 этот механизм модифицирован таким образом, чтобы его поведение соответствовало поведению собственной реализации API.

Такие детали могут показаться пользователю несущественными, но на уровне перевода они имеют решающее значение. В старых играх могут использоваться специфические механизмы создания и уничтожения объектов, и даже, казалось бы, незначительная разница может привести к ошибкам, которые трудно диагностировать.

Таким образом, новая реализация снижает вероятность того, что некоторые игры не смогут должным образом управлять своими графическими устройствами, чего D7VK не ожидал.

В версии D7VK 2.2 улучшена прозрачность при использовании цветового ключа.

D7VK 2.2 также изменяет управление цветовой коррекцией на устройствах, работающих исключительно с Direct3D 3. До сих пор в проекте использовалась очень простая модель, в которой эта функция всегда оставалась включенной при определенных условиях.

Новая версия позволяет точно контролировать момент включения, более точно воспроизводя поведение Direct3D 3. Это особенно важно для старых игр, использующих методы прозрачности, основанные на определенных цветах.

Кроме того, оптимизированы вычисления, связанные с нормализованными диапазонами цветов. Теперь эти значения обновляются только при изменении описания поверхности, что позволяет кэшировать их и использовать повторно в дальнейшем.

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

Исправлены граничные условия в буферах выполнения.

Еще одним важным аспектом D7VK 2.2 является пересмотр проверок буфера выполнения Direct3D 3. В рамках проекта была реорганизована часть этой логики для решения различных граничных случаев, выявленных в ходе тестирования.

Для проверки ожидаемого поведения API разработчик также смог использовать тесты Wine, специально предназначенные для Direct3D 3. Эти тесты позволяют сравнить поведение D7VK с ожидаемым поведением совместимой реализации и выявить различия, которые могут остаться незамеченными при использовании только известных игр.

Данная работа особенно ценна для такого старого API, где доступных для тестирования версий мало, и они не всегда охватывают все возможности оригинальной реализации.

Повышена надежность для текстур Direct3D 5 и 3.

Обновление не ограничивается Direct3D 3. D7VK 2.2 также улучшает обработку текстур, используемых Direct3D 5 и Direct3D 3, предотвращая выход нижележащих поверхностей за пределы диапазона во время их использования.

Это изменение повышает надежность обработки графических ресурсов и может устранить ошибки, которые возникают только при определенных последовательностях операций. Разработчик также отмечает, что это улучшение положительно сказалось на игре Frogger , первоначально выпущенной в 1997 году.

Данный патч демонстрирует, как внутренние изменения, направленные на решение проблем управления ресурсами, могут в конечном итоге оказывать видимое влияние на конкретные игры, даже если модификация не была специально разработана для них.

D7VK 2.2 также исправляет проблемы с преобразованиями и матрицами.

В D7VK 2.2 также исправлена ​​ошибка, связанная с преобразованием буферов выполнения Direct3D 3. Проблема была вызвана некорректным определением формата FVF, используемого для вершинных входных данных.

Также исправлена ​​проблема с вычислениями проекционных матриц в устаревших версиях. Ошибка была обнаружена в ходе теста Wine, который работал некорректно и мог негативно повлиять на работу некоторых приложений Direct3D 6, 5 и 3.

Эти изменения еще раз демонстрируют важность тестирования совместимости для D7VK. Многие проблемы со старыми графическими API проявляются не обязательно в самых популярных играх, а скорее в определенных комбинациях функций, которые могут оставаться скрытыми годами.

Меньше накладных расходов на устаревшие пути отрисовки.

В новой версии также реорганизован процесс отрисовки контура. Begin() / Vertex() / End() Используется в Direct3D 6 и Direct3D 5. Модификация снижает потребление памяти и обеспечивает небольшое повышение производительности.

И снова Frogger входит в число игр, которые могут выиграть от этого изменения. Хотя эта оптимизация не удвоит частоту кадров во всех ретро-играх, она помогает уменьшить накладные расходы, связанные с маршрутами, используемыми старыми API.

В предыдущих версиях D7VK уже были внесены значительные улучшения в производительность, поэтому текущая работа все больше сосредоточена на доработке реализации и устранении ненужных затрат.

D7VK 2.2 — часть DXVK 3.1

Еще одна важная особенность этой версии заключается в том, что D7VK 2.2 был заменен на DXVK 3.1 . Это позволяет проекту использовать более актуальную базовую версию и поддерживать соответствие своей реализации развитию DXVK.

Взаимосвязь между двумя проектами особенно важна. D7VK изначально был ответвлением DXVK, специализирующимся на более старых API Direct3D, не охватываемых стандартным использованием DXVK, в то время как оба проекта используют Vulkan в качестве адресата для графических вызовов из Windows.

Благодаря этим взаимоотношениям, структурные улучшения, которые появятся в DXVK, могут послужить основой для дальнейшего развития D7VK без необходимости с нуля разрабатывать всю необходимую инфраструктуру для связи с Vulkan.

Проект, призванный возродить классические игры.

D7VK преследует очень конкретную цель в рамках экосистемы Linux: обеспечить возможность запуска игр для Windows, использующих Direct3D 7, 6, 5 и 3, с помощью Vulkan. Это отличает его от DXVK, который в основном ориентирован на Direct3D 9, 10 и 11.

Значение проекта возрастает, когда речь идет о играх, зависящих от графических технологий, которые Wine не реализует напрямую таким же образом, или которые могут выиграть от более точной адаптации для Vulkan.

Используя D7VK в сочетании с Wine или Proton, пользователи Linux могут восстановить значительное количество программного обеспечения конца 20-го и начала 21-го веков, не прибегая к установке старой версии Windows.

Для тех, кто использует Wine или Proton для запуска игр на Linux и заинтересован в возрождении классических игр, D7VK 2.2 укрепляет один из важнейших элементов инфраструктуры совместимости. И хотя многие из его улучшений могут быть незаметны для пользователя, каждое исправление увеличивает шансы на то, что другая игра, забытая в эпоху Direct3D 3, 5, 6 или 7, снова сможет корректно работать в современной системе Linux.


Добавить в качестве предпочтительного источника в Google