Repository navigation
0.80-gamma
Fixes on top of upstream
- Winemetal resource lifetime/argument-buffer hardening (
059cd88). Takes each binding's GPU resource ID, exact native Metal resource and owning allocation from one snapshot, retains every native resource a command buffer uses until that command buffer completes, and moves the argument-buffer allocator frommalloc'd memory to Metal-owned storage, closing a use-after-free/aliasing window implicated in a mid-gameplay GPU page fault. Hazard tracking stays untracked. One of several changes aimed at that fault; see "DynamicBuffer suballocation" and "PSO-failure skip-draw guard" below. - DynamicBuffer suballocation from one page regardless of Usage (
3004e88).Map/Discardrenames of aD3D11_USAGE_DYNAMICbuffer now suballocate from a single page unconditionally, instead of only for some usage patterns, removing another source of the same fault class. - PSO-failure skip-draw guard, with named shaders in the failure log (
5d274b4,d13d7ed). A draw whose pipeline state object failed to compile is now skipped instead of proceeding with an invalid PSO, and the failure log names the shader (by digest) instead of only the Metal error — seegamma-project's PSO failure register for the digests this triage produced. - DLSS/NGX fixes (
b4f5afc,0861c6a,7026b8e,4f4c6a2). Fixes a DXMT-side NGX parameter-store type mismatch that made everyNVSDK_NGX_D3D11_EvaluateFeaturecall fail silently, so DLSS upscaling never actually ran despite being reported available; bridgesvoid*resource parameters through NGX to the right D3D11/D3D12 resource type; crops an oversized depth input and defaults a missing pre-exposure value; folds the DLSS depth-crop copy into the existing scaler blit encoder instead of an extra pass; and stops aGetParametersleak while loggingEvaluateFeatureonly once instead of every frame. Confirmed working in-game. d3d11.displaySyncv-sync control (9f8b1aa,b7f6717). MakesCAMetalLayer.displaySyncEnabledfollow the D3D11Presentsync interval (d3d11.displaySyncconfig key:auto/true/false) instead of being hardcoded off, and stopschangeDisplaySync()from pushing layer properties to the Metal layer while a pixel-format/size/sample-count/color-space change fromchangeLayerProperties()is still deferred. Runtime-verified: toggling v-sync in game and changing resolution both behave correctly.
Build
Branch: release (default). Built with Homebrew GCC 16.2.0, meson install --strip, MACOSX_DEPLOYMENT_TARGET=15.0.
SHA256: d383a2e04d9be6c56abf0538f98eb6e4bbab81444ea5ad889a0df3e789d49385
Contents: x86_64-unix/winemetal.so, x86_64-windows/{d3d10core,d3d11,d3d12,dxgi,nvapi64,nvngx,winemetal}.dll