CN113066450B - 图像显示方法,装置,电子设备及存储介质 - Google Patents
图像显示方法,装置,电子设备及存储介质 Download PDFInfo
- Publication number
- CN113066450B CN113066450B CN202110279203.9A CN202110279203A CN113066450B CN 113066450 B CN113066450 B CN 113066450B CN 202110279203 A CN202110279203 A CN 202110279203A CN 113066450 B CN113066450 B CN 113066450B
- Authority
- CN
- China
- Prior art keywords
- frame memory
- shadow
- updating
- update
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
Abstract
本申请实施例中提供了一种图像显示方法,装置,电子设备及存储介质,该方法包括:获取绘制帧存的更新状态;在确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;将绘制帧存中的数据更新至所述更新帧存中;显示所述目标影子帧存中的数据。在每次更新状态满足预设要求时,显示的目标影子帧存发生变化,将绘制帧存中的数据写入与目标影子帧存不同的影子帧存中,以确保在绘制帧存固定时,显示的画面不会出现撕裂现象。
Description
技术领域
本申请涉及图像显示技术领域,具体地,涉及一种图像显示方法,装置,电子设备及存储介质。
背景技术
图形处理器将帧存里面的图像扫描到输出到显示器时,如果帧存中的图像发生改变则会产生撕裂现象,即显示器上的内容一部分是改变前的图像,另一个部分是改变后图像,动态画面则更统容易出现撕裂现象。
通常,可以使用至少3个帧存,根据时间顺序依次循环切换,交替作为显示帧存和绘制帧存,来达到消除画面撕裂的目的。在这种方式中,绘制帧存的地址是变化的,而在Linux的Xorg桌面系统中,绘制帧存是固定的,因此,在Xorg桌面系统中,难以解决出现画面撕裂的情况。
发明内容
本申请实施例中提供了一种图像显示方法,装置,电子设备及存储介质,可以有效解决在Xorg桌面系统中出现画面撕裂的问题。
根据本申请实施例的第一个方面,提供了一种图像显示方法,该方法包括:获取绘制帧存的更新状态;当确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;将绘制帧存中的数据更新至所述更新帧存;显示所述目标影子帧存中的数据。
根据本申请实施例的第二个方面,提供了一种图像显示装置,该装置包括:获取模块,用于获取绘制帧存的更新状态;确定模块,用于当确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;更新模块,用于将绘制帧存中的数据更新至所述更新帧存;显示模块,用于显示所述目标影子帧存中的数据。
根据本申请实施例的第三个方面,提供了一种电子设备,该电子设备包括一个或多个图形处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个图形处理器执行,所述一个或多个程序配置用于执行如上述应用于电子设备的方法。
根据本申请实施例的第四个方面,本申请实施列提供一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码运行时执行上述的方法。
采用本申请实施例中提供的图像显示方法,获取绘制帧存的更新状态;在确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;将绘制帧存中的数据更新至所述更新帧存中;显示所述目标影子帧存中的数据。在每次更新状态满足预设要求时,显示的目标影子帧存发生变化,将绘制帧存中的数据写入与目标影子帧存不同的影子帧存中,以确保在绘制帧存固定时,显示的画面不会出现撕裂现象。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的图像显示方法的原理图;
图2为本申请一个实施例提供的图像显示方法的流程图;
图3为本申请另一个实施例提供的图像显示方法的流程图;
图4为在图3所提供的实施例的基础上提供的图像显示方法的部分步骤的流程图;
图5为本申请再一个实施例提供的图像显示方法的流程图;
图6为本申请还一个实施例提供的图像显示方法的流程图;
图7为本申请一个实施例提供的图像显示装置的功能模块图;
图8为本申请实施例提出的用于执行根据本申请实施例的图像显示方法的电子设备的结构框图。
具体实施方式
图形处理器通常具备图形的绘制和显示功能,可以是将帧存里面的图像扫描到输出到显示器进行显示。在将帧存里的图像扫描输出到显示器时,如果帧存图像发生改变则会产生撕裂现场,即显示器上的内容一部分是改变前的图像,另一个部分是改变后图像,动态画面则更统容易出现撕裂现象。
通常,可以使用至少3个帧存,根据时间顺序依次循环切换,交替作为显示帧存和绘制帧存,来达到消除画面撕裂的目的。这种方式下,显示帧存的地址和绘制帧存的地址都会发生变化。
在Linux的Xorg桌面系统中,仍然会出现图像撕裂的情况,发明人在研究中发现,Xorg桌面系统的绘制帧存是固定的,因此,这种方式并不适用于Xorg桌面系统,难以解决Xorg桌面系统中的图像撕裂的问题。并且,Xorg桌面具有多路图形输出的情况,如在复制显示模式、扩展显示模式下,使用多个阴极射线管显示控制器(Cathode Ray TubeController,CRTC)扫描同一片帧存。各个CRTC的刷新率不同时,实际的效果将变为每个CRRT的显示更新频率会因为互斥锁而拖慢为最慢的那个刷新率。
针对上述问题,本申请实施例中提供了一种图像显示方法,获取绘制帧存的更新状态;在确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;将绘制帧存中的数据更新至所述更新帧存中;显示所述目标影子帧存中的数据。在每次更新状态满足预设要求时,显示的目标影子帧存发生变化,将绘制帧存中的数据写入与目标影子帧存不同的影子帧存中,以确保在绘制帧存固定时,显示的画面不会出现撕裂现象。
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
请参阅图1,本申请实施例提供的图像显示方法的原理图。Xorg为Linux的桌面系统,为CRTC分配三个影子帧存,分别为影子帧存0,影子帧存1以及影子帧存2,以S0指代影子帧存0,以S1指代影子帧存1,以S2指代影子帧存2。其中,影子帧存可以理解为在显示帧存中分出的多个帧存。Xorg桌面系统可以对绘制帧存进行读写,每次写入数据至绘制帧存后,可以将绘制帧存的数据更新至影子帧存中。CRTC可以扫描影子帧存,得到影子帧存中的数据,发送到显示器进行显示,同时,可以将绘制帧存中的数据更新至影子帧存中。在本申请实施例中,在进行多路图像输出时,可以为每个CRTC分配三个影子帧存,由于每个CRTC都是独立的,从而不会影响到多路图像的输出。
请参阅图2,本申请实施例提供了一种图像显示方法,基于前述的原理图进行具体描述,具体的该方法可以包括以下步骤。
步骤110,获取绘制帧存的更新状态。
在Linux的Xorg桌面系统中,容易出现画面撕裂的情况。Xorg桌面系统可以在固定的绘制帧存上进行读写。从而,可以获取到绘制帧存的更新状态,所述绘制帧存的更新状态可以是正在更新,被修改等。在所述Xorg桌面系统向绘制帧存写入数据时,可以认为所述绘制帧存的更新状态为正在更新。
在一些实施方式中,可以实时检测绘制帧存的更新状态,可以是在绘制帧存有数据写入时,将绘制帧存的状态标记为正在更新,在数据写入完毕时,可以清除掉表示绘制帧存正在更新的标记。从而,可以根据标记确定绘制帧存的更新状态,若存在表示绘制帧存正在更新的标记,表明绘制帧存正在更新。
步骤120,当确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存。
在获取到所述绘制帧存的更新状态后,可以根据所述更新状态确定是否满足预设要求,在所述更新状态满足所述预设要求时,可以从多个影子帧存中确定出目标影子帧存和更新帧存。
在一些实施方式中,可以是在所述绘制帧存的更新状态为正在更新,且当前时间与影子帧存的上次更新时间的间隔大于或等于一个场同步周期时,确定满足所述预设要求。
在另一些实施方式中,可以设置定时器,所述定时器按照场同步周期固定触发,在同时满足定时器触发,当前时间与影子帧存的上次更新时间的间隔是否大于或等于一个场同步周期,且所述绘制帧存的更新状态不为正在更新时,确定满足所述预设要求。
在所述更新状态满足所述预设要求时,可以从多个影子帧存中确定出目标影子帧存和更新帧存。在任意时刻,所述目标影子帧存和更新帧存都为不同的影子帧存。如图1所示出的三个影子帧存分别以S0,S1和S2指代,目标影子帧存为S0时,更新帧存可以是S2,目标影子帧存为S1时,更新帧存可以是S0。
作为一种实施方式,可以设置有当前显示帧存标记,获取当前显示帧存标记所指向的影子帧存为目标影子帧存。其中,所述当前显示帧存标记按照预设顺序依次循环递增;按照所述预设顺序确定所述目标影子帧存的前一个影子帧存为所述更新帧存。
步骤130,将绘制帧存中的数据更新至所述更新帧存。
步骤140,显示所述目标影子帧存中的数据。
在确定所述目标影子帧存和更新帧存后,可以将绘制帧存中的数据更新至所述更新帧存,控制CRTC显示所述目标影子帧存中的数据,从而可以将目标影子帧存中的数据进行显示。由于正在显示的目标影子帧存和写入数据的更新帧存不同,在每次对影子帧存进行更新时,都会重新确定目标影子帧存和更新帧存,可以确保显示的画面不会出现撕裂的情况。可以理解的是,可以是在清除掉表示绘制帧存正在更新的标记之后,将绘制帧存中的数据更新至所述影子帧存。
本申请实施例中提供的图像显示方法,获取绘制帧存的更新状态;在确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;将绘制帧存中的数据更新至所述更新帧存中;显示所述目标影子帧存中的数据。在每次更新状态满足预设要求时,显示的目标影子帧存发生变化,将绘制帧存中的数据写入与目标影子帧存不同的影子帧存中,以确保在绘制帧存固定时,显示的画面不会出现撕裂现象。
在绘制帧存的更新状态为正在更新,且当前时间与影子帧存的上次更新时间的时间间隔大于或等于一个场同步周期时,可以触发对影子帧存的更新。请参阅图3,本申请另一实施例提供了一种图像显示方法,在前述实施例的基础上重点描述了绘制帧存的更新状态为正在更新时的处理过程,具体的该方法可包括以下步骤。
步骤210,获取绘制帧存的更新状态。
步骤210可参照前述实施例对应部分,在此不再赘述。
步骤220,在所述绘制帧存的更新状态为正在更新,且当前时间与影子帧存的上次更新时间的间隔大于或等于一个场同步周期时,确定满足所述预设要求。
在获取到所述绘制帧存的更新状态后,若所述绘制帧存的更新状态为正在更新,可以继续获取当前时间,以及影子帧存的上次更新时间。作为一种实施方式,影子帧存的上次更新时间可以是在对影子帧存更新完毕后,进行记录后存储在预设位置处,从而可以从预设位置处获取到影子帧存的上次更新时间。
在得到当前时间以及影子帧存的上次更新时间后,可以获取到两者之间的时间间隔,将所述时间间隔与场同步周期进行比较,确定所述时间间隔与场同步周期的大小关系。在所述时间间隔大于或等于所述场同步周期时,确定绘制帧存的更新状态满足所述预设要求。
步骤230,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存。
在确定更新状态满足预设要求后,可以从多个影子帧存中确定出目标影子帧存和更新帧存。在本申请实施例中,仅以三个影子帧存为例进行说明。具体的,确定目标影子帧存和更新帧存的过程可参阅图4,可包括以下步骤。
步骤231,获取当前显示帧存标记所指向的影子帧存为目标影子帧存,所述当前显示帧存标记按照预设顺序依次循环递增。
预先设置有当前显示帧存标记,所述当前显示帧存标记指向某一个影子帧存。可以获取当前显示帧存标记所指向的影子帧存,并将该影子帧存作为目标影子帧存。所述当前显示帧存标记在影子帧存的每次更新时,按照预设顺序依次循环递增。
例如,如图1所示出的三个影子帧存,以S0,S1和S2指代三个影子帧存,所述预设顺序可以是S0-S1-S2-S0,若此时当前显示帧存标记指向S0,那么,S0为目标影子帧存,CRTC读取S0中的数据进行显示,此时,所述当前显示帧存标记按照预设顺序递增,指向S1,即在下次对显示帧存进行更新时,目标影子帧存变化为S1,CRTC显示影子帧存S1中的数据。
步骤232,按照所述预设顺序确定所述目标影子帧存的前一个影子帧存为更新帧存。
在显示所述当前显示帧存标记所指向的影子帧存中的数据之后,所述当前显示帧存标记按照预设顺序递增,此次更新显示的为目标影子帧存中的数据,那么,根据预设顺序,可以确定目标影子帧存的前一个影子帧存,可以将该影子帧存确定为更新帧存。所述更新帧存也可以理解为上次影子帧存更新时,对应目标影子帧存。
如前举例所述,预设顺序是S0-S1-S2-S0,当前显示帧存标记按照该顺序循环递增,当前显示帧存标记指向S0,表明在此次影子帧存的更新中,目标影子帧存为S0,那么,按照该预设顺序,可以确定目标影子帧存S0的前一个影子帧存为S2,从而,可以确定影子帧存S2为更新帧存。
也就是说,在此次对影子帧存更新时,当前显示帧存标记指向S0,表明目标影子帧存为S0,更新帧存为S2,那么,在下次对影子帧存更新时,当前显示帧存标记指向S1,目标影子帧存变为S1,更新帧存则为S0。
步骤240,将绘制帧存中的数据更新至所述更新帧存。
步骤250,显示所述目标影子帧存中的数据。
步骤240至步骤250可参照前述实施例对应部分,在此不再赘述。步骤230,步骤240以及步骤250在每次所述更新状态满足预设要求时,都会执行一次,其中,步骤240和步骤250的执行顺序可以不做具体限定。也就是说,在执行步骤230之后的,可以先执行步骤240再执行步骤250,也可以是先执行步骤250再执行步骤240,还可以是同时执行,可根据需要进行选择,在本申请实施例中仅以先执行步骤240再执行步骤250进行详细描述。
本申请实施例提供的图像显示方法,当前显示帧存标记在影子帧存每次更新时按照预设顺序进行递增,从而,每次影子帧存更新时显示的目标影子帧存不同,将绘制帧存中的数据更新至目标影子帧存的前一个影子帧存,可以确保当前显示的影子帧存和正在更新的影子帧存不同,以保证显示的画面不会出现撕裂的情况。
需要说明的是,若在所述绘制帧存的更新状态为正在更新,且当前时间与影子帧存的上次更新时间的间隔小于一个场同步周期。即所述绘制帧存的更新状态不满足所述预设要求时,可以将绘制帧存的更新状态标记为被修改,并等待定时器触发影子帧存的更新。
在一些实施方式中,在执行步骤260之后,已经将写入绘制帧存中数据拷贝更新至更新帧存中,为了保证写入绘制帧存中的数据可以被显示出来,还可以将所述影子帧存标记为需要显示更新,并等待定时器触发影子帧存的更新。其中,定时器触发影子帧存的更新,是指预先设置有定时器,定时器按照场同步周期定时触发,在满足预设要求时,可以触发的对影子帧存更新。具体的,定时器触发影子帧存的更新将在下述实施例中进行详细阐述。
请参阅图5,本申请再一实施例提供了一种图像显示方法,在前述实施例的基础上重点描述了通过定时器触发影子帧存更新的过程,具体的该方法可包括以下步骤。
步骤310,获取绘制帧存的更新状态。
步骤310可参照前述实施例对应部分,在此不再赘述。
步骤320,在定时器触发时,确定当前时间与影子帧存的上次更新时间的间隔是否大于或等于一个场同步周期。
预先可以设置有定时器,将所述定时器的周期设置为一个场同步周期,即在一个场同步周期后,所述定时器可以发出一个触发信号,表明到达一个场同步周期。
在接收到所述定时器发出的触发信号后,表明已经到达一个场同步周期,从而可以确定当前时间与影子帧存的上次更新时间的间隔是否大于或等于一个场同步周期。前述实施例中,绘制帧存中有数据写入时,也可能会触发影子帧存的更新,因此,影子帧存的上次更新时间与当前时间的间隔可能不足一个场同步周期。
若此时确定所述当前时间与影子帧存的上次更新时间的间隔大于或等于一个场同步周期,可以继续执行步骤330。若所述当前时间与影子帧存的上次更新时间的间隔小于一个场同步周期,直接结束。
步骤330,在所述间隔大于或等于一个场同步周期时,确定所述更新状态是否为正在更新。
在确定当前时间与影子帧存的上次更新时间的间隔大于或等于一个场同步周期后,可以继续确定绘制帧存的更新状态是否为正在更新。若此时所述绘制帧存的更新状态为正在更新,表明前述实施例所描述的流程将进行,此时可以直接结束。若此时所述绘制帧存的更新状态不为正在更新,可以继续执行步骤340。
在一些实施方式中,在所述绘制帧存中正在写入数据时,可以将绘制帧存标记为正在更新,因此可以通过标记确定绘制帧存的更新状态。具体的,可以是确定是否存在表示绘制帧存的更新状态为正在更新的标记,若存在,表明绘制帧存的更新状态为更在更新;若不存,表明所述绘制帧存的更新状态不为正在更新。
步骤340,若所述更新状态不为正在更新,确定满足所述预设要求。
在确定所述更新状态不为正在更新时,表明所述更新状态满足所述预设要求,可以继续执行后续步骤。
步骤350,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存。
步骤360,将绘制帧存中的数据更新至所述更新帧存。
步骤370,显示所述目标影子帧存中的数据。
步骤350至步骤370可参照前述实施例对应部分,在此不再赘述。
在一些实施方式中,定时器触发影子帧存的更新以及绘制帧存中写入数据时触发影子帧存的更新可以作为两个线程,使用同一个互斥锁进行锁定。
本申请实施例提供的图像显示方法,通过定时器触发对影子帧存的更新,可以确保绘制帧存中写入的数据可以在一个场同步周期后进行显示。
在定时器触发对影子帧存的更新后,还可以确定触发此次更新的原因,可参阅图6,本申请再一实施例提供了一种图像显示方法,在前述实施例的基础上重点描述了通过定时器触发影子帧存的更新之后的过程,具体的该方法可包括以下步骤。
步骤401,获取绘制帧存的更新状态。
步骤402,在定时器触发时,确定当前时间与影子帧存的上次更新时间的间隔是否大于或等于一个场同步周期。
步骤403,在所述间隔大于或等于一个场同步周期时,确定所述更新状态是否为正在更新。
步骤404,若所述更新状态不为正在更新,确定满足所述预设要求。
步骤405,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存。
步骤406,将绘制帧存中的数据更新至所述更新帧存。
步骤407,显示所述目标影子帧存中的数据。
步骤401至步骤407可参照前述实施例对应部分,在此不再赘述。
步骤408,确定所述绘制帧存的更新状态是否为被修改;若是,执行步骤409;若否,执行步骤410。
在对所述影子帧存进行更新之后,可以确定所述绘制帧存的更新状态是否为被修改。可以理解的是,在所述绘制帧存的更新状态为正在更新,且当前时间与影子帧存的上次更新时间的间隔小于一个场同步周期时,不会触发影子帧存的更新,但是此时,绘制帧存写入的数据需要更新至影子帧存中,在此时将将绘制帧存的更新状态标记为被修改。
因此,可以通过对应的标记确定所述绘制帧存的更新状态是否为被修改,若存在用于表示更新状态标记为被修改的标记,则表明绘制帧存中有数据写入,但并未更新至影子帧存中,从而可以执行步骤409;若不存在用于表示更新状态标记为被修改的标记,表明绘制帧存的更新状态不为被修改,可以继续执行步骤410。
步骤409,清除用于表示更新状态标记为被修改的标记,将所述影子帧存标记为需要显示更新,并等待定时器触发影子帧存的更新。
在确定所述绘制帧存的更新状态为被修改时,表明此时定时器触发显示帧存的原因为绘制帧存被修改,因此,可以清除用于表示更新状态标记为被修改的标记,将所述影子帧存标记为需要显示更新。表明绘制帧存中的数据更新至对应的影子帧存之后,需要将更新的数据进行显示,从而可以等待下次定时器触发时,将绘制帧存中更新的数据进行显示。
步骤410,确定所述影子帧存是否被标记为需要显示更新;若是,执行步骤411。
步骤411,等待定时器触发影子帧存的更新。
若绘制帧存的更新状态不为被修改,继续判断确定所述影子帧存是否被标记为需要显示更新。用于表示影子帧存需要显示更新的标记可以是在绘制帧存的更新触发了影子帧存的更新之后,进行标记的。若存在用于表示影子帧存需要显示更新的标记,表明需要定时器触发一次影子帧存的更新,将从绘制帧存复制到影子帧存中的数据显示出来。若不存在用于表示影子帧存需要显示更新的标记,可以直接结束。
本申请实施例提供的图像显示方法,定时器按照场同步周期触发对影子帧存进行更新后,确定触发此次影子帧存更新的原因,在下一次场同步周期后进行更新,确保每次绘制帧存的更新,以及从绘制帧存中复制到影子帧存中的数据可以显示出来,保证画面显示的完整性,避免画面撕裂。
请参阅图7,本申请实施例提供了一种图像显示装置500,所述图像显示装置500包括获取模块510,确定模块520,更新模块530以及显示模块540。所述获取模块510,用于获取绘制帧存的更新状态;所述确定模块520,用于当确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;所述更新模块530,用于将绘制帧存中的数据更新至所述更新帧存;所述显示模块540,用于显示所述目标影子帧存中的数据。
进一步的,所述确定模块520还用于获取当前显示帧存标记所指向的影子帧存为目标影子帧存,所述当前显示帧存标记按照预设顺序依次循环递增;按照所述预设顺序确定所述目标影子帧存的前一个影子帧存为更新帧存。
进一步的,所述确定模块520还用于在所述绘制帧存的更新状态为正在更新,且当前时间与影子帧存的上次更新时间的间隔大于或等于一个场同步周期时,确定满足所述预设要求。
进一步的,所述图像显示装置500还包括等待模块,所述等待模块用于在所述绘制帧存的更新状态为正在更新,且当前时间与所述影子帧存的上次更新时间的间隔小于一个场同步周期时,将绘制帧存的更新状态标记为被修改,并等待定时器触发影子帧存的更新。
进一步的,在所述显示模块540显示所述目标影子帧存中的数据之后,所述等待模块还用于将所述影子帧存标记为需要显示更新,并等待定时器触发影子帧存的更新。
进一步的,所述确定模块520还用于在定时器触发时,确定当前时间与影子帧存的上次更新时间的间隔是否大于或等于一个场同步周期;在所述间隔大于或等于一个场同步周期时,确定所述更新状态是否为正在更新;若所述更新状态不为正在更新,确定满足所述预设要求。
进一步的,所述等待模块还用于确定所述绘制帧存的更新状态是否为被修改;若所述绘制帧存的更新状态为被修改,清除用于表示更新状态标记为被修改的标记,将所述影子帧存标记为需要显示更新,并等待定时器触发影子帧存的更新。
进一步的,所述等待模块还用于若所述绘制帧存的更新状态不为被修改,确定所述影子帧存是否被标记为需要显示更新;若所述影子帧存被标记为需要显示更新,等待定时器触发影子帧存的更新。
本申请实施例提供的图像显示装置,获取绘制帧存的更新状态;在确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;将绘制帧存中的数据更新至所述更新帧存中;显示所述目标影子帧存中的数据。在每次更新状态满足预设要求时,显示的目标影子帧存发生变化,将绘制帧存中的数据写入与目标影子帧存不同的影子帧存中,以确保在绘制帧存固定时,显示的画面不会出现撕裂现象。
要说明的是,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参阅图8,本申请实施例提供了一种电子设备的结构框图,该电子设备600包括图形处理器610以及存储器620以及一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器620中并被配置为由所述一个或多个图形处理器610执行,所述一个或多个程序配置用于执行上述图像显示的方法。
该电子设备600可以是平板电脑等能够运行应用程序的终端设备。本申请中的电子设备600可以包括一个或多个如下部件:图形处理器610、存储器620、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器620中并被配置为由一个或多个图形处理器610执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
图形处理器610可以包括一个或者多个处理核。图形处理器610利用各种接口和线路连接整个电子设备600内的各个部分,通过运行或执行存储在存储器620内的指令、程序、代码集或指令集,以及调用存储在存储器620内的数据,执行电子设备600的显示内容的渲染和绘制。可选地,图形处理器610可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。
存储器620可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器620可用于存储指令、程序、代码、代码集或指令集。存储器620可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备600在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
本申请实施例提供的电子设备,获取绘制帧存的更新状态;在确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;将绘制帧存中的数据更新至所述更新帧存中;显示所述目标影子帧存中的数据。在每次更新状态满足预设要求时,显示的目标影子帧存发生变化,将绘制帧存中的数据写入与目标影子帧存不同的影子帧存中,以确保在绘制帧存固定时,显示的画面不会出现撕裂现象。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (9)
1.一种图像显示方法,其特征在于,所述方法包括:
获取绘制帧存的更新状态;
当确定所述更新状态满足预设要求时,从多个影子帧存中确定目标影子帧存和更新帧存,所述目标影子帧存和更新帧存为不同的影子帧存;
将绘制帧存中的数据更新至所述更新帧存;
显示所述目标影子帧存中的数据,
在所述绘制帧存的更新状态为正在更新,且当前时间与影子帧存的上次更新时间的间隔大于或等于一个场同步周期时,确定满足所述预设要求。
2.根据权利要求1所述的方法,其特征在于,所述从多个影子帧存中确定目标影子帧存和更新帧存,包括:
获取当前显示帧存标记所指向的影子帧存为目标影子帧存,所述当前显示帧存标记按照预设顺序依次循环递增;
按照所述预设顺序确定所述目标影子帧存的前一个影子帧存为更新帧存。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述绘制帧存的更新状态为正在更新,且当前时间与所述影子帧存的上次更新时间的间隔小于一个场同步周期时,将绘制帧存的更新状态标记为被修改,并等待定时器触发影子帧存的更新。
4.根据权利要求2所述的方法,其特征在于,显示所述目标影子帧存中的数据之后,还包括:
将所述影子帧存标记为需要显示更新,并等待定时器触发影子帧存的更新。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在定时器触发时,确定当前时间与影子帧存的上次更新时间的间隔是否大于或等于一个场同步周期;
在所述间隔大于或等于一个场同步周期时,确定所述更新状态是否为正在更新;
若所述更新状态不为正在更新,确定满足所述预设要求。
6.根据权利要求5所述的方法,其特征在于,所述显示所述目标影子帧存中的数据之后,还包括:
确定所述绘制帧存的更新状态是否为被修改;
若所述绘制帧存的更新状态为被修改,清除用于表示更新状态标记为被修改的标记,将所述影子帧存标记为需要显示更新,并等待定时器触发影子帧存的更新。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述绘制帧存的更新状态不为被修改,确定所述影子帧存是否被标记为需要显示更新;
若所述影子帧存被标记为需要显示更新,等待定时器触发影子帧存的更新。
8.一种电子设备,其特征在于,所述电子设备包括:
一个或多个图形处理器;
存储器,与所述一个或多个图形处理器电连接;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个图形处理器执行,所述一个或多个应用程序配置用于执行如权利要求1至7任一项所述的方法。
9.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1至7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110279203.9A CN113066450B (zh) | 2021-03-16 | 2021-03-16 | 图像显示方法,装置,电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110279203.9A CN113066450B (zh) | 2021-03-16 | 2021-03-16 | 图像显示方法,装置,电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113066450A CN113066450A (zh) | 2021-07-02 |
CN113066450B true CN113066450B (zh) | 2022-01-25 |
Family
ID=76560980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110279203.9A Active CN113066450B (zh) | 2021-03-16 | 2021-03-16 | 图像显示方法,装置,电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113066450B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0525986A2 (en) * | 1991-07-26 | 1993-02-03 | Sun Microsystems, Inc. | Apparatus for fast copying between frame buffers in a double buffered output display system |
JP2007298760A (ja) * | 2006-04-28 | 2007-11-15 | Yamaha Corp | 画像処理装置及び画像処理方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0492938B1 (en) * | 1990-12-21 | 1995-11-22 | Sun Microsystems, Inc. | Method and apparatus for increasing the speed of operation of a double buffered display system |
KR0167116B1 (ko) * | 1991-07-26 | 1999-03-20 | 마이클 에이치. 모리스 | 변형가능한 디스플레이 메모리 제공방법 및 장치 |
JP2004133283A (ja) * | 2002-10-11 | 2004-04-30 | Seiko Epson Corp | 画像表示装置、画像表示方法および画像表示プログラム |
US20050195206A1 (en) * | 2004-03-04 | 2005-09-08 | Eric Wogsberg | Compositing multiple full-motion video streams for display on a video monitor |
JP2007072346A (ja) * | 2005-09-09 | 2007-03-22 | Seiko Epson Corp | 画像データ出力回路及び半導体集積回路 |
CN101441851B (zh) * | 2008-12-29 | 2011-11-16 | 长春希达电子技术有限公司 | Led显示屏显示控制装置 |
CN110148391A (zh) * | 2019-03-29 | 2019-08-20 | 珠海亿智电子科技有限公司 | 一种避免图像显示撕裂的方法和终端设备 |
-
2021
- 2021-03-16 CN CN202110279203.9A patent/CN113066450B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0525986A2 (en) * | 1991-07-26 | 1993-02-03 | Sun Microsystems, Inc. | Apparatus for fast copying between frame buffers in a double buffered output display system |
JP2007298760A (ja) * | 2006-04-28 | 2007-11-15 | Yamaha Corp | 画像処理装置及び画像処理方法 |
Non-Patent Citations (1)
Title |
---|
大屏幕显示系统拼接图像撕裂原因与对策;郭亮;《电视技术》;20190225;第43卷(第4期);第22-24页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113066450A (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020207250A1 (zh) | 垂直同步方法、装置、终端及存储介质 | |
US7903120B2 (en) | Method and system for synchronizing parallel engines in a graphics processing unit | |
CN107422974B (zh) | 基于双系统的笔迹书写显示方法和系统、存储介质及设备 | |
CN107515759B (zh) | 截屏方法、装置、电子设备及可读存储介质 | |
JP5166552B2 (ja) | グラフィックス処理システムにおけるオフスクリーンサーフェスのためのマルチバッファサポート | |
CN107885645B (zh) | 计算页面首屏渲染时长的方法、装置及电子设备 | |
JP2020507244A (ja) | 画像円滑性向上方法および装置 | |
CN108984137B (zh) | 双屏显示方法及其系统、计算机可读存储介质 | |
CN110597444B (zh) | 一种书写笔迹显示方法、装置、终端设备及存储介质 | |
US20200142571A1 (en) | Optimizing Window Resize Actions for Remoted Applications | |
WO2015161809A1 (en) | Picture splitting method and apparatus, and picture loading method and apparatus | |
JPH0355832B2 (zh) | ||
EP3050605B1 (en) | A method for event detection in real-time graphic applications | |
CN110647378A (zh) | 动态图像的加载方法、装置和电子设备 | |
CN113066450B (zh) | 图像显示方法,装置,电子设备及存储介质 | |
CN110489318A (zh) | systrace信息的抓取方法、装置、存储介质及终端 | |
CN115827073A (zh) | 独立显卡和集显同时显示的处理方法、设备、存储介质 | |
US20240135501A1 (en) | Video generation method and apparatus, device and medium | |
US10796399B2 (en) | Pixel wait synchronization | |
CN113052749B (zh) | 视频显示方法及图形处理器 | |
JP2014239795A5 (zh) | ||
US8587599B1 (en) | Asset server for shared hardware graphic data | |
US20040183806A1 (en) | Method and apparatus for simulated direct frame buffer access for graphics adapters | |
CN115639920B (zh) | 绘制方法、电子设备和可读存储介质 | |
US11886893B2 (en) | Method and device for capturing screen and terminal |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |