日前换了一台 Philips 275S1AE 的萤幕,需要 2560x1440x75Hz,
却被降不下来的 VRAM 时脉和功耗困扰著:
https://i.imgur.com/30Dqe3d.png
VRAM 被固定在 ~2000 MHz,而待机从只有 3-4W,变成 17-18W。
是什么问题让内存一直忙碌中吗? 原来,这是跟显示器时序有关:
(其实也没有忙碌中)
> The high memory clock has nothing to do with the number of pixels,
> it is caused by the vblank being too short.
> Memory frequency can only be changed during vblank,
> if it is changed at any other time it will cause flickering.
https://www.reddit.com/r/Amd/comments/i09h9o/need_fix_memory_clock_locked_at
大意:VRAM 时脉只能在萤幕时序中的垂直消隐期间进行切换(否则画面会闪烁)
以下时序示意图,我把垂直消隐期间标了出来:
╭H.blanking╮ ╭ H. blanking ╮
┌──────────────────────────────┐╮
│ Vertical front porch │V. blanking
├─────┬────────────────┬────┬──┤╯
│Horizontal│ Active video │ H. │H. │
│front │ │ back │sync│
│porch │ │ porch │ │
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
│ │ │ │ │
├─────┴────────────────┴────┴──┤╮
│ Vertical back porch │
├──────────────────────────────┤V. blanking
│ Vertical Sync │
└──────────────────────────────┘╯
https://i.imgur.com/dnLcLxQ.png
使用 CRU,看到时序参数 vblank = 41,
相当于 41÷1481÷74.968 = 369 μs,
窗口太短,以至于 VRAM 无法切换频率,
必须借由增加 V. back porch,来让 vblank 窗口延长。
经过测试,可以让 VRAM 切换频率的 vblank 窗口约为 482 μs,
我自己又加了 10%,选择 534 μs,最后大功告成:
https://i.imgur.com/fnyzH7L.png
https://i.imgur.com/jpvPSKV.png
https://i.imgur.com/1dQNuMr.png
[附录] 下载 Custom Resolution Utility (CRU):
https://www.monitortests.com/forum/Thread-Custom-Resolution-Utility-CRU
另外一篇讨论:
https://community.amd.com/t5/graphics/which-monitor-timing-par/td-p/318483
他是用默认集的 标准LCD时序 (Automatic PC) 为基础,把 VBP 改成 72
https://i.imgur.com/lqyOLKl.png
https://i.imgur.com/Gb31Ygx.png
也是可以,不过时序比较冗余,而且 Pixel clock 超过 300 MHz(没什么问题就是了)
延伸想到,如果多萤幕有这种问题,那就检查每个萤幕的时序看看。