CN101911125B - 图形处理系统中对离屏表面的多重缓冲支持 - Google Patents
图形处理系统中对离屏表面的多重缓冲支持 Download PDFInfo
- Publication number
- CN101911125B CN101911125B CN2009801024161A CN200980102416A CN101911125B CN 101911125 B CN101911125 B CN 101911125B CN 2009801024161 A CN2009801024161 A CN 2009801024161A CN 200980102416 A CN200980102416 A CN 200980102416A CN 101911125 B CN101911125 B CN 101911125B
- Authority
- CN
- China
- Prior art keywords
- impact damper
- screen surfaces
- buffer
- data
- playing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Generation (AREA)
Abstract
大体上,本发明描述用于在图形系统中提供对离屏表面的多重缓冲支持的各种技术。一个实例装置包括一个或一个以上缓冲器区域和一个或一个以上处理器。所述一个或一个以上处理器经配置以将多个缓冲器分配在缓冲器空间内,所述多个缓冲器均与在图形处理中使用的一离屏表面相关联。所述一个或一个以上处理器进一步经配置以:将所述缓冲器内的第一缓冲器识别为用于所述离屏表面的写入缓冲器,且进一步将所述缓冲器内的第二缓冲器识别为用于所述离屏表面的读取缓冲器,使得在写入操作期间将与所述离屏表面有关的信息写入到所述第一缓冲器中,且在读取操作期间从所述第二缓冲器读出与所述离屏表面有关的信息。
Description
相关申请案
本申请案主张2008年1月18日申请的第61/022,195号美国临时申请案的权益,所述申请案的整体内容以引用的方式并入本文中。
技术领域
本申请案涉和在图形处理系统内渲染和显示表面。
背景技术
对于各种应用程序(例如,视频游戏、图形程序、计算机辅助设计(CAD)应用程序、模拟与可视化工具以和成像)来说,图形处理器广泛用以渲染二维(2D)和三维(3D)图像。显示处理器可接着用以经由显示装置显示所渲染的输出以供呈现给用户。
用于这些应用中的图形处理器、显示处理器或多媒体处理器可经配置以执行数据的并行和/或向量处理。具有或不具有SIMD(单指令多数据)扩展的通用CPU(中央处理单元)也可经配置以处理数据。在SIMD向量处理中,单个指令同时对多个数据项进行操作。
(开放图形库)是界定API(应用编程接口)的标准规范,当编写产生2D和3D图形的应用程序时可使用API。(例如爪哇(Java)等其它语言可经由其自己的标准过程来界定与OpenGLAPI的联编)。接口包括可用以从简单图元绘制场景的多个函数调用。图形处理器、多媒体处理器和甚至通用CPU可接着执行使用OpenGL函数调用编写的应用程序。OpenGL ES(嵌入式系统)为OpenGL的针对嵌入式装置(例如,移动无线电话、数字多媒体播放器、个人数字助理(PDA)或视频游戏控制台)而设计的变体。OpenVGTM(开放向量图形)为主要针对经硬件加速的2D向量图形而设计的另一标准API。
EGLTM(嵌入式图形库)为多媒体客户端API(例如,OpenGL ES、OpenVG以及若干其它标准多媒体API)与基础平台多媒体设施之间的接口。EGL可处置图形上下文管理、渲染表面创建和渲染同步,且启用高效能、经硬件加速且混合模式的2D和3D渲染。为了渲染表面创建,EGL提供用于创建屏上表面(例如,窗口表面)和离屏表面(例如,p缓冲器、像素映射)的机制,客户端API(例如,用户应用API)可绘制并共享到所述表面上。屏上表面通常直接渲染到活动窗口的帧缓冲器存储器中。离屏表面通常渲染到离屏缓冲器中供以后使用。p缓冲器是可存储在(例如)与OpenGL服务器侧(驱动程序)操作相关联的存储器空间中的离屏存储器缓冲器。像素映射是通常存储在(例如)与客户端应用程序相关联的存储器空间中的离屏存储器区域。
发明内容
一般来说,本发明描述用于提供对离屏表面(例如,p缓冲器和像素映射表面)的多重缓冲支持的各种技术。在一个方面中,对离屏表面的多重缓冲支持可在EGL扩展内实施,EGL扩展启用指定数目的缓冲器而非单个或未知数目的缓冲器的创建。应用程序开发者也可使用例如EGL等API来指定对于离屏表面,哪一缓冲器当前用于读取或写入(绘制)操作。在一个方面中,可为离屏视频表面和预渲染的子画面动画提供多个缓冲器。这些经多重缓冲的表面和动画可接着经由表面重叠功能性与其它2D表面要素、3D表面要素和视频表面要素组合,这可与渲染操作一起或独立于渲染操作而发生。出于本发明的目的,2D表面是可由例如OpenVG等2D API创建的表面。3D表面是可由例如OpenGL等3DAPI创建的表面。视频表面是可由例如H.264或MPEG4(移动图片专家组版本4)等视频解码器创建的表面。
在一个方面中,一种方法包括:分配均与图形处理中所使用的一离屏表面相关联的多个缓冲器;以及识别所述缓冲器内的第一缓冲器作为用于所述离屏表面的写入缓冲器,使得与离屏表面有关的信息在写入操作期间写入到第一缓冲器中。所述方法进一步包括识别所述缓冲器内的第二缓冲器作为用于离屏表面的读取缓冲器,使得与离屏表面有关的信息在读取操作期间从第二缓冲器读出。
在另一方面中,一种装置包括一缓冲器空间以及一个或一个以上处理器。所述一个或一个以上处理器经配置以将多个缓冲器分配在缓冲器空间内,所述缓冲器均与在图形处理中使用的一离屏表面相关联。所述一个或一个以上处理器进一步经配置以:识别所述缓冲器内的第一缓冲器作为用于离屏表面的写入缓冲器,且进一步识别所述缓冲器内的第二缓冲器作为用于离屏表面的读取缓冲器,使得与离屏表面有关的信息在写入操作期间写入到所述第一缓冲器中,且与离屏表面有关的信息在读取操作期间从第二缓冲器读出。
在一个方面中,一种计算机可读媒体包括用于致使一个或一个以上可编程处理器进行以下操作的指令:分配均与图形处理中所使用的一离屏表面相关联的多个缓冲器;且识别所述缓冲器内的第一缓冲器作为用于离屏表面的写入缓冲器,使得与离屏表面有关的信息在写入操作期间写入到第一缓冲器中。所述计算机可读媒体进一步包括用于致使一个或一个以上可编程处理器进行以下操作的指令:识别所述缓冲器内的第二缓冲器作为用于离屏表面的读取缓冲器,使得与离屏表面有关的信息在读取操作期间从第二缓冲器读出。
附图和以下描述中陈述本发明的一个或一个以上方面的细节。将从所述描述和图式且从权利要求书明白其它特征、目标和优点。
附图说明
图1A是根据本发明的一个方面的说明可用以实施对离屏表面的多重缓冲支持的装置的框图。
图1B是根据本发明的另一方面的说明可用以实施对表面创建的多格式支持的装置的框图。
图2A是根据本发明的一个方面的说明可用以实施对离屏表面的多重缓冲支持的装置的框图。
图2B是根据本发明的一个方面的说明展示于图2A中的API库的进一步细节的框图。
图2C是根据本发明的一个方面的说明展示于图2A中的驱动程序的进一步细节的框图。
图2D是根据本发明的另一方面的说明可用以实施对离屏表面的多重缓冲支持的装置的框图。
图3A是根据本发明的一个方面的说明各自与多个缓冲器相关联的多个离屏表面的实例的框图。
图3B是说明与展示于图3A中的在一个方面中可显示于显示装置上的离屏表面相关联的经重叠表面数据的实例的框图。
图3C是根据本发明的一个方面的说明各自与经不同识别的读取和写入缓冲器相关联的多个离屏表面的另一实例的框图。
图3D是说明与展示于图3C中的在一个方面中可显示于显示装置上的离屏表面相关联的经重叠表面数据的实例的框图。
图4是根据本发明的一个方面的可由展示于图1A、图1B、图2A或图2D的图形处理系统中的控制处理器、图形处理器和/或显示处理器中的一者或一者以上执行的方法的流程图。
图5是根据本发明的一个方面的可由展示于图1A、图1B、图2A或图2D的图形处理系统中的控制处理器、图形处理器和/或显示处理器中的一者或一者以上执行的另一方法的流程图。
具体实施方式
图1A是根据本发明的一个方面的说明可用以实施对离屏表面的多重缓冲支持的装置100的框图。装置100可为独立装置,或可为较大系统的一部分。举例来说,装置100可包含无线通信装置(例如,无线移动手持机),或可为数字相机、数字多媒体播放器、个人数字助理(PDA)、视频游戏控制台或其它视频装置的一部分。装置100还可包含个人计算机(例如,超移动个人计算机)或膝上型装置。装置100还可包括在可用于上文所描述的装置中的一些装置或所有装置中的一个或一个以上集成电路或芯片中。
装置100能够执行各种不同应用程序,例如图形应用程序、视频应用程序或其它多媒体应用程序。举例来说,装置100可用于图形应用程序、视频游戏应用程序、视频应用程序、组合图形与视频的应用程序、数字相机应用程序、即时消息接发应用程序、移动应用程序、视频电话会议应用程序、视频广播应用程序或视频流式传输应用程序。
装置100可能够处理多种不同数据类型和格式。举例来说,如下文将更详细地描述,装置100可处理静态图像数据、移动图像(视频)数据或其它多媒体数据。图像数据可包括计算机产生的图形数据。装置100包括:图形处理系统102、存储器104和显示装置106。可编程处理器108、110和114在逻辑上包括于图形处理系统102内。可编程处理器108可为控制处理器或通用处理器。可编程处理器110可为图形处理器,且可编程处理器114可为显示处理器。控制处理器108可能够控制图形处理器110和显示处理器114两者。处理器108、110和114可为标量或向量处理器。在一个方面中,装置100可包括其它形式的多媒体处理器。
在图1A的实例中,装置100的图形处理系统102耦合到存储器104且耦合到显示装置。存储器104可包括能够存储指令和/或数据的任何永久或易失性存储器。显示装置106可为能够显示3D图像数据、2D图像数据或用于显示目的的视频数据的任何装置,例如,LCD(液晶显示器)或电视(TV)显示装置。
图形处理器110可为用以渲染、操纵和显示计算机化的图形的专用图形渲染装置。图形处理器110可实施各种复杂的图形相关算法。举例来说,所述复杂算法可对应于二维或三维计算机化图形的表示。图形处理器110可实施若干所谓的“图元”图形操作(例如,形成点、线和三角形或其它多边形表面),以在例如显示装置106等显示器上创建复杂的三维图像。
在本发明中,术语“渲染”可大体上指代3D和/或2D渲染。作为实例,图形处理器110可利用OpenGL指令来渲染3D图形帧,或可利用OpenVG指令来渲染2D图形表面。然而,图形处理器110可利用用于渲染图形的任何标准、方法或技术。
图形处理器110可实行存储在存储器104中的指令。存储器104能够存储用于应用程序(例如,图形或视频应用程序)的应用程序指令118、API库120以及驱动程序122。应用程序指令118可从存储器104加载到图形处理系统102中以供执行。举例来说,控制处理器108、图形处理器110和显示处理器114中的一者或一者以上可执行指令118中的一者或一者以上。
控制处理器108、图形处理器110和/或显示处理器114也可在应用程序指令118的执行期间加载并执行包含在API库120或驱动程序122中的指令。指令118可引用或以其它方式调用API库120或驱动程序122内的某些函数。因此,如下文将更详细地描述,当图形处理系统102执行指令118时,其还可执行API库120和/或驱动程序122内的所识别的指令。驱动程序122可包括特别针对控制处理器108、图形处理器110和显示处理器114中的一者或一者以上的功能性。在一个方面中,应用程序指令118、API库120和/或驱动程序122可从例如非易失性数据存储媒体等存储装置加载到存储器104中。在一个方面中,应用程序指令118、API库120和/或驱动程序122可包含以无线方式动态地下载到存储器104中的一个或一个以上可下载模块。
当图形处理器110渲染例如屏上表面或离屏表面等图形表面时,图形处理器110可将此渲染数据存储在缓冲器区域112中。缓冲器区域112可为能够存储数据的例如任何永久或易失性存储器等数据存储装置,例如同步动态随机存取存储器(SDRAM)、嵌入式动态随机存取存储器(eDRAM)或静态随机存取存储器(SRAM)。在一个方面中,如图1B中所示,缓冲器区域112可直接包括在存储器104内。每一经渲染的图形表面由其大小和形状界定。由于显示处理器114可将后渲染按比例缩放和旋转功能应用于经渲染的表面,所以大小和形状不受正使用的显示装置106的实际物理大小限定。
缓冲器区域112可包括多个离屏表面缓冲器116A到116N(统称为116)。每一离屏表面缓冲器116A到116N与一特定离屏表面相关联。举例来说,所有离屏表面缓冲器116A到116N可与在执行期间已由应用程序指令118创建的一个特定离屏表面相关联。每一缓冲器116A到116N能够保存关于离屏表面的信息,且可构成读取缓冲器、写入缓冲器或两者。
可在各种情形下且为了各种目的而使用离屏表面。举例来说,一个或一个以上离屏表面可与例如窗口表面等屏上表面组合,以显示具有3D控件的视频播放器、显示动画光标或显示系统状态指示符(例如,无线信号强度计)。
在一个方面中,用于表面(经渲染的表面)的所渲染的输出数据由图形处理器110写入到写入缓冲器中。因此,在图形处理器110已渲染离屏表面之后,图形处理器110将用于所述表面的所渲染的输出数据写入到缓冲器116A到116N中被识别为写入缓冲器的一个或一个以上缓冲器中。在此方面中,显示处理器114和图形处理器110能够从缓冲器116A到116N中被识别为读取缓冲器的一个或一个以上缓冲器读取所渲染的输出数据。在一些情况下,显示处理器或图形处理器110还能够从文件或以无线方式读取数据。
举例来说,显示处理器114可从缓冲器116A到116N中的一者读取所渲染的输出数据,以准备此数据以供显示在显示装置106上。显示处理器114是可对经渲染的图形帧执行后渲染功能且用于驱动显示装置106的处理器。后渲染功能可包括按比例缩放、旋转、混合、色彩键控和/或重叠。举例来说,显示处理器114可通过使用若干混合模式中的一者来组合表面,例如具有恒定α混合的色彩键控、无恒定α混合的色彩键控、全表面恒定α混合或全表面每像素α混合。图形处理器110还可从缓冲器116A到116N中的一者或一者以上读取所渲染的输出数据作为纹理源。在一些例子中,控制处理器108还可从缓冲器116A到116N中的一者或一者以上读取所渲染的输出数据。
在一个方面中,图形处理器110渲染图形表面,且将经渲染的图形数据存储在缓冲器116A到116N中已被识别为写入缓冲器的一者中。当渲染完成时,缓冲器可被重新识别为读取缓冲器,使得显示处理器114可检索所渲染的图形数据。图形处理器110可接着将其它数据渲染到缓冲器116中已被识别为写入缓冲器的另一缓冲器中。通过在缓冲器116内具有与特定离屏表面相关联的至少两个缓冲器,显示处理器114可从一个缓冲器进行读取,同时图形处理器110渲染到另一缓冲器。识别符或指针可用以指定给定缓冲器116A到116N为读取缓冲器还是写入缓冲器。在一些情况下,如上文所述,缓冲器116A到116N中的任一者同样可被识别为读取/写入缓冲器。
显示处理器114能够从缓冲器116读取来自多个图形表面的经渲染的输出数据。显示处理器114可接着将所渲染的图形表面重叠到帧缓冲器160中的待显示于显示装置106上的图形帧上。帧缓冲器160可为图形处理系统102内的专用存储器。然而,在一个方面中,如图1B中所示,帧缓冲器160可包含直接在存储器104内的系统RAM(随机存取存储器)。
在一个方面中,图形帧包括例如窗口表面等至少一个屏上表面。每一图形表面被重叠的等级由针对所述图形表面界定的表面等级决定。此表面等级可由用户程序界定,例如由应用程序指令118界定。表面等级可存储为与所渲染的表面相关联的参数。
可将表面等级界定为任何数字,其中数字越高,表面在所显示的图形帧上将显示得越高。即,在两个表面的部分叠加的情形下,将显示具有较高表面等级的表面的叠加部分,而非具有较低表面等级的任何表面的叠加部分。作为简单实例,用于桌上型计算机上的背景图像将具有比桌面上的图标的表面等级低的表面等级。表面等级在一些情况下可与透明度信息组合,使得叠加的两个表面可混合在一起。在这些情况下,可使用色彩键控。如果第一表面中的像素并不与基色匹配,那么在未启用α(透明度)混合的情况下,可将第一表面选择为输出像素。在启用α混合的情况下,可照常混合第一表面和第二表面的像素。如果第一表面的像素并不与基色匹配,那么选择第二表面的像素,且不执行α混合。
在一个方面中,控制处理器108可为高级RISC(精简指令集计算机)机(ARM)处理器,例如由加利福尼亚州圣地亚哥市的高通(Qualcomm)公司设计的嵌入移动台调制解调器中的ARM11处理器。在一个方面中,显示处理器114可为由高通公司设计的也嵌入移动台调制解调器中的移动显示处理器(MDP)。处理器108、110和114中的任一者能够存取缓冲器区域112内的缓冲器116A到116N。在一个方面中,每一处理器108、110和114能够提供渲染能力,并将图形表面的所渲染的输出数据写入到缓冲器116A到116N中。
图2A是根据本发明一个方面的说明可用以实施对离屏表面的多重缓冲支持的装置200的框图。在此方面中,展示于图2A中的装置200是展示于图1A中的装置100的实例示例。装置200包括:图形处理系统202、存储器204和显示装置206。类似于展示于图1A中的存储器104,图2的存储器204包括用于应用程序指令218、API库220和驱动程序222的存储空间。类似于展示于图1A中的图形处理系统102,图2的图形处理系统202包括:处理器208、图形处理器210、显示处理器214、缓冲器区域212和帧缓冲器260。处理器208可为控制处理器或通用处理器。在一个方面中,处理器208可包含系统CPU(中央处理单元)。
在一个方面中,如图2D中所示,缓冲器区域212可包括于存储器204内。帧缓冲器260可为图形处理系统202内的专用存储器。然而,在一个方面中,如图2D中所示,帧缓冲器260可包含直接在存储器204内的系统RAM(随机存取存储器)。
在图2A的实例中,缓冲器区域212包括用于p缓冲器表面的多个缓冲器216A到216N(统称为216),以及用于像素映射表面的另外多个缓冲器217A到217N(统称为217)。缓冲器216A到216N与离屏p缓冲器表面相关联,且缓冲器217A到217N与离屏像素映射表面相关联。如先前所述,p缓冲器和像素映射是离屏表面的实例。因此,个别离屏p缓冲器表面与多个缓冲器216A到216N相关联,使得p缓冲器表面的渲染数据可存储在缓冲器216A到216N中,且从缓冲器216A到216N进行处理。个别离屏像素映射表面与多个缓冲器217A到217N相关联。如上文所述,p缓冲器是可存储在(例如)与OpenGL服务器侧(驱动程序内部)操作相关联的存储器空间中的离屏存储器缓冲器。像素映射是可通常存储在(例如)与客户端应用程序相关联的存储器空间中的离屏存储器区域。在一个方面中,缓冲器216和缓冲器217可为完全不同的缓冲器空间。
每一个别小绞车216A到216N可被识别为读取缓冲器、写入缓冲器或两者。类似地,每一个别缓冲器217A到217N可被识别为读取缓冲器、写入缓冲器或两者。在一个方面中,控制处理器208、图形处理器210和/或显示处理器214可能够将缓冲器216A到216N和缓冲器217A到217N分配在缓冲器区域212内,且识别这些缓冲器中的哪些缓冲器是读取缓冲器、写入缓冲器或两者。
在一个方面中,图形处理器210可渲染离屏p缓冲器界面,且将所渲染的表面数据写入到已被识别为写入缓冲器的缓冲器(例如,缓冲器216A)。在渲染完成之后,图形处理器210可重新将缓冲器216A识别为读取缓冲器,且将例如缓冲器216N等单独缓冲器识别为写入缓冲器。图形处理器210可接着将新的或经更新的所渲染表面数据写入到缓冲器216N,同时图形处理器210或显示处理器214从缓冲器216A读取先前渲染的表面数据。图形处理器210可从缓冲器216A读取先前渲染的表面数据作为用于进一步图形处理的纹理源,或显示处理器214可从缓冲器216A读取所渲染的表面数据,以最后显示在显示装置206上。通过将多个缓冲器216A到216N用于一个离屏p缓冲器表面,能够针对离屏p缓冲器表面并行地执行读取和写入操作。
类似地,在一个方面中,图形处理器210或控制处理器208可渲染离屏像素映射表面,且将所渲染的表面数据写入到已被识别为写入缓冲器的缓冲器(例如,缓冲器217A)。在渲染完成之后,图形处理器210或控制处理器208可重新将缓冲器217A识别为读取缓冲器,且将例如缓冲器217N等单独缓冲器识别为写入缓冲器。图形处理器210或控制处理器208可接着将新的或经更新的所渲染表面数据写入到缓冲器217N,同时图形处理器210或控制处理器208或显示处理器214从缓冲器217A读取先前渲染的表面数据。通过将多个缓冲器217A到217N用于一个离屏像素映射表面,能够并行地执行读取和写入操作。像素映射表面通常较可能包括预渲染的内容,且可通常从文件读取。
图2B是根据本发明一个方面的说明展示于图2A中的API库220的进一步细节的框图。如先前参看图2A所描述,API库220可存储在存储器204中,且在由图形处理器210、控制处理器208和/或显示处理器214进行的应用程序执行期间,由应用程序指令218链接或引用。图2C是根据一个方面的说明展示于图2A中的驱动程序222的进一步细节的框图。驱动程序222可存储在存储器204中,且在由图形处理器210、控制处理器208和/或显示处理器214进行的应用程序执行期间,由应用程序指令218和/或API库220链接或引用。
在图2B中,API库220包括:OpenGL ES API 230、OpenVG API 232和EGLAPI 234。展示于图2C中的驱动程序222包括OpenGL ES驱动程序240、OpenVG驱动程序242和EGL驱动程序244。OpenGL ES API 230为在由图形处理系统202进行的应用程序执行期间由应用程序指令218调用的API,以提供由OpenGL ES支持的功能(例如,2D和3D图形功能)。OpenGL ES驱动程序240在应用程序执行期间由应用程序指令218和/或OpenGL ES API 230调用,以用于图形处理系统202中对OpenGL ES功能的低等级驱动程序支持。
OpenVG API 232是在应用程序执行期间由应用程序指令218调用的API,以提供由OpenVG支持的例如2D向量图形功能等功能。OpenVG驱动程序242在应用程序执行期间由应用程序指令218和/或OpenVG API 232调用,以用于图形处理系统202中对OpenVG功能的低等级驱动程序支持。
EGL API 234(图2B)和EGL驱动程序244(图2C)提供对图形处理系统202中EGL功能的支持。在一个方面中,EGL扩展可并入EGL API 234和EGL驱动程序244内。在图2B到图2C的实例中,提供用于表面重叠和离屏多重缓冲功能性的EGL扩展。因此,对于EGL表面重叠扩展来说,表面重叠API 236包括在EGLAPI 234内,且表面重叠驱动程序246包括在EGL驱动程序244内。同样,对于EGL离屏多重缓冲扩展来说,离屏多重缓冲API 238包括在EGL API 234内,且离屏多重缓冲驱动程序248包括在EGL驱动程序244内。
EGL表面重叠扩展提供显示于显示装置206上的多个图形表面(例如,2D表面、3D表面和/或视频表面)的重叠的表面重叠堆叠。可包括屏上表面和离屏表面两者的图形表面在堆叠内各自具有相关联的表面等级。由此根据表面在堆叠内的重叠次序而实现表面的重叠。表面重叠的实例展示于图3B和图3D中,且将在下文更详细地论述。在一个方面中,重叠堆叠包括例如窗口表面等至少一个屏上表面。
EGL离屏多重缓冲扩展提供对与由图形处理系统202处理的例如p缓冲器表面或像素映射表面等每一离屏表面相关联的经界定数目个缓冲器的支持。举例来说,如图2A中所示,多个缓冲器216A到216N可经分配且与p缓冲器表面相关联,且多个缓冲器217A到217N可经分配且与单个像素映射表面相关联。此外,如先前参考图2A所描述,EGL离屏多重缓冲扩展允许每一缓冲器被识别为读取缓冲器、写入缓冲器或两者。
图3A是根据一个方面的说明多个离屏表面300A到300N的实例的框图,其中每一离屏表面与多个缓冲器相关联。在图3A的实例中,每一离屏表面300A到300N是可由展示于图1A或图1B中的图形处理系统102处理且最终显示于显示装置106上的表面。这些表面300A到300N还可由展示于图2A或图2D中的图形处理系统202处理。然而,在图3A到图3D的以下描述中仅为了说明目的,将假定表面300A到300N由图形处理系统102处理。
每一离屏表面300A到300N可包含:2D表面、3D表面或视频表面。在帧缓冲器160内俘获且显示于显示装置106上的数据的每一帧内,可根据重叠次序来重叠离屏表面300A到300N。此情形的实例展示于图3B中。以此方式,2D表面、3D表面和/或视频表面可以表面重叠堆叠重叠,且一起显示于显示装置106上。举例来说,在视频游戏应用程序中,可用其它表面重叠与某些游戏表面有关的表面。在一些情况下,在此些应用程序中,可以重叠堆叠用视频数据重叠静态图像数据,其中静态图像数据可包含背景图形,且视频数据可包含用于移动对象、得分等的数据。在一个方面中,重叠堆叠包括例如窗口表面等至少一个屏上表面。
根据一个方面,离屏表面300A与已分配在图形处理系统102的缓冲器区域112内的缓冲器316相关联。缓冲器316包括多个离屏表面缓冲器316A到316N。每一缓冲器316A到316N可被识别为读取缓冲器、写入缓冲器或两者,且每一缓冲器316A到316N能够保存与离屏表面300A相关联的数据,例如渲染数据。
在图3A的实例中,缓冲器316A已被识别为读取缓冲器,且缓冲器316N已被识别为写入缓冲器。由此,可从缓冲器316A读出数据,同时正将其它数据写入到缓冲器316N中。举例来说,图形处理器110可处于将用于表面300A的新的或经更新的表面数据渲染到缓冲器316N中的过程中。在发生此情形的同时,图形处理器110、显示处理器114或控制处理器108可从缓冲器316A读出用于表面300A的先前渲染的表面数据。因为这些类型的读取和写入操作可并行发生,所以离屏表面300A的渲染过程和显示过程可在图形处理系统102内同时发生。
根据一个方面,离屏表面300N与已分配在图形处理系统102的缓冲器区域112内的缓冲器317相关联。缓冲器317包括多个离屏表面缓冲器317A到317N。每一缓冲器317A到317N可被识别为读取缓冲器、写入缓冲器或两者,且每一缓冲器317A到317N能够保存与离屏表面300N相关联的数据,例如渲染数据。
在图3A的实例中,缓冲器317A已被识别为读取缓冲器,且缓冲器317N已被识别为写入缓冲器。由此,可从缓冲器317A读出与表面300N相关联的数据,同时将与表面300N相关联的其它数据写入到缓冲器317N中。举例来说,图形处理器110可处于将用于表面300N的新的或经更新的表面数据渲染到缓冲器317N中的过程中。在发生此情形的同时,图形处理器110、显示处理器114或控制处理器108可从缓冲器317A读出用于表面300N的先前渲染的表面数据。因为这些类型的读取和写入操作可并行发生,所以离屏表面300N的渲染过程和显示过程可在图形处理系统102内同时发生。
图3B是根据一个方面的说明与如展示于图3A中的离屏表面300A和300N相关联的经重叠表面数据的实例的框图,所述离屏表面300A和300N可与屏上表面一起显示于显示装置106上。如上文方才参考图3A所描述,离屏表面缓冲器316A在缓冲器316内被识别为与离屏表面300A相关联的读取缓冲器,且离屏表面缓冲器317A在缓冲器317内被识别为与离屏表面300N相关联的读取缓冲器。因此,可从缓冲器316A读出用于离屏表面300A的表面数据(例如,所渲染的表面输出数据),且可从缓冲器317A读出用于离屏表面300N的表面数据。
在图3B的实例中,假定显示处理器114从缓冲器316A读出用于离屏表面300A的表面数据,且将例如离屏表面数据319A等数据存储在图形处理系统102的帧缓冲器160内。显示处理器114还从缓冲器(未图示)读出用于例如窗口表面等屏上表面的表面数据,且将例如屏上表面数据323A等数据存储在帧缓冲器160内。此外,显示处理器114可从缓冲器317A读出用于离屏表面300N的表面数据,且将例如离屏表面数据321A等数据存储在帧缓冲器160内。以此方式,离屏表面数据319A和321A连同屏上表面数据323A可包括在待显示于显示装置106上的一个图像数据帧内。
在一个方面中,离屏表面数据319A和321A连同屏上表面数据323A可包括在表面重叠堆叠内。在此方面中,显示处理器114可使表面数据319A、321A和323A中的每一者与在堆叠内的不同表面等级相关联,从而实施离屏表面数据319A和321A以及屏上表面数据323A的重叠次序。离屏表面数据319A与用于离屏表面300A的一个表面数据帧相关联,且离屏表面数据321A与用于离屏表面300N的一个表面数据帧相关联。
在一个方面中,在表面重叠过程期间,可考虑表面300A和300N的等级或表面300A和300N联编到特定等级的序列。在某些情况下,多个表面可联编到一特定层。可从后到前(最负到最正)地处理各层。在给定层内,以表面联编到层的序列来处理所述表面。
如图3B中所示,离屏表面数据319A和321A可连同屏上表面数据323A在对于用户可见的屏幕区域330A内显示于显示装置106上。离屏表面数据319A和321A连同屏上表面数据323A可基于显示处理器114所使用的重叠次序作为经重叠表面显示于屏幕区域330A内。离屏表面数据319A和321A可或可不以与包括在帧缓冲器160内的位置或关系相同的位置或关系来显示。表面重叠堆叠可用以指派任何表面重叠等级,以在显示装置106上显示所述表面。因此,图形处理系统102能够提供可经重叠以在显示装置106上向用户显示的2D、3D和/或视频表面数据。举例来说,如果离屏表面300A是图3B的实例中的3D表面,且离屏表面300N是视频表面,那么与这些表面相关联的3D和视频表面数据可显示于显示装置106上。可在显示装置106上重叠2D、3D和/或视频表面数据的任意组合。
图3C是根据一个方面的说明具有不同经识别的读取和写入缓冲器的多个离屏表面300A到300N的实例的框图。在图3C中,与展示于图3A中的实例相反,离屏表面缓冲器316A已被识别为用于离屏表面300A的写入缓冲器,且离屏表面缓冲器316N已被识别为读取缓冲器。而且,相对于离屏表面300N,离屏表面缓冲器317A已被识别为写入缓冲器,且离屏表面缓冲器317N已被识别为读取缓冲器。
在一个方面中,控制处理器108、图形处理器110和/或显示处理器114中的一者或一者以上可分配缓冲器316和/或317内的缓冲器空间,且还相对于离屏表面300A到300N而识别哪些缓冲器316A到316N以及317A到317N是读取缓冲器、写入缓冲器或两者。图3A和图3C的实例展示:类似于窗口表面双重缓冲的实施但应用于离屏表面,任何给定缓冲器在给定时间点均可被识别为读取缓冲器,但稍后可被识别为写入缓冲器。
举例来说,在图3A中,离屏表面缓冲器316N被识别为写入缓冲器。因此,在渲染过程期间,用于离屏表面300A的渲染输出数据可(例如)由图形处理器110写入到缓冲器316N。因为图3A的缓冲器316A被识别为读取缓冲器,所以可从缓冲器316A读出用于离屏表面300A的表面数据(例如,先前渲染的数据),同时并行地将单独的数据写入到缓冲器316N。
当(例如)图形处理器110已结束渲染和将数据写入到缓冲器316N时,如图3C中所示,缓冲器316N可被重新识别为读取缓冲器,使得可从缓冲器316N读出用于离屏表面300A的此所渲染的数据。同样地,如图3C中所示,缓冲器316A可被重新识别为写入缓冲器,使得可将用于离屏表面300A的新的所渲染的输出数据写入到缓冲器316A中,同时并行地从缓冲器316N读取单独的数据。因此,在某些情境中,缓冲器316A到316N中的一者或一者以上可在不同时间点在被识别为读取缓冲器与写入缓冲器之间切换。
类似地,缓冲器317A到317N中的一者或一者以上可在不同时间点在被识别为读取缓冲器与写入缓冲器之间切换。在图3A中,缓冲器317A被识别为读取缓冲器,且缓冲器317N被识别为写入缓冲器。然而,如图3C中所示,缓冲器317A已被重新识别为写入缓冲器,且缓冲器317N已被重新识别为读取缓冲器。
图3D是根据一个方面的说明与如展示于图3C中的离屏表面300A和300N相关联的经重叠表面数据的实例的框图,所述离屏表面300A和300N可与屏上表面一起显示于显示装置106上。因为离屏表面缓冲器316N被识别为用于离屏表面300A的读取缓冲器,所以显示处理器114可从缓冲器316N读取数据,且将例如离屏表面数据319N等数据存储在帧缓冲器160内。显示处理器114也可从缓冲器317N读取与离屏表面300N相关联的数据,且将例如离屏表面数据321N等数据存储在帧缓冲器160内。以此方式,离屏表面数据319N和321N连同屏上表面数据323N可包括在待显示于显示装置106上的一个图像数据帧内。
类似于图3B的实例,展示于图3D中的离屏表面数据319N和321N连同屏上表面数据323N可包括在表面重叠堆叠内,所述表面重叠堆叠提供待重叠的表面的排序。显示处理器114可使表面数据319N、321N和323N中的每一者与在堆叠内的不同表面等级相关联,从而实施离屏表面数据319N和321N以及屏上表面数据323N的重叠次序。离屏表面数据319N和321N连同屏上表面数据323N可接着在对于用户可见的屏幕区域330N内显示于显示装置106上。表面数据319N、321N和323N可基于显示处理器114所使用的重叠次序作为经重叠表面而显示于屏幕区域330N内。
图4是根据一个方面的可由展示于图1A或图1B的图形处理系统102中的控制处理器108、图形处理器110和/或显示处理器114中的一者或一者以上,或由展示图2A或图2D的图形处理系统202中的控制处理器208、图形处理器210和/或显示处理器214中的一者或一者以上执行的方法的流程图。在以下描述中仅为了说明,将假定展示于图4中的方法由图形处理系统102中的一个或一个以上处理器执行。
最初,控制处理器108、图形处理器110和/或显示处理器114中的一者或一者以上分配均与图形处理中所使用的一离屏表面相关联的多个缓冲器(例如,缓冲器116A到116N)(图4中的400)。缓冲器116A到116N可分配在缓冲器区域112内,且可包含经界定数目的缓冲器。离屏表面可包含p缓冲器或像素映射表面。在一个方面中,所述缓冲器可分配在缓冲器区域112的第一区域内或缓冲器区域112的第二区域内。在一些情况下,第一区域可与p缓冲器相关联,且第二区域可与像素映射相关联,其中第一区域和第二区域是不同区域。
将缓冲器116A到116N内的第一缓冲器识别为写入缓冲器(图4中的402)。在写入操作期间,可将与离屏表面有关的信息(例如,渲染数据)写入到第一缓冲器中。将缓冲器116A到116N内的第二缓冲器识别为读取缓冲器(图4中的404)。在读取操作期间,可从第二缓冲器读出与离屏表面有关的信息。在一个方面中,第一缓冲器和第二缓冲器为不同缓冲器,使得写入缓冲器不同于读取缓冲器。
在406处,例如图形处理器110或控制处理器108等一个或一个以上处理器可通过渲染离屏表面且在写入操作期间将渲染信息写入到第一缓冲器中来产生渲染信息。在408处,例如显示处理器114等一个或一个以上处理器在读取操作期间可从第二缓冲器读出与离屏表面有关的信息以用于显示目的。以此方式,根据一个方面,可为离屏表面提供多个缓冲器。在此方面中,可调用缓冲器选择函数(例如,下文更详细地描述的eglBufferMakeCurrentQUALCOMM函数),以将相关联的缓冲器识别为读取缓冲器和/或写入缓冲器。举例来说,当离屏表面的渲染在给定阶段期间已完成,且渲染信息已写入到第一缓冲器时,可调用缓冲器选择函数以将第一缓冲器识别为读取缓冲器,使得(例如)可读取渲染信息,且在待显示的图像或视频的帧内合成离屏表面。缓冲器选择函数的调用还可将第二缓冲器识别为写入缓冲器,使得可将离屏表面的新渲染信息写入到此缓冲器。
以此方式,控制处理器108、图形处理器110和/或显示处理器114中的一者或一者以上可同时从第二(读取)缓冲器读取表面数据,同时将新的或经更新的表面数据写入到相对于离屏表面的第一(写入)缓冲器。由此提供对离屏表面的多重缓冲支持。在一个方面中,与多个表面(每一表面具有多重缓冲支持)相关联的表面数据可由显示处理器114从缓冲器区域112读出到表面重叠堆叠中,且被提供以根据重叠次序而显示于显示装置106上。这些表面可包含2D表面、3D表面和/或视频表面。
图5是根据一个方面的可由展示于图1A或图1B的图形处理系统102中的控制处理器108、图形处理器110和/或显示处理器114中的一者或一者以上,或由展示图2A或图2D的图形处理系统202中的控制处理器208、图形处理器210和/或显示处理器214中的一者或一者以上执行的方法的流程图。在以下描述中仅为了说明目的,将假定展示于图5中的方法由图形处理系统102中的一个或一个以上处理器执行。
最初,在500处,控制处理器108、图形处理器110和/或显示处理器114中的一者或一者以上分配各自与一离屏表面相关联的多个(“M”个)缓冲器,其中M大于或等于二。举例来说,M个缓冲器可包括一第一缓冲器和一第二缓冲器(仅为了说明目的)。将第一缓冲器识别为用于离屏表面的写入缓冲器,使得在写入操作期间可将与离屏表面有关的信息写入到第一缓冲器中。将第二缓冲器识别为用于离屏表面的读取缓冲器,使得在读取操作期间可从第二缓冲器读出与离屏表面有关的信息。
在502处,所述一个或一个以上处理器分配各自与一额外离屏表面相关联的多个(“N”个)缓冲器,其中N大于或等于二。举例来说,N个缓冲器可包括一第三缓冲器和一第四缓冲器(仅为了说明目的)。将第三缓冲器识别为用于额外离屏表面的写入缓冲器,使得在额外写入操作期间可将与额外离屏表面有关的信息写入到所述第三缓冲器中。将第四缓冲器识别为用于额外离屏表面的读取缓冲器,使得在额外读取操作期间可从第四缓冲器读出与额外离屏表面有关的信息。
在504处,例如显示处理器114等一个或一个以上处理器从第二缓冲器读出与离屏表面有关的信息。在506处,例如显示处理器114等一个或一个以上处理器从第四缓冲器读出与额外离屏表面有关的信息。
在508处,所述一个或一个以上处理器可根据重叠次序来组合(与离屏表面相关联的)第二缓冲器和(与额外离屏表面相关联的)第四缓冲器的内容连同与屏上表面相关联的数据。举例来说,可在表面重叠堆叠内组合此信息。
在510处,所述一个或一个以上处理器可在例如显示装置106等显示装置上重叠离屏表面和额外离屏表面连同屏上表面。可根据重叠次序来重叠表面。
如先前所论述,对离屏表面的多重缓冲支持可由系统102和/或系统202(图2A)内的一个或一个以上处理器实施。在一个方面中,用以实施对离屏表面的多重缓冲支持的功能性在由一个或一个以上处理器执行时可包括在API库120和/或驱动程序122内,或包括在API库220和/或驱动程序222(图2A)内。举例来说,此功能性可包括在离屏多重缓冲API 238(图2B)内和/或离屏多重缓冲驱动程序248(图2C)内。在一个方面中,可将此功能性提供作为EGL扩展的一部分。在以下描述中仅为了说明,将假定将此功能性提供作为EGL扩展(即,对EGL规范的扩展)的一部分。
在一个方面中,针对离屏表面的多重缓冲支持而提供EGL扩展。在EGL代码内,在表面创建时间,传递到eglCreatePbufferSurface或eglCreatePixmapSurface的属性列表现在可含有EGL_BACK_BUFFER令牌,接着是指示应与所述离屏表面相关联的缓冲器的总数的EGLint。举例来说,在像素映射离屏表面的情况下,如果指定缓冲器的数目大于一,那么在一种情况下,pixmap参数可被视为指向NativePixmapTypes的以NULL终止的指针阵列,以用于像素映射表面中的每一缓冲器。
在一个方面中,每一离屏表面与绘制(写入)缓冲器且也与读取缓冲器相关联。因而,EGLSurface结构可经修改以含有draw_current参数和read_current参数。draw_current参数的值指定当前绘制缓冲器,且read_current参数的值指定当前读取缓冲器。draw_current和read_current两者均可具有类型EGLint。
函数eglBufferMakeCurrentQUALCOMM可用以设置用于经多重缓冲的表面的draw_current和read_current。下文展示eglBufferMakeCurrentQUALCOMM的实例函数宣布:
EGLBoolean eglBufferMakeCurrentQUALCOMM(EGLDisplay dpy,
EGLSurface suf,
EGLint draw_idx,
EGLint read_idx);
下文仅为了说明目的而展示根据一个方面的提供对离屏表面的多重缓冲支持的EGL扩展的实例EGL代码。此实例代码利用eglBufferMakeCurrentQUALCOMM函数。
//Surface attributes;request 5 total buffers
const EGLint attribs[3]=
{
EGL_BACK_BUFFER,5,
EGL_NONE
}
//This example assumes that a video stream is created with native
//APIs and that the buffer pool it decodes into is associated with
//the following array
//NativePixmapType video_pool[6];
video_pool[5]=NULL;//make sure the list is NULL terminated
//Create a multi-buffered pixmap surface that corresponds
//to the video
pix=eglCreatePixmapSurface(dpy,cfg,video_pool,attribs);
//Check for sucessful creation
if(EGL_NO_SURFACE==pix)
{
//Output error messages based on eglGetError();
}
//During video processing,the buffer to be displayed will change
//indices in the video_pool array.To set the current index to
//beused by EGL,eglBufferMakeCurrentQUALCOMM should be called whenever
//the index changes.
//Sync the multi-buffered pixmap current to the new video index
eglBufferMakeCurrentQUALCOMM(dpy,pix,idx,idx);
在此实例EGL代码中,由于现有EGL_BACK_BUFFER令牌之后是EGLint值五,所以初始化离屏表面属性以请求待分配且与表面相关联的总共五个缓冲器。实例代码假定已经用本机API创建了视频流,且提供用于video_pool列表的以空值终止的阵列。所述代码接着使用如在EGL规范中提供的eglCreatePixmapSurface函数调用来创建对应于视频的经多重缓冲的像素映射表面。
在视频处理期间,读取缓冲器(或待显示的缓冲器)可改变video_pool列表内的索引。为了设置待由EGL使用的当前索引,每当索引改变时,就可调用eglBufferMakeCurrentQUALCOMM,且用以设置当前绘制(写入)缓冲器和读取缓冲器。在实例代码中,当前写入缓冲器和读取缓冲器两者均被设置有相同的索引idx(其为新视频索引)。尽管在此实例中所识别的写入缓冲器和读取缓冲器为同一缓冲器,但当然不会总是如此。在许多情形下,如在图3A到图3D的实例中所展示,所识别的写入缓冲器和读取缓冲器将为不同缓冲器。
本发明中所描述的技术可在以下各项内实施:通用微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它等效逻辑装置。因此,如本文中所使用的术语“处理器”或“控制器”可指代前述结构中的任一者,或适合实施本文中所描述的技术的任何其它结构。
图1到图4中所说明的各种组件可由硬件和/或软件的任意合适组合来实现。在图1到图4中,将各种组件描绘为单独的单元或模块。然而,参看图1A到图4而描述的各种组件中的全部或若干组件可集成为共用硬件和/或软件内的经组合单元或模块。因此,将特征表示为组件、单元或模块意在为了易于说明而强调特定功能特征,且并非必定要求通过单独的硬件或软件组件来实现此些特征。在一些情况下,可将各种单元实施为由一个或一个以上处理器执行的可编程进程。
本文中所描述的组件和技术可以硬件、软件、固件或其任意组合来实施。描述为模块或组件的任何特征可一起实施于集成逻辑装置中,或单独地实施为离散但可共同操作的逻辑装置。在各种方面中,此些组件可至少部分地形成为一个或一个以上集成电路装置,所述集成电路装置可统称为集成电路装置,例如集成电路芯片或芯片集。此类电路可提供于单个集成电路芯片装置中或多个可共同操作的集成电路芯片装置中,且可用于多种图像、显示、音频或其它多媒体应用和装置的任一者中。在一些方面中,例如,此些组件可形成例如无线通信装置手持机等移动装置的一部分。
如果以软件实施,那么所述技术可至少部分地由包含代码与指令的计算机可读媒体来实现,所述代码与指令在由一个或一个以上处理器执行时实施上文所描述的方法中的一者或一者以上。计算机可读媒体可形成可包括封装材料的计算机程序产品的一部分。计算机可读媒体可包含例如同步动态随机存取存储器(SDRAM)等随机存取存储器(RAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、嵌入式动态随机存取存储器(eDRAM)、静态随机存取存储器(SRAM)、快闪存储器、磁性或光学数据存储媒体。
所述技术另外或替代地可至少部分地由计算机可读通信媒体来实现,所述计算机可读通信媒体携载或传送呈指令或数据结构形式的代码,且可由一个或一个以上处理器存取、读取和/或执行。严格地说,任何连接均可被称为计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL),或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,那么同轴电缆、光纤电缆、双绞线、DSL,或例如红外线、无线电和微波等无线技术包括于媒体的定义中。上述各项的组合也应包括在计算机可读媒体的范围内。所利用的任何软件可由一个或一个以上处理器(例如,一个或一个以上DSP、通用微处理器、ASIC、FPGA或其它等效集成或离散逻辑电路)执行。
已描述了本发明的各种方面。这些和其它方面在所附权利要求书的范围内。
Claims (33)
1.一种用于对离屏表面的多重缓冲支持的方法,其包含:
分配均与图形处理中所使用的一离屏表面相关联的多个缓冲器,任一缓冲器可包含读取缓冲器,写入缓冲器或两者,以存储与一离屏表面相关联的渲染数据,所述渲染数据将在图形系统内的后续处理之后显示;
将所述多个缓冲器内的第一缓冲器识别为用于所述离屏表面的写入缓冲器,使得在写入操作期间,将与所述离屏表面相关联的渲染数据写入到所述第一缓冲器中;
以及
将所述多个缓冲器内的第二缓冲器识别为用于所述离屏表面的读取缓冲器,使得在读取操作期间,从所述第二缓冲器读出与所述离屏表面相关联的渲染数据。
2.根据权利要求1所述的方法,其中分配所述多个缓冲器包含将所述多个缓冲器分配在所述图形系统的一个或一个以上缓冲器区域内。
3.根据权利要求2所述的方法,其中将所述多个缓冲器分配在所述图形系统的所述一个或一个以上缓冲器区域内包含将所述多个缓冲器分配在所述一个或一个以上缓冲器区域中与p缓冲器相关联的第一区域内或所述一个或一个以上缓冲器区域中与像素映射相关联的第二区域内。
4.根据权利要求1所述的方法,其进一步包含:
调用缓冲器选择函数,所述缓冲器选择函数将所述第一缓冲器识别为所述读取缓冲器且将所述第二缓冲器识别为所述写入缓冲器。
5.根据权利要求1所述的方法,其进一步包含:
通过渲染所述离屏表面而产生渲染信息;以及
在所述写入操作期间,将所述渲染信息写入到所述第一缓冲器中。
6.根据权利要求1所述的方法,其进一步包含:
在所述读取操作期间,从所述第二缓冲器读出与所述离屏表面相关联的渲染数据。
7.根据权利要求1所述的方法,其中所述第一缓冲器和所述第二缓冲器是不同缓冲器,使得所述写入缓冲器不同于所述读取缓冲器。
8.根据权利要求1所述的方法,其进一步包含:
分配均与图形处理中所使用的一额外离屏表面相关联的多个额外缓冲器;
将所述额外缓冲器内的第三缓冲器识别为用于所述额外离屏表面的写入缓冲器,使得在额外写入操作期间,将与所述额外离屏表面相关联的渲染数据写入到所述第三缓冲器中;以及
将所述额外缓冲器内的第四缓冲器识别为用于所述额外离屏表面的读取缓冲器,使得在额外读取操作期间,从所述第四缓冲器读出与所述额外离屏表面相关联的渲染数据。
9.根据权利要求8所述的方法,其进一步包含:
根据重叠次序,组合用于所述离屏表面的所述第二缓冲器的内容、用于所述额外离屏表面的所述第四缓冲器的内容以及与屏上表面相关联的数据;以及
基于所述重叠次序重叠所述离屏表面、所述额外离屏表面和所述屏上表面以用于显示目的。
10.根据权利要求9所述的方法,其中:
所述离屏表面包含二维表面、三维表面或视频表面;且
所述额外离屏表面包含二维表面、三维表面或视频表面。
11.根据权利要求1所述的方法,其中所述方法由一个或一个以上处理器执行,且其中所述一个或一个以上处理器各自包含显示处理器、图形处理器或通用处理器。
12.一种用于对离屏表面的多重缓冲支持的装置,其包含:
一个或一个以上缓冲器区域;以及
一个或一个以上处理器,其经配置以分配多个缓冲器,任一缓冲器可包含读取缓冲器,写入缓冲器或两者,以存储与一离屏表面相关联的渲染数据,所述渲染数据将在图形系统内的后续处理之后显示,
其中所述一个或一个以上处理器进一步经配置以:将所述多个缓冲器内的第一缓冲器识别为用于所述离屏表面的写入缓冲器,且进一步将所述多个缓冲器内的第二缓冲器识别为用于所述离屏表面的读取缓冲器,使得在写入操作期间将与所述离屏表面相关联的渲染数据写入到所述第一缓冲器中,且在读取操作期间从所述第二缓冲器读出与所述离屏表面相关联的渲染数据。
13.根据权利要求12所述的装置,其中所述一个或一个以上处理器经配置以将所述多个缓冲器分配在所述一个或一个以上缓冲器区域中与p缓冲器相关联的第一区域内或所述一个或一个以上缓冲器区域中与像素映射相关联的第二区域内。
14.根据权利要求12所述的装置,其中所述一个或一个以上处理器进一步经配置以调用缓冲器选择函数,所述缓冲器选择函数将所述第一缓冲器识别为所述读取缓冲器,且将所述第二缓冲器识别为所述写入缓冲器。
15.根据权利要求12所述的装置,其中所述一个或一个以上处理器进一步经配置以通过渲染所述离屏表面而产生渲染信息,且在所述写入操作期间将所述渲染信息写入到所述第一缓冲器中。
16.根据权利要求12所述的装置,其中所述一个或一个以上处理器进一步经配置以在所述读取操作期间从所述第二缓冲器读出与所述离屏表面相关联的渲染数据。
17.根据权利要求12所述的装置,其中所述第一缓冲器和所述第二缓冲器是不同缓冲器,使得所述写入缓冲器不同于所述读取缓冲器。
18.根据权利要求12所述的装置,其中所述一个或一个以上处理器进一步经配置以:分配均与图形处理中所使用的一额外离屏表面相关联的多个额外缓冲器,将所述额外缓冲器内的第三缓冲器识别为用于所述额外离屏表面的写入缓冲器,且将所述额外缓冲器内的第四缓冲器识别为用于所述额外离屏表面的读取缓冲器,使得在额外写入操作期间将与所述额外离屏表面相关联的渲染数据写入到所述第三缓冲器中,且在额外读取操作期间从所述第四缓冲器读出与所述额外离屏表面相关联的渲染数据。
19.根据权利要求18所述的装置,其中所述一个或一个以上处理器进一步经配置以根据重叠次序组合用于所述离屏表面的所述第二缓冲器的内容、用于所述额外离屏表面的所述第四缓冲器的内容以及与屏上表面相关联的数据,且基于所述重叠次序重叠所述离屏表面、所述额外离屏表面和所述屏上表面以用于显示目的。
20.根据权利要求19所述的装置,其中:
所述离屏表面包含二维表面、三维表面或视频表面;且
所述额外离屏表面包含二维表面、三维表面或视频表面。
21.根据权利要求12所述的装置,其中所述一个或一个以上处理器各自包含显示处理器、图形处理器或通用处理器。
22.根据权利要求12所述的装置,其中所述装置包含无线通信装置手持机、个人计算机或膝上型装置。
23.根据权利要求12所述的装置,其中所述装置包含一个或一个以上集成电路装置。
24.一种用于对离屏表面的多重缓冲支持的装置,其包含:
用于分配均与图形处理中所使用的一离屏表面相关联的多个缓冲器的装置,任一缓冲器可包含读取缓冲器,写入缓冲器或两者,以存储与一离屏表面相关联的渲染数据,所述渲染数据将在图形系统内的后续处理之后显示;
用于将所述多个缓冲器内的第一缓冲器识别为用于所述离屏表面的写入缓冲器,使得在写入操作期间将与所述离屏表面相关联的渲染数据写入到所述第一缓冲器中的装置;以及
用于将所述多个缓冲器内的第二缓冲器识别为用于所述离屏表面的读取缓冲器,使得在读取操作期间从所述第二缓冲器读出与所述离屏表面相关联的渲染数据的装置。
25.根据权利要求24所述的装置,其中所述用于分配所述多个缓冲器的装置包含用于将所述多个缓冲器分配在所述图形系统的一个或一个以上缓冲器区域内的装置。
26.根据权利要求25所述的装置,其中所述用于将所述多个缓冲器分配在所述图形系统的所述一个或一个以上缓冲器区域内的装置包含用于将所述多个缓冲器分配在所述一个或一个以上缓冲器区域中与p缓冲器相关联的第一区域内或所述一个或
一个以上缓冲器区域中与像素映射相关联的第二区域内的装置。
27.根据权利要求24所述的装置,其进一步包含:
用于调用缓冲器选择函数的装置,所述缓冲器选择函数将所述第一缓冲器识别为所述读取缓冲器,且将所述第二缓冲器识别为所述写入缓冲器。
28.根据权利要求24所述的装置,其进一步包含:
用于通过渲染所述离屏表面而产生渲染信息的装置;以及
用于在所述写入操作期间将所述渲染信息写入到所述第一缓冲器中的装置。
29.根据权利要求24所述的装置,其进一步包含:
用于在所述读取操作期间从所述第二缓冲器读出与所述离屏表面相关联的渲染数据的装置。
30.根据权利要求24所述的装置,其中所述第一缓冲器和所述第二缓冲器是不同缓冲器,使得所述写入缓冲器不同于所述读取缓冲器。
31.根据权利要求24所述的装置,其进一步包含:
用于分配均与图形处理中所使用的一额外离屏表面相关联的多个额外缓冲器的装置;
用于将所述额外缓冲器内的第三缓冲器识别为用于所述额外离屏表面的写入缓冲器,使得在额外写入操作期间将与所述额外离屏表面相关联的渲染数据写入到所述第三缓冲器中的装置;以及
用于将所述额外缓冲器内的第四缓冲器识别为用于所述额外离屏表面的读取缓冲器,使得在额外读取操作期间从所述第四缓冲器读出与所述额外离屏表面相关联的渲染数据的装置。
32.根据权利要求31所述的装置,其进一步包含:
用于根据重叠次序组合用于所述离屏表面的所述第二缓冲器的内容、用于所述额外离屏表面的所述第四缓冲器的内容以及与屏上表面相关联的数据的装置;以及
用于基于所述重叠次序重叠所述离屏表面、所述额外离屏表面和所述屏上表面以用于显示目的的装置。
33.根据权利要求32所述的装置,其中:
所述离屏表面包含二维表面、三维表面或视频表面;且
所述额外离屏表面包含二维表面、三维表面或视频表面。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US2219508P | 2008-01-18 | 2008-01-18 | |
US61/022,195 | 2008-01-18 | ||
US12/116,065 | 2008-05-06 | ||
US12/116,065 US20090184972A1 (en) | 2008-01-18 | 2008-05-06 | Multi-buffer support for off-screen surfaces in a graphics processing system |
PCT/US2009/031323 WO2009092033A1 (en) | 2008-01-18 | 2009-01-16 | Multi-buffer support for off-screen surfaces in a graphics processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101911125A CN101911125A (zh) | 2010-12-08 |
CN101911125B true CN101911125B (zh) | 2013-07-24 |
Family
ID=40876122
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801024161A Expired - Fee Related CN101911125B (zh) | 2008-01-18 | 2009-01-16 | 图形处理系统中对离屏表面的多重缓冲支持 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20090184972A1 (zh) |
EP (1) | EP2245598B1 (zh) |
JP (1) | JP5166552B2 (zh) |
KR (2) | KR101239029B1 (zh) |
CN (1) | CN101911125B (zh) |
CA (1) | CA2711583A1 (zh) |
TW (1) | TW200943224A (zh) |
WO (1) | WO2009092033A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110291964A1 (en) | 2010-06-01 | 2011-12-01 | Kno, Inc. | Apparatus and Method for Gesture Control of a Dual Panel Electronic Device |
US20140204102A1 (en) * | 2011-05-19 | 2014-07-24 | The Trustees Of Columbia University In The City Of New York | Using graphics processing units in control and/or data processing systems |
US8780118B2 (en) * | 2011-06-13 | 2014-07-15 | Samsung Electronics Co., Ltd. | Techniques for synchronizing hardware accelerated graphics rendering and surface composition |
US8884978B2 (en) * | 2011-09-09 | 2014-11-11 | Microsoft Corporation | Buffer display techniques |
CN102497591B (zh) * | 2011-11-11 | 2015-02-18 | 青岛海信移动通信技术股份有限公司 | 一种终端以及该终端与电视进行无线传屏的方法 |
US10156976B2 (en) | 2014-01-30 | 2018-12-18 | Samsung Display Co., Ltd. | System and method in managing low-latency direct control feedback |
CN107743636B (zh) * | 2015-06-07 | 2021-07-23 | 苹果公司 | 用于高效实时渲染预先不知道的图形的图形引擎和环境 |
US20170154403A1 (en) * | 2015-11-30 | 2017-06-01 | Intel Corporation | Triple buffered constant buffers for efficient processing of graphics data at computing devices |
US10176548B2 (en) * | 2015-12-18 | 2019-01-08 | Ati Technologies Ulc | Graphics context scheduling based on flip queue management |
KR102531741B1 (ko) * | 2016-01-12 | 2023-05-11 | 삼성전자 주식회사 | 멀티플 버퍼를 가지는 메모리 장치 및 멀티플 버퍼를 가지는 메모리를 구동하는 방법 |
CN105933724A (zh) * | 2016-05-23 | 2016-09-07 | 福建星网视易信息系统有限公司 | 视频制作方法、装置及系统 |
CN106598514B (zh) * | 2016-12-01 | 2020-06-09 | 惠州Tcl移动通信有限公司 | 一种终端设备中切换虚拟现实模式的方法及系统 |
JP2020177074A (ja) * | 2019-04-16 | 2020-10-29 | 株式会社デンソー | 車両用装置、車両用装置の制御方法 |
CN113099309A (zh) * | 2021-03-30 | 2021-07-09 | 上海哔哩哔哩科技有限公司 | 视频处理方法及装置 |
CN112950757B (zh) * | 2021-03-30 | 2023-03-14 | 上海哔哩哔哩科技有限公司 | 图像渲染方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5001469A (en) * | 1988-06-29 | 1991-03-19 | Digital Equipment Corporation | Window-dependent buffer selection |
EP0525986B1 (en) * | 1991-07-26 | 1996-11-13 | Sun Microsystems, Inc. | Apparatus for fast copying between frame buffers in a double buffered output display system |
CN1942900A (zh) * | 2004-03-03 | 2007-04-04 | 高通股份有限公司 | 图形处理器的可变时钟控制 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6016150A (en) * | 1995-08-04 | 2000-01-18 | Microsoft Corporation | Sprite compositor and method for performing lighting and shading operations using a compositor to combine factored image layers |
US5844569A (en) * | 1996-04-25 | 1998-12-01 | Microsoft Corporation | Display device interface including support for generalized flipping of surfaces |
US5801717A (en) * | 1996-04-25 | 1998-09-01 | Microsoft Corporation | Method and system in display device interface for managing surface memory |
JPH1069270A (ja) * | 1996-08-28 | 1998-03-10 | Okinawa Nippon Denki Software Kk | 表示画像合成方法 |
US5933155A (en) * | 1996-11-06 | 1999-08-03 | Silicon Graphics, Inc. | System and method for buffering multiple frames while controlling latency |
US6771264B1 (en) * | 1998-08-20 | 2004-08-03 | Apple Computer, Inc. | Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor |
US6853385B1 (en) * | 1999-11-09 | 2005-02-08 | Broadcom Corporation | Video, audio and graphics decode, composite and display system |
JP2007286082A (ja) * | 2006-04-12 | 2007-11-01 | Sony Computer Entertainment Inc | 描画処理装置 |
-
2008
- 2008-05-06 US US12/116,065 patent/US20090184972A1/en not_active Abandoned
-
2009
- 2009-01-16 CA CA2711583A patent/CA2711583A1/en not_active Abandoned
- 2009-01-16 KR KR1020107018304A patent/KR101239029B1/ko active IP Right Grant
- 2009-01-16 WO PCT/US2009/031323 patent/WO2009092033A1/en active Application Filing
- 2009-01-16 EP EP09702036.6A patent/EP2245598B1/en not_active Not-in-force
- 2009-01-16 CN CN2009801024161A patent/CN101911125B/zh not_active Expired - Fee Related
- 2009-01-16 JP JP2010543290A patent/JP5166552B2/ja not_active Expired - Fee Related
- 2009-01-16 KR KR1020127027531A patent/KR20120132560A/ko not_active Application Discontinuation
- 2009-01-17 TW TW098101815A patent/TW200943224A/zh unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5001469A (en) * | 1988-06-29 | 1991-03-19 | Digital Equipment Corporation | Window-dependent buffer selection |
EP0525986B1 (en) * | 1991-07-26 | 1996-11-13 | Sun Microsystems, Inc. | Apparatus for fast copying between frame buffers in a double buffered output display system |
CN1942900A (zh) * | 2004-03-03 | 2007-04-04 | 高通股份有限公司 | 图形处理器的可变时钟控制 |
Also Published As
Publication number | Publication date |
---|---|
EP2245598A1 (en) | 2010-11-03 |
TW200943224A (en) | 2009-10-16 |
US20090184972A1 (en) | 2009-07-23 |
KR20120132560A (ko) | 2012-12-05 |
KR20100103704A (ko) | 2010-09-27 |
EP2245598B1 (en) | 2017-07-05 |
CA2711583A1 (en) | 2009-07-23 |
CN101911125A (zh) | 2010-12-08 |
JP5166552B2 (ja) | 2013-03-21 |
JP2011510407A (ja) | 2011-03-31 |
KR101239029B1 (ko) | 2013-03-04 |
WO2009092033A1 (en) | 2009-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101911125B (zh) | 图形处理系统中对离屏表面的多重缓冲支持 | |
US6664962B1 (en) | Shadow mapping in a low cost graphics system | |
US7176919B2 (en) | Recirculating shade tree blender for a graphics system | |
CN106528096B (zh) | 一种在d3d12全屏游戏源上绘制弹幕图像的方法及系统 | |
CN102663799B (zh) | 用于利用创作系统创建可播放场景的方法和装置 | |
CN110291563B (zh) | 图形处理中的多个着色器进程 | |
US6044408A (en) | Multimedia device interface for retrieving and exploiting software and hardware capabilities | |
US11113876B2 (en) | Method for displaying a 3D scene graph on a screen | |
US9928637B1 (en) | Managing rendering targets for graphics processing units | |
Raskar et al. | Interacting with spatially augmented reality | |
US20190066370A1 (en) | Rendering an image from computer graphics using two rendering computing devices | |
JP2002236934A (ja) | グラフィックシステムにおいて改良されたフォグ効果を提供するための方法および装置 | |
KR20100004119A (ko) | 포스트-렌더링 그래픽스 오버레이 | |
MXPA06012368A (es) | Integracion de jerarquia de escena tridimensional en sistema de composicion bidimensional. | |
TW201926239A (zh) | 以微磚為基礎之低解析度深度儲存 | |
US20190005712A1 (en) | Tracking pixel lineage in variable rate shading | |
US20100156932A1 (en) | Method for inserting moving picture into 3-dimension screen and record medium for the same | |
CN101911126A (zh) | 图形处理系统中对表面创建的多格式支持 | |
CN111402349A (zh) | 渲染方法、渲染装置和渲染引擎 | |
Jung et al. | Fast and efficient vertex data representations for the web | |
CN108805964B (zh) | 基于OpenGL ES的VR机顶盒启动动画制作方法及系统 | |
CN117596377B (zh) | 画面推流方法、装置、电子设备、存储介质及程序产品 | |
US9727943B1 (en) | Remote rendering control objects | |
CN115904592A (zh) | 虚拟桌面的显示方法和装置 | |
Boochs et al. | An object-oriented stereo system for 3D-measurements |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130724 Termination date: 20210116 |
|
CF01 | Termination of patent right due to non-payment of annual fee |