我最近买了一台 18.5 英寸的戴尔 e1914h 显示器,支持 1366x768@60Hz 显示。专有 nvidia 驱动程序的问题是由于某些 nvidia 特定问题(分辨率不能被 8 整除),默认情况下不支持 1366x768 分辨率。因此,我得到1368x768分辨率与 nvidia 驱动程序。我使用 live cd 上的 nouveau 启动,并将 modelines 复制到 /etc/X11/xorg.conf 并正常工作。是的 - 在从使用 nouveau 驱动程序模块的 lmde live cd 复制自定义 modeline 后,Nvidia 的 1366x768@60Hz 模式可以正常工作。但是,我想要的是,当水平/垂直前廊、后廊等值未知时,如何计算 modeline,尽管我有一些关于显示器的详细信息: http://cdn2.bhphotovideo.com/lit_files/94125.pdf
我想要实现的是使用 nvidia 支持的 1366x768@60 生成自定义 edid 二进制文件。我拥有的是显示器规格,如水平、垂直同步范围、像素时钟等。我找不到水平前沿等值来手动写入模式行。有知识的人可以帮忙吗?videogen、cvt、gtf 等的问题是它们都生成了 1368x768 模式行而不是 1366x768。gtf 输出:
:~$ gtf 1366 768 60
# 1368x768 @ 60.00 Hz (GTF) hsync: 47.70 kHz; pclk: 85.86 MHz
Modeline "1368x768_60.00" 85.86 1368 1440 1584 1800 768 769 772 795 -HSync +Vsync
我看过一个帖子这里,但没有解释所有水平和垂直值。我需要手动编写自定义模式行,这很令人困惑。有人能解释一下吗?
以下是监视器的详细信息:
**Dell E1914H:**
水平解析度:47.7Khz
垂直分辨率:59.8Hz
像素时钟:85.5Mhz
同步极性:+/+ 扫描范围
水平: 30 kHz 至 83 kHz(自动) 30 kHz 至 83 kHz(自动)
垂直最大预置分辨率:56 Hz 至 75 Hz(自动)
最大预设分辨率:1366 x 768(60 Hz)
像素间距 0.30(水平)毫米 x 0.30(垂直)毫米
亮度(典型值) 200 cd/m2
色域(典型值) 83%
色彩深度 1670 万色
对比度(典型值)600:1
这是我从 LMDE livecd 复制的自定义模式行:
Section "Monitor"
Identifier "Monitor0"
VendorName "Dell"
ModelName "Dell E1914H"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 75.0
DisplaySize 409.8 230.4
Modeline "1366x768" 85.50 1366 1436 1579 1792 768 771 774 798 +Hsync +Vsync
Option "DPMS"
EndSection
Nvidia 的具体事项,例如在 /etc/X11/xorg.conf.d/20-nvidia.conf 上禁用 edid:
Section "Screen"
Identifier "Screen0"
Device "Nvidia 7300GT"
Monitor "Monitor0"
DefaultDepth 24
Option "UseEdidDpi" "FALSE"
Option "ModeDebug" "true"
Option "ExactModeTimingsDVI" "true"
Option "ModeValidation" "NoWidthAlignmentCheck, NoDFPNativeResolutionCheck"
# Option "ModeValidation" "AllowInterlacecModes, NoTotalSizeCheck,AllowNon60HzDFPModes,NoEdidMaxPClkCheck,NoVertRefreshCheck,NoHorizSyncCheck,NoDFPNativeResolutionCheck,NoVesaModes,NoEdidModes,NoXServerModes,NoPredefinedModes,NoMaxSizeCheck,NoVirtualSizeCheck,NoMaxPclkCheck,NoVertRefreshCheck"
Option "UseEDID" "False"
Option "TwinView" "0"
SubSection "Display"
Depth 24
Modes "1366x768"
EndSubSection
EndSection
来自 Xorg.0.log:
[ 8.847] (II) NVIDIA(GPU-0): Validating Mode "1366x768":
[ 8.847] (II) NVIDIA(GPU-0): 1366 x 768 @ 60 Hz
[ 8.847] (II) NVIDIA(GPU-0): Mode Source: X Configuration file ModeLine
[ 8.847] (II) NVIDIA(GPU-0): Pixel Clock : 85.50 MHz
[ 8.847] (II) NVIDIA(GPU-0): HRes, HSyncStart : 1366, 1436
[ 8.847] (II) NVIDIA(GPU-0): HSyncEnd, HTotal : 1579, 1792
[ 8.847] (II) NVIDIA(GPU-0): VRes, VSyncStart : 768, 771
[ 8.847] (II) NVIDIA(GPU-0): VSyncEnd, VTotal : 774, 798
[ 8.847] (II) NVIDIA(GPU-0): H/V Polarity : +/+
[ 8.847] (II) NVIDIA(GPU-0): Mode is valid.
当前模式行 hsyncstart hsyncend 等可能不正确。根据 XFree86 Wiki,我缺少 hsyncstart hsyncend 和 vsyncstart vsyncend。
Modeline syntax: pclk hdisp hsyncstart hsyncend htotal vdisp vsyncstart vsyncend vtotal [flags]
Flags (optional): +HSync, -HSync, +VSync, -VSync, Interlace, DoubleScan, CSync, +CSync, -CSync
我确实在查看后计算了这些值这里:
"1366x768" 85.5 1366 hsyncstart hsyncend 1792 768 vsyncstart 795 vtotal +Hsync +Vsync
答案1
频率和 4 个水平值与水平分辨率成比例,而 4 个垂直值与垂直分辨率成比例。
因此,您只需要求双倍分辨率(1366*2 = 2736)
gtf 2736 768 60
将所有水平值和频率除以二。