一种片上系统、图形绘制方法、中间层及嵌入式设备与流程

文档序号:12597285阅读:325来源:国知局
一种片上系统、图形绘制方法、中间层及嵌入式设备与流程

本发明涉及图形绘制和显示技术,尤其涉及一种片上系统、图形绘制方法、中间层及嵌入式设备。



背景技术:

随着移动网络嵌入式的普及和发展,嵌入式设备中的片上系统(SoC,System on Chip)的功能越来越强大,因此,嵌入式设备的应用也就越来越广泛,例如用户可以将各种多媒体应用程序(APP,application)例如图形处理APP、游戏APP安装到嵌入式系统中,以通过图形处理APP(又称为图像处理APP)进行图形处理,通过游戏APP玩各种游戏。以游戏为例,很多越来越大型的游戏APP对图形显示效果和图形显示速度要求都很高,为了玩游戏比较顺畅,图形显示效果和图形显示速度是人们衡量和购买嵌入式设备的重要指标。

上述多媒体APP在运行的过程中,都是基于嵌入式图形用户界面(GUI,Graphical User Interface,又称图形用户接口),换句话说,嵌入式(GUI)是嵌入式系统的一个重要组成部分。与个人计算机(PC)上的操作系统不同,由于嵌入式系统本身硬件的条件限制,常用的PC机的GUI系统不适合在嵌入式系统上运行,因此产生了许多基于嵌入式系统尤其是嵌入式Linux的GUI。目前嵌入式的GUI主要有OpenGUI、Microwindows、QT/Embedded、MiniGUI等等。然而目前嵌入式设备的图形显示效果和图形显示速度却不尽人意,举例来说,图形用户界面(GUI,Graphical User Interface,又称图形用户接口)系统涉及很多图形运算,比如画点、画线、填充、透明度处理、平滑度处理、层的叠加、字体处理、贴图等等。如果这些图形运算都由中央处理器(CPU)来处理,那这将是对CPU的一个很大的负载。

现有技术中,嵌入式设备的片上系统中并没有专门的用于进行图形处理的图形处理器(Graphics Processing Unit,GPU),从而导致所有的图形绘制操作全部交给CPU来处理,这样加大了CPU的负载,进而降低了系统的整体性能,特别在进行复杂游戏操作的时候界面显示会卡顿,最终影响用户的体验。



技术实现要素:

有鉴于此,本发明实施例为解决现有技术中存在的至少一个问题而提供一种片上系统、图形绘制方法、中间层及嵌入式设备,能够提高片上系统的整体性能进而提高图形显示的速度,最终提高用户体验。

本发明实施例的技术方案是这样实现的:

第一方面,本发明实施例提供一种片上系统,所述片上系统包括中央处理器、图形处理器和帧缓冲设备,其中:

中央处理器,用于运行中间层;

图形处理器,用于从所述中间层中获取配置信息、待绘制的图形数据和与所述图形数据对应的处理任务;

图形处理器,还用于根据所述处理任务和所述配置信息对所述图形数据进行绘制,得到第一图形画面,并将所述第一图形画面输出给帧缓冲设备;

帧缓冲设备,用于所述中间层获取所述配置信息、图形数据和所述处理任务;

帧缓冲设备,还用于缓冲所述配置信息、图形数据和所述处理任务;

中央处理器,还用于从帧缓冲设备中获取所述配置信息、所述图形数据和所述处理任务,根据所述处理任务和所述配置信息对所述图形数据进行绘制,得到第二图形画面;

帧缓冲设备,还用于从所述中央处理器获取第二图形画面,并将所述第二图形画面输出;以及从所述图形处理器获取第一图形画面,并将所述第一图形画面输出。

第二方面,本发明实施例提供一种图形绘制方法,所述方法包括:

中间层接收应用层的调用请求,所述调用请求中携带有待绘制的图形数据和对所述图形数据对应的处理任务;

中间层响应所述调用请求,进行自身的初始化获得配置信息;

在初始化完成之后,中间层判断片上系统是否支持硬件加速;

当所述片上系统支持硬件加速时,中间层将所述配置信息、所述图形数据和所述处理任务交由图形处理器进行绘制;

中间层从所述图形处理器中获取第一响应信息,所述第一响应信息用于表明图形处理器是否利用所述处理任务和所述配置信息对所述图形数据进行绘制成功,;

中间层将所述第一响应信息携带于调用响应中,将所述调用响应返回给所述应用层。

第三方面,本发明实施例提供一种中间层,所述中间层包括第一接收单元、初始化单元、判断单元、绘制单元、第一获取单元和输出单元,其中:

所述第一接收单元,用于接收应用层的调用请求,所述调用请求中携带有待绘制的图形数据和对所述图形数据对应的处理任务;

所述初始化单元,用于响应所述调用请求,进行自身的初始化获得配置信息;

所述判断单元,用于在初始化完成之后,判断片上系统是否支持硬件加速;

所述绘制单元,用于当所述片上系统支持硬件加速时,将所述配置信息、所述图形数据和所述处理任务交由图形处理器进行绘制;

所述第一获取单元,用于从所述图形处理器中获取第一响应信息,所述第一响应信息用于表明图形处理器是否利用所述处理任务和所述配置信息对所述图形数据进行绘制成功;

所述输出单元,用于将所述第一响应信息携带于调用响应中,将所述调用响应返回给所述应用层。

第四方面,本发明实施例提供一种嵌入式设备,所述嵌入式设备包括显示屏和片上系统,其中:

所述片上系统包括中央处理器、图形处理器和帧缓冲设备,其中:

中央处理器,用于运行中间层;

图形处理器,用于从所述中间层中获取配置信息、待绘制的图形数据和与所述图形数据对应的处理任务;

图形处理器,还用于根据所述处理任务对所述图形数据进行绘制,得到第一图形画面,并将所述第一图形画面输出给帧缓冲设备;

帧缓冲设备,用于所述中间层获取所述配置信息、所述图形数据和所述处理任务;

帧缓冲设备,还用于缓冲所述配置信息、所述图形数据和所述处理任务;

中央处理器,还用于从帧缓冲设备中获取所述配置信息、图形数据和所述处理任务,根据所述处理任务和所述配置信息对所述图形数据进行绘制,得到第二图形画面;

帧缓冲设备,还用于从所述中央处理器获取第二图形画面,并将所述第二图形画面输出;以及,从所述图形处理器获取第一图形画面,并将所述第一图形画面输出;

所述显示屏,用于显示第一图形画面或第二图形画面。

本发明实施例提供的片上系统、图形绘制方法、中间层及嵌入式设备,其中,中央处理器,用于运行中间层;图形处理器,用于从所述中间层中获取配置信息、待绘制的图形数据和与所述图形数据对应的处理任务;图形处理器,还用于根据所述处理任务和所述配置信息对所述图形数据进行绘制,得到第一图形画面,并将所述第一图形画面输出给帧缓冲设备;帧缓冲设备,用于所述中间层获取所述配置信息、图形数据和所述处理任务;帧缓冲设备,还用于缓冲所述配置信息、图形数据和所述处理任务;中央处理器,还用于从帧缓冲设备中获取所述配置信息、所述图形数据和所述处理任务,根据所述处理任务和所述配置信息对所述图形数据进行绘制,得到第二图形画面;帧缓冲设备,还用于从所述中央处理器获取第二图形画面,并将所述第二图形画面输出,以及从所述图形处理器获取第一图形画面,并将所述第一图形画面输出;如此,能 够提高片上系统的整体性能进而提高图形显示的速度,最终提高用户体验。

附图说明

图1-1为相关技术中片上系统在进行图形绘制时的系统架构示意图;

图1-2为本发明实施例中片上系统在进行图形绘制时的系统架构示意图;

图2为本发明实施例中图形处理器的组成结构示意图;

图3为本发明实施例三图形绘制方法的实现流程示意图;

图4为本发明实施例四图形绘制方法的实现流程示意图;

图5-1为本发明实施例九中间层的组成结构示意图一;

图5-2为本发明实施例九中间层的组成结构示意图二;

图6为本发明实施例十嵌入式设备的组成结构示意图。

具体实施方式

现有技术中,嵌入式设备的片上系统中并没有专门的GPU,从而导致所有的图形绘制操作全部交给CPU来处理,具体来说,如图1-1所示,应用层的应用程序(APP)11在需要图形绘制的时候,会调用绘图引擎12;然后绘图引擎12通过DirectFB图形库14实现图形绘制,DirectFB图形库14在绘制图形的过程中,会将所有的图形数据先缓冲在帧缓冲设备15上,然后CPU 13从帧缓冲设备15获取图形数据,通过运行操作系统进行图形运算处理;运算完成后CPU15将处理后的图形数据返回给帧缓冲设备15,然后帧缓冲设备15返回给DirectFB图形库14。在图1-1中,操作系统(linux)包括CPU、VOU等底层硬件驱动,绘图引擎12可以直接调用操作系统(13)提供的接口,来进行操作硬件进行绘图。DirectFB图形库是一个专门针对Linux图形库设计的图形加速中间层,该中间层是一个轻量级的提供硬件图形加速、输入设备处理特性和抽象的图形库。DirectFB图形库的实现原理是:用软件封装当前硬件无法支持的图形算法来完成硬件加速,因此,DirectFB图形库支持半透明的视窗系统以及在Linux的帧缓冲(Frame Buffer)驱动之上的多层显示,DirectFB图形库的上 层直接面向一些应用层的图形库比如QT,能够为应用层的图形库提供诸如显示、画图、输入设备控制等服务。从图1-1可以看出,目前的图形绘制主要依赖于DirectFB图形库,因此,图1-1所示的图形绘制方式也称为通过DirectFB图形库的绘图方式。

图1-1所示的架构中,这种通过DirectFB图形库的绘图方式是一种纯软件的绘图方式,该方式将所有的图形运算全部交给CPU来处理,这样加大了CPU的负载,从而降低了系统的整体性能进而导致图形显示的速度慢。为了解决现有技术中存在的技术问题,本发明实施例将提供一种基于图形处理器的绘图方式,基于图形处理器的绘图方式能够克服片上系统存在的图形显示速度慢的问题。

下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。

实施例一

图1-2为本发明实施例中片上系统在进行图形绘制时的系统架构示意图,如图1-2所示,应用层的应用程序(APP)11在需要图形绘制的时候,会调用绘图引擎12;然后绘图引擎12通过DirectFB图形库14实现图形绘制,DirectFB图形库14在绘制图形的过程中,会将所有的图形数据缓冲在帧缓冲设备15,然后帧缓冲设备15将待处理的图形数据交给图形处理器(GPU)16进行图形运算处理;运算完成后图形处理器16将处理后的图形数据返回给帧缓冲设备15,然后由帧缓冲设备15返回给DirectFB图形库14。

在图1-2中,中央处理器和图形处理器都属于linux操作系统底层部分。两者都可以绘图,不同的是,中央处理器对应的是软件绘图,图形处理器对应的者是硬件绘图,中间层可以是DirectFB,DirectFB不论是通过中央处理器还是图形处理器来进行绘图,绘制的结果都交给帧缓冲设备,帧缓冲设备最终输送到嵌入式设备的显示屏,然后嵌入式设备的显示屏进行显示图形画面。

从图1-2可以看出,本发明实施例提供的片上系统增加图形处理器16,这样可以大大提高图形运算的速度,与此同时,能够降低片上系统中CPU的负载,从而提高系统的整体性能进而提高图形显示的速度,最终提高用户体验。假如 一个图形运算让图形处理器来进行运算,大概需要1到2个时钟周期(CLK),同样的图形运算如果让CPU进行运算则至少需要20个时钟周期,可见,在片上系统中增加图形处理器可以大大提高图形运算的速度。另外,对于嵌入式片上系统来说,CPU的频率与同步动态随机存储器(SDRAM,Synchronous Dynamic Random Access Memory)或动态随机存取存储器(DRAM,Dynamic Random Access Memory)之间的带宽始终是图形运算的瓶颈,所以片上系统有无图形处理器,以及图形处理器的加速能力有无和高低,最终决定GUI的质量。

需要说明的是,图形处理器如果要在目标GUI系统中运行起来,还得需要一些软件中间层如DirectFB图形库为不同的硬件加速提供统一的接口,中间层DirectFB图形库为位于自身之上的GUI提供服务,DirectFB图形库是采用软件封装当前硬件无法支持的图形算法来完成硬件加速。DirectFB图形库的上层直接面向应用层的图形库如QT,DirectFB图形库为应用层的图形库提供如显示、画图、输入设备控制等服务,DirectFB图形库的下层直接面向图形(GFX)加速硬件,要求硬件驱动实现全部或部分预定的画图函数,其中GFX加速硬件可以为本发明实施例中的图形处理器。

图1-2中图形处理器,可以采用现有技术中的各种图形处理器,例如采用Vivante 2D GPU来实现,其中Vivante 2D GPU主要为上层图形的显示提供硬件加速,Vivante 2D GPU是一个高性能的用于广泛的消费类电子设备的2D图形渲染加速单元。其中,这些消费类电子设备平面尺寸可以从最小的智能手机到1080p的电子设备。

在图1-2中,应用层在进行绘图操作的过程中,需要调用DirectFB图形库,DirectFB图形库依赖内核的帧缓冲驱动(又称为缓冲器设备,包括/dev/fb0等)访问图形处理器。

本发明实施例中,片上系统中采用的帧缓冲设备(又称为帧缓冲驱动)可以采用视频输出单元(VOU,Video Output Unit)驱动完成,在具体实施的过程中,可以采用屏幕显示单元(OSD,On Screen Display)驱动完成,需要说明的是,由于OSD本身在硬件缩放部分存在局限性,因此导致片上系统无法满足 缩放效果和质量方面的要求。另外,图形运算操作如果采用图1-1所示的方式时,片上系统的性能达不到用户的需求;基于以上方面的考虑,图形运算操作和缩放部分的功能可以由图形处理器来完成。下面对比图1-1和图1-2的实现过程。

图1-1的实现方式是应用层调用DirectFB图形库,DirectFB图形库通过帧缓冲(Frame Buffer)驱动获取硬件显示区域的地址、显示模式等参数,然后通过软件方式对上层送过来的图形数据进行解码、缩放、填充、搬运等相关图形运算操作后,送往显示内存供OSD驱动输出到嵌入式设备的显示屏。其中,所述软件方式是指图1-1中的DirectFB图形库14与帧缓冲驱动15之间的实现方式。

图1-2的实现方式是应用层调用DirectFB图形库,DirectFB图形库通过Frame Buffer驱动获取硬件显示区域的地址、显示模式等参数,然后通过软件方式或者硬件方式对上层送过来的数据进行解码、缩放、填充、搬运等相关操作后,送往显示内存供OSD驱动输出到屏幕。其中,所述软件方式是指图1-2中的DirectFB图形库14与帧缓冲驱动15之间的实现方式,所述硬件方式是指图1-2中的DirectFB图形库14与图形处理器16之间的实现方式。

从上述图1-1与图1-2的前后对比可以看出,本发明实施例提供的图1-2的实现方式在保留了原有的软件方式操作的同时,添加了硬件方式。从硬件设计的角度需要添加图形处理器;从软件角度需要实现内核态驱动和用户态驱动;内核态用于实现linux系统架构时所需要运行的图形处理器,用户态用于完成与DirectFB图形库的对接操作。

实施例二

基于前述的实施例一,本发明实施例提供一种图形处理器,图2为本发明实施例中图形处理器的组成结构示意图,如图2所示,图形处理器16包括:

Host接口(主接口)163,用于提供图形处理器与外部设备接口之间的接口,具体地,通过高级可扩展接口总线(AXI,Advanced Extensible Interface Bus) 162与片上系统的存储器(如DRAM/SDRAM)进行通信,通过高级高性能总线接口总线(AHB,Advanced High Performance Bus)161与片上系统上的CPU进行通信。一般来说,Host接口在传输图形数据的过程是跨时钟域边界的,即需要一个以上的时钟周期才能将数据传输出去或者传输进来。

内存控制器166,主要作为图形流水线处理的内存请求和与Host接口163进行通信的接口,其中,内存控制器166与Host接口163进行通信时,可以通过第一内存控制通道164和第二内存控制通道165两个通道与Host接口163进行通信。此外,内存控制器166还负责把高层次的元件和命令插入到图形流水线中。

图形数据存储器167,用于存储待绘制的图形数据,以及存储绘制完成后的图形数据;

绘图引擎168,用于利用存储于图形数据存储器167中的图形数据进行绘制,以及光栅化图形数据。

像素引擎,像素引擎用于在进行渲染图形进行像素操作和过滤;包括像素引擎分发器169和像素引擎缓存器170,其中像素引擎分发器169用于对图形的像素进行分发,像素引擎缓存器170用于对像素进行缓存,且像素引擎分发器169与像素引擎缓存器170之间通过像素管道连接。图形或图像由各个像素组成,因此,像素引擎依像素为单位进行处理,在绘图的过程中,像素引擎分发器将像素数据分发到像素管道进行处理,像素引擎缓存器将各个通道处理后的像素数据进行缓存。

实施例三

基于前述的实施例,本发明实施例提供一种图形绘制方法,该方法应用于嵌入式设备,该方法所实现的功能可以通过嵌入式设备中的CPU调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该嵌入式设备至少包括处理器和存储介质。

图3为本发明实施例三图形绘制方法的实现流程示意图,如图3所示,该 图形绘制方法包括:

步骤301,中间层接收应用层的调用请求,所述调用请求中携带有待绘制的图形数据和对所述图形数据对应的处理任务;

这里,所述中间层是指中间层软件,在具体实施的过程中,中间层可以为DirectFB图形库,以及与DirectFB图形库在功能上类似的软件。

这里,所述图形数据包括一个及一个以上的图形元素,以及每一所述图形元素的位置坐标,所述处理任务包括与所述图形元素对应的图形运算。其中,所述图形运算包括但不限于画点、画线、填充、透明度处理、平滑度处理、层的叠加、字体处理、贴图等等运算操作。

步骤302,中间层响应所述调用请求,进行自身的初始化获得配置信息;

这里,所述配置信息是指频输出单元(VOU)寄存器的配置信息,所述配置信息包括显示地址、显示分辨率等参数信息。

这里,所述中间层响应所述调用请求,进行自身的初始化获得配置信息,包括:中间层响应所述调用请求,中间层控制帧缓存设备获取视频输出单元VOU寄存器的配置信息,所述配置信息包括显示地址、显示分辨率。

步骤303,在初始化完成之后,中间层判断片上系统是否支持硬件加速;

这里,在具体实施的过程中,判断片上系统是否支持硬件加速包括一系列的步骤,例如,首先判断片上系统是否包括图形处理器,当片上系统不包括图形处理器时,则片上系统支持硬件加速;当片上系统包括图形处理器时,判断片上系统的图形处理器是否正常,当正常时,则片上系统支持硬件加速,当不正常时,则片上系统不支持硬件加速。

步骤304,当所述片上系统支持硬件加速时,中间层将所述配置信息、所述图形数据和所述处理任务交由图形处理器进行绘制;

这里,所述图形处理器根据所述处理任务和所述配置信息对所述图形数据进行绘制,得到第一图形画面,包括:

确定所述图形数据中的所有的图形元素的位置坐标或所述图形数据中的一部分的图形元素的位置坐标;

在所述图形元素的位置坐标上根据图形元素的图形运算对相应的元素进行绘制,得到第一图形画面;其中所述第一图形画面为所述图形处理器根据所述处理任务和所述配置信息对所述图形数据进行绘制完成后的待显示画面。

这里,图形处理器会将所述第一图形画面输出给帧缓冲设备,然后由帧缓冲设备最终输送到嵌入式设备的显示屏,然后由嵌入式设备的显示屏进行显示所述第一图形画面。

步骤305,中间层从所述图形处理器中获取第一响应信息;

这里,所述第一响应信息用于表明图形处理器是否利用所述处理任务和所述配置信息对所述图形数据进行绘制成功;

步骤306,中间层将所述第一响应信息携带于调用响应中,将所述调用响应返回给所述应用层。

这里,应用层是指应用层中的图形库,例如嵌入式的GUI,其中嵌入式的GUI主要有OpenGUI、Microwindows、QT/Embedded、MiniGUI等等。

本发明实施例中,所述方法还包括步骤307至步骤309,其中:

步骤307,当所述片上系统不支持硬件加速时,中间层将所述配置信息、所述图形数据和所述处理任务缓冲在帧缓冲设备;

步骤308,中间层从所述帧缓冲设备中获取第二响应信息,所述第二响应信息用于表明中央处理器是否利用所述处理任务和所述配置信息对所述图形数据进行绘制成功;

这里,所述第央处理器根据所述处理任务和所述配置信息对所述图形数据进行绘制,得到第二图形画面;其中所述第二图形画面为中央处理器根据所述处理任务和所述配置信息对所述图形数据进行绘制完成后的待显示画面,所述中央处理器得到第二图形画面的过程与上述图形处理器得到第一图形画面的过程类似,因此这里不再赘述。

步骤309,中间层将所述第二响应信息携带于调用响应中,将所述调用响应返回给所述应用层。

这里,所述第一图形画面可以与第二图形画面相同或者不同。

本发明实施例中,在所述中间层将所述第一图形画面输出给帧缓冲设备之前,所述方法还包括:所述中间层对所述第一图形画面进行抗闪烁处理后,得到第三图形画面;对应地,所述中间层将所述第三图形画面输出给帧缓冲设备。

实施例四

基于前述的实施例三,本发明实施例提供一种图形绘制方法,该方法应用于嵌入式设备,该方法所实现的功能可以通过嵌入式设备中的CPU调用DirectFB图形库的程序代码来实现,当然DirectFB图形库的程序代码可以保存在计算机存储介质中,可见,该嵌入式设备至少包括处理器和存储介质。

图4为本发明实施例四图形绘制方法的实现流程示意图,如图4所示,该图形绘制方法包括:

步骤401,DirectFB图形库接收应用层的调用请求;

步骤402,DirectFB图形库响应所述调用请求进行初始化;

具体地,DirectFB图形库进行图形的初始化操作的时候,最终调用的是DirectFBInit(&argc,&argv)函数和DirectFBCreate(&dfb)函数。这两个函数的作用是初始化整个DirectFB图形库,以及为后面的画图等实际操作做好准备。在初始化的过程中(参见步骤421、422、423和424),DirectFB图形库会控制Frame Buffer驱动获取linux内核的OSD寄存器的相关配置信息,所述相关配置信息用于分配内存等,其中配置信息主要包括显示地址、显示分辨率等参数信息。其中,DirectFBInit()函数,主要是读取系统的和用户定义的配置信息(configuration)、处理命令行,读取环境变量等。DirectFBCreate()函数,用于完成一系列的初始化,并将各种需要的信息保存在IDirectFB指向的数据结构中为用户后续使用。

步骤403,DirectFB图形库判断片上系统是否支持硬件加速,是时,进入步骤404,反之,进入步骤405;

步骤404,DirectFB图形库进行软件绘制;

这里,基于图1-1所示的架构通过DirectFB图形库的绘图方式进行图形绘 制。

步骤405,DirectFB图形库进行硬件绘制;

具体地,基于图1-2所示的架构通过图形处理器进行图形绘制。

步骤406,DirectFB图形库判断是否支持抗闪烁处理,是时,进入步骤407,反之,进入步骤408;

步骤407,DirectFB图形库进行抗闪烁处理。

步骤408,流程结束。

在上述的403至步骤405中,DirectFB图形库会检查系统是否有图形处理器的存在,有的话进行硬件绘图,没有的话进行软件绘图。另外,硬件绘图的前提是,需要相应的硬件模块实现DirectFB图形库提供的接口函数。在具体实施的过程中,图形处理器可以按照DirectFB图形库的要求实现相应的加速函数,当然,DirectFB图形库可以通过配置文件(directfbrc)文件手动打开或关闭no-hardware选项来进一步选择是否需要硬件绘图。

实施例五

下面介绍一下DirectFB图形库结合软件方式进行图形处理的方式。该软件方式的缺点在于性能比较低,在进行复杂场景的图形显示的时候,存在画面显示不够流畅的问题。该软件方式主要调用如下的函数,这些函数是DirectFB图形库提供的标准函数如下:

void gFillRectangle(CardState*state,DFBRectangle*rect);

void gDrawLine(CardState*state,DFBRegion*line);

void gBlit(CardState*state,DFBRectangle*rect,int dx,int dy);

void gStretchBlit(CardState*state,DFBRectangle*srect,DFBRectangle*drect);

实施例六

下面介绍一下DirectFB图形库结合硬件(即图形处理器)方式进行图形处 理。相对于软件方式而言,该硬件方式的优点在于:提高了图形处理的速度,系统性能明显提高。该硬件方式主要调用的函数是DirectFB提供的硬件对接函数,而且需要2D硬件驱动模块具体实现,该硬件方式主要调用的函数如下:

bool(*Blit)(void*driver_data,void*device_data,DFBRectangle*rect,int dx,int dy);

bool(*DrawLine)(void*driver_data,void*device_data,DFBRegion*line);

bool(*FillTriangle)(void*driver_data,void*device_data,DFBTriangle*tri);

bool(*StretchBlit)(void*driver_data,void*device_data,DFBRectangle*srect,DFBRectangle*drect);

下面将实施例五和实施例六两种方式对比如表1所示:

表1

表1中,从第07行至第18行表明的是软件方式和硬件方式所处的环境是一样的,从第01行至第06行表明的软件方式和硬件方式所完成的效果,其中从第01行至第06行这六个指标可以看出,硬件方式远远优于软件方式。

实施例七

下面介绍一下抗闪烁处理,由于OSD硬件本身的原因,对于隔行视频输出的话,图形显示有明显的抖动,在软件方式和硬件方式的基础之上进行抗闪烁处理,抗闪烁处理能够提高隔行图形显示的质量。抗闪烁算法具体是通过下面的函数实现。

void cvbs_anti_shake_neon(u8*src_addr,u8*dst_addr,u32pitch,DFBRectangle*rect,u8factor_1,u8factor_2,u8factor_3);

对比实例五和实施例六,此种抗闪烁方式从直观的角度看,屏幕不会有闪烁和抖动现象。

实施例八

基于前述的实施例,本发明实施例提供一种片上系统,该片上系统包括中央处理器、图形处理器和帧缓冲设备,其中:

所述片上系统包括中央处理器、图形处理器和帧缓冲设备,其中:

中央处理器,用于运行中间层;

图形处理器,用于从所述中间层中获取配置信息、待绘制的图形数据和与所述图形数据对应的处理任务;

图形处理器,还用于根据所述处理任务和所述配置信息对所述图形数据进行绘制,得到第一图形画面,并将所述第一图形画面输出给帧缓冲设备;

帧缓冲设备,用于所述中间层获取所述配置信息、图形数据和所述处理任务;

帧缓冲设备,还用于缓冲所述配置信息、图形数据和所述处理任务;

中央处理器,还用于从帧缓冲设备中获取所述配置信息、所述图形数据和所述处理任务,根据所述处理任务和所述配置信息对所述图形数据进行绘制,得到第二图形画面;

帧缓冲设备,还用于从所述中央处理器获取第二图形画面,并将所述第二图形画面输出;以及从所述图形处理器获取第一图形画面,并将所述第一图形画面输出。

本发明实施例中,图形处理器和中央处理器将绘制完成的图形画面(例如第一图形画面、第二图形画面和第三图形画面)都会输出给帧缓冲设备,然后图形画面直接通过VOU的OSD驱动对接其他显示接口直接输出给嵌入式设备的显示屏。一般来说,中间层会将绘制成功与否信息携带于调用响应中,将调用响应返回给应用层。

本发明实施例中,所述图形处理器为Vivante 2D图形处理器。

本发明实施例中,所述帧缓冲设备为视频输出单元驱动。

本发明实施例中,所述第二图形画面与所述第一图形画面相同或不同。

本发明实施例中,所述图形数据包括一个及一个以上的图形元素,以及每一所述图形元素的位置坐标,所述处理任务包括与所述图形元素对应的图形运算。

本发明实施例中,所述中间层,用于接收应用层的调用请求,所述调用请 求中携带有待绘制的图形数据和对所述图形数据对应的处理任务;

中间层,还用于响应所述调用请求,进行自身的初始化;

在初始化完成之后,中间层,还用于判断片上系统是否支持硬件加速;

当所述片上系统支持硬件加速时,中间层,还用于将所述图形数据和所述处理任务交由图形处理器进行绘制;

中间层,还用于从所述图形处理器中获取第一响应信息,所述第一响应信息用于表明图形处理器是否利用所述处理任务和所述配置信息对所述图形数据进行绘制成功;

中间层,还用于将所述第一响应信息携带于调用响应中,将所述调用响应返回给所述应用层。

实施例九

基于前述的实施例,本发明实施例再提供一种中间层,图5-1为本发明实施例九中间层的组成结构示意图一,如图5-1所示,该中间层500包括第一接收单元501、初始化单元502、判断单元503、绘制单元504、第一获取单元505和输出单元506,其中:

所述第一接收单元501,用于接收应用层的调用请求,所述调用请求中携带有待绘制的图形数据和对所述图形数据对应的处理任务;

所述初始化单元502,用于响应所述调用请求,进行自身的初始化获得配置信息;

这里,所述初始化单元,用于中间层响应所述调用请求,中间层控制帧缓存设备获取视频输出单元(VOU)寄存器的配置信息,所述配置信息包括显示地址、显示分辨率。

所述判断单元503,用于在初始化完成之后,判断片上系统是否支持硬件加速;

所述绘制单元504,用于当所述片上系统支持硬件加速时,将所述配置信息、所述图形数据和所述处理任务交由图形处理器进行绘制;

所述第一获取单元505,用于从所述图形处理器中获取第一响应信息,所述第一响应信息用于表明图形处理器是否利用所述处理任务和所述配置信息对所述图形数据进行绘制成功;

所述输出单元506,用于将所述第一响应信息携带于调用响应中,将所述调用响应返回给所述应用层。

本发明实施例中,如图5-2所示,所述中间层500还包括缓冲单元507、第二获取单元508,其中:

所述缓冲单元508,用于当所述片上系统不支持硬件加速时,将配置信息、所述图形数据和所述处理任务缓冲在帧缓冲设备;

所述第二获取单元509,用于从所述帧缓冲设备中获取第二响应信息,所述第二响应信息用于表明中央处理器是否利用所述处理任务和所述配置信息对所述图形数据进行绘制成功;

对应地,所述输出单元,用于将所述第二响应信息携带于调用响应中,将所述调用响应返回给所述应用层。

本发明实施例中,所述中间层还包括处理单元,用于对所述第一图形画面进行抗闪烁处理后,得到第三图形画面;对应地,所述中间层将所述第三图形画面输出给帧缓冲设备。

这里需要指出的是:以上中间层实施例的描述,与上述实施例的描述是类似的,具有同上述实施例相似的有益效果,因此不做赘述。对于本发明中间层实施例中未披露的技术细节,请参照本发明上述实施例的描述而理解,为节约篇幅,因此不再赘述。

实施例十

基于前述的实施例,本发明实施例提供一种嵌入式设备,图6为本发明实施例十嵌入式设备的组成结构示意图,如图6所示,该嵌入式设备600包括显示屏601和片上系统500,其中:所述片上系统进一步包括中央处理器、图形处理器和帧缓冲设备,其中:

中央处理器,用于运行中间层;

图形处理器,用于从所述中间层中获取待绘制的图形数据和与所述图形数据对应的处理任务;

图形处理器,还用于根据所述处理任务对所述图形数据进行绘制,得到第一图形画面,并将所述第一图形画面输出给帧缓冲设备;

帧缓冲设备,用于所述中间层获取所述图形数据和所述处理任务;

帧缓冲设备,还用于缓冲所述图形数据和所述处理任务;

中央处理器,还用于从帧缓冲设备中获取所述图形数据和所述处理任务,根据所述处理任务对所述图形数据进行绘制,得到第二图形画面;

帧缓冲设备,还用于从所述中央处理器获取第二图形画面,并将所述第二图形画面输出,以及从所述图形处理器获取第一图形画面,并将所述第一图形画面输出;

所述显示屏,用于显示第一图形画面或第二图形画面。

本发明实施例中,嵌入式设备包括机顶盒、智能手机、平板电脑、导航仪、车载电视、个人数字助理等终端设备。

这里需要指出的是:以上嵌入式设备实施例项的描述,与上述实施例描述是类似的,具有同上述实施例相同的有益效果,因此不做赘述。对于本发明嵌入式设备实施例中未披露的技术细节,本领域的技术人员请参照本发明上述实施例的描述而理解,为节约篇幅,这里不再赘述。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。

或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立 的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1