Започна тестовото изпитване на първия кандидат за версии на 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 Download Manager, Air Jura, SpeedCommander, ModOrganizer, RestoreDC, Acid-V VST плъгин, 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, както и комплект демонстрационни примери, включително портът glxgears на Direct3D 12. Кодът на проекта се разпространява под лиценза LGPLv2.1.
Библиотеката libvkd3d поддържа повечето възможности на Direct3D 12, включително средства за графика и изчисления, опашки и списъци с команди, дескриптори и дескриптори за купчини, коренови сигнатури, неупорядочен достъп, семплери, командни сигнатури, коренови константи, непряка (indirect) рисуване, методи Clear*() и Copy*(). В libvkd3d-shader е реализирана транслацията на байт-кода на 4 и 5 модели на шейдъри в междинно представяне SPIR-V. Поддържат се вершинни, пикселни, тesselационни, изчислителни и лесни геометрични шейдъри, сериализация и десиериализация на кореновата сигнатура. От шейдерните инструкции са реализирани арефметични, атомарни и битови операции, оператори за сравнение и управление на потока на данни, инструкции 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(), D3DGetOutputSignatureBlob(), D3DStripShader(). В компилатора vkd3d-compiler са добавени опциите «—fragment-coordinate-origin» и «—semantic-compat-map».
Източник: opennet.ru
