好的,我知道有很多关于英特尔显卡或 nvidia 显卡屏幕撕裂的答案,但我已经搜索了我能找到的每一个帖子,这就是我遇到的(我使用的是 ubuntu 20.04)
我的设置 Nvidia Gtx 1050 ti 运行 nvidia 470 最新稳定驱动程序运行 1080p 显示器
另一台显示器通过 VGA 连接到英特尔显卡,分辨率为 1366x1768,频率均为 60 赫兹
最初,两个显示器都有屏幕撕裂问题,但我修复了 nvidia 显示器的屏幕撕裂问题,方法是
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0, ForceCompositionPipeline=On, ForceFullCompositionPipeline=On, ForceCompositionPipeline = On}"
并将其添加到启动应用程序,导致保存nvidia-settings
以/etc/X11/xorg.conf
禁用英特尔图形监视器
因此,现在当 nvidia 撕裂问题修复后,英特尔撕裂问题仍然存在,我找到的修复屏幕撕裂问题的答案是这样的
Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "TearFree" "true"
EndSection
并且将它添加到/etc/X11/xorg.conf.d/20-intel.conf
我的情况下不起作用。
有什么建议我应该怎么做?这个问题之前在 askubuntu 上被问过几次,但他们似乎没有得到答案。看到这个,这也他们有和我同样的问题
这也是我的xrandr 输出
Screen 0: minimum 8 x 8, current 3286 x 1080, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 480mm x 270mm
1920x1080 74.97 + 60.00 60.00* 59.94 50.00 60.05 60.00 50.04
1680x1050 59.95
1600x900 60.00
1440x900 59.89
1400x1050 59.98
1280x1024 75.02 60.02
1280x800 59.81
1280x720 60.00 59.94 50.00
1152x864 75.00
1024x768 75.03 60.00
800x600 75.00 60.32
720x576 50.00
720x480 59.94
640x480 75.00 59.94 59.93
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-2 disconnected (normal left inverted right x axis y axis)
DP-1-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-3 disconnected (normal left inverted right x axis y axis)
DP-1-2 connected 1366x768+1920+142 (normal left inverted right x axis y axis) 410mm x 230mm
1366x768 59.79*+
1280x720 60.00
1024x768 75.03 70.07 60.00
832x624 74.55
800x600 72.19 75.00 60.32 56.25
640x480 75.00 72.81 66.67 59.94
720x400 70.08
1280x720 (0x1ce) 74.250MHz +HSync +VSync
h: width 1280 start 1390 end 1430 total 1650 skew 0 clock 45.00KHz
v: height 720 start 725 end 730 total 750 clock 60.00Hz
1024x768 (0x1d2) 78.750MHz +HSync +VSync
h: width 1024 start 1040 end 1136 total 1312 skew 0 clock 60.02KHz
v: height 768 start 769 end 772 total 800 clock 75.03Hz
1024x768 (0x1d3) 65.000MHz -HSync -VSync
h: width 1024 start 1048 end 1184 total 1344 skew 0 clock 48.36KHz
v: height 768 start 771 end 777 total 806 clock 60.00Hz
800x600 (0x1d4) 49.500MHz +HSync +VSync
h: width 800 start 816 end 896 total 1056 skew 0 clock 46.88KHz
v: height 600 start 601 end 604 total 625 clock 75.00Hz
800x600 (0x1d5) 40.000MHz +HSync +VSync
h: width 800 start 840 end 968 total 1056 skew 0 clock 37.88KHz
v: height 600 start 601 end 605 total 628 clock 60.32Hz
640x480 (0x1d8) 31.500MHz -HSync -VSync
h: width 640 start 656 end 720 total 840 skew 0 clock 37.50KHz
v: height 480 start 481 end 484 total 500 clock 75.00Hz
640x480 (0x1d9) 25.175MHz -HSync -VSync
h: width 640 start 656 end 752 total 800 skew 0 clock 31.47KHz
v: height 480 start 490 end 492 total 525 clock 59.94Hz
这是一个错误吗?任何建议都会非常有用,谢谢!
编辑 1:建议的信息输出sancho.s 恢复MonicaCellio的回答
shantanu@shantanu-pc:~$ inxi -F
System: Host: shantanu-pc Kernel: 5.11.0-37-generic x86_64 bits: 64 Desktop: Gnome 3.36.9
Distro: Ubuntu 20.04.3 LTS (Focal Fossa)
Machine: Type: Desktop System: Gigabyte product: H310M H v: N/A serial: <superuser/root required>
Mobo: Gigabyte model: B250M H v: x.x serial: <superuser/root required>
CPU: Topology: Quad Core model: Intel Core i5-7400 bits: 64 type: MCP L2 cache: 6144 KiB
Speed: 800 MHz min/max: 800/3500 MHz Core speeds (MHz): 1: 1318 2: 1513 3: 2666 4: 1741
Graphics: Device-1: Intel HD Graphics 630 driver: i915 v: kernel
Device-2: NVIDIA GP107 [GeForce GTX 1050 Ti] driver: nvidia v: 470.63.01
Display: x11 server: X.Org 1.20.11 driver: modesetting,nvidia unloaded: fbdev,nouveau,vesa
resolution: 1920x1080~75Hz, 1366x768~60Hz
OpenGL: renderer: NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2 v: 4.6.0 NVIDIA 470.63.01
Audio: Device-1: Intel 200 Series PCH HD Audio driver: snd_hda_intel
Device-2: NVIDIA GP107GL High Definition Audio driver: snd_hda_intel
Sound Server: ALSA v: k5.11.0-37-generic
Sensors: System Temperatures: cpu: 32.8 C mobo: 29.8 C gpu: nvidia temp: 38 C
Fan Speeds (RPM): N/A gpu: nvidia fan: 48%
输出 2:
shantanu@shantanu-pc:~$ lspci -knn | grep -EA3 'VGA|3D|Display'
00:02.0 Display controller : Intel Corporation HD Graphics 630
DeviceName: Onboard IGD
Subsystem: Gigabyte Technology Co., Ltd HD Graphics 630
Kernel driver in use: i915
--
01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti]
Subsystem: ZOTAC International (MCO) Ltd. GP107 [GeForce GTX 1050 Ti]
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
输出 3:
shantanu@shantanu-pc:~$ grep "LoadModule" /var/log/Xorg.0.log
[ 6.323] (II) LoadModule: "glx"
[ 6.557] (II) LoadModule: "nvidia"
[ 6.560] (II) LoadModule: "nouveau"
[ 6.561] (II) LoadModule: "modesetting"
[ 6.562] (II) LoadModule: "fbdev"
[ 6.562] (II) LoadModule: "vesa"
[ 6.577] (II) LoadModule: "fb"
[ 6.578] (II) LoadModule: "wfb"
[ 6.579] (II) LoadModule: "ramdac"
[ 6.580] (II) LoadModule: "fbdevhw"
[ 6.581] (II) LoadModule: "glxserver_nvidia"
[ 7.510] (II) LoadModule: "glamoregl"
[ 7.683] (II) LoadModule: "fb"
[ 7.770] (II) LoadModule: "dri2"
[ 7.977] (II) LoadModule: "libinput"
输出 4:
22: None 00.0: 10002 LCD Monitor
[Created at monitor.125]
Unique ID: UNIQUE ID
Parent ID: PARENT ID
Hardware Class: monitor
Model: "SAMSUNG S19B150"
Vendor: SAM "SAMSUNG"
Device: eisa "S19B150"
Serial ID: "SERIAL ID"
Resolution: 720x400@70Hz
Resolution: 640x480@60Hz
Resolution: 640x480@67Hz
Resolution: 640x480@72Hz
Resolution: 640x480@75Hz
Resolution: 800x600@56Hz
Resolution: 800x600@60Hz
Resolution: 800x600@72Hz
Resolution: 800x600@75Hz
Resolution: 832x624@75Hz
Resolution: 1024x768@60Hz
Resolution: 1024x768@70Hz
Resolution: 1024x768@75Hz
Resolution: 1280x720@60Hz
Resolution: 1366x768@60Hz
Size: 410x230 mm
Year of Manufacture: 2012
Week of Manufacture: 38
Detailed Timings #0:
Resolution: 1366x768
Horizontal: 1366 1436 1579 1792 (+70 +213 +426) +hsync
Vertical: 768 771 774 798 (+3 +6 +30) +vsync
Frequencies: 85.50 MHz, 47.71 kHz, 59.79 Hz
Driver Info #0:
Max. Resolution: 1366x768
Vert. Sync Range: 56-75 Hz
Hor. Sync Range: 30-81 kHz
Bandwidth: 85 MHz
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #19 (Display controller)
答案1
可能是您使用的/etc/X11/xorg.conf.d/20-intel.conf
还不够。由于没有关于您系统的详细信息,我建议您先尝试几件事。然后,我会提供一些信息供您在系统上发布。
可能的解决方案
邮政在问题主体中以下选项的结果(请复制粘贴逐字当适用):
司机。也许您使用的驱动程序
Driver "intel"
应进行更改。请尝试
modesetting
或i915
(每次更改后重新启动)。来源。更多选项. 包括一个或多个额外选项(
XXXX
用您的驱动程序替换)Section "Device" Identifier "Intel Graphics" Driver "XXXX" Option "TearFree" "true" Option "TripleBuffer" "true" Option "AccelMod" "uxa" Option "DRI" "3" EndSection
模块部分。 添加
Section "Module" Load "dri3" EndSection
多于
Section "Device"
。来源。删除分数缩放以检查这是否会增加导致屏幕撕裂的因素组合。来源。
删除英特尔驱动程序被建议,并获得了一些积极的反馈。我会考虑将其作为最后的尝试。
有关您的系统的更多信息
邮政在问题主体中以下命令的输出:
$ inxi -F
$ lspci -knn | grep -EA4 'VGA|3D|Display'
$ grep "LoadModule" /var/log/Xorg.0.log
$ hwinfo --monitor
你可能需要
$ sudo apt install inxi hwinfo
笔记:
- 考虑将这些建议作为指南,或者作为分步说明手册。
- 花些时间阅读链接的帖子,稍加修改,然后发布您得到的内容。
- 尝试阅读输出消息并解释它们告诉您的内容。甚至可以进行一些网络搜索。尤其是警告和错误。
- 避免“叙述”您获得的内容;复制粘贴输出。使用 GUI 时请包含屏幕截图。
- 还包括您从复制+粘贴中输入的确切命令。
- 如果某个特定命令的输出很长而无法发布,请使用 pastebin。
答案2
经过数周的修修补补,试图找出可能出现的问题,之后sancho.s 恢复MonicaCellio的详细回答,但仍然没有解决问题,我感到沮丧并放弃了。并且想到也许两个显示器连接两个不同的显卡注定会导致英特尔屏幕撕裂。
但我无意中发现了nvidia-prime
,并开始阅读它,我的理解是,它让任一 GPU 渲染另一个 GPU 显示器的屏幕。因此,nvidia 可以使用其处理来渲染连接到英特尔端的所有内容。
所以我使用的步骤是
步骤1:使能够nvidia 强力合成管道
您必须使用启动脚本来执行此操作,其他方法不起作用,并且不要尝试将其保存到 xorg.conf ,如果您从中启用nvidia-settings
它将在下次重启时禁用英特尔显示。
我发现这个脚本可以自动检测你的屏幕配置并启用nvidia 强力合成管道
nvidia-settings --assign CurrentMetaMode="$(nvidia-settings -q CurrentMetaMode -t|tr '\n' ' '|sed -e 's/.*:: \(.*\)/\1\n/g' -e 's/}/, ForceCompositionPipeline = On}/g')" > /dev/null
但它需要我进行一些修改,复制此部分并运行
"$(nvidia-settings -q CurrentMetaMode -t|tr '\n' ' '|sed -e 's/.*:: \(.*\)/\1\n/g' -e 's/}/, ForceCompositionPipeline = On}/g')"
它会产生类似这样的结果
shantanu@shantanu-pc:~$ "$(nvidia-settings -q CurrentMetaMode -t|tr '\n' ' '|sed -e 's/.*:: \(.*\)/\1\n/g' -e 's/}/, ForceCompositionPipeline = On}/g')"
DPY-1: nvidia-auto-select @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0, ForceCompositionPipeline=On, ForceFullCompositionPipeline=On, ForceCompositionPipeline = On} : command not found
删除DPY-1:
和 : command not found
部分
并使用生成的值修改命令,如下所示(只需将编辑的值替换为之前的“引号内的命令”)
nvidia-settings --assign CurrentMetaMode="nvidia-auto-select @1920x1080 +0+0 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0, ForceCompositionPipeline=On, ForceFullCompositionPipeline=On, ForceCompositionPipeline = On}"
步骤3:安装 nvidia-prime
sudo apt install nvidia-prime
使用 prime 切换到 nvidia,因此所有渲染都由 nvidia 完成 英特尔屏幕也将由 nvidia 渲染
sudo prime-select nvidia
这将有效地修复屏幕撕裂问题,唯一的缺点是 nvidia gpu 的使用率会更高,因为它正在为两个显示器进行渲染,而英特尔只需输出它。
这是许多线程中长期存在的问题,也许它可以为正在寻求帮助的人提供一些帮助。