GPU技术支持-业务篇-显示异常问题排查

GPU技术支持-业务篇-显示异常问题排查

前言

转载请附上原文出处链接

稀土掘金本文链接:https://juejin.cn/post/7244335987575603256

CSDN本文链接:https://blog.csdn.net/qq_43252610/article/details/131201416

概述

本文主要针对常见的显示异常问题,提供系统性的排查框架和思路。

推荐阅读:GPU技术支持-业务篇-问题排查思路

排查思路

请添加图片描述

基本状态确认

排查问题前,需要对各种基础状态进行确认。将一些环境变量剥离开,尽量减少接下来的排查过程中受到的其他因素影响。

个例or共性问题

有条件的情况下,首先需要判断的就是当前问题是个例问题还是共性问题。即能否判断该问题为批次性问题。

判断的对象不仅仅是显卡,还包括显示器、线缆等上屏链路相关的设备。

验证措施-对换验证

注意:对换验证需要保证变量单一性,否则对换验证的结论是无效的。

1.两台设备对调同型号显卡,问题能否复现?

问题跟随显卡状态走,可以判断为显卡个例问题

2.两台设备对调同型号显示器,问题能否复现?

问题跟随显示器状态走,可以判断为显示器个例问题

3.两台设备对调同型号线缆,问题能否复现?

问题跟随线缆状态走,可以判断为线缆个例问题

显卡个例问题需要单独分析时,需要首先确认显卡的状态是否一致(vbios、配置文件等等)

如果确认显卡的状态一致,该类型的个例问题一般需要硬件或者芯片层面去分析。

中间层状态判断

显卡直出:显卡到显示器中间只有线缆,显卡输出直接通过线缆接到显示设备

中间层:例如各种类型的转接芯片:VGA转HDMI芯片、HDMI转VGA芯片、VGA转DVI芯片等等

显卡和屏幕中间存在中间层时,就需要判断该显示问题是否和中间层相关,因为中间层会隔离显卡和显示器的联系,一些中间层也会做处理,导致问题的发生。

验证措施

1.去掉中间层,改为显卡直出显示。问题能否复现?

如果去掉中间层,问题消失,需要排查中间层的芯片问题。

显卡配置状态

显卡配置状态检查需要确认显卡烧录的vbios等等

同时还需要注意vbios的版本,是否为存在已知问题的老版本

验证措施

1.老版本vbios,先更新进行验证。问题能否复现?

如果更新vbios问题消失,确认为老版本vbios已知问题。

2.特制版本(vbios),有条件先换回通用版本验证。问题能否复现?

如果换回通用版本问题消失,确认为特制版本引入的问题。

常见问题排查

无显示问题(黑屏)

黑屏问题大部分集中在上屏链路部分(显示器、线缆),也有可能出现PCIE链路断开、驱动状态异常等其他原因导致的黑屏

确认系统状态

确认系统是否正常进入

正常进入:继续下一步的状态判断

未能正常进入:相当于该问题为开机卡死问题,需要排查未进入系统的原因

判断显卡状态

判断显卡是否正常工作

  • 显卡设备是否正常识别?
  • 显卡驱动是否安装?
  • 显卡驱动是否正常加载?

可以观察BIOS阶段显示是否正常,如果BIOS阶段显示异常,可以适当考虑显卡本身状态问题。

确认EDID状态、确认显示接口状态

方法1:远程SSH连接或者串口连接设备,终端内依次输入export DISPLAY=:0xrandr --verbose命令,查看分辨率、EDID、显示接口状态

方法2:查看/var/log/Xorg.0.log文件,查看分辨率和EDID(仅xrandr无法看到EDID时建议使用)

如果xrandr无法正常打印,可能是因为系统锁屏、系统在登录界面、桌面服务未正常启动等等情况导致。

系统锁屏需要在电源设置中关闭屏保、屏幕关闭等设置。

系统在登录界面要设置自动登录。

桌面服务未正常启动可能为桌面服务发生异常、默认的登录选项未设置为从图形界面启动等等。

EDID信息正常

1.对应输出口状态为connected

2.EDID信息正常,能解析出分辨率以及有对应的*current的分辨率。(Xorg.0.log中没有该*current状态是正常的)

说明显卡从显示器中正确获取、解析了EDID且进行输出。

此时需要通过对调设备(显卡、线缆、显示器)去深入排查

HDMI-0 connected primary 1920x1080+0+0 (0x49) normal (normal left inverted right x axis y axis) 294mm x 165mm
	Identifier: 0x45
	Timestamp:  18734
	Subpixel:   unknown
	Gamma:      1.0:1.0:1.0
	Brightness: 1.0
	Clones:    
	CRTC:       0
	CRTCs:      0
	Transform:  1.000000 0.000000 0.000000
	            0.000000 1.000000 0.000000
	            0.000000 0.000000 1.000000
	           filter: 
	EDID: 
		00ffffffffffff0009e5be0700000000
		0b1c0103801d117802de50a3544c9926
		0f505400000001010101010101010101
		010101010101933780a070383c403020
		350026a51000001a0c2580a070383c40
		3020350026a51000001a000000fe004c
		43440a202020202020202020000000fe
		004c43440a202020202020202020019f
		020319c1448303020123090707830100
		0067030c001000001e933780a070383c
		403020350026a51000001a0000000000
		00000000000000000000000000000000
		00000000000000000000000000000000
		00000000000000000000000000000000
		00000000000000000000000000000000
		0000000000000000000000000000006a
	non-desktop: 0 
		supported: 0, 1
  1920x1080 (0x49) 142.270MHz +HSync -VSync *current +preferred
        h: width  1920 start 1968 end 2000 total 2080 skew    0 clock  68.40KHz
        v: height 1080 start 1083 end 1088 total 1140           clock  60.00Hz
  1920x1080 (0x4a) 94.840MHz +HSync -VSync
        h: width  1920 start 1968 end 2000 total 2080 skew    0 clock  45.60KHz
        v: height 1080 start 1083 end 1088 total 1140           clock  40.00Hz
  720x480 (0x4b) 27.000MHz -HSync -VSync
        h: width   720 start  736 end  798 total  858 skew    0 clock  31.47KHz
        v: height  480 start  489 end  495 total  525           clock  59.94Hz
  640x480 (0x4c) 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
EDID信息异常

1.对应输出口状态为disconnected或者未检测到EDID信息。

说明显卡没有检测到屏幕接入,未读取到EDID。首先怀疑是否i2c链路有问题,导致显卡无法读取到EDID导致黑屏。

2.EDID信息正常,能解析出分辨率但是没有对应的*current的分辨率。(Xorg.0.log中没有该*current状态是正常的)

说明该屏幕在系统设置中可能被关闭,导致黑屏。

命令行开启:xrandr --output XXX --mode XXXX

例如:打开HDMI-1显示器,并输出1920x1080。xrandr --output HDMI-1 --mode 1920x1080

output:后面接对应的输出口,需要以xrandr中打印的信息为准,例如HDMI-1、HDMI-2、VGA-0

mode:后面接对应的分辨率,需要以xrandr中打印的信息为准,例如1920x1080

HDMI-2 disconnected (normal left inverted right x axis y axis)
	Identifier: 0x47
	Timestamp:  18734
	Subpixel:   unknown
	Clones:     VGA-0 VGA-1 HDMI-0 HDMI-1
	CRTCs:      1 2 0 3
	Transform:  1.000000 0.000000 0.000000
	            0.000000 1.000000 0.000000
	            0.000000 0.000000 1.000000
	           filter: 
	non-desktop: 0 
		supported: 0, 1

规避措施

显卡强制输出:EDID信息未检测到时,可以显卡进行强制输出,按照指定的EDID进行输出,不读取显示器EDID信息。规避读取不到EDID的问题。

显示质量问题(噪点、水波纹、闪屏)

噪点、水波纹、闪屏大部分都是信号质量问题

信号质量可能跟显卡、显示器、线缆、主板硬件都有关。

比如:

  • 噪点问题:显卡的输出信号强度对于显示器来说太强或者太弱、线缆过长导致信号衰减严重等等
  • 水波纹问题:显示信号受扰,可能是硬件设计未考虑、外部环境影响等等
  • 闪屏问题:信号质量差,显示器锁不住当前显示频率等等

该类问题比较收敛,解决方案通常主要集中在以下几个方向。主要的思路就是增加、减弱信号强度以及改善信号通路质量。

显卡输出信号调节

调节显卡输出信号(阻抗、信号摆幅、预加重等等),看是否对现有现象有影响。

调节方法建议使用二分法,直接先将信号强度组合调成最强或者最弱,根据不同的效果再进行调整。

增加均衡芯片

均衡芯片是一把双刃剑,用的好可能对信号质量有改善,用的不好可能造成信号质量的劣化。

下面是几个需要注意的点:

  • 均衡芯片的位置需要尽量放在信号输出端,即保证均衡芯片在信号质量尽量高时对信号进行加强,如果信号质量已经劣化,再使用均衡芯片加强信号效果也不会好。
  • 均衡芯片的预加重参数调整需要根据实际使用情况设置,不存在一套参数对所有使用场景都有很好的效果
硬件排查

硬件排查主要排查以下几个方向:

  • 显示输出链路走线排查:主板的显示链路的走线是否尽量短(信号衰减小)
  • 显示输出链路干扰排查:是否存在多输出口的互相干扰
  • 线缆定义:显示线缆的定义是否正确
  • 阻抗匹配:计算中间链路的阻抗参数
花屏问题

花屏问题算是比较常见的问题,排查时需要确认花屏在上屏链路引入还是在显存阶段就已花屏。确认大方向之后再进行深入排查。

BIOS/UEFI阶段花屏

该阶段因为还没有加载系统,此时花屏主要考虑显卡与主板BIOS相关的适配问题。

确认显存数据状态

最先开始需要确认的就是显存数据状态,常用的显存数据状态确认方案就是录屏、截屏等等。当然如果有其他手段可以直接拿到显存数据也是可以的。

显存输出异常

如果显存状态异常,即花屏在显存阶段就已经存在。

那么需要排查显卡驱动、花屏应用等,确认具体的花屏原因。

显存数据正常

如果显存状态正常,即花屏在上屏链路中引入。

需要排查整个上屏链路:显示器、线缆、中转芯片等等

分辨率异常问题

分辨率异常问题通常是当前显示分辨率和客户期望值不一致。比如客户期望显示1920x1080的分辨率,但是当前显示的分辨率是720x680。分辨率异常问题主要是判断EDID的状态是否正常。

判断EDID状态

EDID状态如何获取在前面章节已经描述,这里不再赘述。

EDID信息正常

1.对应输出口状态为connected

2.EDID信息正常,能解析出分辨率以及*current的分辨率也为期望的分辨率。(Xorg.0.log中没有该*current状态是正常的)

需要进一步排查显示器相关的问题。

EDID信息异常

1.对应输出口状态为disconnected或者未检测到EDID信息。

理论上不会有输出,该情况却有输出需要单独分析排查。

2.EDID信息正常,能解析出分辨率但是没有对应的*current的分辨率。

理论上不会有输出,该情况显示器应该处于关闭状态,如果有输出需要单独分析排查。

3.EDID信息正常,能解析出分辨率,*current的分辨率不为期望分辨率。

需要在设置界面或者使用命令更换分辨率为期望分辨率。

xrandr命令更换分辨率:

output:之后接需要配置分辨率的输出口(以xrandr打印的输出口信息为准)

mode:之后接需要显示的分辨率(必须为xrandr解析出的分辨率)

r:之后接刷新率(必须为xrandr解析出的分辨率)

xrandr --output HDMI-1 --mode 1920x1080 -r 60

4.EDID信息异常,未能解析出期望的分辨率(Xorg.0.log中没有该*current状态是正常的)

没有期望的分辨率信息,那肯定就没办法显示期望的分辨率,显卡是根据检测到的EDID来显示的,需要排查屏幕是否支持该分辨率、中转芯片是否提供了错误的EDID。

规避方案:

EDID信息异常时,可以通过显卡强制输出正确EDID的方式来规避该问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值