基于Vulkan实现图形渲染的方法及相关装置制造方法及图纸

技术编号:33546050 阅读:30 留言:0更新日期:2022-05-26 22:40
本申请实施例提供一种基于Vulkan实现图形渲染的方法及相关装置,方法包括:通过第一线程将异步执行的OpenGL ES指令处理成为第一事件event,第一事件包含异步执行的OpenGL ES指令的描述信息;通过第二线程处理第一事件得到第二任务job,第二任务包含一个第一事件或多个第一事件,多个第一事件是根据相同或者不同的异步执行的OpenGL ES指令处理得到的;通过第三线程将第二任务保存到命令缓存区;通过Vulkan接口向GPU图像处理器发送命令缓存区中的第二任务,其中,GPU用于根据第二任务完成图形渲染。采用本申请实施例,能够提高GPU的渲染效率。效率。效率。

【技术实现步骤摘要】
基于Vulkan实现图形渲染的方法及相关装置


[0001]本申请涉及计算机图形
,尤其涉及一种基于Vulkan实现图形渲染的方法及相关装置。

技术介绍

[0002]随着终端技术的快速发展,电脑和手机等终端均可以通过安装不同的应用软件来实现各种各样的功能,比如说一个应用软件中设置了美颜、美妆、魔法表情等功能。由于多年的代码积累,目前这些功能都是基于开发图像库(Open Graphics Library,OpenGL)或嵌入式开发图形库(OpenGL for Embedded Systems,OpenGL ES)编写了相应的渲染器及图像引擎。但是,很多厂商正在规划采用Vulkan来取代OpenGL ES的应用,而对于多数应用软件而言,为了保留向前兼容性,OpenGL或OpenGL ES依然会存在。
[0003]为了完成在不使用OpenGL ES驱动的计算机系统中提供OpenGL ES的功能技术实现,现有的一种简单的方法是直接用Vulkan作为底层来实现OpenGL ES。但是,直接用Vulkan作为底层来实现OpenGL ES的运行效本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于Vulkan实现图形渲染的方法,其特征在于,包括:通过第一线程将异步执行的OpenGL ES指令处理成为第一事件,所述第一事件包含所述异步执行的OpenGL ES指令的描述信息;通过第二线程处理所述第一事件得到第二任务,所述第二任务包含一个第一事件或多个第一事件,所述多个第一事件是根据相同或者不同的异步执行的OpenGL ES指令处理得到的;通过第三线程将所述第二任务保存到命令缓存区;通过Vulkan接口向图形处理器发送所述命令缓存区中的第二任务,其中,所述图形处理器用于根据所述第二任务完成图形渲染。2.根据权利要求1所述的方法,其特征在于,所述通过第一线程将异步执行的OpenGL ES指令处理成为第一事件event之前,还包括:根据OpenGL ES应用程序接口的类型将多个OpenGL ES指令分类为异步执行的OpenGL ES指令和同步执行的OpenGL ES指令。3.根据权利要求2所述的方法,其特征在于,状态设置与获得类型的OpenGL ES指令以及对象生成和销毁类型的OpenGL ES指令均属于所述同步执行的OpenGL ES指令;数据上传类型的OpenGL ES指令和绘制类型的OpenGL ES指令均属于所述异步执行的OpenGL ES。4.根据权利要求2或3所述的方法,其特征在于,所述根据OpenGL ES应用程序接口的类型将多个OpenGL ES指令分类为异步执行的OpenGL ES指令和同步执行的OpenGL ES指令之后,还包括:通过所述第一线程将所述同步执行的OpenGL ES指令的描述信息保存到数据结构。5.根据权利要求2

4任一项所述的方法,其特征在于,所述根据OpenGL ES应用程序接口API的类型将多个OpenGL ES指令分类为异步执行的OpenGL ES指令和同步执行的OpenGL ES指令之后,还包括:通过所述第一线程从数据结构中获得所述同步执行的OpenGL ES指令的描述信息后,向所述图像处理器发送,所述图像处理器用于根据所述同步执行的OpenGL ES指令的描述信息完成图形渲染。6.根据权利要求1

5任一项所述的方法,其特征在于,所述通过第二线程处理所述第一事件得到第二任务,包括:在所述第一事件属于预设的第一类型时,执行所述通过第二线程处理所述第一事件得到第二任务的步骤。7.根据权利要求1

6任一项所述的方法,其特征在于,所述通过第二线程处理所述第一事件得到第二任务,包括:在所述第一事件不属于预设的第一类型时,且若累计缓存的第一事件的数量大于第一阈值,则执行所述通过第二线程处理所述第一事件得到第二任务的步骤。8.根据权利要求1

7所述的方法,其特征在于,所述通过第二线程处理所述第一事件得到第二任务job,包括:在所述第一事件不属于预设的第一类型,且当前累计缓存的第一事件的数量大于第二阈值且小于或等于第一阈值时,若GPU的负载小于第一负载阈值,则执行所述通过第二线程处理所述第一事件得到第二任务的步骤,所述第二阈值小于所述第一阈值。
9.根据权利要求1

8任一项所述的方法,其特征在于,所述通过第二线程处理得到第二任务job,包括:在所述第一事件不属于预设的第一类型,且当前累计缓存的第一事件的数量大于第二阈值且小于或等于第一阈值时,若GPU的负载大于或等于第一负载阈值,则缓存所述第一事件。10.根据权利要求1

9任一项所述的方法,其特征在于,所述第二任务包含多个第一事件,所述通过第三线程将所述第二任务缓存到命令缓存区,包括:通过所述第三线程对所述第二任务中的多个第一事件进行排序;将排序后的所述第二任务缓存到命令缓存区。11.根据权利要求10任一项所述的方法,其特征在于,所述通过所述第三线程对所述第二任务中的多个第一事件进行排序,包括:通过第三线程基于所述多个第一事件对应的管线状态对所述第二任务中的多个第一事件进行排序。12.根据权利要求11所述的方法,其特征在于,所述多个第一件事中对应同一管线状态的第一事件被排序在一起。13.根据权利要求1

9任一项所述的方法,其特征在于,所述第二任务包含多个第一事件,所述通过第三线程将所述第二任务缓存到命令缓存区,包括:通过第三线程将所述多个第一事件中对应同一个变量进行修改的第一事件进行排序;基于所述变量对第二任务中排序后的第一事件进行修改;将所述修改后的第二任务缓存到命令缓存区。14.根据权利要求13所述的方法,其特征在于,所述多个事件中对应同一变量进行修改的第一事件被排序在一起。15.根据权利要求1

14任一项所述的方法,其特征在于,所述通过第一线程将所述异步指令处理成为第一对象,包括:通过所述第一线程获取所述异步的OpenGL ES指令的描述信息;将所述异步的OpenGL ES指令的描述信息和所述异步的OpenGL ES指令封装成为第一对象。16.一种基于Vulkan实现图形渲染的装置,其特征在于,包括:上下文模块,用于通过第一线程将异步执行的O...

【专利技术属性】
技术研发人员:李宏伟罗谈发
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1