Symbian OS应用编程图形篇之架构

Symbian OS 9.5 版本中引入了ScreenPlay技术。ScreenPlay是一个新的图形架构,它可以使智能手机制造商充分利用软件性能的提升、硬件的加速及第三方的图形引擎。ScreenPlay就是所谓的新图形架构(New Graphics Architecture,简写为NGA)GCEGraphics Composition Engine)功能。

 

ScreenPlay的引入源自于手机硬件开发模型的需求,例如ScreenPlay可以支持图形加速、图形处理单元(GPU)和非均匀存储访问型(NUMA:Non-Uniform Memory Access)以及均匀存储访问型(UMA:Uniform Memory Access) 非均匀存储型是GPU中的一个架构,它可以区分GPUCUP的处理过程,GPU不能访问CPU内存,反之亦然。ScreenPlay可以在不同处理区域间不复制缓冲区的情况下处理非均匀存储型。

 

ScreenPlay重点概念

 

l         当有硬件图形加速设备时,基于硬件加速,异步渲染和组合图形,这通过硬件适配层(HAL)来实现。

l         合成半透明的动态内容UI缓冲区,这些动态内容来自于OpenGL ES游戏、视频、或摄像头取景器。

l         提供屏幕内容的安全保障和数字版权管理(DRM)。应用程序不再直接访问屏幕(DSA),屏幕读写操作有Window Server来控制。

l         DSA的支持仅仅是为了兼容性。

 

ScreenPlay架构

 

下图是ScreenPlay图形架构的概况。

screenplay

在讲述ScreenPlay中新添加及更新的模块前,先做以下名词解释:

l         合成(Composition):将各种不同显示元素合在一起并呈现到屏幕设备上的过程。

l         GPU:图形处理器单元,专注于图形的显示处理。

l         Graphics surface:通常称为Surface,它是独立于硬件用来存放图片或部分场景的场所。可以理解为是一个存储区域。

l         硬件加速(Hardware acceleration):用硬件来实现诸如图形显示的功能,比在CUP中用软件实现要快。

l         图层(Layer):由GCE维护在图像合成时的一个显示元素。

l         场景结构(Scene structure):拥有特定大小、可见区域和显示顺序(Z order)的一系列图层,合成后成为一整个场景。

l         场景内容(Scene content):与场景结构相关的图层绑定的一系列surface

 

图形合成引擎(Graphics Composition Engine, GCE)及GCE 后台(backend

 

GCE在将图像显示到屏幕之前,合成自于不同的图像源的图形。合成有两个重要的概念,即图层和Surface。其中图层描述了被显示元素的几何位置、大小及方向,而Surface是存放图像或部分场景的一些像素缓冲区。

 

GCE维护图层堆栈并计算显示内容。例如,选择不可见区域和维护需重画区域的列表。GCE后台在另外的线程中进行实际的合成工作,GEC后台在需要时进行像素混合和转换,如伸缩、旋转。GCE后台是一个适配组件,意味着手机制造商可以替换它,从而实现手机硬件自定义功能。GCE后台还可以利用GPU硬件合成和LCD硬件旋转。

这是Symbian OS 9.5 ScreenPlay中新增的模块。

 

Surface管理器和Surface更新服务器

 

Surface管理器创建和管理SurfaceSurface在实现时其实是一个共享的内存块,因为它必须能够被用户进程、内核进程及硬件合成器来访问。Surface可以分为多个缓冲区,分别用128位的数字ID来标识,称为Surface IDSurface可以被Symbian OS中其他组件使用如多媒体框架(MMF)和摄像取景器,以及OpenGL ES 游戏等应用程序。Surface管理器是一个适配组件,可以被替换和定制。

 

Surface更新组件提供了一个GCE和其客户端的通信机制,这对客户端在快速更新和使用多缓冲Surface时非常有用。

 

这也是Symbian OS 9.5 ScreenPlay中新增的模块。

 

Window Server

 

Window Server用一个渲染框架(render stage framwork)进行了扩展,允许Window Server在渲染图形的最后阶段通过插件自定义图形的渲染。这个过程称为“延迟渲染”,通过终端Window Server的输出,然后决定这些输出如何被渲染,例如,这些输出可以硬件加速,也可以被送到第三方的图形引擎。渲染框架(render stage framwork)允许手机制造商集成不同的UI和运行时环境(如Flash Silverlight),从而达到诸如缩放、渐变等效果。SymbianDirectGDI技术提供了一个渲染插件,这意味着现在的Window Server程序可以利用硬件加速功能而不用重新编译代码。

 

ScreenPlay中,内容渲染插件(Content-Rendering Plug-ins CRP)可以将一个Surface呈现到屏幕上,这个技术可以被用来在一个窗体中显示多个小视频,其中每个视频对应一个特定的Surface ScreenPlay提供了Window Server 客户端API的扩展,允许手机设备相应指针事件,包括接近(Proximity)和压力(Pressure)事件。

 

DirectGDI

 

DirectGDI 提供了一个可以硬件加速的图形上下文和一个异步接口,DirectGDI有两部分,通用层和适配层。手机制造商可以用一个图形加速硬件或软件替换适配层。目前,DirectGDI主要用于Window Server的渲染插件中,客户端应用程序还不能直接使用。

 

DirectGDI也是Symbian OS 9.5 ScreenPlay中新增的模块。

 

图形资源(Graphics Resource

 

ScreenPlay中,一个图形资源是指硬件图形加速所使用的数据缓冲区。例如,一个图片就是一个数据缓冲,它是一个二维的像素缓冲区。和DirectGDI一样,图形资源组件提供了通用部分和适配部分。

 

Non-ScreenPlay架构

虽然Symbian OS 9.5中引入了ScreenPlay, 但它还同时提供了Non-ScreenPlay,即通过配置可以不使用ScreenPlay技术。下图显示了Non-ScreenPlay的架构:

 

non-screenplay 

 

 

 

可以看出,在Non-ScreenPlay中没有了渲染框架及GCE的概念,而是用HAL来访问帧缓冲(Frame Buffer),并由屏幕驱动(Screen Driver)提供简单的像素、扫描行和位图操作,硬件制造商通过Screen Driver来适配不同的硬件。上层的图形及文本处理有BitGDI来提供。下图是Non-ScreenPlay中的渲染堆栈图:

render

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值