D9VK е много интересен проект, който използва DXVK като основа и предоставя възможност за играене на DirectX 9 Windows игри при Linux с използването на преминаване от DirectX 9 към Vulkan.
DXVK от своя страна позволява играене на DirectX 11 игри при Linux посредством преминаване към Vulkan и Wine. Проектът постигна невероятни резултати и впоследствие започна да се използва и от Valve в Steam при техния проект Proton/Steam Play.
Новият проект дава много по-високо представяне в игрите от имплементираното към момента решение за преминаване от DirectX 9 към OpenGL в Wine.
Тук ще ви запознаваме с новините около проекта D9VK и новостите, които разработчиците постоянно предлагат на нашето внимание във версия 4.x.
Съдържание на статията
Излезе първата официална версия на D9VK 0.10 за игра на DirectX 9 игри с Vulkan при Linux
Излезе първото официално издание на D9VK за игра на DirectX 9 игри посредством Vulkan и Wine при Linux на разработчика Джошуа Аштън.
Въпреки своята начална фаза версия 0.10 вече позволява безпроблемно играене на голям брой DirectX 9 игри и това е благодарение на вече доста напредналия стадий на разработка на DXVK.
Поддържат се множество заглавия, използващи Shader Model 2 и Shader Model 3, а работата по поддръжката на Shader Model 1 продължава и ще бъде налична в близко бъдеще.
За да можете да играете игри с новата имплементация ще ви е необходим Wine с версия 3.10 или по-висока. Също както при DXVK е наличен HUD, който показва базова информация като кадри, модел видео карта и пр. Новият проект следва архитектурата на DXVK, както и неговите променливи за по-лесен дебъг.
Аштън предупреждава потребителите да не използват D9VK с библиотеките на Wine d3d9x или d3dcompiler, защото това води до невалидни API измиквания, което се изразява в лоши шейдъри в игрите.
Както вече споменахме, дори и в този ранен стадий използването на новата имплементация предлага много по-високо бързодействие от досега съществуващото преминаване от DirectX 9 към OpenGL в Wine.
Представянето дори е по-високо от известния със своето високо бързодействие Gallium Nine, при който често се наблюдаваше по-високо бързодействие от това в Windows.
Към момента увеличението в скоростта с използването на D9VK при DirectX 9 игри е двойно, като процесорът се използва с 50% по-малко.
Вече има направена заявка в GitHub за добавянето на D9VK в winetricks и нищо чудно след наличността на първото официално издание това да се случи скоро. По този начин потребителите ще могат по един изключително лесен начин да инсталират необходимите библиотеки с няколко клика на мишката.
Официалният анонс може да бъде видян тук.
Излезе D9VK 0.11 с подобрения при бързодействието и D3D9 поправки. Кодовото наименование е Poison Dart. (12.05.2019)
Само няколко дни след първото официално официално издание ето, че тук е и версия 0.11.
Поправени проблеми:
Сред поправените проблеми при D3D9 виждаме имплементирано проследяване на паметта и коректно OOM съобщаване за грешки към приложенията, поправени са невидими обекти при някои игри, поради повреден vertex texturing.
При DXSO шейдърите са поправени некоректни индекси, а конкретно при играта Hat In Time са поправени проблеми със сенките. Отстранени са проблемите с проектилните текстури (texldp, texProj в HLSL), коригирана е SinCos имплементацията, което поправя неправилните цветове и текстури при някои игри.
Коригиран е Pointsize, добавена е по-добра поддръжка за Shader Model 1 шейдърите, имплементиран е SM1 float „bitshifting“, поправени са проблеми при регистриране на адресите поради правописна грешка.
Подобрения при бързодействието:
Пренаписан е буфер кодът, който ще е по-бърз във всяко едно отношение, поправени са и някои грешки при паметта, налични са малки промени при запитванията, добавена е поддръжка за cube render target/depth шаблони, което поправя примигващата вода при играта TESV: Skyrim.
Отлагат се обвързванията (bindings) на кадровите буфери докато не се предприеме изрисуване, което предотвратява ненужни повторни обвързвания, които насищат CS нишката, когато настъпят промени при единчни RT/DS.
Имплементирани са частични почиствания, които viewport/stencil и fastpath, ако цялата цел за рендиране е изчистена. Това поправя проблем със сенките отново при играта A Hat in Time.
Има подобрения и при изчистванията (flushes), като вече не се извършват неправилни изчиствания върху някои копия, извършва се агресивно изчистване, когато rt от нулевия индекс търпи промени, копира се начинът, по който се извършват изчистванията при D3D11, което води подобрения при някои случаи, в които се използва синхронизация.
Пълния списък с промените при D9VK можете да видите в официалния анонс.
Излезе D9VK 0.12 с повишение на бързодействието, множество поправки и нови функции (29.05.2019)
Разработчикът Джошуа Ащън предостави на потребителите следващото издание на D9VK, което идва с множество подобрения и поправки на грешки при различни игри. Правят впечатление и новите функции, които ще представим по-долу.
Нови функции:
Имплементирана е функцията Alpha to Coverage, която поддържа поправките за AMD и NVIDIA, поправя проблема с косите на персонажите при играта Final Fantasy XIII, поддържа, а също така може да доведе до визуални подобрения и при други игри.
Има оптимизации при запитванията, като също така е имплементирана функцията D3DQUERYTYPE_VERTEXSTATS, имплементирана е функция за настройване на позицията на курсора, добавена е частична поддръжка за Presentation Rects, което поправя проблема при играта A Hat In Time, при който тя не пресъздава своя бекбуфер при намаляване на резолюцията.
Имплементиран е Resolve Z хак за AMD, добавена е поддръжка за CreateTexture InitialData в споделеното управление за D3DPOOL_SYSTEMMEM, което поправя играта CS:GO (тук трябва да се отбележи, че тази игра си има нейтив Linux издание).
Добавена е експериментална поддръжка за GetDC/ReleaseDC, добавена е основна поддръжка за D3D9Ex, налична е имплементация за GetStreamSourceFreq, в библиотеките вече се съобщава коректна информация за версията, което би трябвало да премахне проблемите с някои анти чийт приложения.
Допълнително при желание на потребителя вече може да се избира кои модули да се компилират.
Подобрено представяне:
Изцяло е пренаписан кодът за текстурите, което води до подобряване на бързината във всяко едно отношение и поправя някои грешки при паметта. SystemMem вече са само за системната памет и нямат изображение, копирайки се към реалните текстури.
Пренаписан и подобрен е кодът за presentation и swapchain, което включва поддръжка за настройване на вертикална синхронизация и задаване на правилен режим за пълен екран.
Имплементирано е разпределяне на съседни повърхности, което води до подобряване на проблема със стътъринга при игри, които използват и злоупотребяват с CreateTexture като например A Hat in Time и League of Legends.
Подобрен е изгледът на изображенията чрез избягване на създаване на дубликати като се правят двойни референции към вече съществуващите изображения, ако за конкретния D3D9 формат не съществуват SRGB формати. Подобрено е и решението за определяне кога ще се изчаква за текстури.
Поправки при версия 0.12:
Поправен е проблемът „punch card“ при играта The Sims 3, налични са малки поправки при запитванията, решени са проблеми с дълбочинните шаблони, които се използват при някои игри като Gothic III, отстранени са бъгове с курсора на мишката при някои игри, една от които е Guild Wars 2, остранено е зависване на видео картите на AMD при използването на RADV драйвъра, решен е проблем, при който RestoreDisplayMode не успява да си свърши работата и още.
Пълния списък с всички промени при версия 0.12 можете да разгледате в официалния анонс.
Излезе D9VK 0.13 с множество подобрения и повишено бързодействие (09.07.19)
Разработчикът Джошуа Ащън публикува поредната версия 0.13, която идва с множество поправки и повишаване на производителността. Кодовото наименование на новото издание е Hypnotoad.
Във версия 0.13 е добавена поддръжка за fixed function. Това включва всичко, освен осветяването, texcoord трансформациите, spheremap texcoords и constant texture аргувента.
Имплементирани са GetGammaRamp и ColorFill, подобрен е фолбекът за D16_S8, като ако той не е поддържан се използва D24_S8 вместо D32, добавени са поправки за AMD видео картите, имплементирана е поддръжка за disjointed timestamp querie, добавени са функции, които ще помогнат на някои игри с анти чийт, добавена е поддръжка за хардуерен курсор за игри като например старите World of Warcraft и Guild Wars 2.
На фронта на повишеното представяне е свършено голямо количество работа:
Имплементирана е поддръжка за async. presentation, избягват се някои ненужни синхронизации, използват се нови DXVK сигнали за синхронизиране на кадрите, разрешен е early discard за ACO компилатора на Valve, осигурен е постоянен ъплоуд на оптимизации и др.
Сред поправените проблеми виждаме:
Отстраняване на сриване при играта Star Wars: The Force Unleashed, разрешено е неправилното изобразяване на човека при Mass Effect: 2, поправени са проблеми при Assassin’s Creed, GTA: San Andreas, TESIV: Oblivion, черното рендиране при Lego Star Wars Saga и проблеми при игрите от Fallout сериите.
Поправена е LIT имплементацията, поправени са проблеми за игри, които се връщат да четат собствените си шейдъри, вече се използва BC2 за DXT2 вместо BC1, което беше неправилно, поправен е бъг в GDI кода, където нещата не се актуализират, след като са настъпили промени и още.
Пълния списък с промените можете да разгледате в официалния анонс.
Излезе D9Vk 0.13f с допълнителни функции и поправкина бъгове (15.07.19)
Новата версия 0.13f с кодово наименование „Hypnofrog“ излиза доста по-рано от обикновено, само шест дни след миналото издание и е нещо, което не се е случвало до момента. Въпреки краткия срок обаче новата версия предлага много новости. Ето някои от тях.
Спрени са много stubs, които нямат значение, имплементиран е D3DOK_NOAUTOGEN кодът за CreateTexture функциите, налична е правилна имплементация на запитванията за поддръжка на формати със съответните използвания, преработен е adapter кодът, подобрено е AllocUpBuffer поведението за намаляване на фрагментацията на паметта.
Налична е първоначална border color поддръжка, която решава проблемите със сенките при някои игри, имплементиран е DemoteToHelperInvocation за NVIDIA и Intel, имплементирани са TexReg{Ar,Gb,Rgb}, TexDp3Tex, Crs, sign и bias modifiers, а също така и D3DTSS_TEXCOORDINDEX, налични са подобрения при DXSO и D3D9
Пълния списък с промените можете да разгледате тук.
Излезе D9VK 0.20 с множество нови функции, подобрения и поправки (26.08.19)
Разработчикът Джошуа Ащън обяви новото издание 0.20, чието кодово наименование е Frog Cookie 🐸🍪.
Поправки на проблеми
- Игнориране на DISCARD флага, когато е определен „NOOVERWRITE/not a dynamic resource“.
- Подобрено е nested locking поведението, както и са налични други locking поправки.
- Вече се игнорират частичните discards за текстурите.
- Поправено е systemmem texture wait поведението.
- Поправена е ResolveZ имплементацията.
- Поправен е бъг, при който е бил настройван неправилен vertex/pixel шейдър флаг в SetTextureStageState.
- Поправено е поведението на смесване при fixed function pipeline.
- Поправена е съвместимостта на приложението при CheckDeviceFormatConversion.
- Поправено е поведението за проследяване на паметта.
Подобрено представяне
- Оптимизирани са UndirtySamplers.
- Вече не се изчаква за D3DLOCK_READONLY при буферите.
- Вече не се използва DEVICE_LOCAL паметта за константните шейдър буфери.
- Различни поправки по бързодействието.
Общи
- Имплементирана d3d9.samplerAnisotropy опцията.
- Имплементиран е ProcessVertices (Software Vertex Processing), който използва геометричен шейдър, осъществявайки буферно писане без върхове.
- Имплементирана е 3d9.maxAvailableMemory опцията.
- Имплементирана е d3d9.floatEmulation опцията.
- Имплементирана е async. present
- Имплементиран е undocumented managed pool за D3D9Ex.
- Разрешено е lenient clear за някои Unreal Engine 3 игри.
- Коректно е имплементиран D3DMULTISAMPLE_NONMASKABLE.
- Добавен е cache monitor info.
- Добавен е GetRasterStatus (за играта Undertale).
- Имплементирани са presentation regions.
- Имплементирани са TexBem, TexM3x2Tex и TexM3x3Tex.
Нова поддръжка за Fixed Function
- Имплементирана е fixed function lighting.
- Имплементирана е fixed function frog fog.
- И още – texcoord offset, tci_cameraspaceposition, specular magic и др.
Налични са още много подобрения и поправки, за които разработчикът не съобщава, но според него са твърде малки, за да бъдат споменати.
Пълния анонс можете да видите тук.
Излезе D9VK 0.21 – Lollihop (24.09.19)
Официално излезе поредната версия на D9VK 0.21 с изключително много новости и подобрения. Кодовото наименование на изданието е Lollihop.
При версия 0.21 имаме различни подобрения в производителността, имплементирани са D3DBLEND_BOTHSRCALPHA, D3DBLEND_BOTHINVSRCALPHA, видео форматите YUV2 и YUVY, extended constant set при включено софтуерно вертекс обработване, заключване на MSAA изображенията, заключване на depth stencil изображенията.
Имплементирани са още TexM3x3Spec, TexM3x3VSpec, constant bounds checking, което поправя проблеми при играта The Witcher 2, D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR, D3DTSS_TCI_SPHEREMAP, използват се unresolved arguments за fastpath decision, което може да доведе до повишаване на бързодействието.
Налични са множество поправки като сриване при извикване на SetLOD при D3DPOOL_SYSTEMMEM изображение, поправен е проблем при новите версии на играта A Hat in Time с управление на degenerate present регионите, поправена е мини картата при играта GTA IV чрез настройване на scissor към viewport, премахната е пойнтер инициализацията при CreateVertexShader, което решава сриване при The Witcher, отстранен е проблемът с черните стени при играта Serious Sam 2 и още.
Пълния списък с промените можете да видите в официалния анонс.
Излезе D9VK 0.22, фокусиран върху бъгове (29.09.19)
Този път съвсем малко след миналото издание Джошуа-Аштън издаде следващата версия 0.22, чието кодово наименование е „Kero Kero“ и е фокусирано върху поправянето на различни проблеми.
- Поправени са проблемите, при които някои игри изкарват съобщения, че драйвърите са твърде стари и не могат да стартират.
- Поправена е регресия, при която се случват full constant uploads през цялото време.
- Коригиран е проблемът при опит за създаване на текстури с неподдържан формат, при което се връща D3DERR_INVALIDCALL.
Освен тези поправни проблеми има и имплементирани и някои нови функции:
- Имплементиран е Set/GetSoftwareVertexProcessing.
- Поправен е проблемът при играта The Sims 2, при който тя се опитва да рендира сенките към A8 текстури и в резултат на това всичко се обърква.
Пълния списък с промените можете да видите тук.
Излезе D9VK 0.30 с изключително много подобрения и поправки (28.10.19)
Разработчикът Джошуа-Аштън представи следващото издание на D9VK с версия 0.30 и кодово наименование „Froglet“. В новото издание има изключително много поправки и подобрения.
Имплементиран е D3DRS_SHADEMODE, което води до поправяне на проблемите при някои игри, използващи GameMaker енджина, повишено е представянето посредством следните имплементации:
- Избягването на извършването на излишни изчаквания и копирания.
- Чрез избягване на пускането на D3DUSAGE_DYNAMIC буфери при unlock.
- Позволява се DISCARD при ресурсите, които не използват D3DUSAGE_DYNAMIC.
- Чрез зачитане на типа достъп за WaitForResource.
- Посредством проверка на използването на ресурсите преди синхронизирането им в нишката в WaitForResource.
- Чрез премахване на дублираните blend state, изпратени към CS.
Имплементирани са D3DRS_POINTSIZE, D3DRS_POINTSIZE_MIN, D3DRS_POINTSIZE_MAX, D3DRS_POINTSCALE_A, D3DRS_POINTSCALE_B, D3DRS_POINTSCALE_C, D3DRS_POINTSCALEENABLE и D3DRS_POINTSPRITEENABLE.
Експериментално е въведено предсказване за шейдърите, имплементиран е нов и по-ефикасен метод за hazard проследяване, който е включен за всички игрови заглавия, нормализирането на фиксираните функции е компресирано и подобрено, версията на DXVK е актуализирана до текущата 1.4.4.
Налични са поправки за игрите Halo 2, Battlefield 2, Psychonauts, Alan Wake, Anno 1404, Manhunt, Payday 2 и др.
Пълния списък с промените подобренията можете да проследите в официалния анонс.
Излезе D9VK 0.40 с възможност за използване на повече от 4GB RAM при 32-битови приложения и още множество вълнуващи промени (14.12.19)
Разработчикът Джошуа Аштън публикува поредното издание на D9VK 0.40 за игра на DirectX 9 игри при Linux посредством преминаване към Vulkan.
Новата версия е особено вълнуваща поради добавената възможност за използване на повече от 4GB RAM при 32-битовите приложения, което е полрезно в множество случаи, а също така и при тежко модифициран Skyrim/Oblivion.
Сред другите промени виждаме подобрено времево измерване, поправено бързодействие при игрите Risen и Legend of the Heroes: Trails of the Sky, поправено е bloom рендирането при играта SpinTyres/Mudrunner, подобрени са D3D9Ex съвместимостта и спецификациите.
Разрешен е async presentation за всички производители, премахнати са ненужните CS sync point при получаването на информацията за запитванията, имплементиран е режимът SetDialogBoxMode, подобрен е HUD, имплементиран е vertex blending, добавена е опцията d3d9.dialogBoxMode, която позволява да се забрани на D9VK да превзема пълен екран, имплементиран е indexed vertex blending.
Поправени са и множество проблеми като поправени огледала при играта Max Payne 2, поправено е поведението за проследяване на паметта при D3D9Ex, оправен е бъг в играта The Sims 2, с което вече е възможно да се гледат потребителските видеа на телевизорите, поправени са проблеми с паметта при играта Vampire: The Masquerade Bloodlines, поправено е рендирането при играта Silent Hunter 3.
Отстранени са проблемите с рендирането при играта Crysis, които са предизвикани поради грешки в документацията на Майкрософт, коригиран е потенциален проблем от типа race condition при ProcessVertices, поправен е проблемът със сриването при стартиране на играта Metal Slug X, поправен е autosculpt при играта Need for Speed: Carbon, поправени са черните дървета при играта Risen 1 и още.
Пълния списък с промените можете да видите в официалния анонс.
Вече нямам търпение да се прибера, за да пробвам новата версия и да видим дали е оправил бъга с текстурите на CRC 2005. Някои от споменатите неща ме навеждат на мисълта, че може и да е. И ако е така, остава да измисля как да подкарам шрифтовете на Project Torque. Това последното стане ли, ще я има за Вино, а по-нататък ще я има и портната за Линукс.