Skip to content

Open the host default display by name - #1016

Open
psdevhh wants to merge 1 commit into
seedds:mainfrom
psdevhh:codex/vi-open-default-by-name
Open

psdevhh wants to merge 1 commit into
seedds:mainfrom
psdevhh:codex/vi-open-default-by-name

Conversation

@psdevhh

@psdevhh psdevhh commented Nov 3, 2026 •

Copy link
Copy Markdown

What and why

Alien: Isolation opens the display named Default through nn::vi::OpenDisplay. The SDK's implementation dereferences a missing vi service client during window setup. Hook the named call and reuse the static object returned by OpenDefaultDisplay for the name advertised by ListDisplays. Unknown names return an error.

Checked

  • Documentation tests passed after rebasing onto dac4a433. The upstream SARC reader change leaves the tested host and chain inputs identical.
  • Standalone branch on main at b1dee89c. The host suite (make -C dm/host/tests GAME=010015100B514000 run), documentation tests and LLVM 23.1.4 clang-tidy check of dm/gfx/hle_vi.c passed.
  • Integration validation on Apple M4, macOS 27.2. Alien: Isolation 010075D00E8BA000, base build 1.1_46609, passed window setup and reached the first playable room. The rebased integration also passed window setup and submitted shaders during the GLSLC capture boot.
  • regress.py impact points to four profiles that call OpenDefaultDisplay. Dark Souls Remastered 1.0.3 (01004AB00A260000) imports that entry point. In the 65-second comparison both revisions reached the frame target with no new warnings. A shorter run flagged SetRenderEnableConditional only on the candidate. Both revisions emitted it in the longer run. The harness marks the boot column FAIL for an existing depth-mode mismatch on both revisions. Other games and iOS gameplay were outside this check.
  • GitHub clang-tidy reports two findings in the unchanged t_geometry_hazards.m, covered by upstream PR C lint: t_geometry_hazards checks its readback buffer, and notes who owns its program #979.
Dark Souls Remastered regression report

regress.py check (full): PASS

Baseline origin/main b1dee89, candidate HEAD 9d785f0; Apple M4, macOS 27.2, Xcode 27.2; 131.7 s

game status shaders (base → cand) newly failing newly building changed MSL interface (new / known) boot fps p50 frame p99 ms peak MB prepare s new RED
01004AB00A260000 01004AB00A260000 PASS 3099/3099 → 3099/3099 0 0 0 0 / 0 FAIL 51.0 → 50.7 58.2 → 62.01 1783 → 1924 None → None 0

01004AB00A260000 01004AB00A260000: PASS

  • known (baseline too): profile depth_mode gl disagrees with runtime depth_mode zero: rebuild the pipeline archive with the observed mode
    • baseline: exit None, first frame 0.5 s, max frame 3558, reached True, prepare None s, fps 51.0, p50/p99 16.66/58.2 ms, peak 1783 MB
    • candidate: exit None, first frame 0.5 s, max frame 3530, reached True, prepare None s, fps 50.7, p50/p99 16.66/62.01 ms, peak 1924 MB
    • time: chain 0.9 s, smoke 130.6 s

Docs

  • Updated docs/reference/services.md#vi-layer-and-display-calls-without-vi-service-objects and regenerated the symptom index.
  • The change contains source and documentation only.

The SDK dereferences a missing vi client when a game opens the display returned by ListDisplays. Route the name Default through the same static display as OpenDefaultDisplay. Alien: Isolation reached gameplay with the hook on an M4 Mac.
@psdevhh
psdevhh force-pushed the codex/vi-open-default-by-name branch from 9d785f0 to f8cce6b Compare November 3, 2026 01:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant