Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

close

Closed
#74 6 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
1-2 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Active
Tech stack
macos, rust

Research direction

Start by tracing the driver’s image or texture rendering path and compare how tiled image updates are handled with the working desktop and Quick Look paths described in the report. Reproduce by opening a JPG or PNG in Preview after a clean boot, then inspect relevant rendering logs or counters. Done means Preview displays the image at full detail while the reported controls remain correct.

Written by the indexing model from the issue text.

Description

Preview renders images as uniform-coloured blocks (stuck at the lowest tiled-layer LOD); Quick Look is fine and it survives a reboot

What I see

Open any image (JPG/PNG) in Preview: the picture is drawn as large, uniform-coloured blocks — roughly
5 blocks across for a 1920 px-wide image, every block a single flat colour, with no noise or garbage in
them. The image is otherwise right (colours and layout are correct, it is just far too coarse).

Two controls, both fine:

  • Quick Look does not do this. Holding space on the same file renders it correctly.
  • The same image as the desktop wallpaper renders correctly. I verified this by capturing the screen — the
    composited desktop is sharp. So it is not "images are broken", it is Preview's rendering path.
It is deterministic and survives a reboot

This is why I am filing it separately from #73:

  • It is there on a clean boot with no refresh-rate change — NVRMModeSwitches = 2 (the two the driver does
    at startup), nothing else. It has nothing to do with the refresh-rate-change state in #73.
  • It survives a reboot.
  • It reproduces on demand in a couple of seconds: open an image in Preview.

Unlike #73 — which is intermittent and needs a mode change to trigger — this one you can see immediately, so
it should be a much easier thing to chase.

What I think it is

Preview displays images through ImageKit (IKImageView), which uses a CATiledLayer: the image is cut into
tiles and kept at several levels of detail so zooming stays smooth. Uniform-coloured blocks is exactly what
the lowest LOD looks like
— each tile is a single texel, so every block is one flat colour, and the layer
never refines to a higher level.

Quick Look goes through QuickLookUIService instead and is fine, which is why I think this is the tiled/LOD
texture path rather than image decoding (the colours are right) or CoreGraphics drawing (the wallpaper and
Quick Look are both fine).

Environment
  • RTX 3080 (10DE:2206), macOS 15.8.1 (24H32), driver package 1.5.0
  • 1920x1080, one display, -nvrmnoflip (copy path), debug.nvaccel_iop_fail = 0
  • boot-args: -nvrmnobootscreen -v nvfb=1 nvaccel=1 nvfbheads=4 -nvkmsnosmooth amfi_get_out_of_my_way=0x1 amfi=0x80 -nvrmnoflip -wegnoigpu nvrmsettle=1500

The state is stable, so I can capture whatever you want from it — a screenshot, a log window, or a counter
dump is easy to arrange.


中文版(Chinese version)

Preview 把图像渲染成纯色方块(卡在最低一档 tiled-layer LOD);Quick Look 正常,且重启后依然如此

我看到的

在 Preview 里打开任意图像(JPG/PNG):画面被画成大块纯色方块——对一张 1920 px 宽的图像大约横向 5 块,每块一个平坦的颜色,里面没有噪点也没有乱码。除此之外图像是对的(颜色和布局都正确,只是粗糙得离谱)。

两个对照,都正常:

  • Quick Look 不会这样。 对同一个文件按住空格,渲染正确。
  • 同一张图作为桌面壁纸也渲染正确。 我通过截屏验证过——合成后的桌面是清晰的。所以不是「图像坏了」,而是 Preview 的渲染路径。
它是确定性的,且重启后依然存在

这就是我把它与 #73 分开提交的原因:

  • 它在干净启动、没有任何刷新率变化的情况下就在——NVRMModeSwitches = 2(驱动启动时的那两次),没有别的。与 #73 里刷新率变化的状态无关。
  • 它重启后依然存在。
  • 它几秒钟内就能按需复现:在 Preview 里打开一张图。

与 #73 不同——#73 是间歇性的、需要一次模式切换才触发——这个立刻就能看到,所以追起来应该容易得多。

我认为它是什么

Preview 通过 ImageKit(IKImageView)显示图像,后者用 CATiledLayer:图像被切成瓦片并保留多个细节层级,让缩放保持顺滑。纯色方块正是最低 LOD 的样子——每个瓦片只有一个纹素,所以每块都是单一平坦颜色,而这一层从未细化到更高层级。

Quick Look 走的是 QuickLookUIService,是好的——这就是为什么我认为问题在 tiled/LOD 纹理路径,而不是图像解码(颜色是对的)或 CoreGraphics 绘制(壁纸和 Quick Look 都是好的)。

环境
  • RTX 3080(10DE:2206),macOS 15.8.1(24H32),驱动包 1.5.0
  • 1920x1080,单显示器,-nvrmnoflip(拷贝路径),debug.nvaccel_iop_fail = 0
  • boot-args:-nvrmnobootscreen -v nvfb=1 nvaccel=1 nvfbheads=4 -nvkmsnosmooth amfi_get_out_of_my_way=0x1 amfi=0x80 -nvrmnoflip -wegnoigpu nvrmsettle=1500

状态稳定,所以我可以从中采集你要的任何东西——截图、一段日志窗口,或一份计数器 dump,都好安排。

Dominant language
Rust
Stars
2.5k
Forks
233
Avg merge
1h 37m
Merged PRs (30d)
1

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from nullmoth/nvidia-macos-driver

All issues in nullmoth/nvidia-macos-driver

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.