D9VK 0.40 kaleratzea, Direct3D 9 inplementazioa Vulkan-en gainean

ospatu proiektuaren kaleratzea D9VK 0.40, Direct3D 9 inplementazio bat eskaintzen duena deiak grafikoen APIra itzuliz funtzionatzen duena vulkan. Proiektua proiektuaren kode-basean oinarritzen da DXVK, Direct3D 9 onartzeko hedatu dena. WineD3D-en oinarritutako Direct9D 3 inplementazioarekin alderatuta, D9VK-k errendimendu hobea lortzen du OpenGL bidezko Direct3D 9 itzulpena Vulkan bidezko itzulpena baino motelagoa delako.

D9VK Wine erabiliz Linux-en 3D aplikazioak eta jokoak exekutatzeko erabil daiteke. Shader Modelaren 3 edo 9 bertsioak erabiliz Direct2D 3-n oinarritutako joko gehienak onartzen dira. Proiektuaren kodea arabera banatuta Zlib doako lizentziapean. D9VK-k Vulkan API onartzen duten kontrolatzaileak behar ditu, hala nola AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ eta AMDVLK.

Hobekuntza nagusiak:

  • 4 biteko aplikazioetan 32 GB baino gehiago bideo-memoria erabiltzeko gaitasuna ezarri da, eta horrek arazoak konpondu zituen Skyrim eta Oblivion jokoetarako modak abiarazteko orduan;
  • Errendamenduaren emaitza pantailan bistaratzeko prozesamendu asinkronoa gaituta dago (aurkezpen fasea). Errendatzeko hari nagusian latentzia murrizteko, irteera prozesatzea komandoak bidaltzeko harian egiten da;
  • Behar ez diren komando-fluxuaren sinkronizazio puntuak kendu dira eskatutako datuak berreskuratzean;
  • Barne-ordua zehazteko kodea plataformako berariazko tenporizadore bat erabiltzeko itzuli da, eta horrek MinGW-ren high_resolution_clock-en portaera okerraren arazoak konpontzen lagundu zuen;
  • MANAGED eta SYSTEMMEM buffer geroratuak PrepareDraw exekutatu aurreko fasean deskargatu ziren, Risen eta Legend of the Heroes: Trails of the Sky jokoetako errendimendu arazoak konpondu zituena;
  • Laguntza gehitu D3DTA_CONSTANT, eta horrek errendatze zuzena ezartzea ahalbidetu zuen distira efektua SpinTyres eta Mudrunner jokoetan;
  • Honekin bateragarritasun hobetua DirectX 9Ex (D3D9Ex). ResetEx eta Reset prozesatzeko berezitasunak hartzen dira kontuan;
  • Garbitu eta birfaktorizatu kodea;
  • WRITEONLY bufferen mapa zuzena eskaintzen da, eta horrek errendimenduan eragin positiboa izan dezake eta jokoan akats bat saihestu dezake.
    Counter-Strike: Global Offensive, bufferera desblokeatu ondoren idazten jarraituz;

  • Inplementatutako metodoa EzarriDialogBoxMode, pantaila osoko aplikazioetan elkarrizketa-koadroak erabiltzeko aukera ematen duena;
  • Ezarritako laguntza erpinak nahasteaBarne erpin indexatutako nahasketa, beharrezkoa da SWVP (SoftWare Vertex Processing);
  • Lagin-kontagailua, uneko irudiaren gainean (heads-up display, HUD) bistaratzen dena, berriro diseinatu da;
  • Gehitu d3d9.dialogBoxMode aukera, pantaila osoko moduan soilik funtzionatzea desgaitzeko erabil daitekeena;
  • Errendimenduaren optimizazioak egin eta GTA jokoak abiaraztean gertatutako arazoak konpondu ditu: San Andreas, The Masquerade Bloodlines, Max Payne 2, The Sims 2, Silent Hunter 3, Senran Kagura Shinovi, Dungeons and Dragons, Crysis, Metal Slug X, ANGLE, Need for Abiadura: Carbon and Risen 1.

Gainera, nabarmendu daiteke asmoa proiektuaren garatzailea DXVK (DXGI, Direct3D 10 eta Direct3D 11 Vulkan APIaren gainean ezartzeak) akatsen konponketetara soilik bideratuko ditu aldi baterako ahaleginak, funtzionalitatearen hedapena motelduz. Antzeko gogoa eragindakoa kode-oinarriaren kalitatea gutxitzeari eta etorkizunean mantentze zailagoari buruzko kezka. 1.4.x adarraren eguneratze bakoitzak erreproduzitu, lokalizatu eta konpondu ezin diren aldaketei buruzko kexak eragiten ditu.

Arazo hauek agertzearen arrazoiak aztertzea eskatzen dute, bestela funtzionaltasuna areagotzen jarraituz gero zuzendu gabe uzteak egoera larriagotu eta mantentze-prozesua amesgaizto bihurtu besterik ez du egin. DXVK garatzaileak akatsak konpontzeko modura bakarrik aldatu aurretik ezarri nahi dituen planen artean, Vulkan luzapen erabilgarria batzuen laguntza gehitzea eta D9VK proiektuaren garapenekin bat egitea daude.

Gehigarria: beroa orpoetan eratu D9VK 0.40.1 oharra zuzentzailea, zeinetan finkoa ezarri vec4(1) COLOR0 balio lehenetsian erpin itzalgailuetan, eta akats bat konpondu zen, non itzalgailuaren irteerako zirrikituaren bit lehenetsiak gaizki aplikatzen ziren eta, beraz, backend-ek gaizki zuzendu zituen, vec4(0) ordezkatuz.

Iturria: opennet.ru

Gehitu iruzkin berria