一种实现显卡输出口热插拔的方法及相应装置制造方法及图纸

技术编号:29083551 阅读:23 留言:0更新日期:2021-06-30 09:45
本申请实施例提供了一种实现显卡输出口热插拔的方法及相应装置,方法包括:通过内核态线程定期读取显卡上各输出口对应的扩展显示器识别数据EDID,并在确定所述EDID有效且不同于上一周期读取的同一输出口的EDID时,向用户态程序上报第一热插拔事件;根据所述第一热插拔事件,通过用户态程序将对应输出口的当前状态由未连接状态更改为连接状态,并根据当前状态配置所述对应输出口进行信号输出。该方法不需要关注输出口是否支持HPD,不用区分输出口的类型,可以兼容所有类型的输出接口,可以灵活通用;此外,EDID读取及对比的过程由内核态线程完成,内核在完成上述任务的同时,仍然可以完成其他的工作,不会被数据读取所阻塞,进而提高读取效率。进而提高读取效率。进而提高读取效率。

【技术实现步骤摘要】
一种实现显卡输出口热插拔的方法及相应装置


[0001]本申请涉及显卡驱动
,具体地,涉及一种实现显卡输出口热插拔的方法及相应装置。

技术介绍

[0002]在日常生活中,常常出现由于显示器连接线松动、切换其他显示器或者需要搬动显示器等原因造成显示器与显卡断开连接的情况,若不想关闭设备造成现有任务中断,则需要显卡能支持热插拔功能,实现即插即用。
[0003]现有技术中,HDMI(High Definition Multimedia Interface,高清多媒体接口)、DVI(Digital Visual Interface,数字视频接口)可支持HPD(Hot Plug Detect,热插拔检测),显卡可通过检测显示器HDMI/DVI的HPD引脚的电平变化,判断显卡上对应输出口是否有显示器接入。如当检测到HPD引脚由低电平变化为高电平,认为对应的输出口有显示器接入,当检测到HPD引脚由高电平变化为低电平,认为对应的输出口与显示器断开连接。
[0004]但除HDMI/DVI外的其他非数字信号输出接口不支持HPD,如VGA(Video Graphics Array,视频图形阵列)接口,需要单独通过其他方式实现热插拔。

技术实现思路

[0005]本申请实施例提供一种实现显卡输出口热插拔的方法及相应装置,以解决因显卡及显示器的硬件接口不支持HPD,需要额外对非数字信号输出接口进行其他处理的技术问题。
[0006]根据本申请实施例的第一个方面,提供了一种实现显卡输出口热插拔的方法,包括:通过内核态线程定期读取显卡上各输出口对应的扩展显示器识别数据EDID,并在确定所述EDID有效且不同于上一周期读取的同一输出口的EDID时,向用户态程序上报第一热插拔事件;根据所述第一热插拔事件,通过用户态程序将对应输出口的当前状态由未连接状态更改为连接状态,并根据当前状态配置所述对应输出口进行信号输出。
[0007]根据本申请实施例的第二个方面,提供了一种实现显卡输出口热插拔的装置,包括:EDID读取模块,用于通过内核态线程定期读取显卡上各输出口对应的扩展显示器识别数据EDID,并在确定所述EDID有效且不同于上一周期读取的同一输出口的EDID时,向用户态程序上报第一热插拔事件;热插拔配置模块,用于根据所述第一热插拔事件,通过用户态程序将对应输出口的当前状态由未连接状态更改为连接状态,并根据当前状态配置所述对应输出口进行信号输出。
[0008]根据本申请实施例的第三个方面,提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一个方面所述的方法。
[0009]根据本申请实施例的第四个方面,提供了一种电子设备,包括:处理器、存储器和显卡,其中,所述处理器用于执行所述存储器中存储的计算机程序指令,所述处理器执行所述计算机程序指令时执行如第一个方面所述的方法。
[0010]在上述技术方案中,内核态线程定时获取显卡上各个输出口对应的EDID,通过对EDID进行有效性检测以及与上一周期的EDID进行对比,确定对应输出口是否出现显示器接入的热插拔事件,若是,则将热插拔事件通知到用户态程序,由用户态程序更改该输出口的状态,并完成相应的信号输出配置,从而实现显卡输出口的热插拔。该方法不需要关注输出口是否支持HPD,且不用区分输出口的类型,可以兼容所有类型的输出接口,做到灵活通用,解决了因显卡及显示器的硬件接口不支持HPD,需要额外对非数字信号输出接口进行其他处理的技术问题,此外,EDID读取及对比的过程由内核态线程完成,内核在完成上述任务的同时,仍然可以完成其他的工作,不会被数据读取所阻塞,进而提高读取效率。
附图说明
[0011]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0012]图1示出了本申请实施例提供的实现显卡输出口热插拔的方法的流程图;
[0013]图2示出了本申请实施例提供的实现显卡输出口热插拔的方法的另一流程图;
[0014]图3示出了本申请实施例提供的实现显卡输出口热插拔的装置的示意图;
[0015]图4示出了本申请实施例提供的电子设备的示意图。
具体实施方式
[0016]以下结合附图对本申请的示例性实施例进行详细说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0017]图1至图2示出了本申请实施例提供的实现显卡输出口热插拔的方法的流程图。其中,图1描述该方法中显示器接入显卡时的热插拔过程,如图1所示,该方法包括:
[0018]步骤S110:内核态线程定期读取显卡上各输出口对应的EDID。
[0019]本实施例中,显卡可能是独立显卡,也可能是其他类型的显卡。
[0020]显卡设有I2C(Inter

Integrated Circuit,集成电路总线)接口,I2C接口包括多个I2C通道,内核态线程按照预定的周期从显卡的I2C通道读取显卡上各个输出口对应的EDID(Extended display identification data,扩展显示器识别数据)。
[0021]步骤S120:内核态线程判断EDID是否有效,若有效,跳转执行步骤S121。
[0022]步骤S121:内核态线程判断EDID是否与上一周期读取的同一输出口的EDID相同,若不相同,跳转执行步骤S130。
[0023]步骤S130:内核态线程向用户态程序上报第一热插拔事件。
[0024]步骤S140:用户态程序根据第一热插拔事件,将对应输出口的当前状态由未连接状态更改为连接状态,并根据当前状态配置该对应输出口进行信号输出。
[0025]下文对上述步骤S110~步骤S140的具体实施方式进行详细说明。
[0026]在步骤S110之前,该方法还包括:在内核空间中创建线程,该线程运行于内核态;利用内核uevent机制在用户态程序中注册热插拔的上报事件。其中,用户态程序可以为Xorg。在注册上报事件后,Xorg等待内核上报消息。内核态线程定时读取各输出口的EDID,以检测出第一热插拔事件,并定时通过uevent通信将第一热插拔事件自动上报至Xorg。
[0027]步骤S110中,内核态线程读取显卡上各输出口对应的EDID,包括:确定显卡的多个I2C通道中的配置通道,从确定的配置通道中读取显卡上各输出口对应的EDID。
[0028]内核态线程根据显卡的配置文件确定显卡上的多个I2C通道中的配置通道,仅从配置通道读取EDID,不需要遍历整个I2C接口的所有通道,可以有效减少耗时。此外,内核支持多任务,在内核态线程读取EDID时,内核仍可以完成其他工作,并不会被I2C通道的数据读取阻塞,进而提高读取效率。
[0029本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种实现显卡输出口热插拔的方法,其特征在于,包括:通过内核态线程定期读取显卡上各输出口对应的扩展显示器识别数据EDID,并在确定所述EDID有效且不同于上一周期读取的同一输出口的EDID时,向用户态程序上报第一热插拔事件;根据所述第一热插拔事件,通过用户态程序将对应输出口的当前状态由未连接状态更改为连接状态,并根据当前状态配置所述对应输出口进行信号输出。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在未读取到所述输出口对应的EDID或确定所述输出口对应的EDID无效,且所述输出口在上一周期时的状态为连接状态时,向用户态程序上报第二热插拔事件;根据所述第二热插拔事件,通过用户态程序将对应输出口的当前状态由连接状态更改为未连接状态,并根据当前状态配置所述对应输出口不进行信号输出。3.根据权利要求1或2所述的方法,其特征在于,在读取显卡上各输出口对应的EDID之后,所述方法包括:检测所述EDID是否为错误值;若所述EDID为错误值,则确定所述EDID无效。4.根据权利要求1所述的方法,其特征在于,所述读取显卡上各输出口对应的EDID,包括:确定显卡的多个集成电路总线I2C通道中的配置通道,其中,所述配置通道是根据显卡的配置文件确定;从所述配置通道中读取显卡上各输出口对应的EDID。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:在内核空间中创建内核态线程,并利用内核uevent机制在用户态程序中注册热插拔的上报...

【专利技术属性】
技术研发人员:廖军
申请(专利权)人:长沙景美集成电路设计有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1