本发明专利技术涉及一种嵌入式Linux平台下的显示方法,包括:设置显卡输出的分辨率;根据所述分辨率、图形层显示格式和视频层显示格式,计算用于存储图形和视频的存储空间的大小;将所述存储空间划分为图形层存储空间和视频层存储空间;配置显卡的寄存器,以使能所述图形层存储空间和所述视频层存储空间的分离;嵌入式Linux系统中的用户的显示实体访问显卡,从所述图形层存储空间读写图形数据,从所述视频层存储空间读写视频数据。通过本发明专利技术,将显卡的图形层与视频层分离开来,用户层显示设备可以独立对每一层进行控制。大大减少系统的复杂性,增加了稳定性与可靠性。
【技术实现步骤摘要】
本专利技术涉及一种图形和视频的显示方法,具体涉及ー种。
技术介绍
嵌入式Linux技术以其高效、稳定以及占用资源少等特性广泛应用于消费类电子、多媒体終端等领域。一直以来,如何能将图形用户界面(GUI)高效的显示出来是嵌入式Linux平台下的一大弱项。传统的显示方法是基于X Window系统的,如图1所示。X window采用Client/Server模式,底层与输入输出设备驱动进行通信,如键盘、鼠标以及显卡;中间层是X Server,它是X window系统的核心,上层是ー个个的X Client端,可以是ー个独立的应用程序,如浏览器,也可以是ー个图形库,比如Qt、GTK库等。X Client与X Server通信遵循Xll协议,简单来讲,X Server监听X Client端发送过来的图形输出请求,并负责完成相应的操作,最后给X Client端ー个响应。由于X window系统过于庞大和复杂,并不适合于应用在嵌入式Linux系统中,虽然可以对其进行裁剪,但是裁剪难度不小,稳定性也无法得到保证。另外,X window系统由于采用C/S模式,显示数据必然要经过额外的拷贝花销,大大降低了显示的实时性。同吋,X window没有提供图形层和视频层的分离机制,应用层浏览器不能同时显示图形层和视频层,因为占据了同一存储空间,浏览器在顺序访问存储空间读取数据来显示时,视频层覆盖在前的图形层,或者图形层覆盖了在前的视频层,即不是“透明的”。但是,在实际的应用中,用户往往希望混合显示视频数据以及图形⑶I,因此需要一种图形层和视频层彼此不相干扰的同时显示的方法。
技术实现思路
为了能够在嵌入式Linux平台下高效的进行图形和视频的显示,本专利技术提供ー种,包括:设置显卡输出的分辨率;根据所述分辨率、图形层显示格式和视频层显示格式,计算用于存储图形和视频的存储空间的大小;将所述存储空间划分为图形层存储空间和视频层存储空间;配置显卡的寄存器,以使能所述图形层存储空间和所述视频层存储空间的分离;嵌入式Linux系统中的用户的显示实体访问显卡,从所述图形层存储空间读写图形数据,从所述视频层存储空间读写视频数据。采用本技术方案后可以获得以下有益的技术效果:I)绕开X window系统,大大减少系统的复杂性,增加了稳定性与可靠性;2)由于直接通过用户的显示实体将显示数据直接写入到显卡的缓存中去,避免了中间环节的数据拷贝,显示性能以及实时性大为提高;3)将显卡的图形实体与视频实体分离开来,用户的显示实体可以独立对图形实体和视频实体进行控制。附图说明图1为现有技术的采用X Window系统的显示方法。图2为本专利技术的的流程图。具体实施例方式总体来说,本专利技术的技术方案涉及嵌入式Linux内核层的显卡以及用户的显示实体两部分。如图2所示,在嵌入式Linux系统中,根据显卡的分辨率、图形层显示格式和视频层显示格式计算用于存储图形和视频的存储空间大小,可选地,也可以根据两种显示格式中占用空间较大的一个来计算存储空间。图形层显示格式和视频层显示格式可以采用同一格式。将该存储空间划分为图形层存储空间和视频层存储空间。这两个存储空间不重叠,而且可以是邻接的。所述图形层存储空间的大小根据图形层显示格式的一个像素所占用的字节而设定,所述视频层存储空间的大小根据视频层显示格式的一个像素所占用的字节而设定。嵌入式Linux系统中用户的显示实体访问显卡,从所述图形层存储空间读写图形数据,从所述视频层存储空间读写视频数据,也可以往上述两个存储空间内写入数据。以具有frame buffer功能的显卡为例,将frame buffer映射到用户的显示实体,该显示实体就可以像写内存的方式一样将显示数据写入到显卡的frame buffer中去,或者从frame buffer中读取数据来显示。同时,修改显卡的驱动參数,设置相关的寄存器,将显卡的图形层与视频层进行分离,具体而言,是将各自的存储空间进行分离,不再占用相同的一段存储空间。分离后,图形层存储空间与视频层存储空间在frame buffer中的起始地址不同并且不会重叠,这样对于用户的显示实体来说,就可以独立的控制显卡的图形层以及视频层的输出和输入。下面以Intel Sandy Bridge平台i5_2300的CPU为例(显卡集成在CPU中),介绍本专利技术的技术方案的实现步骤:I)在显卡的GRUB启动參数中设置显卡输出的分辨率设置,比如video =VGA-1:1280x1024060 ;2)在内核显卡驱动參数中根据先前GRUB中的设置,计算出frame buffer的空间范围,比如分辨率是1280x1024的情况下,并且存在图形层以及视频层,每个像素按照ARGB格式表示,占用4个字节,则图形层和视频层共占用的字节数为=1280x1024x4x2。如果视频层采用YUYV格式,则图形层和视频层共占用的字节数为1280x1024x4+1280x1024x2。然后,采用i0remap_WC函数将这样大小的字节空间的显卡显存映射出来,得到的虚拟地址即是frame buffer的首地址;3)分别设置图形层以及视频层的相关寄存器,以使能图形层和视频层,所述相关寄存器包括:起始地址寄存器、stride寄存器、显示格式寄存器(显示格式一般包括ARGB以及YUYV等)以及key color寄存器,以使得图形层和视频层对于彼此可以是“透明的”,特别是动态的视频层数据不会被图形层数据覆盖,而无法显示出来。根据不同的厂商芯片,设置的寄存器也不同,具体需要根据寄存器的用户手册来配置,但是基本原理就是在使能图形层存储空间和视频层存储空间的分离,比如Inteli5-2300CPU中key color寄存器的定义为: Bit ~ 31: 24 保留位 23: 16 RGB通道中R通道的目标比较值 15: 8RGB通道中G通道的目标比较值 7: 0 RGB通道中B通道的目标比较值如果设置上面寄存器中R通道值为a,G通道值为b,B通道值为c,那么图形层像素点值为(a<<16|b<<8|c)的点将是透明的,即它显示的图像为视频层该位置的值。4)在设置上述寄存器时,对于图形层来说,选择ARGB的显示格式,而对于视频层来说,一般选择YUYV格式,这样不仅可以避免格式转换(因为一般解码库的输出就是YV12格式),还可以減少需要拷贝到显卡的存储空间里去的数据量;5)在用户层为应用实体创建“/dev/fbO”设备树文件;6)用户的应用实体读取GRUB配置文件中的參数,利用mmap函数将“/dev/fbO”进行内存映射,得到的地址即是frame buffer可被应用实体访问的起始地址,大小空间为前面所述一致,即图形层存储空间+视频层存储空间。图形层存储空间与视频层存储空间是连续的,这样各自的起始地址为:图形层空间起始地址=frame buffer起始地址;视频层空间起始地址=frame buffer起始地址+图形层空间大小。用户的显示实体根据图形层空间以及视频层空间的起始地址分别进行图形数据和视频数据的刷新。如此,这样对于用户的应用实体来说,就可以独立的控制显卡的图形以及视频输出。上述实施例用来解释说明本专利技术,而不是对本专利技术进行限制,本文档来自技高网...
【技术保护点】
一种嵌入式Linux平台下的显示方法,其特征在于,包括:设置显卡输出的分辨率;根据所述分辨率、图形层显示格式和视频层显示格式,计算用于存储图形和视频的存储空间的大小;将所述存储空间划分为图形层存储空间和视频层存储空间;配置显卡的寄存器,以使能所述图形层存储空间和所述视频层存储空间的分离;嵌入式Linux系统中的用户的显示实体访问显卡,从所述图形层存储空间读写图形数据,从所述视频层存储空间读写视频数据。
【技术特征摘要】
1.一种嵌入式Linux平台下的显示方法,其特征在于,包括: 设置显卡输出的分辨率; 根据所述分辨率、图形层显示格式和视频层显示格式,计算用于存储图形和视频的存储空间的大小; 将所述存储空间划分为图形层存储空间和视频层存储空间; 配置显卡的寄存器,以使能所述图形层存储空间和所述视频层存储空间的分离; 嵌入式Linux系统中的用户的显示实体访问显卡,从所述图形层存储空间读写图形数据,从所述视频层存储空间读写视频数据。2.根据权利要求1所述的嵌入式Linux平台下的显示方法,其特征在干, 所述图形层存储空间的大小根据图形层显示格式的一个像素所占用的字节而设定, 所述视频层存储空间的大小根据视频层显示格式的一个像素所占用的字节而设定。3.根据权利要求1所述的嵌入式Linux平台下的显示方法,其特征在于,所述图形层存储空间和所述视频层存储空间...
【专利技术属性】
技术研发人员:彭席汉,张兴明,傅利泉,朱江明,吴军,吴坚,
申请(专利权)人:浙江大华技术股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。