具体实施方式
为了让本发明的目的、特征、及优点能更明显易懂,下文特举出较佳实施例,并配合所附图示图1至图8,做详细的说明。本发明说明书提供不同的实施例来说明本发明不同实施方式的技术特征。其中,每一实施例中的各元件的配置为说明之用,并非用以限制本发明。且实施例中图式标号的部分重复,是为了简化说明,并非意指不同实施例之间的关联性。
图1是表示根据本发明一实施例所述的通讯装置的简化功能方块图。在图1中,通讯装置100可用以具体化为一使用者设备(UE)(或存取终端(AT))。通讯装置100可包括一输入装置102、一输出装置104、一控制电路106、一中央处理器(Central Processing Unit,CPU)108、一存储器110、一程序码112、一收发器114。控制电路106在存储器110中通过中央处理器108执行程序码112,并以此控制在通讯装置100中所进行的操作。通讯装置100可利用输入装置102(例如键盘或数字键)接收使用者输入信号;也可由输出装置104(例如屏幕或喇叭)输出图像及声音。收发器114在此用作接收及发送无线信号,将接收的信号送往控制电路106,以及以无线方式输出控制电路106所产生的信号。
图2是根据本发明一实施例中表示图1中执行程序码112的简化功能方块图。此实施例中,执行程序码112包括一应用层200、一第三层202以及一第二层204,并且与第一层206耦接。第三层202一般执行无线电资源控制。第二层204一般执行链路控制。第一层206一般负责实体连接。
本发明实施例所提供的通讯装置可以用于实施本发明所示的各实施例实现的方法,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节请参照图3~8图所示的本发明各实施例。
图3是显示根据本发明一实施例所述的Android***的输出屏幕原理框架的示意图300。如图3所示,以Android***为例,从使用者开始在通讯装置如手机上通过各个应用程序(以下简称为应用)绘制图像到该图像显示在显示幕上的过程,具体可以包括以下步骤。
首先,在应用(Application)层中,各个应用301~304按照自己的应用设计情况,各自单独执行绘制(Render)操作,并在绘制操作处理完成后,各应用将绘制的图层(Layer)311~314发送给应用框架(Framework)层的负责刷新屏幕的Surfaceflinger 320。
其次,在应用框架层中,***可以通过内核(Kernel)层(图未显示)向显示接口单元(Display interface unit,DIU)340查询可使用的串流(stream)。举例来说,HWcomposer322向显示接口单元340查询到可使用3个串流331~333,Surfaceflinger 320根据应用所配置信息来处理图层,例如哪个图层应该置底、哪个图层应该置顶、哪个图层采用透底效果等。接着,Surfaceflinger 320通过HWcomposer322将其中某些应用绘制的多个图层合并到一起,传输到串流331上,再将剩余的某些图层合并到一起,传输到串流332上,最后将剩余的所有图层合并到一起,传输到串流333上。最终,显示接口单元340接收串流331~333,再将所有串流331~333的图像合成为一图像帧。值得注意的是,于一些实施例中,显示接口单元340可使用的串流数还可被扩充为多于三个或少于三个,因此本发明并不局限于图3所示的实施方式。
最后,显示接口单元340传输图像帧给显示装置350(包括显示控制器和显示屏幕)。举例但不局限于,LCD硬件(包括LCD控制器和LCD显示屏幕),以显示最终的图像。
具体地说明,HWcomposer 322及显示接口单元340执行图层处理的步骤可通过在通讯装置的中央处理器(Central Processing Unit,CPU)中使用演算法实现合并策略,再驱使在通讯装置的图形处理器(Graphic Processing Unit,GPU)来实现合并操作。
图4是显示根据本发明一实施例所述的显示图层的方法流程图400。值得注意的是,此方法流程由图3中的HWcomposer 322所执行。在步骤S405中,HWcomposer接收由应用(Application)所绘制的多个图层。接着,在步骤S410中,HWcomposer根据一覆盖顺序分配序号至上述图层。在步骤S415中,HWcomposer根据上述序号依一序号顺序显示上述图层。
更具体的说明,在步骤S410中HWcomposer根据一覆盖顺序分配序号至上述图层的步骤。HWcomposer可先判断一当前图层是否覆盖至少一图层。当判断上述当前图层未覆盖上述至少一图层时,HWcomposer分配一起始序号至上述当前图层,其中上述起始序号为一最小序号。或是,当判断上述当前图层覆盖上述至少一图层时,HWcomposer分配一第一序号至上述当前图层,其中上述第一序号为上述至少一图层的序号中最大序号的一下一序号。
图5是显示根据本发明一实施例所述的HWcomposer根据一覆盖顺序分配序号至图层的示意图。假设源图层按照Z轴坐标从低到高的顺序是A→B→C→D→E→F。如图5所示,图层C覆盖了图层B、图层D覆盖了图层B及图层C、图层F覆盖了图层E。在图5中,由于图层A、B及E未覆盖其他图层,因此HWcomposer分配一起始序号0至图层A、B及E,其中此起始序号为一最小序号。图层C仅覆盖图层B,因此HWcomposer分配序号1至图层C。图层D覆盖了图层B及C,因此HWcomposer分配图层D所覆盖图层B及C的序号中最大序号(即,序号1)的下一序号(即,序号2)至图层D。图层F仅覆盖图层E,HWcomposer分配序号1至图层F。因此,图层根据序号递增的排列为A、B、E→C、F→D。值得注意的是,同一序号的图层并没有先后的顺序。因此,对于序号0而言,HWcomposer先处理图层A或图层E并无影响。
在一实施例中,HWcomposer还可依据序号将图层分为多个群组,并且对应上述群组分别产生一群组列表。在此实施例中,HWcomposer依据序号产生的群组列表如表格1.1~1.3所示。值得注意的是,在群组列表中,图层可依照Z轴从小到大排列。
表格1.1
表格1.2
表格1.3
图6是显示根据本发明一实施例所述的显示图层的方法流程图600。值得注意的是,此方法流程由图3中的HWcomposer 322所执行。在步骤S605中,HWcomposer接收由应用(Application)所绘制的多个图层。接着,在步骤S610中,HWcomposer根据一覆盖顺序分配序号至上述图层。在步骤S615中,HWcomposer根据一方式分配每一图层的权重。在一实施例中,HWcomposer可利用一位区块传送(BLIT)性能分配图层权重。图层的位区块传送性能越低则权重越高,其中上述位区块传送性能可与图像格式、尺寸、图层是否为视频图像等等相关。一般而言。图像尺寸越大,则越难执行位区块传送。在另一实施例中,HWcomposer可判断两相邻图层是否发生变化。倘若两相邻图层为无变化(undirty)图层,则HWcomposer可分配最小的权重至上述两相邻图层。
回到步骤S620,HWcomposer根据上述序号及一权重大小建立一图层顺序。在步骤S625中,HWcomposer依照上述图层顺序显示上述图层。
在此实施例中,步骤S610与前面图4的步骤S410说明相同,在此不再重复赘述。而在步骤S620中HWcomposer根据序号及权重大小建立一图层顺序的步骤可详细描述如下。HWcomposer将对应起始序号的一起始群组中的图层按照权重由大到小的顺序重新排序。针对其余群组,HWcomposer判断其余群组中每一群组列表的一最后一图层的权重是否大于一阀值。当群组列表中最后一图层的权重大于上述权重阀值时,在此群组列表中的图层根据权重由大到小的顺序重新排序。当群组列表中最后一图层的权重不大于上述权重阀值时,在此群组列表中的图层根据上述权重由小到大的顺序重新排序。
以图5为例,假设图层A~F的权重分别为1、2、6、5、4、3。HWcomposer在根据序号产生群组列表后,可依权重大小对每一群组进行再排序。在起始序号0的起始群组中,HWcomposer按照权重由大到小的顺序对起始群组中的图层A、B、E重新排序,产生新的群组列表,如表格2.1所示。
表格2.1
而其余群组,HWcomposer则需判断每一群组列表的一最后一图层的权重是否大于一权重阀值。在此例子中,假设权重阀值为3。在表格1.2中群组序号1的群组列表的一最后一图层F的权重为3,不大于权重阀值。因此,HWcomposer按照权重由小到大的顺序对群组序号1的群组列表中的图层C、F重新排序,产生新的群组列表,如表格2.2所示。同理,群组序号2的群组列表如表格2.3所示。
表格2.2
表格2.3
如上述表格2.1~2.3所示,HWcomposer根据上述序号及权重大小所建立的图层顺序为E、B、A→F、C→D。
在另一实施例中,在显示上述图层前,HWcomposer还可判断上述图层的一图层数量是否超过显示接口单元所支持的一串流数量。当图层数量超过串流数量时,HWcomposer则根据权重大小及图层顺序找寻至少一两相邻图层,并合并至少一两相邻图层。
以表格2.1~2.3为例,图层顺序为E、B、A→F、C→D。假设显示接口单元所支持的串流数量为4。由于图层数量为6,因此HWcomposer判断图层需至少经过两次合并。在此例子中,HWcomposer挑选权重最小且相邻的图层进行合并。在第一次合并中,HWcomposer挑选权重分别为2及1且相邻的图层B、A进行合并。在第二次合并中,HWcomposer可在将图层B、A合并后的图层与相邻图层F进行合并。通过此种方式,HWcomposer可将图层权重较大的图层E、C、D以重叠(overlay)的方式显示,而图层B、A、F则以位区块传送(BLIT)的方式显示,以达到性能最佳化的效果。
图7是显示根据本发明一实施例所述的合并图层的方法流程图700。值得注意的是,此方法流程由图3中的HWcomposer 322所执行。在步骤S705中,HWcomposer在一当前帧中接收多个图层。在步骤S710中,HWcomposer根据一覆盖顺序分配序号至上述图层。在步骤S715中,HWcomposer判断一第一图层和一第二图层在一期间内是否发生变化。当HWcomposer判断第一图层和第二图层未发生变化时(步骤S715中的“否”),在步骤S720中,将第一图层和第二图层合并在一起,其中第一图层和第二图层为相邻图层。最后,在步骤S725中,HWcomposer根据上述序号依一序号顺序显示上述图层。当HWcomposer判断第一图层和第二图层发生变化时(步骤S715中的“是”),在步骤S725中,则不合并第一图层及第二图层,直接根据上述序号依一序号顺序显示上述图层。
在此实施例中,步骤S710与前面图4的步骤S410说明相同,在此不再重复赘述。值得注意的是,在步骤S715中,HWcomposer可依照下列方式判断第一图层和第二图层在一期间内是否发生变化。HWcomposer可先判断是否接收由Surfaceflinger所传送的一几何形变标志。若未接收到几何形变标志,HWcomposer则可判断对应一第一图层的缓冲器及一第二图层的缓冲器是否变化。当判断对应第一图层的缓冲器及对应第二图层的缓冲器皆未变化时,HWcomposer则判断第一图层和第二图层并无发生变化,并可执行合并第一图层和第二图层的动作。
图8是显示根据本发明一实施例所述的合并图层的方法流程图800。值得注意的是,此方法流程由图3中的HWcomposer 322所执行。在步骤S805中,HWcomposer在一当前帧中接收多个图层。在步骤S810中,HWcomposer根据一覆盖顺序分配序号至上述图层。在步骤S815中,HWcomposer根据一方式分配每一上述图层的权重。在步骤S820中,HWcomposer根据上述序号及一权重大小建立一图层顺序。在步骤S825中,HWcomposer判断一第一图层和一第二图层在一期间内是否发生变化,其中第一图层和第二图层为相邻图层。当HWcomposer判断第一图层和第二图层未发生变化时(步骤S825中的“否”),在步骤S830中,将第一图层和第二图层合并在一起。否则,在步骤S835中,HWcomposer不合并第一图层和第二图层。
在此实施例中,步骤S810与前面图4的步骤S410说明相同,步骤S815与前面图6的步骤S615说明相同,步骤S820与前面图6的步骤S620说明相同,步骤S825与前面图7的步骤S715说明相同,在此不再重复赘述。
在一实施例中,在执行方法流程图700及方法流程图800之前,HWcomposer还可判断一更新时间是否超过一预设值。当更新时间超过上述预设值时,HWcomposer则触发更新上述当前帧。
利用上述图7及图8的方法,HWcomposer可将无变化图层(undirty layer)进行合并。无变化图层可以位区块传送(BLIT)的方式显示,而有变化的图层可以重叠(overlay)的方式显示。举例来说,假设有4个图层,若上述4个图层都以重叠方式显示,则需4个串流。但若在此4个图层中,有3个相邻图层皆为无变化图层,则HWcomposer仅需使用2个串流即可显示上述图层。当无变化的图层在前一帧已合并过时,在当前帧中HWcomposer可继续使用在前一帧合并后的图层,以避免再次执行位区块传送的动作,提高性能效率。
此外,在图1中的中央处理器108也可执行程序码112以执行上述实施例所述的动作和步骤,或其它在说明书中内容的描述。
因此,通过本发明的一种显示及合并图层的方法及装置,根据覆盖顺序及权重调整图层的顺序,提高装置运作的效率,此外,本发明还将无变化的图层进行合并以及设置一预设值以更新当前帧,可有效减少显示接口单元所使用的串流数量,进而达到省电的效果。
以上实施例使用多种角度描述。显然这里的教示可以以多种方式呈现,而在范例中揭露的任何特定架构或功能仅为一代表性的状况。根据本文的教示,本领域技术人员应理解在本文呈现的内容可独立利用其他某种型式或综合多种型式作不同呈现。举例说明,可遵照前文中提到任何方式利用某种装置或某种方法实现。一装置的实施或一种方式的执行可用任何其他架构、或功能性、又或架构及功能性来实现在前文所讨论的一种或多种型式上。
本领域技术人员将了解信息及信号可用多种不同科技及技巧展现。举例,在以上描述所有可能引用到的数据、指令、命令、信息、信号、位、符号、以及码片(chip)可以伏特、电流、电磁波、磁场或磁粒、光场或光粒、或以上任何组合所呈现。
本领域技术人员还会了解在此描述各种说明性的逻辑区块、模块、处理器、装置、电路、以及演算步骤与以上所揭露的各种情况可用的电子硬件(例如用来源编码或其他技术设计的数字实施、类比实施、或两者的组合)、各种形式的程序或与指示作为连结的设计码(在内文中为方便而称作“软件”或“软件模块”)、或两者的组合。为清楚说明此硬件及软件间的可互换性,多种具描述性的元件、方块、模块、电路及步骤在以上的描述大致上以其功能性为主。不论此功能以硬件或软件型式呈现,将视加注在整体***上的特定应用及设计限制而定。本领域技术人员可为每一特定应用将描述的功能以各种不同方法作实现,但此实现的决策不应被解读为偏离本文所揭露的范围。
此外,多种各种说明性的逻辑区块、模块、及电路以及在此所揭露的各种情况可实施在集成电路(integrated circuit,IC)、存取终端、存取点;或由集成电路、存取终端、存取点执行。集成电路可由一般用途处理器、数字信号处理器(Digital Signal Processor,DSP)、特定应用集成电路(application specific integrated circuit,ASIC)、现场可编程门列(field programmable gate array,FPGA)或其他可编程逻辑装置、离散门(discrete gate)或晶体管逻辑(transistor logic)、离散硬件元件、电子元件、光学元件、机械元件、或任何以上的组合的设计以完成在此文内所描述的功能;并可能执行存在于集成电路内、集成电路外、或两者皆有的执行码或指令。一般用途处理器可能是微处理器,但也可能是任何常规处理器、控制器、微控制器、或状态机。处理器可由计算机设备的组合所构成,例如:数字信号处理器(DSP)及一微计算机的组合、多组微计算机、一组至多组微计算机以及一数字信号处理器核、或任何其他类似的配置。
在此所揭露程序的任何具体顺序或分层的步骤纯为一举例的方式。基于设计上的偏好,必须了解到程序上的任何具体顺序或分层的步骤可在此文件所揭露的范围内被重新安排。伴随的方法权利要求以一示范例顺序呈现出各种步骤的元件,也因此不应被本发明说明书所展示的特定顺序或阶层所限制。