Опубліковано експериментальний випуск відкритої реалізації Win32 API - Wine 11.17. З моменту випуску 11.16 було закрито 44 звіти про помилки та внесено 387 змін.
Найважливіші зміни:
- Додана початкова підтримка емуляції режимів екрану, що дозволяє запускати повноекранні програми та ігри зі своїм віртуальним роздільною здатністю, яка при фактичному малюванні масштабується з урахуванням DPI наявного монітора. Наприклад, стара гра може використовувати роздільну здатність 640×480, але відображатися на екрані з більшою роздільною здатністю зі збереженням пропорцій.
- Додана підтримка функцій 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 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, Cliv.
Додатково можна відзначити нові випуски пов'язаних із 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 з транслятором моделей шейдерів та libvkd3d-utils з функціями для спрощення портування додатків Direct3D 12, а також набір демонстраційних прикладів, включаючи порт glxge libvkd3d підтримує більшу частину можливостей Direct3D 12, включаючи засоби для графіки та обчислень, черги та списки команд, дескриптори та дескриптори купи, кореневі сигнатури, невпорядкований доступ, Sampler-и, сигнатури команд, кореневі константи, непряму (indirect). У 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» у подання з типом.
- Сформовано випуск прошарку 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.
Джерело: opennet.ru
