[Bug] 2.7.1: Displays panel and "Show all resolutions" take minutes on 3440x1440@144 DP (2.6.6 was fine)

オープン
#503 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 2 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
42/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
macos, rust
領域
backend

調査の方向性

Start by tracing how the driver handles display mode enumeration and the work triggered when System Settings opens the Displays panel; the report says CoreGraphics enumeration itself is fast. Check the WindowServer cache exclusion and the refused zero-copy paths described in the issue. The issue gives no source files or tests; done means identifying and fixing the cause of the panel delay and confirming the panel and resolution list appear promptly.

索引モデルが issue の本文から書いたものです。

説明

Send logs report ID

NM-

Where does it go wrong?

On the desktop (flicker, lag, displays, sleep)

What happens

Regression: 2.6.6 was fine, 2.7.1 is slow. System Settings -> Displays spins on "Collecting display information" for a long time, and "Show all resolutions" then takes minutes to appear. The rest of the system stays responsive - only that one panel stalls. No deadlock, no kernel panic, no crash.

Hardware:

  • NVIDIA GeForce RTX 2060 (TU106), 6 GB
  • macOS 26.7.2 (build 25G332), SMBIOS MacPro7,1
  • Display: 3440x1440 @ 144 Hz over DisplayPort
  • Driver 2.7.1 - NVRM / NVAccel / NVRMFB / NVRMAGDC all loaded
  • boot-args: keepsyms=1 nvfb=1 nvaccel=1 gfxrst=4 amfi_get_out_of_my_way=0x1 amfi=0x80 revpatch=sbvmm,cpuname nvfbheads=4 -nvkmsnosmooth ipc_control_port_options=0 nvrmsettle=10000
What I checked

1. The shared shader caches are empty. Both directories carry the ownership and mode install.sh sets, yet hold no entries after four hours of use:

drwxr-xr-x  _windowserver  wheel  /Library/GPUBundles/nvmtl/aircache   0 entries
drwxr-xr-x  _windowserver  wheel  /Library/GPUBundles/nvmtl/spvcache   0 entries

nvmtl-allow.txt is the one from the package, unchanged - * then !WindowServer. So WindowServer is excluded from the shared cache it is meant to fill. The comment in install.sh says that without these caches, WindowServer "re-translates them from scratch at every start".

2. WindowServer's zero-copy paths are all refused - 18 lines in 37 seconds:

vk: vkAllocateMemory refused the imported host pointer 0x1824d0000 (26628096 bytes, memory type 2)
vk: host-pointer import refused - ptr 0x189260bc0 / size 27054080 are not both a multiple of 4096; that buffer is COPIED
buffer texture: refused on alignment - bind at 530992 (buffer 530688 + 304) vs alignment 32
newTiledTextureWithDescriptor: linear view refused -> copied texture (20x20 bpr 224; said once)
reflection: SimpleTextureFragment has no AIR - cannot be reflected

The refused offsets (304, 1872, 1968) and the 20x20 textures are the small masks and icons the settings UI draws, so every one of them falls back to a copy.

3. The panel extension blocks for about 6 seconds between its XPC connection and didBeginHosting, with no log output at all in between (measured from the unified log).

Extra data

CGDisplayCopyAllDisplayModes reports 85 modes for this display: 144 Hz is replicated on every resolution (including 640x480) and there is no HiDPI entry. Enumeration itself is fast - a standalone CoreGraphics tool gets the whole list in under a second - so the stall is not in producing the mode list, it is in what happens after.

Did you change anything yourself?

I moved NullMoth's NMXAudio out of /Library/Extensions so SimpleHDA could take over audio, and rebuilt the auxiliary kernel collection from /Library/Extensions following docs/MULTI-GPU.md. The four display kexts load from permanent paths and the GPU works normally.

主要言語
Rust
スター
2.5k
フォーク
233
平均マージ
3日 14時間
マージ済み PR(30日)
14

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

nullmoth/nvidia-macos-driver のほかの issue

nullmoth/nvidia-macos-driver の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。