System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及gpu图形渲染领域,更具体地,涉及一种gpu软硬件模块及gpu图形显示缓冲区交换同步方法。
技术介绍
1、在计算机图形处理领域,为了实现流畅的图形显示效果,通常会采用双缓冲或多缓冲的技术。这种技术是使用两个或多个独立的缓冲区来存储图形数据,其中一个缓冲区(可以称为前置缓冲区)专门用于存储当前正在屏幕上显示的图形数据,而另一个或多个缓冲区则被用来存储即将显示的下一帧图形数据(可以称为后置缓冲区)。当图形处理器gpu(graphics processing unit)完成一帧图形的绘制工作后,系统会执行显示缓冲区交换的操作。
2、显示缓冲区交换操作的核心在于将当前用于显示的缓冲区和用于绘制下一帧图形数据的缓冲区进行交换。这一过程通常采用垂直同步的技术来控制,以确保交换操作在显示器的垂直回扫期间进行,从而避免图像撕裂。
3、相近的技术方案有专利号为cn116909511a的《提升gpu双缓冲显示效率的方法、装置及存储介质》,公开了一种提升gpu双缓冲显示效率的方法,该方法包括:将当前帧的渲染结果存储到第一缓冲区;将所述第一缓冲区与第二缓冲区进行交换;在交换过程中,通过arm平台的neno指令进行内存拷贝以将所述当前帧的渲染结果拷贝至所述第二缓冲区;将所述第二缓冲区内的渲染结果发送至显示器以展示在屏幕上。
4、上述专利具有以下缺陷:
5、(1)该专利紧密相关于arm平台,依赖于arm指令集,因此在非arm架构的平台上,如risc-v架构或全正向自主研发的架构平台上,无法实现。
6、(2)在数据交换过程中,利用arm平台的neno指令集进行内存拷贝,将当前帧的渲染结果复制到第二缓冲区,这一过程涉及内存拷贝操作。
技术实现思路
1、本专利技术针对现有技术中存在的技术问题,提供一种gpu软硬件模块及gpu图形显示缓冲区交换同步方法,以解决单一平台和数据拷贝带来的冗余操作的问题。
2、根据本专利技术的第一方面,提供了一种gpu软硬件模块,包括:
3、所述gpu软硬件模块包括应用程序、用户态驱动、内核态驱动和硬件模块,所述应用程序包括opengl api接口和egl api接口,所述硬件模块包括gpu单元和显示控制器;
4、应用程序会通过调用egl api接口对显示设备进行初始化和配置,通过openglapi接口对gpu单元进行初始化和配置;
5、应用程序通过opengl api接口向用户态驱动发出任务请求,用户态驱动接收到所述任务请求后,对用户输入数据进行检查且将用户输入数据转换为内部数据进行加工整合,以任务包形式将数据和命令下发到内核态驱动,所述任务包包括数据包和命令包;
6、内核态驱动获取到用户态驱动的所述任务包后,将所述数据包放到内存或显存中,将所述命令包传递给硬件模块,所述硬件模块中的gpu单元对所述数据包进行渲染绘制,将渲染结果放入缓冲区;
7、用户态驱动在下发任务请求的同时对任务进行异步或同步监测,当gpu单元完成渲染绘制任务并将渲染结果放入缓冲区后,以中断方式同步给内核态驱动,内核态驱动以事件触发机制将中断事件上报给用户态驱动;
8、用户态驱动以异步或同步等待方式获取到gpu单元渲染绘制任务完成状态后,若应用程序在发起gpu渲染绘制任务后同时调用了eglswapbuffer api接口,则在eglswapbuffer的实现中对显示设备进行控制,将当前正在显示的缓冲区与gpu单元已经渲染绘制完成的缓冲区进行交换。
9、在上述技术方案的基础上,本专利技术还可以作出如下改进。
10、可选的,所述用户态驱动包括api接口层、状态处理层、设备驱动层和系统抽象层;
11、所述api接口层,用于接收应用程序传递的任务请求,根据所述任务请求对用户输入数据进行检查和数据结构化,将用户输入数据转换为内部数据提交给所述状态处理层;
12、所述状态处理层,用于对所述内部数据进行加工;
13、所述设备驱动层,用于对加工后的内部数据进行整合打包,并以任务包形式将数据和命令下发给内核态驱动;
14、所述系统抽象层,用于实现多系统平台的兼容。
15、可选的,所述内核态驱动包括gpu驱动和显示控制器驱动,分别用于对硬件模块中的gpu单元和显示控制器进行驱动。
16、根据本专利技术的第二方面,提供一种gpu图形显示缓冲区交换同步方法,包括:
17、当用户态驱动收到egl api接口的任务请求后,对显示设备进行初始化,创建一个screen对象,在所述screen对象中准备一个或多个帧缓冲区并设置显示控制器扫描的初始地址,所述显示控制器扫描的初始地址为当前正在显示的缓冲区;应用程序通过openglapi接口对gpu单元进行控制;
18、当用户态驱动接收到opengl api接口的任务请求后,创建一个context对象,并经egl api接口设置为当前上下文,用户态驱动在当前上下文中对用户输入数据进行加工和打包,以任务包形式提交至内核态驱动,经用户态驱动处理后的命令中携带有gpu渲染目的地址,所述gpu渲染目的地址指向gpu单元已经渲染完成的缓冲区,所述gpu渲染目的地址与所述显示控制器扫描的初始地址不同;
19、用户态驱动将渲染任务下发至内核态驱动后,内核态驱动对渲染任务进行调度并将渲染任务传递至硬件模块中的gpu单元进行渲染,且将渲染结果放置与gpu渲染目的地址对应的缓冲区;
20、在用户态驱动将渲染任务下发到内核态驱动时,用户态驱动将进入异步等待或同步等待状态,直到gpu单元渲染任务完成;gpu单元渲染完成并将渲染结果放入缓冲区后,以中断方式同步给内核态驱动;
21、内核态驱动接收到中断事件,用户态驱动监测到事件被触发,如果应用程序发起eglswapbuffer api请求,用户态驱动利用内核态驱动提供的寄存器读写接口,将gpu渲染目的地址作为显示控制器需要扫描的帧缓冲区地址写入寄存器中,实现gpu单元已经渲染完成的缓冲区和当前正在显示的缓冲区的切换。
22、可选的,在所述screen对象中准备两个帧缓冲区,设置显示控制器扫描的初始地址指向其中第二缓冲区,经用户态驱动处理后的命令中携带的gpu渲染目的地址指向第一缓冲区。
23、可选的,实现gpu单元已经渲染完成的缓冲区和当前正在显示的缓冲区的切换,包括:
24、在第一帧渲染过程中,gpu单元将图形数据渲染到第一缓冲区中,显示控制器扫描第二缓冲区中的内容,当硬件模块报告渲染完成的中断事件时,用户态驱动程序会接收到中断时间事件,切换第一缓冲区和第二缓冲区的地址;
25、在第二帧渲染过程中,gpu单元将图形数据渲染到第二缓冲区中,显示控制器扫描第一缓冲区中的内容,当硬件模块报告渲染完成的中断事件时,用户态驱动程序接收到中断事件,切换第二缓冲区和第一缓冲区的地址;本文档来自技高网...
【技术保护点】
1.一种GPU软硬件模块,其特征在于,所述GPU软硬件模块包括应用程序、用户态驱动、内核态驱动和硬件模块,所述应用程序包括OpenGL API接口和EGL API接口,所述硬件模块包括GPU单元和显示控制器;
2.根据权利要求1所述的GPU软硬件模块,其特征在于,所述用户态驱动包括API接口层、状态处理层、设备驱动层和系统抽象层;
3.根据权利要求2所述的GPU软硬件模块,其特征在于,所述内核态驱动包括GPU驱动和显示控制器驱动,分别用于对硬件模块中的GPU单元和显示控制器进行驱动。
4.一种GPU图形显示缓冲区交换同步方法,应用于权利要求1所述的GPU设备,其特征在于,所述方法包括:
5.根据权利要求4所述的GPU图形显示缓冲区交换同步方法,其特征在于,在所述screen对象中准备两个帧缓冲区,设置显示控制器扫描的初始地址指向其中第二缓冲区,经用户态驱动处理后的命令中携带的GPU渲染目的地址指向第一缓冲区。
6.根据权利要求5所述的GPU图形显示缓冲区交换同步方法,其特征在于,实现GPU单元已经渲染完成的缓冲区和当前正
7.根据权利要求4所述的GPU图形显示缓冲区交换同步方法,其特征在于,在所述screen对象中准备三个帧缓冲区,其中,显示控制器拥有第一缓冲区,GPU单元拥有第二缓冲区和,CPU拥有第三缓冲区;
...【技术特征摘要】
1.一种gpu软硬件模块,其特征在于,所述gpu软硬件模块包括应用程序、用户态驱动、内核态驱动和硬件模块,所述应用程序包括opengl api接口和egl api接口,所述硬件模块包括gpu单元和显示控制器;
2.根据权利要求1所述的gpu软硬件模块,其特征在于,所述用户态驱动包括api接口层、状态处理层、设备驱动层和系统抽象层;
3.根据权利要求2所述的gpu软硬件模块,其特征在于,所述内核态驱动包括gpu驱动和显示控制器驱动,分别用于对硬件模块中的gpu单元和显示控制器进行驱动。
4.一种gpu图形显示缓冲区交换同步方法,应用于权利要求1所述的gpu设备,其特征在于,所...
【专利技术属性】
技术研发人员:刘魁,张彦芳,张明波,刘平和,吕攀攀,
申请(专利权)人:武汉凌久微电子有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。