Přeskočit na obsah
Tech-Blog Chatujme.cz Chatujme.cz
Hry

GE-Proton 11-12 přiznává ve verzi DXVK a dalších vrstev vlastní záplaty

GE-Proton je upravená verze Protonu a stejně tak jsou upravené knihovny, které v něm překládají Direct3D na Vulkan. Od vydání 11-12 to je vidět na jejich verzi: za hashem přibyl řetězec -GE-Proton(dirty). Vývojáři DXVK a VKD3D-Proton tak z hlášení chyby poznají, že build není jejich.

· 0 zhlédnutí

Proton je sada knihoven, kterou Valve pouští windowsové hry na Linuxu. GE-Proton je jeho obměna od vývojáře vystupujícího jako GloriousEggroll: bere totéž, co Valve, a přidává k tomu záplaty na hry, na které oficiální vydání ještě nedošlo. Používá ho Heroic Games Launcher i náhled nového klienta Epic Games, takže se hlášení chyb z něj dostanou i k lidem, kteří o GE-Protonu nikdy neslyšeli. Vydání GE-Proton11-12 z 3. listopadu 2026 na to reaguje jedním řádkem navíc v řetězci verze.

Plocha Arch Linuxu s oknem hry běžící přes Proton a s klientem Steamu
Hra Break Arcade Games Out běží na Arch Linuxu přes Proton, vpravo dole klient Steamu s knihovnou. Foto: Peter Placzek, Wikimedia Commons (volné dílo)

Značka se připíše tehdy, když strom není čistý

Překlad grafických rozhraní na Vulkan v Protonu nedělá Proton sám, ale tři samostatné projekty: DXVK pro Direct3D 9 až 11, D7VK pro starší DirectDraw a Direct3D 7 a VKD3D-Proton pro Direct3D 12. GE-Proton si je stahuje jako podmoduly a do každého z nich sahá vlastními záplatami.

Do teď to na výsledku nebylo poznat. Commit ze 3. listopadu zavádí v souboru Makefile.in proměnnou GE_DIRTY_TAG s hodnotou -GE-Proton(dirty) a funkci, která ji připíše k verzi vždy, když git status --porcelain v daném stromě něco vypíše. Detekce přes status místo přes git describe má důvod: zachytí i záplatu, která jen přidává soubory, protože ta se v popisu commitu neprojeví. Strom bez změn si nechává čistou upstreamovou verzi.

Dřív se stejný stav značil jinak a hůř:

KomponentaJak se špinavý strom značil dřívJak se značí teď
DXVKdescribe --dirty=0, tedy jedna nula za hashemhash a za ním -GE-Proton(dirty)
D7VKdescribe --dirty=0, totéžhash a za ním -GE-Proton(dirty)
VKD3D-Protondescribe --dirty=+, tedy plus na konci-GE-Proton(dirty)+, plus zůstává poslední

Ta nula u DXVK a D7VK byla celý problém. Verze s ní vypadá jako kterákoli jiná a v hlášení chyby ji nikdo nerozebírá znak po znaku.

Verze se vypisuje přesně tam, kam se chodí pro doklad

Smysl té změny je v tom, kde se řetězec objeví. DXVK ho tiskne do logu hned na začátku běhu, řádkem Logger::info v souboru dxvk_instance.cpp, a kreslí ho i do překryvu HUD, který si hráči zapínají proměnnou DXVK_HUD. Obojí se běžně přikládá k hlášením.

Šablony, které upstream k hlášení chyb nabízí, si přitom verzi výslovně vyžádají. Formulář DXVK má v systémových údajích kolonku „DXVK version“ a pod ní žádost o log z proměnné PROTON_LOG=1; formulář VKD3D-Proton chce totéž pro svou verzi. Oba navíc začínají povinným zaškrtávátkem, ve kterém hlásící potvrzuje, že do popisu nevložil odpověď jazykového modelu. Commit, který značku zavedl, nese v patičce řádek o spoluautorství modelu Claude Opus 5.5.

U VKD3D-Proton se značka musela vejít před plus

Nejvíc práce dalo VKD3D-Proton, protože na posledním znaku své verze závisí jeho vlastní kód. V souboru device.c stojí test, který za build ze špinavého stromu považuje každou verzi končící znakem +. Značka proto jde před plus, ne za něj, a oddělené pole vkd3d_build zůstává prostou hexadecimální hodnotou.

Jenže ten test dosud nikam nevedl. Informační řádek vypisoval u špinavého buildu jen hash s plusem, takže se od upstreamu lišil jediným znakem. GE-Proton k tomu přidává vlastní malou záplatu, která u takového buildu vytiskne i celý řetězec verze. Je to jediná ze tří komponent, kde nestačilo sáhnout na sestavení a bylo potřeba upravit i zdrojový kód.

Co je ve vydání 11-12 jinde

Zbytek vydání je obvyklá směs. Wine je z vývojové větve Valve ze 31. října a nese změnu, po které XInput přeskenuje připojené ovladače jen tehdy, když se seznam zařízení mohl změnit; nahradilo to dva starší obchvaty psané na míru hrám Far Cry 4 a Witcher 3. DXVK je na verzi 3.1.1-174 s přepsaným odesíláním příkazů a uvolňováním paměti, VKD3D-Proton na 3.1 a emulátor instrukcí FEX na vydání FEX-2610-116.

D7VK dostalo rozsáhlou přestavbu práce s DirectDraw a Direct3D 7: objekty pohledu, materiálu a textury se nově sdílejí mezi verzemi rozhraní a přibyly volby pro poměr stran starých her. U ovladačů začaly u tří her, mezi nimi Horizon Forbidden West, fungovat haptika a adaptivní spouště DualSense po USB zároveň, kdežto dřív si hra vybrala jen jedno z toho.

Hráči se tím nezmění nic. Značka míří na ty, kdo hlášení chyb čtou a musí z přiloženého logu poznat, čí kód vlastně spadl.

Zdroje

Hry

Linux Wine Proton Vulkan DXVK

← zpět na výpis