Почалося тестування першого кандидата у релізи Wine 9.0, відкритої реалізації WinAPI. Кодова база переведена на стадію заморозки перед релізом, що очікується у другій половині січня. Порівняно з випуском Wine 8.21 закрито 52 звіти про помилки та внесено 391 зміну.
Найважливіші зміни:
- Вбудований пакет vkd3d з реалізацією Direct3D 12, що працює через трансляцію викликів до графічного API Vulkan, оновлено до версії 1.10.
- Продовжено розвиток функціональності, спрямованої на можливість використання Wine в оточеннях на базі протоколу Wayland без застосування XWayland та компонентів X11. У драйвері winewayland.drv додано підтримку розкладок клавіатури. Розширено підтримку графічного API Vulkan та додано функції vkQueuePresentKHR, vkGetDeviceGroupSurfacePresentModesKHR, vkGetPhysicalDevicePresentRectanglesKHR. Додано функцію ClipCursor та реалізовано можливість роботи з відносними координатами при відстеженні руху миші.
- При використанні нових випусків GnuTLS реалізована підтримка ключів шифрування DH (Diffie-Hellman).
- Закриті звіти про помилки, пов'язані з роботою додатків: Notepad, MS Word, Roon, eFilm Workstation 2.x/3.x, Athena's Charm Table Search 0.35b, Process Explorer, Araxis Merge 2023.5877, Framemaker 8, Internet Manager, RestoreDC, Acid-V VST plugin, MIDITrail 1.4.0.
- Закрито звіти про помилки, пов'язані з роботою ігор: For Honor, STEEP, Far Cry 5, NFS Most Wanted, Castlevania: Lords of Shadow 2, Eurobattle, Daily Chthonicle, Crimson Skies.
Додатково можна відзначити публікацію проектом Wine пакета vkd3d 1.10 з реалізацією Direct3D 12, що працює через трансляцію дзвінків до графічного API Vulkan. До складу пакету входять бібліотеки libvkd3d з реалізацій Direct3D 12, libvkd3d-shader з транслятором 4 і 5 моделі шейдерів і libvkd3d-utils з функціями для спрощення портування додатків Direct3D 12, а також набір демонстраційних прикладів 3D12D2.1Ds. під ліцензією LGPLvXNUMX.
Бібліотека libvkd3d підтримує більшу частину можливостей Direct3D 12, включаючи засоби для графіки та обчислень, черги та списки команд, дескриптори та дескриптори купи, кореневі сигнатури, неупорядкований доступ, Sampler-и, сигнатури команд, кореневі константи, непряму *() та Copy*(). У libvkd3d-shader реалізована трансляція байткоду 4 та 5 моделей шейдерів у проміжне уявлення SPIR-V. Підтримуються вершинні, піксельні, тесселяційні, обчислювальні та прості геометричні шейдери, серіалізація та десеріалізація кореневої сигнатури. З шейдерних інструкцій реалізовані арифметичні, атомарні та бітові операції, оператори порівняння та управління потоком передачі даних, інструкції sample, gather та load, операції неупорядкованого доступу (UAV, Unordered Access View).
У новій версії продовжено роботу з покращення компілятора шейдерів мовою HLSL (High-Level Shader Language), що надається починаючи з DirectX 9.0: додано підтримку динамічної індексації масивів; додано вирази «break», «continue» та «switch»; розширені вирази для яких застосовна згортка констант; реалізовані вбудовані функції ceil(), degrees(), radians(), fwidth(), tan(), tex2Dlod(), tex2Dproj(), texCUBEproj() та tex3Dproj().
До бібліотеки libvkd3d додано нові програмні інтерфейси Direct3D 12 (ID3D12Device5, ID3D12GraphicsCommandList5 та ID3D12Resource1) та реалізовано можливість створення конвеєрних об'єктів стану (pipeline state object). У libvkd3d-utils додані допоміжні функції для маніпулювання DXBC: D3DGetBlobPart(), D3DGetDebugInfo(), D3DGetInputAndOutputSignatureBlob(), D3DGetInputSignatureBlob(), D3DGet D3DStripShader(). У компілятор vkd3d-compiler додані опції "-fragment-coordinate-origin" і "-semantic-compat-map".
Джерело: opennet.ru
