基于Linux嵌入式系统的多窗口实现方法、装置及介质与流程

文档序号:29403340发布日期:2022-03-26 10:01阅读:来源:国知局

技术特征:
1.一种基于linux嵌入式系统的多窗口实现方法,其特征在于,该方法包括:重构,对linux嵌入式系统的显示标准结构体进行重构,经过重构的标准结构体用于对egl接口变量、线程变量及gpu线程管理变量进行描述;初始化,加载重构的opengl程序函数库和对外api函数库,并执行初始化;多窗口实现,通过所述重构的opengl程序函数库中的多个函数,执行多窗口的窗口创建、帧缓存对象的创建、帧缓存对象的交换、窗口显示及窗口显示位置调整;同步线程处理,通过vsync处理线程执行送显线程同步处理,以及,通过送显线程执行渲染线程的同步信号管理及帧缓存对象的管理。2.根据权利要求1所述的基于linux嵌入式系统的多窗口实现方法,其特征在于,所述重构包括:对opengles/egl的api函数进行重构,其中所述egl接口变量包括离屏缓冲区变量及显示资源变量,离屏缓冲区变量及显示资源变量分别用于表示外部eglsurface及egldisplay的数据类型,所述线程变量用于表示每个线程拥有的变量,所述gpu线程管理变量用于表示原生gpu厂商的opengles/egl原生变量。3.根据权利要求2所述的基于linux嵌入式系统的多窗口实现方法,其特征在于,所述初始化包括:启动渲染程序执行数据加载,包括对原生opengles/egl的库装载,并通过所述重构对标准opengles/egl api函数进行函数重构;启动vsync处理线程,对窗口的生产者与消费者进行同步。4.根据权利要求1所述的基于linux嵌入式系统的多窗口实现方法,其特征在于,所述多窗口实现包括:所述窗口创建通过eglcreatewindowsurface函数创建离屏渲染对象,初始化所述离屏缓冲区变量及初始化消费者硬件层,以及,在同一进程或多个进程创建至少一个窗口,且多个窗口之间不互相影响;所述帧缓存对象的创建通过eglmakecurrent函数申请与帧缓存对象数量的缓存,并创建对应数量的帧缓存对象,对对应的所述离屏缓冲区变量进行初始化,并创建线程变量用于保存必要的线程变量数据;所述帧缓存对象的交换通过eglswapbuffers交换所述离屏缓冲区变量中的帧缓存对象,将渲染操作绘制到帧缓存对象中,并创建sync信号,提交到送显线程,获取并绑定新的帧缓存对象;所述窗口显示通过glbindframebuffer函数对应用程序绑定帧缓存对象依次执行获取线程前后文变量、获取离屏缓冲窗口、获取写入函数的帧缓存对象、执行绑定;所述窗口显示位置调整通过eglsetsurfaceext函数将不同的窗口放置到消费者的不同通道和层中。5.根据权利要求4所述的基于linux嵌入式系统的多窗口实现方法,其特征在于,所述多窗口实现还包括:通过eglgetdisplay指定窗口显示于对应的屏幕,若屏幕为第一次获取,将会创建对应屏幕的送显线程。6.根据权利要求1所述的基于linux嵌入式系统的多窗口实现方法,其特征在于,所述
vsync处理线程包括:对送显线程执行平滑送帧,并对同一个vsync周期限制送显一帧画面;对用于同步窗口的循环使用的缓存进行归还处理;以及对需要vsync信号的应用发出渲染节拍。7.根据权利要求1所述的基于linux嵌入式系统的多窗口实现方法,其特征在于,所述送显线程包括:同一个vsync周期限制送显一帧画面;同步渲染线程的sync信号管理;基于消费者角度对帧缓存对象的多缓存消费进行协调。8.根据权利要求1所述的基于linux嵌入式系统的多窗口实现方法,其特征在于,所述该方法还包括对受影响的api函数进行消除副作用处理。9.一种基于linux嵌入式系统的多窗口实现装置,该装置包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8任一项所述的方法步骤。10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一所述的方法步骤。

技术总结
本发明涉及一种基于Linux嵌入式系统的多窗口实现方法、装置及介质的技术方案,包括:重构,对Linux嵌入式系统的显示标准结构体进行重构;初始化,加载重构的OpenGL程序函数库,并执行初始化;多窗口实现,通过所述重构的OpenGL程序函数库中的多个函数,执行多窗口的窗口创建、帧缓存对象的创建、帧缓存对象的交换、窗口显示及窗口显示位置调整;同步线程处理,通过Vsync处理线程执行送显线程同步处理,以及,通过送显线程执行渲染线程的同步信号管理及帧缓存对象的管理。本发明的有益效果为:在不改变GPU厂商提供的OpenGLES库和OpenGLES应用的基础上,设计一套实现多窗口/多进程/多线程渲染的方法,提升了fbdev下的OpenGLES的渲染体验和灵活性。渲染体验和灵活性。渲染体验和灵活性。


技术研发人员:崔运涛 邓博
受保护的技术使用者:珠海全志科技股份有限公司
技术研发日:2021.11.30
技术公布日:2022/3/25
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1