掌桥专利:专业的专利平台
掌桥专利
首页

一种嵌入式系统GUI显示方法及装置

文献发布时间:2023-06-19 11:52:33


一种嵌入式系统GUI显示方法及装置

技术领域

本公开涉及图像处理技术领域,尤其涉及一种嵌入式系统GUI显示方法及装置。

背景技术

目前,在嵌入式系统的图形用户界面(Graphical User Interface,简称GUI)显示领域MINI GUI应用得很广泛,MINI GUI是一种开源操作系统Linux图形用户界面支持系统,其具有性能优良、功能丰富等特点,它目前已经广泛应用于通讯、医疗、工控、电子、机顶盒、多媒体等领域。

但是,现有的GUI界面每次变化后,将变化后的这个窗口发送给显示服务器,造成渲染器算力浪费。

即,GUI界面每次变化后,GUI软件都需要将最终生成的整个窗口图像全部发送给显示服务器。显示服务器负责将GUI软件生成的图像和其它图像做叠加后最终送给显示驱动(其它图像是指如解码器解码出的图像、摄像头设备抓取到的图像等等)。即,无论GUI窗口中有多少变化量,都将整个窗口区域提交给合成渲染器进行叠加渲染。但是,实际操作中,窗口图像的变化有时是整体发生变化,但大多数时候只是局部,比如某个按钮的变化(比如当鼠标移动到按钮上时,按钮会高亮显示,这时只有按钮表面的图像会发生变化,而不是整个窗口图像都变)。如图1所示,鼠标箭头从按钮上越过时,按钮发生了两次图像变化,一次从未选中状态到选中状态,第二次是从选中状态到未选中状态,但是按钮以外图像并没有变化。

因此,当运行GUI软件的同时运行一些高计算量的应用,如视频解码的场景下,系统CPU负荷高,解码帧率低,GUI卡顿。如图2所示,只有GUI图形系统有图像变化,需要提交整幅画面,占用时间较长,且由于时间长导致到显示时间点时,显示服务大概率正处于更新图像的过程中,导致丢帧(这个时候不能提交显示因为图像正在生成,如果提交硬件显示画面会撕裂,只能等下个显示时间点到了以后再提交显示)。

发明内容

本公开实施例提供一种嵌入式系统GUI显示方法及装置,能够解决现有技术中GUI界面局部变化时,将变化后的整个窗口发送给显示服务器,而造成的渲染器算力浪费,显示效率低下的问题。所述技术方案如下:

根据本公开实施例的第一方面,提供一种嵌入式系统GUI显示方法,该方法包括:

获取当前变化区域的信息,所述当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和所述GUI界面在内存中的地址;

将所述当前变化区域的信息发送给显示服务器,以使所述显示服务器根据所述当前变化区域的信息更新所述当前变化区域对应的纹理贴图,并将所述当前变化区域和对应的所述纹理贴图进行渲染后发送给显示器进行显示。

本公开实施例提供的嵌入式系统GUI显示方法,首先获取当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;然后将当前变化区域的信息发送给显示服务器,以使显示服务器根据当前变化区域的信息更新当前变化区域对应的纹理贴图,并将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。本公开提供的嵌入式系统GUI显示方法,为显示服务器提供局部更新功能,提高了显示效率,节约了渲染器算力。

在一个实施例中,在所述将所述当前变化区域的信息发送给显示服务器之前,上述方法还包括:

设置所述GUI界面对变化区域的信息相邻两次的提交时间间隔期为M,所述M为所述显示服务器相邻两次显示时间的间隔期;

设置所述GUI界面的提交时间S,并将所述提交时间S发送给所述显示服务器,以使所述显示服务器设置显示时间D,且提交时间S早于显示时间D,间隔期为T,所述T小于所述M;

将所述当前变化区域的信息与前一次提交时间S

所述将所述当前变化区域的信息发送给显示服务器,以使所述显示服务器根据所述当前变化区域的信息更新所述当前变化区域对应的纹理贴图,并将所述当前变化区域和对应的所述纹理贴图进行渲染后发送给显示器进行显示包括:

在当前提交时间S

本公开实施例通过以上方法,在两次更新之间累积每显示两帧之间的GUI图像变化量,然后在进入更新时间点后,将累积的GUI图像变化量用于GUI图像的局部更新,通过这种方式能够将若干次区域变化合并成一次更新,进一步提高了显示效率,节省了显示服务器的算力。

在一个实施例中,上述当前变化区域为矩形区域;

所述将所述当前变化区域的信息与前一次提交时间S

将所述当前变化区域的信息与所述前一次提交时间S

根据本公开实施例的第二方面,提供一种嵌入式系统GUI显示方法,应用于显示服务器,该方法包括:

接收当前变化区域的信息,所述当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和所述GUI界面在内存中的地址;

根据所述当前变化区域的信息,更新所述当前变化区域对应的纹理贴图;

将所述当前变化区域和对应的所述纹理贴图进行渲染后发送给显示器进行显示。

本公开实施例提供的嵌入式系统GUI显示方法,首先接收当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;然后根据当前变化区域的信息,更新当前变化区域对应的纹理贴图;最后将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。本公开提供的嵌入式系统GUI显示方法,为显示服务器提供局部更新功能,提高了显示效率,节约了渲染器算力。

在一个实施例中,上述方法还包括:

获取所述GUI界面的提交时间S;

根据所述提交时间S设置所述显示器的显示时间D,且所述提交时间S早于所述显示时间D,间隔期为T,所述T小于所述显示服务器相邻两次显示时间的间隔期M;

接收当前变化区域集合的信息,所述当前变化区域集合包括至少一个变化区域;

根据所述当前变化区域集合的信息更新所述当前变化区域集合对应的纹理贴图,并将所述当前变化区域集合和对应的所述纹理贴图进行渲染后发送给所述显示器,以使所述显示器在当前显示时间D

本公开实施例通过以上方法,在两次更新之间累积每显示两帧之间的GUI图像变化量,然后在进入更新时间点后,将累积的GUI图像变化量用于GUI图像的局部更新,通过这种方式能够将若干次区域变化合并成一次更新,进一步提高了显示效率,节省了显示服务器的算力。

在一个实施例中,上述方法还包括:

当对所述当前变化区域集合和对应的所述纹理贴图进行渲染的时间大于D

根据本公开实施例的第三方面,提供一种嵌入式系统GUI显示装置,包括:获取模块和第一发送模块;

所述获取模块,用于获取当前变化区域的信息,所述当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和所述GUI界面在内存中的地址;

所述第一发送模块,用于将所述当前变化区域的信息发送给显示服务器,以使所述显示服务器根据所述当前变化区域的信息更新所述当前变化区域对应的纹理贴图,并将所述当前变化区域和对应的所述纹理贴图进行渲染后发送给显示器进行显示。

本公开实施例提供的嵌入式系统GUI显示装置,包括获取模块和第一发送模块;获取模块获取当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;第一发送模块将当前变化区域的信息发送给显示服务器,以使显示服务器根据当前变化区域的信息更新当前变化区域对应的纹理贴图,并将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。本公开提供的嵌入式系统GUI显示装置,为显示服务器提供局部更新功能,提高了显示效率,节约了渲染器算力。

在一个实施例中,上述装置还包括第一设置模块、第二设置模块、合并模块;

所述第一设置模块,用于设置所述GUI界面对变化区域的信息相邻两次的提交时间间隔期为M,所述M为所述显示服务器相邻两次显示时间的间隔期;

所述第二设置模块,用于设置所述GUI界面的提交时间S;

所述合并模块,用于将所述当前变化区域的信息与前一次提交时间S

所述第一发送模块,还用于将所述提交时间S发送给所述显示服务器,以使所述显示服务器设置显示时间D,且提交时间S早于显示时间D,间隔期为T,所述T小于所述M;

所述第一发送模块,还用于在当前提交时间S

本公开实施例通过以上设置,在两次更新之间累积每显示两帧之间的GUI图像变化量,然后在进入更新时间点后,将累积的GUI图像变化量用于GUI图像的局部更新,通过这种方式能够将若干次区域变化合并成一次更新,进一步提高了显示效率,节省了显示服务器的算力。

在一个实施例中,上述当前变化区域为矩形区域;

所述合并模块,具体用于将所述当前变化区域的信息与所述前一次提交时间S

根据本公开实施例的第四方面,提供一种嵌入式系统GUI显示装置,包括:接收模块、更新模块和第二发送模块;

所述接收模块,用于接收当前变化区域的信息,所述当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和所述GUI界面在内存中的地址;

所述更新模块,用于根据所述当前变化区域的信息,更新所述当前变化区域对应的纹理贴图;

所述第二发送模块,用于将所述当前变化区域和对应的所述纹理贴图进行渲染后发送给显示器进行显示。

本公开实施例提供的嵌入式系统GUI显示装置,包括接收模块、更新模块和第二发送模块;接收模块接收当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;更新模块根据当前变化区域的信息,更新当前变化区域对应的纹理贴图;第二发送模块将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。本公开提供的嵌入式系统GUI显示装置,为显示服务器提供局部更新功能,提高了显示效率,节约了渲染器算力。

根据本公开实施例的第五方面,提供一种嵌入式系统GUI显示设备,所述嵌入式系统GUI显示设备包括处理器和存储器,所述存储器中存储有至少一条计算机指令,所述指令由所述处理器加载并执行以实现上述任一项所述的嵌入式系统GUI显示方法中所执行的步骤。

根据本公开实施例的第六方面,提供一种计算机可读存储介质,所述存储介质中存储有至少一条计算机指令,所述指令由处理器加载并执行以实现上述任一项所述的嵌入式系统GUI显示方法中所执行的步骤。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是现有技术中GUI界面变化示意图;

图2是现有技术中全窗口纹理贴图显示的原理示意图;

图3是本公开实施例提供的一种嵌入式系统GUI显示方法的流程图;

图4是本公开实施例提供的一种嵌入式系统GUI显示方法的流程图;

图5是本公开实施例提供的一种嵌入式系统GUI显示方法的流程图;

图6是本公开实施例提供的局部纹理贴图显示的原理示意图;

图7是本公开实施例提供的局部纹理贴图显示丢帧的原理示意图;

图8是本公开实施例提供的一种嵌入式系统GUI显示装置的结构示意图;

图9是本公开实施例提供的一种嵌入式系统GUI显示装置的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例提供一种嵌入式系统GUI显示方法,如图3所示,该嵌入式系统GUI显示方法包括以下步骤:

步骤101、获取当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;

具体的,当前变化区域在GUI界面中的位置信息可以是GUI界面内的坐标和尺寸。

步骤102、将当前变化区域的信息发送给显示服务器,以使显示服务器根据当前变化区域的信息更新当前变化区域对应的纹理贴图,并将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。

实际使用中,显示服务器根据图像在内存中的地址和坐标,定位到图像在内存中的位置,更新GUI图层对应的纹理贴图,将当前所有需要渲染的图层(含GUI图层)渲染到帧缓冲FrameBuffer上,然后将FrameBuffer图像的地址通知给显示器,由显示器通过直接存储器访问DMA从内存中读取Framebuf fer并显示。

在一个实施例中,在将当前变化区域的信息发送给显示服务器之前,上述方法还包括:

设置GUI界面对变化区域的信息相邻两次的提交时间间隔期为M,M为显示服务器相邻两次显示时间的间隔期;

设置GUI界面的提交时间S,并将提交时间S发送给显示服务器,以使显示服务器设置显示时间D,且提交时间S早于显示时间D,间隔期为T,T小于M;

将当前变化区域的信息与前一次提交时间S

将当前变化区域的信息发送给显示服务器,以使显示服务器根据当前变化区域的信息更新当前变化区域对应的纹理贴图,并将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示包括:

在当前提交时间S

本公开实施例通过以上方法,在两次更新之间累积每显示两帧之间的GUI图像变化量,然后在进入更新时间点后,将累积的GUI图像变化量用于GUI图像的局部更新,通过这种方式能够将若干次区域变化合并成一次更新,进一步提高了显示效率,节省了显示服务器的算力。

在一个实施例中,上述当前变化区域为矩形区域;

将当前变化区域的信息与前一次提交时间S

将当前变化区域的信息与前一次提交时间S

具体的,当前变化区域在GUI界面中的位置信息是GUI界面内矩形的左上角坐标和尺寸。

本公开实施例提供的嵌入式系统GUI显示方法,首先获取当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;然后将当前变化区域的信息发送给显示服务器,以使显示服务器根据当前变化区域的信息更新当前变化区域对应的纹理贴图,并将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。本公开提供的嵌入式系统GUI显示方法,为显示服务器提供局部更新功能,提高了显示效率,节约了渲染器算力。

基于上述图3对应的实施例提供的嵌入式系统GUI显示方法,本公开另一实施例提出了一种嵌入式系统GUI显示方法,如图4所示,包括以下步骤:

步骤201、接收当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;

步骤202、根据当前变化区域的信息,更新当前变化区域对应的纹理贴图;

步骤203、将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。

在一个实施例中,上述方法还包括:

获取GUI界面的提交时间S;

根据提交时间S设置显示器的显示时间D,且提交时间S早于显示时间D,间隔期为T,T小于显示服务器相邻两次显示时间的间隔期M;

接收当前变化区域集合的信息,当前变化区域集合包括至少一个变化区域;

根据当前变化区域集合的信息更新当前变化区域集合对应的纹理贴图,并将当前变化区域集合和对应的纹理贴图进行渲染后发送给显示器,以使显示器在当前显示时间D

本公开实施例通过以上方法,在两次更新之间累积每显示两帧之间的GUI图像变化量,然后在进入更新时间点后,将累积的GUI图像变化量用于GUI图像的局部更新,通过这种方式能够将若干次区域变化合并成一次更新,进一步提高了显示效率,节省了显示服务器的算力。

在一个实施例中,上述方法还包括:

当对当前变化区域集合和对应的纹理贴图进行渲染的时间大于D

本公开实施例提供的嵌入式系统GUI显示方法,首先接收当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;然后根据当前变化区域的信息,更新当前变化区域对应的纹理贴图;最后将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。本公开提供的嵌入式系统GUI显示方法,为显示服务器提供局部更新功能,提高了显示效率,节约了渲染器算力。

基于上述图3和图4对应的实施例提供的嵌入式系统GUI显示方法,本公开另一实施例提出了一种嵌入式系统GUI显示方法,如图5所示,包括以下步骤:

步骤301、按照显示服务器显示的频率设定一个提交周期定时器。

步骤302、设置一个变化区域集合。

具体的,变化区域集合为一系列矩形的左上角坐标和尺寸。

步骤303、当GUI界面发生变化时,将变化矩形区域与当前变化区域集合做并集操作,并将并后的集合划分为最少数量且无交集的矩形区域。

需要说明的是,区域集合并根据现有的算法进行。

步骤304、当提交周期到时,将变化区域集合所含矩形区域列表通知给显示服务器。显示服务器根据图像在内存中的地址和矩形的左上角坐标,定位到图像在内存中的位置,更新GUI图层对应的纹理贴图。GUI清空变化区域集合。

步骤305、当显示周期到时,显示服务器将当前所有需要渲染的图层(含GUI图层)渲染到FrameBuffer上,然后将FrameBuffer图像的地址通知给硬件(显示控制器),由显示控制器通过DMA从内存中读取Framebuffer并显示。

实际使用中,显示时间点由软件预估。软件预估一个GUI纹理加载渲染时长T,该时长小于帧显示间隔,显示时间点定于GUI提交时间点向后推T的时间点。

一般情况下,如图6所示,GUI提交时间点到后,显示服务器加载GUI纹理贴图的实际时间记为T1,T1小于T,GUI显示延迟为T1–T。T1–T远小于帧显示周期,即延迟小于一帧周期,是人眼感受不到的。

在极端情况下,如图7所示,GUI提交时间点到后,显示服务器加载GUI纹理贴图的实际时间记为T2,T2大于T,即当GUI大数据量更新图像(如全窗口内容发生变化或这个周期内发生非常多次数的局部更新的情况),这种情况下显示丢帧,即,到下个显示周期来到后再提交显示控制器显示。实际应用下测试,这种情况较少发生,偶尔丢一帧不影响使用,而且下次显示时会显示最新GUI状态。

基于上述图3、图4和图5对应的实施例中所描述的嵌入式系统GUI显示方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。

本公开实施例提供一种嵌入式系统GUI显示装置,如图8所示,包括:获取模块401和第一发送模块402;

获取模块401,用于获取当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;

第一发送模块402,用于将当前变化区域的信息发送给显示服务器,以使显示服务器根据当前变化区域的信息更新当前变化区域对应的纹理贴图,并将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。

本公开实施例提供的嵌入式系统GUI显示装置,包括获取模块401和第一发送模块402;获取模块401获取当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;第一发送模块402将当前变化区域的信息发送给显示服务器,以使显示服务器根据当前变化区域的信息更新当前变化区域对应的纹理贴图,并将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。本公开提供的嵌入式系统GUI显示装置,为显示服务器提供局部更新功能,提高了显示效率,节约了渲染器算力。

在一个实施例中,上述装置还包括第一设置模块403、第二设置模块404、合并模块405;

第一设置模块403,用于设置GUI界面对变化区域的信息相邻两次的提交时间间隔期为M,M为显示服务器相邻两次显示时间的间隔期;

第二设置模块404,用于设置GUI界面的提交时间S;

合并模块405,用于将当前变化区域的信息与前一次提交时间S

第一发送模块402,还用于将提交时间S发送给显示服务器,以使显示服务器设置显示时间D,且提交时间S早于显示时间D,间隔期为T,T小于M;

第一发送模块402,还用于在当前提交时间S

本公开实施例通过以上设置,在两次更新之间累积每显示两帧之间的GUI图像变化量,然后在进入更新时间点后,将累积的GUI图像变化量用于GUI图像的局部更新,通过这种方式能够将若干次区域变化合并成一次更新,进一步提高了显示效率,节省了显示服务器的算力。

在一个实施例中,上述当前变化区域为矩形区域;

合并模块,具体用于将当前变化区域的信息与前一次提交时间S

基于上述图3、图4和图5对应的实施例中所描述的嵌入式系统GUI显示方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。

本公开实施例提供一种嵌入式系统GUI显示装置,如图9所示,包括:接收模块501、更新模块502和第二发送模块503;

接收模块501,用于接收当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;

更新模块502,用于根据当前变化区域的信息,更新当前变化区域对应的纹理贴图;

第二发送模块503,用于将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。

本公开实施例提供的嵌入式系统GUI显示装置,包括接收模块501、更新模块502和第二发送模块503;接收模块501接收当前变化区域的信息,当前变化区域的信息包括当前图形用户界面GUI相对于前一GUI界面发生变化的区域在GUI界面中的位置信息和GUI界面在内存中的地址;更新模块502根据当前变化区域的信息,更新当前变化区域对应的纹理贴图;第二发送模块503将当前变化区域和对应的纹理贴图进行渲染后发送给显示器进行显示。本公开提供的嵌入式系统GUI显示装置,为显示服务器提供局部更新功能,提高了显示效率,节约了渲染器算力。

基于上述图3、图4和图5对应的实施例中描述的嵌入式系统GUI显示方法,本公开另一实施例还提供一种嵌入式系统GUI显示设备,该嵌入式系统GUI显示设备包括处理器和存储器,存储器中存储有至少一条计算机指令,该指令由处理器加载并执行以实现上述图3、图4和图5对应的实施例中所描述的嵌入式系统GUI显示方法。

基于上述图3、图4和图5对应的实施例中所描述的嵌入式系统GUI显示方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:Read Only Memory,ROM)、随机存取存储器(英文:Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有至少一条计算机指令,用于执行上述图3、图4和图5对应的实施例中所描述的嵌入式系统GUI显示方法,此处不再赘述。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

相关技术
  • 一种嵌入式系统GUI显示方法及装置
  • 信息处理装置、设置GUI显示方法和图像摄取装置
技术分类

06120113084383