D7VK 2.2 побољшава подршку за Direct3D 3 за играње Windows класика на Linux-у

  • D7VK 2.2 значајно побољшава подршку за Direct3D 3, решавајући проблеме са уређајима, извршавајући бафере и трансформацију чворова.
  • Ажурирање такође побољшава управљање текстурама и транспарентност кључева боја и смањује оптерећење на неким Direct3D 5 и 6 путањама.
  • D7VK 2.2 је базиран на DXVK 3.1 и наставља да побољшава покретање класичних Windows игара користећи Wine и Proton на Linux-у.

Д7ВК 2.2

D7VK 2.2 је сада доступан као нова верзија слоја за превођење графике, дизајнираног за покретање класичних Windows игара на Linux-у. Пројекат, изведен из DXVK-а, фокусира се на превођење старијих Direct3D 7, 6, 5 и 3 API-ја на Vulkan за употребу са Wine-ом и Proton-ом, а ова нова верзија посвећује значајан део свог рада једној од области која је и даље имала највише недостатака: подршци за Direct3D 3.

Ажурирање стиже само неколико недеља након D7VK 2.1 и наставља процес сазревања технологије која је посебно занимљива за оне који желе да играју игре из касних 90-их и раних 2000-их на модерним Linux системима. Поред побољшања Direct3D 3, D7VK 2.2 укључује бројне исправке грешака и интерна подешавања, и заснован је на недавној верзији DXVK 3.1.

D7VK 2.2 се фокусира на Direct3D 3

Главна нова карактеристика у D7VK 2.2 повезана је са Direct3D 3, API-јем који је донекле заостајао за другим старијим технологијама које је пројекат подржавао. Иако су Direct3D 3 игре које је програмер успео да сакупи и тестира већ радиле са D7VK, и даље је било неколико граничних случајева и понашања која нису била правилно имплементирана.

Ово је било посебно проблематично јер је каталог игара које користе Direct3D 3 тешко реконструисати. То су веома стари наслови, од којих многи више нису комерцијално доступни или их је тешко пронаћи, што отежава тестирање свих могућих имплементација које би се могле срести у пракси.

Овом верзијом, програмер је ревидирао велики део имплементације Direct3D 3 како би је приближио нивоу зрелости који су постигли други API-ји компатибилни са D7VK.

Понашање D3D3 уређаја је у складу са оригиналом

Једна од техничких промена укључује преправку система бројања референци за Direct3D 3 уређаје. D7VK 2.2 модификује овај механизам тако да његово понашање одговара понашању изворне API имплементације.

Ова врста детаља може деловати небитно кориснику, али је кључна у слоју превођења. Старије игре могу се ослањати на специфична понашања везана за креирање и уништавање објеката, а наизглед мала разлика може довести до грешака које је тешко дијагностиковати.

Нова имплементација тако смањује шансе да одређени наслови не успеју да управљају својим графичким уређајима на начин који D7VK није очекивао.

D7VK 2.2 уводи побољшања транспарентности коришћењем кључа боја

D7VK 2.2 такође модификује управљање колорним тастерима на чистим Direct3D 3 уређајима. До сада је пројекат користио веома једноставан модел у којем је ова функција увек остајала омогућена под одређеним околностима.

Нова верзија омогућава правилну контролу над тим када је омогућити, верније репродукујући понашање Direct3D 3. Ово је посебно важно за старије игре које користе технике транспарентности засноване на одређеним бојама.

Поред тога, оптимизовани су прорачуни везани за нормализоване опсеге боја. Ове вредности се сада ажурирају само када се промени опис површине, што омогућава њихово кеширање и каснију поновну употребу.

Резултат би требало да буде мало до умерено побољшање перформанси у играма које користе транспарентност тастера у боји, као и исправније понашање.

Гранични случајеви у извршним баферима су исправљени

Још један важан аспект D7VK 2.2 је ревизија валидација извршних бафера Direct3D 3. Пројекат је реорганизовао део ове логике како би се решио различити гранични случајеви идентификовани током тестирања.

Да би проверио очекивано понашање API-ја, програмер је такође могао да се ослони на Wine тестове који су посебно повезани са Direct3D 3. Ови тестови омогућавају поређење понашања D7VK са очекиваним од компатибилне имплементације и откривање разлика које би могле остати непримећене када се користе само добро познате игре.

Овај рад је посебно вредан за тако стари API, где су наслови доступни за тестирање оскудни и не покривају увек све могућности оригиналне имплементације.

Већа робусност за текстуре Direct3D 5 и 3

Ажурирање није ограничено само на Direct3D 3. D7VK 2.2 такође побољшава руковање текстурама које користе Direct3D 5 и Direct3D 3 како би се спречило да доње површине изађу ван домета док се још увек користе.

Промена повећава робусност руковања графичким ресурсима и може да реши грешке које се појављују само под одређеним низовима операција. Програмер такође напомиње да је ово побољшање имало позитиван ефекат на Frogger , првобитно објављен 1997. године.

Закрпа показује како интерне промене намењене решавању проблема управљања ресурсима могу на крају имати видљиве ефекте на одређене игре, чак и када модификација није посебно дизајнирана за њих.

D7VK 2.2 такође исправља проблеме са трансформацијом и матрицама

D7VK 2.2 такође исправља грешку везану за трансформацију Direct3D 3 извршних бафера. Проблем је настао због нетачног одређивања FVF формата који се користи за вертекс улазе.

Такође је решен проблем са прорачунима матрица пројекције застареле верзије. Грешка је откривена путем Wine теста који се није понашао како се очекивало и могао је негативно утицати на одређене Direct3D 6, 5 и 3 апликације.

Ове промене додатно показују важност тестирања компатибилности за D7VK. Многи проблеми са старијим графичким API-јима не појављују се нужно у најпопуларнијим играма, већ у специфичним комбинацијама функција које могу остати скривене годинама.

Мање трошкова на старијим путањама цртања

Нова верзија такође реорганизује путању цртања Begin() / Vertex() / End() Користи се од стране Direct3D 6 и Direct3D 5. Модификација смањује потрошњу меморије и пружа мало побољшање перформанси.

Још једном, Фрогер је међу играма које могу имати користи од ове промене. Иако ова оптимизација неће удвостручити ФПС свих ретро наслова, помаже у смањењу дела оптерећења акумулираног на рутама које користе старији АПИ-ји.

D7VK је већ добио значајне оптимизације перформанси у претходним верзијама, тако да је тренутни рад све више усмерен на усавршавање имплементације и елиминисање непотребних трошкова.

D7VK 2.2 део DXVK 3.1

Још једна важна карактеристика ове верзије је да је D7VK 2.2 замењен са DXVK 3.1 . Ово омогућава пројекту да користи новију базу и да његова имплементација буде усклађена са еволуцијом DXVK-а.

Однос између два пројекта је посебно важан. D7VK је настао као огранак DXVK-а, специјализован за старије Direct3D API-је који нису обухваћени стандардном употребом DXVK-а, док оба користе Vulkan као одредиште за графичке позиве који потичу из Windows-а.

Захваљујући овој вези, структурна побољшања која долазе у DXVK могу послужити као основа за даљи развој D7VK-а без потребе да се од нуле развија сву инфраструктуру потребну за комуникацију са Vulkanom.

Пројекат осмишљен да оживи класичне игре

D7VK има веома специфичан циљ унутар Linux екосистема: да омогући Windows играма које користе Direct3D 7, 6, 5 и 3 да раде користећи Vulkan. Ово га разликује од DXVK, који је првенствено фокусиран на Direct3D 9, 10 и 11.

Значај пројекта расте када су у питању наслови који зависе од графичких технологија које Wine не имплементира директно на исти начин или којима би користио тачнији превод на Vulkan.

Комбиновањем D7VK са Wine-ом или Proton-ом, корисници Linux-а могу да поврате значајну количину софтвера из краја 20. и почетка 21. века, а да не морају нужно да прибегавају старој Windows инсталацији.

За оне који користе Wine или Proton за играње игара на Linux-у и заинтересовани су за оживљавање класичних наслова, D7VK 2.2 јача један од најважнијих делова инфраструктуре компатибилности. И док многа његова побољшања могу бити невидљива кориснику, свака исправка повећава шансе да нека друга игра изгубљена у ери Direct3D 3, 5, 6 или 7 поново може исправно да функционише на модерном Linux систему.


Додај као жељени извор на Гуглу