System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及显示渲染领域,更具体地,涉及一种显示内容渲染方法及渲染系统。
技术介绍
1、常见类linux操作系统一般都支持并使用x窗口系统(x window system)。该系统是一种以位图方式显示的软件窗口系统。x窗口系统通过软件工具及架构协定来创建操作系统所用的图形用户界面。主流的桌面环境-gnome和kde都是以x窗口系统为基础建构成的。
2、现有技术中,渲染缓存交互流程如图1所示,客户端完成渲染后,向x服务器提交渲染缓存;x服务器获取渲染缓存后,发送交换缓存完成信号;客户端接收到完成信号后,再次渲染。客户端的渲染效率受到x服务器对渲染缓存处理效率的影响。在某些gpu高负载场景及图形显示性能测试时,x服务器对渲染缓存处理效率低下成为了图形显示的瓶颈,严重影响了gpu性能的发挥。
技术实现思路
1、本专利技术针对现有技术中存在的技术问题,提供一种显示内容的渲染方法及渲染系统,能够克服客户端的渲染效率受限于服务器对渲染缓存处理效率,无法充分发挥gpu性能的问题。
2、根据本专利技术的第一方面,提供了一种显示内容渲染方法,包括:
3、步骤s1,应用初始化时,在客户端创建渲染缓存队列,在所述渲染缓存队列中创建多个渲染缓存,并标示每一个渲染缓存为未使用状态;
4、步骤s2,设定所述渲染缓存队列中的第一个渲染缓存为当前渲染缓存,标示所述第一个渲染缓存为正在渲染状态;
5、步骤s3,客户端锁定当前渲染缓存,并渲染当前帧显示内容
6、步骤s4,渲染完成后,解锁当前渲染缓存,标示当前渲染缓存为已完成状态;
7、步骤s5,当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,重复执行步骤s3~步骤s5,直到渲染结束。
8、在上述技术方案的基础上,本专利技术还可以作出如下改进。
9、可选的,还包括:
10、对已完成状态的渲染缓存按照完成时的时间戳进行编号,得到每一个已完成状态的渲染缓存的序列号。
11、可选的,所述步骤s5中,当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,包括:
12、在所述渲染缓存队列中查询每一个渲染缓存的状态,当存在状态为未使用或已提交或已过期的渲染缓存时,从所述未使用或已提交或已过期的渲染缓存中择其一更新为当前渲染缓存,并将当前渲染缓存标示为正在渲染状态;
13、若不存在状态为未使用或已提交或已过期的渲染缓存,则查询标示为已完成状态的渲染缓存,根据已完成状态的渲染缓存的个数和绘制区域是否完全一致,更新当前渲染缓存。
14、可选的,所述当存在状态为未使用或已提交或已过期的渲染缓存时,从所述未使用或已提交或已过期的渲染缓存中择其一更新为当前渲染缓存,包括:
15、当存在状态为未使用或已提交或已过期的渲染缓存时,按照未使用状态、已提交状态和已过期状态的优先级顺序,选择其中一个渲染缓存作为当前渲染缓存;
16、若同一个状态的渲染缓存存在多个时,则按照渲染缓存的序列号从小到大的顺序选择一个渲染缓存作为当前渲染缓存。
17、可选的,所述根据已完成状态的渲染缓存的个数和绘制区域是否完全一致,更新当前渲染缓存,包括:
18、若标示为已完成状态的渲染缓存的个数大于1,则分析标示为已完成状态的渲染缓存的序列号和绘制区域,若多个标示为已完成状态的渲染缓存绘制区域完全一致,则将序列号最大的渲染缓存保留为已完成状态,其他渲染缓存状态均设为已过期,且将序列号最小的渲染缓存设为当前渲染缓存;
19、若多个标示为已完成状态的渲染缓存绘制区域不完全一致,申请分配新渲染缓存,标示新渲染缓存为未使用状态,并将新渲染缓存加入渲染缓存队列中,作为当前渲染缓存。
20、可选的,还包括:
21、若多个标示为已完成状态的渲染缓存绘制区域不完全一致,则提交渲染缓存合并请求,根据所述渲染缓存合并请求将多个标示为已完成状态的渲染缓存合并为一个渲染缓存,且更新每一个渲染缓存的状态。
22、可选的,根据所述渲染缓存合并请求将多个标示为已完成状态的渲染缓存合并为一个渲染缓存,且更新每一个渲染缓存的状态,包括:
23、应用初始化时,新建渲染缓存合并进程;
24、渲染缓存合并进程实时查询客户端是否提交了渲染缓存合并请求;
25、若客户端提交了渲染缓存合并请求,查询渲染缓存队列,若渲染缓存队列中存在大于1个的标示为已完成状态的渲染缓存,则分析所有标示为已完成状态的渲染缓存的序列号和渲染区域,计算渲染缓存合并后的更新区域:渲染缓存不重合区域保留,渲染缓存重合区域更新为序列号最大的渲染缓存对应区域;
26、锁定所有标示为已完成状态的渲染缓存,根据计算的更新区域,选取保留区域最大的渲染缓存作为目的渲染缓存,将其他渲染缓存对应区域拷贝到目的渲染缓存中,完成拷贝后,将目的渲染缓存标示为已完成状态,其他渲染缓存标示为已过期状态,解锁锁定的渲染缓存。
27、可选的,还包括:
28、应用初始化时,在客户端新建渲染缓存提交进程,并初始化;
29、渲染缓存提交进程查询客户端是否需要提交新的渲染缓存,并询问服务器端是否立即提交;
30、若需要提交,则查询所述渲染缓存队列中是否存在已完成状态的渲染缓存;
31、根据所述渲染缓存队列中已完成状态的渲染缓存的个数以及绘制区域是否完全一致,确定源渲染缓存,将源渲染缓存提交给服务器端,并锁定源渲染缓存;
32、等待服务器端获取提交的源渲染缓存,待接收到服务器端返回的交换缓存完成信号后,解锁源渲染缓存,并标示源渲染缓存为已提交状态。
33、可选的,所述根据所述渲染缓存队列中已完成状态的渲染缓存的个数以及绘制区域是否完全一致,确定源渲染缓存,将源渲染缓存提交给服务器端,并锁定源渲染缓存,包括:
34、若标示为已完成状态的渲染缓存的个数大于1,则分析标示为已完成状态的渲染缓存的序列号和绘制区域,若多个标示为已完成状态的渲染缓存绘制区域完全一致,则将序列号最大的渲染缓存作为源渲染缓存,准备提交给服务器端,其他渲染缓存均设为已过期状态;
35、若多个标示为已完状态成的渲染缓存绘制区域不完全一致,提交渲染缓存合并请求,等待合并完成,将合并后的渲染缓存作为源渲染缓存,准备提交给服务器端;
36、锁定源渲染缓存,标示源渲染缓存为正在提交状态,向服务器提交准备好的源渲染缓存。
37、根据本专利技术的第二方面,提供一种显示内容渲染系统,包括:
38、创建模块,用于应用初始化时,在客户端创建渲染缓存队列,在所述渲染缓存队列中创建多个渲染缓存,并标示每一个渲染缓存为未使用状态;
...
【技术保护点】
1.一种显示内容渲染方法,其特征在于,包括:
2.根据权利要求1所述的显示内容渲染方法,其特征在于,还包括:
3.根据权利要求2所述的显示内容渲染方法,其特征在于,所述步骤S5中,当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,包括:
4.根据权利要求3所述的显示内容渲染方法,其特征在于,所述当存在状态为未使用或已提交或已过期的渲染缓存时,从所述未使用或已提交或已过期的渲染缓存中择其一更新为当前渲染缓存,包括:
5.根据权利要求4所述的显示内容渲染方法,其特征在于,所述根据已完成状态的渲染缓存的个数和绘制区域是否完全一致,更新当前渲染缓存,包括:
6.根据权利要求5所述的显示内容渲染方法,其特征在于,还包括:
7.根据权利要求6所述的显示内容渲染方法,其特征在于,根据所述渲染缓存合并请求将多个标示为已完成状态的渲染缓存合并为一个渲染缓存,且更新每一个渲染缓存的状态,包括:
8.根据权利要求1~5任一项所述的显示内容渲染方法,其
9.根据权利要求8所述的显示内容渲染方法,其特征在于,所述根据所述渲染缓存队列中已完成状态的渲染缓存的个数以及绘制区域是否完全一致,确定源渲染缓存,将源渲染缓存提交给服务器端,并锁定源渲染缓存,包括:
10.一种显示内容渲染方法,应用于客户端,其特征在于,包括:
...【技术特征摘要】
1.一种显示内容渲染方法,其特征在于,包括:
2.根据权利要求1所述的显示内容渲染方法,其特征在于,还包括:
3.根据权利要求2所述的显示内容渲染方法,其特征在于,所述步骤s5中,当进行下一帧显示内容的渲染时,在所述渲染缓存队列中查询每一个渲染缓存的状态,基于每一个渲染缓存的状态,更新当前渲染缓存,包括:
4.根据权利要求3所述的显示内容渲染方法,其特征在于,所述当存在状态为未使用或已提交或已过期的渲染缓存时,从所述未使用或已提交或已过期的渲染缓存中择其一更新为当前渲染缓存,包括:
5.根据权利要求4所述的显示内容渲染方法,其特征在于,所述根据已完成状态的渲染缓存的个数和绘制区域是否完全一致,更...
【专利技术属性】
技术研发人员:樊宇,熊海媛,彭获然,
申请(专利权)人:武汉凌久微电子有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。