Опубликован экспериментальный выпуск открытой реализации Win32 API - Wine 11.17. С момента выпуска 11.16 был закрыто 44 отчёта об ошибках и внесено 387 изменений.
Наиболее важные изменения:
- Добавлена начальная поддержка эмуляции режимов экрана, позволяющая запускать полноэкранные приложения и игры со своим виртуальным разрешением, которое при фактической отрисовке масштабируется с учётом DPI имеющегося монитора. Например, старая игра может использовать разрешение 640x480, но показываться на экране с большим разрешением с сохранением пропорций.
- Добавлена поддержка функций RtlGetSystemPreferredUILanguages и RtlGetUserPreferredUILanguages для получения списка предпочитаемых языков в интерфейсе, выставленных в реестре для всей системы и отдельных пользователей, и по умолчанию формируемых на основе параметров локали. Также добавлены функции RtlGetProcessPreferredUILanguages, SetProcessPreferredUILanguages, RtlGetSetThreadPreferredUILanguages, SetThreadPreferredUILanguages для определения и выставления списка предпочитаемых языков на уровне процессов и потоков.
- Встроенный пакет Vkd3d с реализацией Direct3D 12 обновлён до версии 2.1.
- Закрыты отчёты об ошибках, связанные с работой приложений: certmgr.exe, Signtools, Advanced SystemCare 6.4, Autodesk 3ds Max 9, SketchUp 2021, Nokia S60 5th Edition SDK 1.0, PDFCreator, SafeDisc v2.05.030, Bigrats, PTC Pro Engineer Wildfire V5, VisualSubSync 1.0.2.1, PS4 Remote Play 2.x, MigrosBank EBanking 8.2.x, Sparda Bank SecureApp 1.x, MSXML 6.0, Sennheiser Wireless Systems Manager 4.4, Netscape Navigator 3.04, xEdit.
- Закрыты отчёты об ошибках, связанные с работой игр: GTA: Vice City, GTA: San Andreas, Tetris JR, Worms Blast, Horizon Chase Turbo, Star Wars: Knights of the Old Republic I/II, GunBound, Marathon, Ground Control, Ankh - Anniversary Edition, Clive Barker's Jericho.
Дополнительно можно отметить новые выпуски связанных с Wine проектов:
- Сформирован выпуск проекта Wine Staging 11.17, предоставляющего расширенные сборки Wine, включающие не полностью готовые или рискованные патчи, пока непригодные для принятия в основную ветку Wine. По сравнению с Wine в Wine Staging предоставляется 279 дополнительных патчей. В новом выпуске Wine Staging осуществлена синхронизация с кодовой базой Wine 11.17 и обновлён код vkd3d. В основной состав Wine перенесён патч, реализующий в библиотеке kernel32.dll функцию SetThreadpoolTimerEx.
Опубликовал выпуск пакета vkd3d 2.1 с реализацией Direct3D 12, работающей через трансляцию вызовов в графический API Vulkan. В состав пакета входят библиотеки libvkd3d с реализаций Direct3D 12, libvkd3d-shader c транслятором моделей шейдеров и libvkd3d-utils с функциями для упрощения портирования приложений Direct3D 12, а также набор демонстрационных примеров, включая порт glxgears на Direct3D 12. Библиотека libvkd3d поддерживает большую часть возможностей Direct3D 12, включая средства для графики и вычислений, очереди и списки команд, дескрипторы и дескрипторы кучи, корневые сигнатуры, неупорядоченный доступ, Sampler-ы, сигнатуры команд, корневые константы, непрямую (indirect) отрисовку, методы Clear*() и Copy*(). В libvkd3d-shader реализована трансляция байт-кода моделей шейдеров в промежуточное представление SPIR-V.
В новой версии vkd3d:
- В реализацию языка шейдеров HLSL добавлена поддержка арифметических операций с типом "half" при использовании 4 и 5 моделей шейдеров.
- В компиляторе шейдеров HLSL усилены проверки входных и выходных данных, реализован проход для удаления неиспользуемых глобальных переменных (uniform) в 1-3 моделях шейдеров.
- В бэкенде для языка шейдеров GLSL (OpenGL Shading Language) реализована поддержка косвенной адресации входных регистров, атомарных операций сравнения и целочисленного сложения, битовых операций и барьеров, операций загрузки/сохранения для UAV (Unordered Access View) и общей памяти группы потоков.
- Улучшена поддержка старого бинарного формата шейдеров Direct3D. Реализованы инструкции "sub" и "break_cmp", модификаторы инструкций "_x2", "_x4", "_x8", _'d2,' "_d4" и "_d8", а также модификаторы операндов "_bias", "_x2" и "_bx2".
- При преобразовании в промежуточное представление шейдеров SPIR-V появилась поддержка операций конвертации чисел с плавающей запятой в 64-разрядные целые числа.
- В libvkd3d-utils расширена поддержка API рефлексии шейдеров. Реализованы интерфейсы ID3D10ShaderReflection, ID3D10ShaderReflection1 и ID3D11ShaderReflection, а также большинство методов интерфейсов ID3D12ShaderReflection и ID3D12ShaderReflectionType.
- В vkd3d-compiler добавлена опция "--allow-half-globals", а в libvkd3d-shader флаг VKD3D_SHADER_COMPILE_OPTION_BACKCOMPAT_ALLOW_HALF_GLOBALS для компиляции глобальных переменных с типом "half" в представление с типом "float".
Сформирован выпуск прослойки DXVK 3.1, предоставляющей реализацию DXGI (DirectX Graphics Infrastructure), Direct3D 8, 9, 10 и 11, работающую через трансляцию вызовов в API Vulkan. Для использования DXVK требуется наличие драйверов с поддержкой API Vulkan 1.4, таких как NVIDIA 575.51.02, Mesa AMD RADV 25.0, NVIDIA 25.1 и Intel ANV 25.1. DXVK может применяться для запуска 3D-приложений и игр в Linux при помощи Wine, выступая в качестве более высокопроизводительной альтернативы встроенных в Wine реализаций Direct3D, работающих поверх OpenGL.
В новой версии:
- Добавлена поддержка инкрементальной отрисовки в DXGI, реализованная при помощи Vulkan-расширения VK_KHR_incremental_present и позволяющая обновлять на экране только изменившиеся области. Новая возможность решила проблемы с отрисовкой в VirtualDJ и различных игровых лаунчерах, таких как Ubisoft Connect.
- Добавлена поддержка создания представлений объектов отрисовки (render target view) напрямую в буферах, что решило проблемы с появлением артефактов при отрисовке облаков в некоторых играх на движке Frostbite, таких как Battlefield 3.
- Реализована загрузка библиотек для поддержки специфичных для GPU Intel расширений (vendor extensions).
- Решены проблемы в играх Mabinogi, The Witcher 1, Ghost Recon Breakpoint, Mirrors Edge, RaceRoom Racing Experience.
Опубликован выпуск проекта D7VK 2.2, развивающего реализацию графических API Direct3D 3, 5, 6 и 7, предложенных компанией Microsoft в 1996, 1997, 1998 и 1999 годах. D7VK работает через трансляцию вызовов в API Vulkan и позволяет при помощи Wine запускать в Linux ретро игры, завязанные на API Direct3D 3, 5, 6 и 7. Код проекта написан на языке C++ и распространяется под лицензией Zlib. В качестве основы при разработке использован код бэкенда d3d9 от проекта DXVK - D7VK преобразует API Direct3D 3, 5, 6 и 7 в вызовы Direct3D 9, которые затем транслируются в API Vulkan. Разработчик не намерен добиваться включения D7VK в состав DXVK, как это было с реализациями Direct3D 8 и Direct3D 9 поверх Vulkan.
В новой версии осуществлён переход на работу поверх выпуска DXVK 3.1, переработана проверка исполняемых буферов D3D3 и подсчёт ссылок (refcounting) для устройств D3D3, улучшена обработка текстур для D3D5/3. Внесены исправления, улучшающие поддержку игр: Palantírs in The Lord of the Rings, Resident Evil 2 и Frogger.
Источник: https://www.opennet.ru/opennews/art.shtml?num=66212





