wayland图形显示环境下管理显示缓存的方法及系统与流程

文档序号:31704479发布日期:2022-10-01 10:14阅读:226来源:国知局
wayland图形显示环境下管理显示缓存的方法及系统与流程

1.本发明涉及计算机图形领域,尤其涉及一种wayland图形显示环境下管理显示缓存的方法及系统。


背景技术:

2.wayland是一种图形显示协议(protocol),wayland协议将一个图形系统分为客户端(client)和合成器(compositor)。client和compositor通过wayland协议进行通信。
3.如图1所示,当前kwin集成环境下,在获取显示数据过程中,wayland的客户端渲染完成并提交显示缓存后,需要等待交换缓存信号才能进行下一帧的渲染。由于gpu渲染完成后需要等待交换缓存信号,且交换缓存信号经常会出现阻塞的情况,在高gpu负载场景及进行图形显示性能测试时就成为了图形渲染的瓶颈,gpu没有满负荷运行,有很大的负载空闲,没有完全发挥gpu性能,严重影响了高gpu负载下用户体验以及图形显示性能数据指标。因此,如何优化高gpu负载下用户体验以及图形显示性能指标,是当前面临的一个重要的难题。
4.专利cn113448662a提供一种窗口图像显示方法、设备及存储介质,应用于基于wayland协议创建的客户端和服务端,所述方法包括:所述客户端响应于接收到的用于请求图像显示的输入事件,生成窗口对象;所述客户端生成与所述窗口对象对应的窗口表面,所述窗口表面为含有待渲染图像的框架模型;基于所述窗口表面,所述客户端对所述待渲染图像进行渲染,并缓存在预设内存中;所述服务端从所述预设内存中读取渲染后的图像,对所述渲染后的图像进行合成,并将合成的图像发送至终端进行显示。解决现有技术无法克服窗口图像的渲染显示速度慢的问题,进而提高用户体验。但是该方法还是基于现有wayland图形显示机制,即gpu渲染完成后需要等待交换缓存信号,导致gpu出现负载空闲,没有完全发挥gpu性能,从而无法提升图形显示性能。


技术实现要素:

5.本发明要解决的技术问题:针对现有技术的上述问题,提供一种wayland图形显示环境下管理显示缓存的方法及系统,gpu渲染完成后不再需要等待交换缓存信号,保证gpu一直处于高负载状态下,从而充分发挥gpu性能,提升图形显示性能。
6.为了解决上述技术问题,本发明采用的技术方案为:一种wayland图形显示环境下管理显示缓存的方法,包括以下步骤:s1:客户端渲染当前帧显示内容,将对应的渲染数据提交到显示缓存,并通知服务端;s2:服务端获取所述显示缓存的控制权,启动合成器;s3:所述合成器锁定所述显示缓存,以禁止客户端对显示缓存的访问;s4:所述合成器从所述显示缓存中提取当前帧显示内容的渲染数据,提取完成后,解除锁定;
s5:服务端释放所述显示缓存的控制权,并通知客户端,返回步骤s1,直到客户端结束渲染。
7.进一步的,步骤s1中,通知服务端具体为:客户端调用目标函数通知服务端显示缓存内容已经更新。
8.进一步的,所述目标函数为wl_display_dispatch函数。
9.进一步的,步骤s2中,服务端获取所述显示缓存的控制权之前还包括:所述服务端向所述显示缓存发送commit信号请求并等待,直到获取显示缓存的commit信号,然后执行服务端获取所述显示缓存的控制权的步骤。
10.进一步的,获取显示缓存的commit信号之前,若等待超时,所述服务端重新向所述显示缓存发送commit信号请求,并记录重发次数,若重发次数达到预设阈值,提示报错并退出。
11.进一步的,步骤s3锁定所述显示缓存具体为:对显示缓存进行加锁操作,限制客户端的访问权限。
12.本发明还提出一种图形系统,包括客户端和服务端,所述客户端和服务端通过wayland协议通信,其中:所述客户端用于渲染当前帧显示内容,将对应的渲染数据提交到显示缓存,并通知服务端;所述服务端用于获取所述显示缓存的控制权,启动合成器,用所述合成器锁定所述显示缓存,以禁止客户端对显示缓存的访问,然后用所述合成器从所述显示缓存中提取当前帧显示内容的渲染数据,提取完成后,解除锁定并释放所述显示缓存的控制权。
13.进一步的,通知服务端时,所述客户端调用目标函数通知服务端显示缓存内容已经更新。
14.进一步的,获取所述显示缓存的控制权之前,所述服务端向所述显示缓存发送commit信号请求并等待,直到获取显示缓存的commit信号。
15.进一步的,锁定所述显示缓存时,所述服务端用合成器对显示缓存进行加锁操作,限制客户端的访问权限。
16.和现有技术相比,本发明具有下述优点:本发明在合成器提取显示缓存中数据的时间段之内,锁定显示缓存并禁止客户端对于显示缓存的访问,提取数据之后,锁定即解除,客户端可以直接继续对下一帧开始渲染,而不需要在提取数据之后还继续等待交换缓存信号,从而避免gpu渲染过程中出现负载空闲,保证gpu一直处于高负载状态下,使得gpu性能充分发挥,提升了图形显示性能,从而优化了用户体验。
附图说明
17.图1为当前wayland图形显示环境下管理显示缓存的流程图。
18.图2为本发明实施例的方法流程图。
19.图3为本发明实施例的方法与现有方法的性能对比图。
具体实施方式
20.以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
21.在现有技术中,由于显示缓存不存在写保护的机制,显示缓存中的原始内容被破坏,将导致出现画面撕裂的现象,为了避免上述情况的发生,服务端释放显示缓存的控制权,让客户端渲染下一帧的显示内容之前,要等待交换缓存信号,但是交换缓存信号经常出现阻塞情况,导致等待时间较长,这种情况下,我们考虑为显示缓存配置写保护机制,即从显示缓存中提取数据时,禁止显示缓存被写入新的数据,当数据提取完成后,再允许显示缓存被写入新的数据,从而就不需要长时间的等待交换缓存信号。
22.根据上述的构思,如图2所示,本实施例提出一种wayland图形显示环境下管理显示缓存的方法,包括以下步骤:s1:客户端渲染当前帧显示内容,将对应的渲染数据提交到显示缓存,并通知服务端,当前帧显示内容的渲染数据为客户端绘制的图像纹理;s2:服务端获取所述显示缓存的控制权,启动合成器;s3:所述合成器锁定所述显示缓存,以禁止客户端对显示缓存的访问;s4:所述合成器从所述显示缓存中提取当前帧显示内容的渲染数据,提取完成后,解除锁定;s5:服务端释放所述显示缓存的控制权,并通知客户端,返回步骤s1,直到客户端结束渲染。
23.通过上述步骤,本实施例在合成器提取显示缓存中数据的时间段之内,锁定显示缓存以禁止客户端对于显示缓存的访问,提取数据之后,锁定即解除,客户端可以直接继续对下一帧开始渲染,而不需要在提取数据之后还继续等待交换缓存信号,从而避免gpu渲染过程中出现负载空闲,保证gpu一直处于高负载状态下,使得gpu性能充分发挥,提升了图形显示性能从而优化了用户体验。
24.本实施例的步骤s1中,通知服务端具体为:客户端调用wl_display_dispatch函数,通知服务端显示缓存内容已经更新,以准备好所要绘制的数据。
25.本实施例的步骤s2中,服务端收到显示缓存的commit信号后,合成器开始准备合成工作。因此,服务端获取所述显示缓存的控制权之前还包括:所述服务端向所述显示缓存发送commit信号请求并等待,直到获取显示缓存的commit信号,然后执行服务端获取所述显示缓存的控制权的步骤。
26.实际情况中,可能存在通信故障,因此本实施例中,获取显示缓存的commit信号之前,若等待超时,所述服务端重新向所述显示缓存发送commit信号请求,并记录重发次数,若重发次数达到预设阈值,提示报错并退出,通过重复发送请求的方式,避免因本次请求未响应,导致整个流程被挂起无法继续,同时,为重复请求设置阈值,以避免出现死循环。
27.本实施例中的步骤s3中,锁定所述显示缓存具体为:对显示缓存进行加锁操作,限制客户端的访问权限,客户端等待wl_buffer的 release接口。
28.本实施例的步骤s4中,合成器从所述显示缓存中提取当前帧显示内容的渲染数据,以提供后续合成工作的数据源,提取完成后,通过调用wl_buffer的release接口释放对显示缓存的锁定,即在合成器提取纹理的时间段对显示缓存进行锁定,使得客户端无法访
问,避免显示缓存中的数据被破坏而导致画面撕裂。
29.本实施例的步骤s5中,服务端在对所述显示缓存的锁定解除时一并释放显示缓存控制权,并通过wl_buffer的release接口通知客户端,然后客户端可立即渲染下一帧显示内容,相比于等待交换缓存信号,显著加速了下一帧显示内容的绘制。
30.综上所述,本实施例的方法通过改变显示缓存接管的方式,合成器提取数据的过程中一并锁定显示缓存,合成器从显示缓存提取完数据后,就解除锁定并释放显示缓存,使得在不需要等待交换缓存信号的情况下,客户端可立即渲染下一帧显示内容,从而加速下一帧显示内容的绘制,大幅提高了客户端对显示内容的渲染效率。经验证,在同平台的高gpu负载应用场景中,在某显卡及某系统上测试得到的性能提升对比结果如图3所示,图中纵坐标表示图形测试软件的测试分数,可见在保证兼容的前提下,采用本实施例的方法时, glmark2/unixbench 2d等图形性能测试工具所获取的测试结果同比现有方法高出50%以上。
31.基于本实施例的方法,本实施例还提出一种图形系统,包括客户端和服务端,所述客户端和服务端通过wayland协议通信,其中:所述客户端用于渲染当前帧显示内容,将对应的渲染数据提交到显示缓存,并通知服务端;所述服务端用于获取所述显示缓存的控制权,启动合成器,用所述合成器锁定所述显示缓存,以禁止客户端对显示缓存的访问,然后用所述合成器从所述显示缓存中提取当前帧显示内容的渲染数据,提取完成后,解除锁定并释放所述显示缓存的控制权。
32.本实施例中,通知服务端时,所述客户端调用目标函数通知服务端显示缓存内容已经更新。
33.本实施例中,获取所述显示缓存的控制权之前,所述服务端向所述显示缓存发送commit信号请求并等待,直到获取显示缓存的commit信号。
34.本实施例中,锁定所述显示缓存时,所述服务端用合成器对显示缓存进行加锁操作,限制客户端的访问权限。
35.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使
得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
36.以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1