CN117369936A - 一种显示内容渲染方法及渲染系统 - Google Patents
一种显示内容渲染方法及渲染系统 Download PDFInfo
- Publication number
- CN117369936A CN117369936A CN202311638708.5A CN202311638708A CN117369936A CN 117369936 A CN117369936 A CN 117369936A CN 202311638708 A CN202311638708 A CN 202311638708A CN 117369936 A CN117369936 A CN 117369936A
- Authority
- CN
- China
- Prior art keywords
- rendering
- cache
- state
- buffer
- current
- 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.)
- Granted
Links
- 238000009877 rendering Methods 0.000 title claims abstract description 594
- 238000000034 method Methods 0.000 title claims abstract description 58
- 239000000872 buffer Substances 0.000 claims abstract description 121
- 230000008569 process Effects 0.000 claims description 26
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004075 alteration Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种显示内容渲染方法及渲染系统,渲染方法包括:应用初始化时,在客户端创建渲染缓存队列,队列中包括多个渲染缓存;设定当前渲染缓存,客户端锁定当前渲染缓存,并渲染当前帧显示内容到当前渲染缓存;渲染完成后,解锁当前渲染缓存;当进行下一帧显示内容的渲染时,在渲染缓存队列中查询每一个渲染缓存的状态,更新新渲染缓存为当前渲染缓存,对下一帧显示内容进行渲染。本申请中客户端不再等待交换缓存完成信号,而是立即更换新的缓存,进行下一帧的渲染,充分发挥GPU的渲染性能,提升客户端渲染效率。
Description
技术领域
本发明涉及显示渲染领域,更具体地,涉及一种显示内容渲染方法及渲染系统。
背景技术
常见类Linux操作系统一般都支持并使用X窗口系统(X Window System)。该系统是一种以位图方式显示的软件窗口系统。X窗口系统通过软件工具及架构协定来创建操作系统所用的图形用户界面。主流的桌面环境-GNOME和KDE都是以X窗口系统为基础建构成的。
现有技术中,渲染缓存交互流程如图1所示,客户端完成渲染后,向X服务器提交渲染缓存;X服务器获取渲染缓存后,发送交换缓存完成信号;客户端接收到完成信号后,再次渲染。客户端的渲染效率受到X服务器对渲染缓存处理效率的影响。在某些GPU高负载场景及图形显示性能测试时,X服务器对渲染缓存处理效率低下成为了图形显示的瓶颈,严重影响了GPU性能的发挥。
发明内容
本发明针对现有技术中存在的技术问题,提供一种显示内容的渲染方法及渲染系统,能够克服客户端的渲染效率受限于服务器对渲染缓存处理效率,无法充分发挥GPU性能的问题。
根据本发明的第一方面,提供了一种显示内容渲染方法,包括:
步骤S1,应用初始化时,在客户端创建渲染缓存队列,在所述渲染缓存队列中创建多个渲染缓存,并标示每一个渲染缓存为未使用状态;
步骤S2,设定所述渲染缓存队列中的第一个渲染缓存为当前渲染缓存,标示所述第一个渲染缓存为正在渲染状态;
步骤S3,客户端锁定当前渲染缓存,并渲染当前帧显示内容到当前渲染缓存;
步骤S4,渲染完成后,解锁当前渲染缓存,标示当前渲染缓存为已完成状态;
步骤S5,当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,重复执行步骤S3~步骤S5,直到渲染结束。
在上述技术方案的基础上,本发明还可以作出如下改进。
可选的,还包括:
对已完成状态的渲染缓存按照完成时的时间戳进行编号,得到每一个已完成状态的渲染缓存的序列号。
可选的,所述步骤S5中,当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,包括:
在所述渲染缓存队列中查询每一个渲染缓存的状态,当存在状态为未使用或已提交或已过期的渲染缓存时,从所述未使用或已提交或已过期的渲染缓存中择其一更新为当前渲染缓存,并将当前渲染缓存标示为正在渲染状态;
若不存在状态为未使用或已提交或已过期的渲染缓存,则查询标示为已完成状态的渲染缓存,根据已完成状态的渲染缓存的个数和绘制区域是否完全一致,更新当前渲染缓存。
可选的,所述当存在状态为未使用或已提交或已过期的渲染缓存时,从所述未使用或已提交或已过期的渲染缓存中择其一更新为当前渲染缓存,包括:
当存在状态为未使用或已提交或已过期的渲染缓存时,按照未使用状态、已提交状态和已过期状态的优先级顺序,选择其中一个渲染缓存作为当前渲染缓存;
若同一个状态的渲染缓存存在多个时,则按照渲染缓存的序列号从小到大的顺序选择一个渲染缓存作为当前渲染缓存。
可选的,所述根据已完成状态的渲染缓存的个数和绘制区域是否完全一致,更新当前渲染缓存,包括:
若标示为已完成状态的渲染缓存的个数大于1,则分析标示为已完成状态的渲染缓存的序列号和绘制区域,若多个标示为已完成状态的渲染缓存绘制区域完全一致,则将序列号最大的渲染缓存保留为已完成状态,其他渲染缓存状态均设为已过期,且将序列号最小的渲染缓存设为当前渲染缓存;
若多个标示为已完成状态的渲染缓存绘制区域不完全一致,申请分配新渲染缓存,标示新渲染缓存为未使用状态,并将新渲染缓存加入渲染缓存队列中,作为当前渲染缓存。
可选的,还包括:
若多个标示为已完成状态的渲染缓存绘制区域不完全一致,则提交渲染缓存合并请求,根据所述渲染缓存合并请求将多个标示为已完成状态的渲染缓存合并为一个渲染缓存,且更新每一个渲染缓存的状态。
可选的,根据所述渲染缓存合并请求将多个标示为已完成状态的渲染缓存合并为一个渲染缓存,且更新每一个渲染缓存的状态,包括:
应用初始化时,新建渲染缓存合并进程;
渲染缓存合并进程实时查询客户端是否提交了渲染缓存合并请求;
若客户端提交了渲染缓存合并请求,查询渲染缓存队列,若渲染缓存队列中存在大于1个的标示为已完成状态的渲染缓存,则分析所有标示为已完成状态的渲染缓存的序列号和渲染区域,计算渲染缓存合并后的更新区域:渲染缓存不重合区域保留,渲染缓存重合区域更新为序列号最大的渲染缓存对应区域;
锁定所有标示为已完成状态的渲染缓存,根据计算的更新区域,选取保留区域最大的渲染缓存作为目的渲染缓存,将其他渲染缓存对应区域拷贝到目的渲染缓存中,完成拷贝后,将目的渲染缓存标示为已完成状态,其他渲染缓存标示为已过期状态,解锁锁定的渲染缓存。
可选的,还包括:
应用初始化时,在客户端新建渲染缓存提交进程,并初始化;
渲染缓存提交进程查询客户端是否需要提交新的渲染缓存,并询问服务器端是否立即提交;
若需要提交,则查询所述渲染缓存队列中是否存在已完成状态的渲染缓存;
根据所述渲染缓存队列中已完成状态的渲染缓存的个数以及绘制区域是否完全一致,确定源渲染缓存,将源渲染缓存提交给服务器端,并锁定源渲染缓存;
等待服务器端获取提交的源渲染缓存,待接收到服务器端返回的交换缓存完成信号后,解锁源渲染缓存,并标示源渲染缓存为已提交状态。
可选的,所述根据所述渲染缓存队列中已完成状态的渲染缓存的个数以及绘制区域是否完全一致,确定源渲染缓存,将源渲染缓存提交给服务器端,并锁定源渲染缓存,包括:
若标示为已完成状态的渲染缓存的个数大于1,则分析标示为已完成状态的渲染缓存的序列号和绘制区域,若多个标示为已完成状态的渲染缓存绘制区域完全一致,则将序列号最大的渲染缓存作为源渲染缓存,准备提交给服务器端,其他渲染缓存均设为已过期状态;
若多个标示为已完状态成的渲染缓存绘制区域不完全一致,提交渲染缓存合并请求,等待合并完成,将合并后的渲染缓存作为源渲染缓存,准备提交给服务器端;
锁定源渲染缓存,标示源渲染缓存为正在提交状态,向服务器提交准备好的源渲染缓存。
根据本发明的第二方面,提供一种显示内容渲染系统,包括:
创建模块,用于应用初始化时,在客户端创建渲染缓存队列,在所述渲染缓存队列中创建多个渲染缓存,并标示每一个渲染缓存为未使用状态;
设定模块,用于设定所述渲染缓存队列中的第一个渲染缓存为当前渲染缓存,标示所述第一个渲染缓存为正在渲染状态;
渲染模块,用于锁定当前渲染缓存,并渲染当前帧显示内容到当前渲染缓存,渲染完成后,解锁当前渲染缓存,标示当前渲染缓存为已完成状态;
更新模块,用于当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,重复执行所述渲染模块和所述更新模块,直到渲染结束。
本发明提供的一种显示内容渲染方法及渲染系统,应用初始化时,在客户端创建渲染缓存队列,队列中包括多个渲染缓存;设定当前渲染缓存,客户端锁定当前渲染缓存,并渲染当前帧显示内容到当前渲染缓存;渲染完成后,解锁当前渲染缓存;当进行下一帧显示内容的渲染时,在渲染缓存队列中查询每一个渲染缓存的状态,更新新渲染缓存为当前渲染缓存,对下一帧显示内容进行渲染。本申请中客户端不再等待交换缓存完成信号,而是立即更换新的缓存,进行下一帧的渲染,充分发挥GPU的渲染性能,提升客户端渲染效率。
附图说明
图1为现有技术中,渲染缓存交互流程图;
图2本发明提供的一种显示内容渲染方法流程图;
图3为客户端更新当前渲染缓存的流程示意图;
图4为客户端合并渲染缓存流程示意图;
图5为客户端提交渲染缓存流程示意图;
图6为本发明提供的一种显示内容渲染系统的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。另外,本发明提供的各个实施例或单个实施例中的技术特征可以相互任意结合,以形成可行的技术方案,这种结合不受步骤先后次序和/或结构组成模式的约束,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时,应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
基于背景技术中的缺陷,本发明中,当应用程序完成当前帧的渲染后,不再等待交换缓存的完成信号,而是立即更换新的缓存,进行下一帧的渲染,从而提高GPU的渲染效率。
参见图2,本发明提供了一种显示内容渲染方法流程图,如图2所示,方法包括:
步骤S1,应用初始化时,在客户端创建渲染缓存队列,在所述渲染缓存队列中创建多个渲染缓存,并标示每一个渲染缓存为未使用状态。
可理解的是,本发明中对于客户端和服务器端的渲染缓存的交互主要分为客户端绘制渲染缓存和向服务器端提交渲染缓存两个部分。
其中,在客户端对显示内容渲染之前,在客服端创建渲染缓存队列,创建至少3个渲染缓存,并标示渲染缓存状态为未使用。
步骤S2,设定所述渲染缓存队列中的第一个渲染缓存为当前渲染缓存,标示所述第一个渲染缓存为正在渲染状态。
步骤S3,客户端锁定当前渲染缓存,并渲染当前帧显示内容到当前渲染缓存。
可理解的是,在初始时,设定渲染缓存队列中的第一个渲染缓存为当前渲染缓存,标示该渲染缓存状态为正在渲染,创建渲染缓存计数,初始值设为0。
客户端锁定当前渲染缓存,禁止其他进程读写当前渲染缓存,并渲染当前帧图像到当前渲染缓存中。
步骤S4,渲染完成后,解锁当前渲染缓存,标示当前渲染缓存为已完成状态。
可理解的是,客户端对当前帧图像渲染后,解锁当前渲染缓存,允许其他进程读写当前渲染缓存,并标示当前渲染缓存为已完成状态,渲染缓存计数加1,修改当前渲染缓存序列号为渲染缓存计数值。
步骤S5,当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,重复执行步骤S3~步骤S5,直到渲染结束。
可理解的是,当前帧图像渲染完成后,当进行下一帧显示内容的渲染时,在渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,然后,客户端将下一帧图像渲染到当前渲染缓存。其中,更新当前渲染缓存的流程可参见图3,具体包括:在所述渲染缓存队列中查询每一个渲染缓存的状态,择其一更新为当前渲染缓存,并将当前渲染缓存标示为正在渲染状态,完成更换渲染缓存流程。
若存在状态为未使用或已提交或已过期的渲染缓存,按照未使用状态、已提交状态和已过期状态的优先级顺序,选择其中一个渲染缓存作为当前渲染缓存,即优先选择未使用状态的渲染缓存作为当前渲染缓存,然后选择已提交状态的渲染缓存作为当前渲染缓存,最优再选择已过期的渲染缓存作为当前渲染缓存。
若未使用状态或已提交状态或已过期状态的渲染缓存存在多个时,则按照渲染缓存的序列号从小到大的顺序选择一个渲染缓存作为当前渲染缓存。
若不存在状态为未使用或已提交或已过期的渲染缓存,则查询标示为已完成状态的渲染缓存,根据已完成状态的渲染缓存的个数和绘制区域是否完全一致,更新当前渲染缓存。
其中,在渲染缓存队列中,若查询到标示为已完成状态的渲染缓存的个数大于1,则分析标示为已完成状态的渲染缓存的序列号和绘制区域,若多个标示为已完成状态的渲染缓存绘制区域完全一致,则将序列号最大的渲染缓存保留为已完成状态,其他渲染缓存状态设为已过期,且将序列号最小的渲染缓存设为当前渲染缓存。
若多个标示为已完成状态的渲染缓存绘制区域不完全一致,申请分配新渲染缓存,标示新渲染缓存为未使用状态,并将新渲染缓存加入渲染缓存队列中,作为当前渲染缓存,重复执行渲染操作,完成客户端的渲染。该过程中,客户端的渲染不需要等待服务器获取渲染缓存,只需要更换新的渲染缓存,就可以进行下一帧的渲染,大大节约了客户端渲染的等待时间。
其中,若多个标示为已完成状态的渲染缓存绘制区域不完全一致,则提交渲染缓存合并请求,根据所述渲染缓存合并请求将多个标示为已完成状态的渲染缓存合并为一个渲染缓存,且更新每一个渲染缓存的状态。
可理解的是,为确保客户端的渲染速率,客户端直接更换渲染缓存进行下一帧的渲染。但短时间频繁更换渲染缓存,可能导致存在多个已完成渲染缓存,大大浪费了GPU的存储资源。本发明综合考虑渲染速率和GPU存储资源需求,客户端绘制渲染缓存前,若发现渲染缓存不足,直接申请新的渲染缓存进行下一帧的渲染,同时发出渲染缓存合并请求。应用初始化时创建一个独立的进程负责渲染缓存的合并,一旦接收到新的渲染缓存合并请求,该进程将多个标示为已完成的渲染缓存合并到一个渲染缓存,合并后的渲染缓存标示为已完成,其他标示为已完成的渲染缓存标示为已过期,标示为已过期的渲染缓存将在客户端渲染图像时再次使用。
其中,客户端合并渲染缓存的流程可参见图4,主要包括:
应用初始化时,新建渲染缓存合并进程,并初始化;
渲染缓存合并进程实时查询客户端是否提交了渲染缓存合并请求;
若客户端提交了渲染缓存合并请求,查询渲染缓存队列,若渲染缓存队列中存在大于1个的标示为已完成状态的渲染缓存,则分析所有标示为已完成状态的渲染缓存的序列号和渲染区域,计算渲染缓存合并后的更新区域:渲染缓存不重合区域保留,渲染缓存重合区域更新为序列号最大的渲染缓存对应区域;
锁定所有标示为已完成状态的渲染缓存(不允许其他进程进行读写),根据计算的更新区域,选取保留区域最大的渲染缓存作为目的渲染缓存,将其他渲染缓存对应区域拷贝到目的渲染缓存中,完成拷贝后,将目的渲染缓存标示为已完成状态,其他渲染缓存标示为已过期状态,解锁锁定的渲染缓存(允许其他进程进行读写)。合并渲染缓存,以释放一部分标示为已完成的渲染缓存,在不影响客户端渲染效率的情况下,减少渲染缓存的占用。
当渲染缓存已完成后,会向服务器端提交渲染缓存,为确保客户端的渲染速率,创建一个独立的进程负责渲染缓存的提交。客户端的提交渲染缓存流程,具体的提交渲染缓存的流程可参见图5,主要包括:
应用初始化时,在客户端新建渲染缓存提交进程,并初始化;渲染缓存提交进程查询客户端是否需要提交新的渲染缓存,并询问服务器端是否能够立即提交;若可以提交,则查询渲染缓存队列中是否存在已完成状态的渲染缓存;根据渲染缓存队列中已完成状态的渲染缓存的个数以及绘制区域是否完全一致,确定源渲染缓存,将源渲染缓存提交给服务器端,并锁定源渲染缓存;
其中,若渲染缓存队列中标示为已完成状态的渲染缓存的个数大于1,则分析标示为已完成状态的渲染缓存的序列号和绘制区域,若多个标示为已完成状态的渲染缓存绘制区域完全一致,则将序列号最大的渲染缓存作为源渲染缓存,准备提交给服务器端,其他渲染缓存设为已过期状态;若多个标示为已完状态成的渲染缓存绘制区域不完全一致,提交渲染缓存合并请求,等待合并完成,将合并后的渲染缓存作为源渲染缓存,准备提交给服务器端;锁定源渲染缓存,标示源渲染缓存为正在提交状态,向服务器提交准备好的源渲染缓存。
等待服务器端获取提交的源渲染缓存,待接收到服务器端返回的交换缓存完成信号后,解锁源渲染缓存,并标示源渲染缓存为已提交状态。重复渲染缓存的提交操作,完成客服端渲染缓存的提交。客户端再次提交渲染缓存,需要等待服务器端的交换缓存完成信号,但该进程和客户端渲染缓存的进程是两个独立进程,服务器端的交换缓存完成信号不会影响GPU的渲染效率。
参见图6,提供了本发明的一种显示内容渲染系统,包括创建模块601、设定模块602、渲染模块603和更新模块604,其中:
创建模块601,用于应用初始化时,在客户端创建渲染缓存队列,在所述渲染缓存队列中创建多个渲染缓存,并标示每一个渲染缓存为未使用状态;
设定模块602,用于设定所述渲染缓存队列中的第一个渲染缓存为当前渲染缓存,标示所述第一个渲染缓存为正在渲染状态;
渲染模块603,用于锁定当前渲染缓存,并渲染当前帧显示内容到当前渲染缓存,渲染完成后,解锁当前渲染缓存,标示当前渲染缓存为已完成状态;
更新模块604,用于当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,重复执行所述渲染模块和所述更新模块,直到渲染结束。
可以理解的是,本发明提供的一种显示内容渲染系统与前述各实施例提供的显示内容渲染方法相对应,显示内容渲染系统的相关技术特征可参考显示内容渲染方法的相关技术特征,在此不再赘述。
本发明实施例提供的一种显示内容渲染方法及渲染系统,客户端完成渲染缓存后,立即更换新的渲染缓存进行下一帧显示内容的渲染,而不再等待服务器端完成渲染缓存处理,在某些GPU高负载场景及图形显示性能测试时,可以大幅度提升客户端渲染速度,充分发挥GPU的性能。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种显示内容渲染方法,其特征在于,包括:
步骤S1,应用初始化时,在客户端创建渲染缓存队列,在所述渲染缓存队列中创建多个渲染缓存,并标示每一个渲染缓存为未使用状态;
步骤S2,设定所述渲染缓存队列中的第一个渲染缓存为当前渲染缓存,标示所述第一个渲染缓存为正在渲染状态;
步骤S3,客户端锁定当前渲染缓存,并渲染当前帧显示内容到当前渲染缓存;
步骤S4,渲染完成后,解锁当前渲染缓存,标示当前渲染缓存为已完成状态;
步骤S5,当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,重复执行步骤S3~步骤S5,直到渲染结束。
2.根据权利要求1所述的显示内容渲染方法,其特征在于,还包括:
对已完成状态的渲染缓存按照完成时的时间戳进行编号,得到每一个已完成状态的渲染缓存的序列号。
3.根据权利要求2所述的显示内容渲染方法,其特征在于,所述步骤S5中,当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,包括:
在所述渲染缓存队列中查询每一个渲染缓存的状态,当存在状态为未使用或已提交或已过期的渲染缓存时,从所述未使用或已提交或已过期的渲染缓存中择其一更新为当前渲染缓存,并将当前渲染缓存标示为正在渲染状态;
若不存在状态为未使用或已提交或已过期的渲染缓存,则查询标示为已完成状态的渲染缓存,根据已完成状态的渲染缓存的个数和绘制区域是否完全一致,更新当前渲染缓存。
4.根据权利要求3所述的显示内容渲染方法,其特征在于,所述当存在状态为未使用或已提交或已过期的渲染缓存时,从所述未使用或已提交或已过期的渲染缓存中择其一更新为当前渲染缓存,包括:
当存在状态为未使用或已提交或已过期的渲染缓存时,按照未使用状态、已提交状态和已过期状态的优先级顺序,选择其中一个渲染缓存作为当前渲染缓存;
若同一个状态的渲染缓存存在多个时,则按照渲染缓存的序列号从小到大的顺序选择一个渲染缓存作为当前渲染缓存。
5.根据权利要求4所述的显示内容渲染方法,其特征在于,所述根据已完成状态的渲染缓存的个数和绘制区域是否完全一致,更新当前渲染缓存,包括:
若标示为已完成状态的渲染缓存的个数大于1,则分析标示为已完成状态的渲染缓存的序列号和绘制区域,若多个标示为已完成状态的渲染缓存绘制区域完全一致,则将序列号最大的渲染缓存保留为已完成状态,其他渲染缓存状态均设为已过期,且将序列号最小的渲染缓存设为当前渲染缓存;
若多个标示为已完成状态的渲染缓存绘制区域不完全一致,申请分配新渲染缓存,标示新渲染缓存为未使用状态,并将新渲染缓存加入渲染缓存队列中,作为当前渲染缓存。
6.根据权利要求5所述的显示内容渲染方法,其特征在于,还包括:
若多个标示为已完成状态的渲染缓存绘制区域不完全一致,则提交渲染缓存合并请求,根据所述渲染缓存合并请求将多个标示为已完成状态的渲染缓存合并为一个渲染缓存,且更新每一个渲染缓存的状态。
7.根据权利要求6所述的显示内容渲染方法,其特征在于,根据所述渲染缓存合并请求将多个标示为已完成状态的渲染缓存合并为一个渲染缓存,且更新每一个渲染缓存的状态,包括:
应用初始化时,新建渲染缓存合并进程;
渲染缓存合并进程实时查询客户端是否提交了渲染缓存合并请求;
若客户端提交了渲染缓存合并请求,查询渲染缓存队列,若渲染缓存队列中存在大于1个的标示为已完成状态的渲染缓存,则分析所有标示为已完成状态的渲染缓存的序列号和渲染区域,计算渲染缓存合并后的更新区域:渲染缓存不重合区域保留,渲染缓存重合区域更新为序列号最大的渲染缓存对应区域;
锁定所有标示为已完成状态的渲染缓存,根据计算的更新区域,选取保留区域最大的渲染缓存作为目的渲染缓存,将其他渲染缓存对应区域拷贝到目的渲染缓存中,完成拷贝后,将目的渲染缓存标示为已完成状态,其他渲染缓存标示为已过期状态,解锁锁定的渲染缓存。
8.根据权利要求1~5任一项所述的显示内容渲染方法,其特征在于,还包括:
应用初始化时,在客户端新建渲染缓存提交进程,并初始化;
渲染缓存提交进程查询客户端是否需要提交新的渲染缓存,并询问服务器端是否立即提交;
若需要提交,则查询所述渲染缓存队列中是否存在已完成状态的渲染缓存;
根据所述渲染缓存队列中已完成状态的渲染缓存的个数以及绘制区域是否完全一致,确定源渲染缓存,将源渲染缓存提交给服务器端,并锁定源渲染缓存;
等待服务器端获取提交的源渲染缓存,待接收到服务器端返回的交换缓存完成信号后,解锁源渲染缓存,并标示源渲染缓存为已提交状态。
9.根据权利要求8所述的显示内容渲染方法,其特征在于,所述根据所述渲染缓存队列中已完成状态的渲染缓存的个数以及绘制区域是否完全一致,确定源渲染缓存,将源渲染缓存提交给服务器端,并锁定源渲染缓存,包括:
若标示为已完成状态的渲染缓存的个数大于1,则分析标示为已完成状态的渲染缓存的序列号和绘制区域,若多个标示为已完成状态的渲染缓存绘制区域完全一致,则将序列号最大的渲染缓存作为源渲染缓存,准备提交给服务器端,其他渲染缓存设为已过期状态,;
若多个标示为已完状态成的渲染缓存绘制区域不完全一致,提交渲染缓存合并请求,等待合并完成,将合并后的渲染缓存作为源渲染缓存,准备提交给服务器端;
锁定源渲染缓存,标示源渲染缓存为正在提交状态,向服务器提交准备好的源渲染缓存。
10.一种显示内容渲染方法,应用于客户端,其特征在于,包括:
创建模块,用于应用初始化时,在客户端创建渲染缓存队列,在所述渲染缓存队列中创建多个渲染缓存,并标示每一个渲染缓存为未使用状态;
设定模块,用于设定所述渲染缓存队列中的第一个渲染缓存为当前渲染缓存,标示所述第一个渲染缓存为正在渲染状态;
渲染模块,用于锁定当前渲染缓存,并渲染当前帧显示内容到当前渲染缓存,渲染完成后,解锁当前渲染缓存,标示当前渲染缓存为已完成状态;
更新模块,用于当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,重复执行所述渲染模块和所述更新模块,直到渲染结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311638708.5A CN117369936B (zh) | 2023-12-04 | 2023-12-04 | 一种显示内容渲染方法及渲染系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311638708.5A CN117369936B (zh) | 2023-12-04 | 2023-12-04 | 一种显示内容渲染方法及渲染系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117369936A true CN117369936A (zh) | 2024-01-09 |
CN117369936B CN117369936B (zh) | 2024-03-08 |
Family
ID=89398709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311638708.5A Active CN117369936B (zh) | 2023-12-04 | 2023-12-04 | 一种显示内容渲染方法及渲染系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117369936B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120086717A1 (en) * | 2010-10-01 | 2012-04-12 | Imerj LLC | Instant remote rendering |
CN103617031A (zh) * | 2013-11-20 | 2014-03-05 | 广东威创视讯科技股份有限公司 | 图像渲染的方法和装置 |
US20160188491A1 (en) * | 2014-12-24 | 2016-06-30 | Intel Corporation | Apparatus and method for asynchronous tile-based rendering control |
CN105786479A (zh) * | 2014-12-23 | 2016-07-20 | 联芯科技有限公司 | 一种合成内存管理方法及系统 |
CN106296785A (zh) * | 2016-08-09 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 一种图片渲染方法及图片渲染设备 |
CN107223264A (zh) * | 2016-12-26 | 2017-09-29 | 深圳前海达闼云端智能科技有限公司 | 一种渲染方法及装置 |
CN108093292A (zh) * | 2016-11-21 | 2018-05-29 | 阿里巴巴集团控股有限公司 | 用于管理缓存的方法、装置及系统 |
CN113672321A (zh) * | 2021-07-26 | 2021-11-19 | 中标软件有限公司 | 支持客户端窗口坐标的轻量级wayland合成器的实现方法 |
CN115131488A (zh) * | 2022-08-31 | 2022-09-30 | 麒麟软件有限公司 | wayland图形显示环境下管理显示缓存的方法及系统 |
CN115661396A (zh) * | 2022-12-28 | 2023-01-31 | 中国电子科技集团公司第二十八研究所 | 一种基于全球网格划分的地图要素注记显示方法及系统 |
CN115794294A (zh) * | 2023-02-08 | 2023-03-14 | 麒麟软件有限公司 | vhost-user-gpu虚拟机的远程桌面实现方法及系统 |
-
2023
- 2023-12-04 CN CN202311638708.5A patent/CN117369936B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120086717A1 (en) * | 2010-10-01 | 2012-04-12 | Imerj LLC | Instant remote rendering |
CN103617031A (zh) * | 2013-11-20 | 2014-03-05 | 广东威创视讯科技股份有限公司 | 图像渲染的方法和装置 |
CN105786479A (zh) * | 2014-12-23 | 2016-07-20 | 联芯科技有限公司 | 一种合成内存管理方法及系统 |
US20160188491A1 (en) * | 2014-12-24 | 2016-06-30 | Intel Corporation | Apparatus and method for asynchronous tile-based rendering control |
CN106296785A (zh) * | 2016-08-09 | 2017-01-04 | 腾讯科技(深圳)有限公司 | 一种图片渲染方法及图片渲染设备 |
CN108093292A (zh) * | 2016-11-21 | 2018-05-29 | 阿里巴巴集团控股有限公司 | 用于管理缓存的方法、装置及系统 |
CN107223264A (zh) * | 2016-12-26 | 2017-09-29 | 深圳前海达闼云端智能科技有限公司 | 一种渲染方法及装置 |
WO2018119602A1 (zh) * | 2016-12-26 | 2018-07-05 | 深圳前海达闼云端智能科技有限公司 | 一种渲染方法及装置 |
CN113672321A (zh) * | 2021-07-26 | 2021-11-19 | 中标软件有限公司 | 支持客户端窗口坐标的轻量级wayland合成器的实现方法 |
CN115131488A (zh) * | 2022-08-31 | 2022-09-30 | 麒麟软件有限公司 | wayland图形显示环境下管理显示缓存的方法及系统 |
CN115661396A (zh) * | 2022-12-28 | 2023-01-31 | 中国电子科技集团公司第二十八研究所 | 一种基于全球网格划分的地图要素注记显示方法及系统 |
CN115794294A (zh) * | 2023-02-08 | 2023-03-14 | 麒麟软件有限公司 | vhost-user-gpu虚拟机的远程桌面实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117369936B (zh) | 2024-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2047369B1 (en) | Combined pessimistic and optimistic concurrency control | |
CN107608773B (zh) | 任务并发处理方法、装置及计算设备 | |
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
US8719787B2 (en) | System and method for server migration synchronization | |
US20130086018A1 (en) | Transaction processing system, method, and program | |
US8255918B2 (en) | Namespace merger | |
US8359599B2 (en) | Methods and systems for efficient use and mapping of distributed shared resources | |
CN110221889A (zh) | 一种页面展示方法、装置、电子设备及存储介质 | |
WO2003058452A1 (en) | Method and apparatus to maintain consistency between an object store and a plurality of cache utilizing transactional updates to data caches | |
CN111125040A (zh) | 管理重做日志的方法、装置及存储介质 | |
CN110704199A (zh) | 数据压缩方法、装置、计算机设备及存储介质 | |
US20070088871A1 (en) | Implementation of shared and persistent job queues | |
CN112286907A (zh) | 一种数据库配置方法、装置、电子设备和可读存储介质 | |
CN117369936B (zh) | 一种显示内容渲染方法及渲染系统 | |
US20150154272A1 (en) | Managing data operations in an integrated database system | |
US7213244B2 (en) | Apparatus and method for distribution of work on a doubly linked list among processing threads | |
US20100049747A1 (en) | Apparatus and method for storing log in a thread oriented logging system | |
JP2017045217A (ja) | ログ管理装置、ログ管理方法、およびログ管理プログラム | |
CN115309315B (zh) | Wayland环境下X应用的截图方法、系统及介质 | |
CN111625507A (zh) | 一种文件处理方法及装置 | |
CN110546609A (zh) | 硬件事务内存(htm)辅助数据库事务 | |
CN110832473B (zh) | 日志结构管理系统及方法 | |
CN111680483A (zh) | 单证模板更新方法、装置、电子设备及介质 | |
WO2020107352A1 (zh) | 日志序列号生成方法、装置及可读存储介质 | |
US11983159B2 (en) | Systems and methods for management of a log-structure |
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 |