CN105224165B - 为计算装置上部分模糊图形图像促进动态和有效的预启动裁剪的方法和设备 - Google Patents
为计算装置上部分模糊图形图像促进动态和有效的预启动裁剪的方法和设备 Download PDFInfo
- Publication number
- CN105224165B CN105224165B CN201510287493.6A CN201510287493A CN105224165B CN 105224165 B CN105224165 B CN 105224165B CN 201510287493 A CN201510287493 A CN 201510287493A CN 105224165 B CN105224165 B CN 105224165B
- Authority
- CN
- China
- Prior art keywords
- pixels
- image
- computing device
- graphics
- invisible
- 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.)
- Active
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/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/30—Clipping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
- Computer Hardware Design (AREA)
Abstract
本文描述了一种用于为计算装置上部分模糊图像促进动态和有效的预启动裁剪的机制。如本文中所述,实施例的方法包括:接收与具有部分模糊区域的图像有关的状态数据,其中,图像能够在计算装置的图形处理单元上处理;以及评估状态数据,其中,评估包括图像的可见像素和不可见像素的至少之一的计算。方法可还包括选择在图像的处理中要包括的可见像素,其中,忽略不可见像素。方法可还包括基于可见像素处理图像。
Description
技术领域
本文中所述实施例一般涉及计算机。更具体地说,实施例涉及一种用于为计算装置上部分模糊图像促进动态和有效的预启动裁剪的机制。
背景技术
显示方位更改和触摸有关的滑动、收缩和拉伸事件等是移动计算装置中相当常见的体验。这些频繁和异步事件经常产生不明显的裁剪的二维(2D)图像,导致部分模糊的像素区域。在为计算采用图形处理单元(GPU)运行时间/驱动程序的常规技术中,一直调度线程以在所有像素上执行内核而不考虑其可见状态,其中,显示范围裁剪的动作被延迟,并且在随后再现阶段中执行。在不断更改图像与显示范围的几何关系的动态模型中,此类常规技术在功率、计算资源等方面是次佳的,并且效率低。此外,前面提及的感觉事件强制在GPU上重复计算,并且带来处理不可见像素的相当大开销。
附图说明
在附图中,实施例以示例方式而不是限制方式示出,图中,相似的标号表示类似的元素。
图1是根据一实施例的数据处理系统的框图。
图2是具有一个或更多个处理器核、集成存储器控制器和集成图形处理器的处理器的一实施例的框图。
图3是图形处理器的一个实施例的框图,图形处理器可以是离散图形处理单元,或者可以是集成有多个处理核的图形处理器。
图4是用于图形处理器的图形处理引擎的一实施例的框图。
图5是图形处理器的另一实施例的框图。
图6示出包括在图形处理引擎的一个实施例中采用的处理元素的阵列的线程执行逻辑。
图7是示出根据一实施例的图形处理器执行单元指令格式的框图。
图8是包括图形管线、媒体管线、显示引擎、线程执行逻辑及再现输出管线的图形处理器的另一实施例的框图。
图9A是示出根据一实施例的图形处理器命令格式的框图,并且图9B是示出根据一实施例的图形处理器命令序列的框图。
图10示出根据一实施例,用于数据处理系统的示范图形软件体系结构。
图11A、11B、11C和11D示出可应用一个或更多个实施例的各种用例。
图12示出根据一个实施例,采用动态预启动裁剪机制的计算装置。
图13示出根据一个实施例的动态预启动裁剪机制。
图14示出用于促进常规后启动裁剪过程的方法。
图15A示出根据一个实施例,用于为在计算装置的部分模糊图像促进动态预启动裁剪过程的方法。
图15B示出根据一个实施例,用于在图形处理单元的计算启动过程的事务序列。
具体实施方式
在下面的描述中,陈述了许多特定细节。然而,实施如本文中所述实施例可无需这些特定的细节。在其它情况下,公知的电路、结构和技术未详细显示以免混淆对此描述的理解。
实施例代表计算装置(例如,塘智能电话、平板计算机等移动计算装置)中的GPU,为部分模糊图像提供有效预启动裁剪以促进指定图像的相关活跃子空间的有效方案,预启动GPU计算任务。例如并且在一个实施例中,不同于在无贡献像素上分给已经受约束计算装置资源的常规技术,实施例基于GPU计算运行时/驱动程序在预启动内核中依从显示裁剪状态,提供了新颖和创新的技术。运行时/驱动程序随后可调度处理线程只在可见子图像上操作,例如,在与成像算法运行的复杂性和裁剪掉的元素的数量均直接成正比的功率方面产生性能的预期得益。
可预见的是,实施例不限于任何特定操作系统或平台,并且提供预启动裁剪选项的实施例可受任何数量和类型的操作系统和平台支持或在为这些操作系统或平台采用,诸如(但不限于)Android®上的RenderScript®计算平台等,以使用户有计划地为计算选择关注区域。还可预见的是,实施例可进一步扩展以应用到更广范围的异步裁剪事件实例,如实施例可在各种数据平行系统采用或由其使用以在其相应接口中可能适应和启用预启动裁剪优化。
如前面提及的一样,基于GPU计算运行时/驱动程序的常规技术提供用于脱离依从被认为是图形特定的状态,并且效率低,因此严重受限于具有自足GPU计算程序的仅限大型静态环境并且不适用于更小动态环境(例如,移动计算环境等)。此类技术在遇到裁剪的图像时效率特别低,这强制常规运行时/驱动程序在所有像素(包括不相关的那些像素)上执行重复再计算并且延迟在再现时的对应裁剪后启动。因此,此类技术成本相当高、功率效率低,在处理导致裁剪图像的触摸事件时且极其低效,并且深深植根于用户体验中。
实施例提供用于采用适用于装置显示裁剪状态的机制的GPU计算运行时/驱动程序,使得它能够验证活跃的计算元素,并且如果需要,则调用更有效的预启动裁剪。实施例提供用于在功率和资源方面均相当有效的技术,并且提供用于无缝和有效的处理路径。
概述 - 图1-3
图1是根据一实施例的数据处理系统100的框图。数据处理系统100包括一个或更多个处理器102和一个或更多个图形处理器108,并且可以是单个处理器台式系统、多处理器工作站系统或具有大量处理器102或处理器核107的服务器系统。在一实施例中,数据处理系统100是在移动、手持式或嵌入式装置中使用的系统级芯片集成电路(SOC)
数据处理系统100的一实施例能够包括基于服务器的游戏平台、包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台,或者包含在其内。在一个实施例中,数据处理系统100是移动电话、智能电话、平板计算装置或移动因特网装置。数据处理系统100也能够包括可佩戴装置,与其耦合或者集成在其内,如和表可佩戴装置、智能眼戴式装置、增强现实装置或虚拟现实装置。在一个实施例中,数据处理系统100是具有一个或更多个处理器102和由一个或更多个图形处理器108生成的图形接口的电视或机顶盒装置。
一个或更多个处理器102每个包括一个或更多个处理器核107以处理指令,指令在执行时,执行用于系统和用户软件的操作。在一个实施例中,一个或更多个处理器核107的每个核配置成处理特定指令集109。指令集109可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经极长指令字(VLIW)的计算。多个处理器核107可每个处理不同指令集109,不同指令集可包括促进仿真其它指令集的指令。处理器核108也可包括其它处理装置,如数字信号处理器(DSP)。
在一个实施例中,处理器102包括高带缓冲存储器104。视体系结构而定,处理器102能够具有单个内部高速缓存或多级内部高速缓存。在一个实施例中,高速缓冲存储器在处理器102的各种组件之间共享。在一个实施例中,处理器102也使用外部高速缓存(例如,第3级(L3)高速缓存或末级高速缓存(LLC))(未示出),外部高速缓存可在使用已知高速缓存相干性技术的处理器核107之间共享。寄存器文件106另外包括在处理器102中,处理器102可包括不同类型的寄存器以便存储不同类型的数据(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可对处理器102的设计是特定的。
处理器102耦合到处理器总线110以在处理器102与系统100k的其它组件之间传送数据信号。系统100使用示范“集线器”系统体系结构,包括存储器控制器集线器116和输入输出(I/O)控制器集线器130。存储器控制器集线器116促进在存储器装置与系统100的其它组件之间的通信,而I/O控制器集线器(ICH) 130经本地I/O总线提供到I/O装置的连接。
存储器装置120能够是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存存储器装置或具有适合性能以充当过程存储器的某一其它存储器装置。存储器120能够存储数据122和指令121以便在处理器102执行过程时使用。存储器控制器集线器116也与可选外部图形处理器112耦合,处理器112可与处理器102中的一个或更多个图形处理器108进行通信以执行图形和媒体操作。
ICH 130允许外设经高速I/O总线连接到存储器120和处理器102。I/O外设包括音频控制器146、固件接口128、无线收发器126(例如,Wi-Fi、蓝牙)、数据存储装置124(例如,硬盘驱动器、闪存存储器等)及用于耦合遗留装置(例如,个人系统2 (PS/2))装置到系统的遗留I/O控制器。一个或更多个通用串行总线(USB)控制器142连接输入装置,如键盘和鼠标144组合。网络控制器134也可耦合到ICH 130。在一个实施例中,高性能网络控制器(未示出)耦合到处理器总线110。
图2是具有一个或更多个处理器核102A-N、集成存储器控制器114和集成图形处理器208的处理器200的一实施例的框图。处理器200能够包括另外的核,直至并且包括由虚线框表示的另外核102N。每个核102-N包括一个或更多个内部高速缓存单元104A-N。在一个实施例中,每个核也具有到一个或更多个共享缓存单元106的访问权。
内部缓存单元104A-N和共享缓存单元106表示处理器200内的高速缓冲存储器层次结构。高速缓冲存储器层次结构可包括在每个核内的至少一级的指令和数据高速缓存和一个或更多个级的共享中级高速缓存,如第2级(L2)、第3级(L3)、第4级(L4)或其它级的高速缓存,其中,在外部存储器前的最高级的高速缓存被分类为末级高速缓存(LLC)。在一个实施例中,高速缓存相干性逻辑保持在各种高速缓存单元106与104A-N之间的相干性。处理器200也可包括有一个或更多个总线控制器单元116的集和系统代理110。一个或更多个总线控制器单元管理外设总线集,如一个或更多个外设组件互连总线(例如,PCI、PCIExpress)。系统代理110提供用于各种处理器组件的管理功能性。在一个实施例中,系统代理110包括一个或更多个集成存储器控制器114以管理对各种外部存储器装置(未示出)的访问。
在一个实施例中,一个或更多个核102A-N包括对同时多线程的支持。在此类实施例中,系统代理110包括用于在多线程处理期间协调和操作核102A-N的组件。系统代理110可另外包括功率控制单元(PCU),该单元包括调节核102A-N和图形处理器208的功率状态的逻辑和组件。
处理器200另外包括图形处理器208以执行图形处理操作。在一个实施例中,图形处理器208与共享缓存单元106集和包括一个或更多个集成存储器控制器114的系统代理单元110耦合。在一个实施例中,显示控制器211与图形处理器208耦合以驱动到一个或更多个耦合的显示器的图形处理器输出。显示控制器211可以是经至少一个互连与图形处理器耦合的单独模块,或者可集成在图形处理器208或系统代理110内。
在一个实施例中,基于环形的互连单元112用于耦合处理器200的内部组件,然而,备选互连单元可使用,如点对点互连、交换互连或包括本领域熟知的技术的其它技术。在一个实施例中,图形处理器208经I/O链路213与环形互连112耦合。
示范I/O链路214表示多个各种各样的I/O互连至少之一,包括促进在各种处理器组件与诸如eDRAM模块等高性能嵌入式存储器模块218之间通信的封装上I/O互连。在一个实施例中,每个核102A-N和图形处理器208使用嵌入式存储器模块218作为共享的末级高速缓存。
在一个实施例中,核102A-N是执行相同指令集体系结构的同类核。在另一实施例中,核102A-N在指令集体系结构(ISA)方面是异类的,其中,一个或更多个核102A-N执行第一指令集,而至少其它核之一执行第一指令集的子集或不同指令集。
处理器200能够是使用多个工艺技术的任何技术的一个或更多个衬底的一部分或者在衬底上实现,如互补型金属氧化物半导体(CMOS)、双极结/互补型金属氧化物半导体(BiCMOS)或N型金属氧化物半导体逻辑(NMOS)。另外,处理器200能够在一个或更多个芯片上实现,或者实现为除其它组件外,具有所示组件的系统级芯片(SOC)集成电路。
图3是图形处理器300的一个实施例的框图,图形处理器可以是离散图形处理单元,或者可以是集成有多个处理核的图形处理器。在一个实施例中,经到图形处理器上寄存器的存储器映射的I/O接口和经放入处理器存储器中的命令,与图形处理器进行通信。图形处理器300包括存储器接口314以访问存储器。存储器接口314能够是到本地存储器、一个或更多个内部高速缓存、一个或更多个共享的外部高速缓存和/或到系统存储器的接口。
图形处理器300也包括显示控制器302以驱动到显示装置320的显示输出数据。显示控制器302包括用于一个或更多个覆盖平面以便显示和构成视频或用户接口元素的多层的硬件。在一个实施例中,图形处理器300包括视频编解码器引擎306以便向和从一个或更多个媒体编码格式或在这些格式之间将媒体进行编码、解码或转码,包括但不限于诸如MPEG-2等运动图像专家组(MPEG)格式、诸如H.264/MPEG-E AVC等高级视频编码(AVC)格式及运动图像和电视工程 师学会(SMPTE) 421M/VC-1和诸如JPEG和运动JPEG (MJPEG)格式等联合图像专家组(JPEG)格式。
在一个实施例中,图形处理器300包括块图像传输(BLIT)引擎304以执行二维(2D)光栅化操作,例如包括比特边界块传输。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或更多个组件执行2D图形操作。图形处理引擎310是用于执行包括三维(3D)图形操作和媒体操作等图形操作的计算引擎。
GPE 310包括用于执行3D操作的3D管线312,如使用对3D基本形状(例如,矩形、三角形等)起作用的处理功能再现三维图像和场景。3D管线312包括在元素内执行各种任务和/或派生执行线程到3D/媒体子系统315的可编程和固定功能元素。虽然3D管线312能够用于执行媒体操作,但GPE 310的一实施例也包括专门用于执行诸如视频后处理和图像增强等媒体操作的媒体管线316。
在一个实施例中,媒体管线316包括固定功能或可编程逻辑单元,以执行一个或更多个专用媒体操作,如替代或代表视频编解码器引擎306的视频解码加速、视频解交错和视频编码加速。在一个实施例中,媒体管线316另外包括派生线程以便在3D/媒体子系统315上执行的线程派生单元。派生的线程为在3D/媒体子系统中包括的一个或更多个图形执行单元上的媒体操作执行计算。
3D/媒体子系统315包括用于执行由3D管线312和媒体管线316派生的线程的逻辑。在一个实施例中,管线将线程执行请求发送到3D/媒体子系统315,子系统315包括用于仲裁和调度各种请求到可用线程执行资源的线程调度逻辑。执行资源包括处理3D和媒体线程的图形执行单元的阵列。在一个实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或更多个内部高速缓存。在一个实施例中,子系统也包含包括寄存器和可寻址存储器的共享存储器,以在线程之间共享数据和存储输出数据。
3D/媒体处理-图4
图4是用于图形处理器的图形处理引擎410的一实施例的框图。在一个实施例中,图形处理引擎(GPE) 410是图3所示GPE 310的某个版本。GPE 410包括3D管线412和媒体管线416,它们每个能够不同或类似于图3的3D管线312和媒体管线316的实现。
在一个实施例中,GPE 410与提供命令流到GPE 3D和媒体管线412、416的命令流传送器403耦合。命令流传送器403耦合到能够是系统存储器或内部高速缓冲存储器和共享高速缓冲存储器的一项或更多项的存储器。命令流传送器403接收来自存储器的命令,并且将命令发送到3D管线412和/或媒体管线416。3D和媒体管线通过经相应管线内的逻辑执行操作,或者通过将一个或更多个执行线程调度到执行阵列单元414来处理命令。在一个实施例中,执行单元阵列414可扩展,使得阵列包括基于GPE 410的目标功率和性能级别的可变数量的执行单元。
采样引擎430与存储器(例如调整缓冲存储器或系统存储器)和执行单元阵列414耦合。在一个实施例中,采样引擎430提供用于可扩展执行单元阵列414,允许执行阵列414从存储器读取图形和媒体数据的存储器访问机制。在一个实施例中,采样引擎430包括为媒体执行专用图像采样操作的逻辑。
采样引擎430中的专用媒体采样逻辑包括解噪/解交错模块432、运动估计模块434和图像缩放和过滤模块436。解噪/解交错模块432包括在解码的视频数据上执行解噪或解交错算法的一项或更多项的逻辑。解交错逻辑将交错的视频内容的交替场组合成视频的单个帧。解噪逻辑降低或去除来自视频和图像数据的数据噪声。在一个实施例中,解噪逻辑和解交错逻辑是运动自适应式,并且基于在视频数据中检测到的运动量使用空间或时间过滤。在一个实施例中,解噪/解交错模块432包括专用运动检测逻辑(例如,在运动估计引擎434内)。
运动估计引擎434通过在视频数据上执行诸如运动向量估计和预测等视频加速功能,提供用于视频操作的硬件加速。运动估计引擎确定描述在连续视频帧之间图像数据的变换的运动向量。在一个实施例中,图形处理器媒体编解码器使用视频运动估计引擎434在宏级别在视频上执行操作,这些操作在其它情况下在使用通用处理器执行时可能是计算密集型的。在一个实施例中,运动估计引擎434通常可用于图形处理器组件以有助于对视频数据内运动的方向或量级敏感或与其相适应的视频解码和处理功能。
图像缩放和过滤模块436执行图像处理操作以增强生成的图像和视频的视觉质量。在一个实施例中,在将数据提供到执行单元阵列414前,缩放和过滤模块436在采样操作期间处理图像和视频数据。
在一个实施例中,图形处理引擎410包括数据端口444,数据端口444提供另外的机制以便图形子系统访问存储器。数据端口444为包括再现目标写入、恒定缓冲器读取、暂存区存储器空间读取/写入及媒体表面访问等操作促进了存储器访问。在一个实施例中,数据端口444包括高速缓冲存储器空间经缓存对存储器的访问。高速缓冲存储器能够是单个数据高速缓存,或者分隔成用于经数据端口访问存储器的多个子系统的多个高速缓存(例如,再现缓冲器缓存、恒定缓冲器缓存等)。在一个实施例中,在执行单元阵列414中执行单元上执行的线程通过经将图形处理引擎410的每个子系统耦合的数据分布互连交换消息,与数据端口进行通信。
执行单元-图5-7
图5是图形处理器的另一实施例的框图。在一个实施例中,图形处理器包括环形互连502、管线前端504、媒体引擎537及图形核580A-N。环形互连502将图形处理器耦合到其它处理单元,包括其它图形处理器或一个或更多个通用处理器核。在一个实施例中,图形处理器是集成在多核处理系统内的许多处理器之一。
图形处理器经环形互连502接收成批的命令。进入的命令由管线前端504中的命令流传送器503解释。图形处理器包括可扩展执行逻辑以经图形核580A-N执行3D几何形状处理和媒体处理。对于3D几何形状处理命令,命令流传送器503将命令供应到几何形状管线536。对于至少一些媒体处理命令,命令流传送器503将命令供应到与媒体引擎537耦合的视频前端534。媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE) 530和多格式编码/(MFX) 533引擎以提供硬件加速的媒体数据编码和解码。几何形状管线536和媒体引擎537每个生成用于至少一个图形核580A提供的线程执行资源的执行线程。
图形处理器包括具有模块化核580A-N(有时称为核片段(core slice))的可扩展线程执行资源,每个模块化核具有多个子核550A-N、560A-N(有时称为核子片(core sub-slice))。图形处理器能够具有任何数量的图形核580A-580N。在一个实施例中,图形处理器包括具有至少第一子核550A和第二核子核560A的图形核580A。在另一实施例中,图形处理器是带有单个子核(例如,550A)的低功率处理器。在一个实施例中,图形处理器包括多个图形核580A-N,每个图形核具有第一子核550A-N集和第二核子核560A-N集。第一子核550A-N集中的每个子核包括执行单元552A-N和媒体/纹理采样器554A-N的至少第一集。第二子核560A-N集中的每个子核包括执行单元562A-N和采样器564A-N的至少第二集。在一个实施例中,每个子核550A-N、560A-N共享资源570A-N集。在一个实施例中,共享资源包括共享高速缓冲存储器和像素操作逻辑。其它共享资源也可包括在图形处理器的各种实施例中。
图6示出包括在图形处理引擎的一个实施例中采用的处理元素的阵列的线程执行逻辑600。在一个实施例中,线程执行逻辑600包括像素着色器602、线程调度器604、指令高速缓存606、包括多个执行单元608A-N的可扩展执行单元阵列、采样器610、数据高速缓存612及数据端口614。在一个实施例中,包括的组件经链接到每个组件的互连结构互连。线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610和执行单元阵列608A-N的一项或更多项,到诸如系统存储器或高速缓冲存储器等存储器的一个或更多个连接。在一个实施例中,每个执行单元(例如,608A)是能够执行多个同时线程并且为每个线程平行处理多个数据元素的单独向量处理器。执行单元阵列608A-N包括任何数量的单独执行单元。
在一个实施例中,执行单元阵列608A-N主要用于执行“着色器”程序。在一个实施例中,阵列608A-N中的执行单元执行指令集,指令集包括对许多标准3D图形着色器指令的原生支持,从而以最小转换执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何形状处理(例如,顶点程序、几何形状程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。
执行单元阵列608A-N中的每个执行单元在数据元素的阵列上操作。数据元素的数量是“执行大小”或用于指令的通道的数量。执行通道是用于指令内数据元素访问、掩蔽和流控制的执行的逻辑单元。通道的数量可与用于特定图形处理器的物理ALU或FPU的数量无关。执行单元608A-N支持整数和浮点数据类型。
执行单元指令集包括单指令多数据(SIMD)指令。各种数据元素能够存储为寄存器中的紧凑数据(packed data)类型,并且执行单元将基于元素的数据大小处理各种元素。例如,在256比特宽向量上操作时,向量的256比特存储在寄存器中,并且执行单元在向量上作为4个单独的64比特紧凑数据元素(四倍长字(QW)大小数据元素)、8个单独的32比特紧凑数据元素(双倍长字(DW)大小数据元素)、16个单独的16比特紧凑数据元素(字(W)大小数据元素)或32个单独的8比特紧凑数据元素(字节(B)大小数据元素)。然而,不同向量宽度和寄存器大小是可能的。
一个或更多个内部指令高速缓存(例如,606)包括在线程执行逻辑600中以缓存用于执行单元的线程指令。在一个实施例中,包括一个或更多个数据高速缓存(例如,612)以在线程执行期间缓存线程数据。包括采样器610以提供用于3D操作的纹理采样和用于媒体操作的媒体采样。在一个实施例中,采样器610包括专用纹理或媒体采样功能性以在将采样的数据提供到执行单元前的采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体管线将线程启动请求经线程派生和调度逻辑发送到线程执行逻辑600。线程执行逻辑600包括仲裁来自图形和媒体管线的线程启动请求并且在一个或更多个执行单元608A-N上例示请求的线程的本地线程调度器604。例如,几何形状管线(例如,图5的536)将顶点处理、镶嵌或几何形状处理线程调度到线程执行逻辑600。线程调度器604也能够处理来自执行着色器程序的运行时线程派生请求。
一旦已处理并且光栅化成像素数据一组几何对象,便调用像素着色器602以进一步计算输出信息,并且促使结果写入输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一个实施例中,像素着色器602计算要跨光栅化对象内插的各种顶点属性的值。像素着色器602随后执行API供应的像素着色器程序。为执行像素着色器程序,像素着色器602经线程调度器604将线程调度到执行单元(例如,608A)。像素着色器602使用采样器610中的纹理采样逻辑访问存储器中存储的纹理图中的纹理数据。纹理数据和输入几何形状数据上的算术运算计算用于每个几何片段的像素颜色数据,或者丢弃一个或更多个像素,免于进一步处理。
在一个实施例中,数据端口614提供存储器访问机制,以便线程执行逻辑600将处理的数据输出到存储器以在图形处理器输出管线上处理。在一个实施例中,数据端口614包括或耦合到一个或更多个高速缓冲存储器(例如,数据高速缓存612),以便为经数据端口的存储器访问缓存数据。
图7是示出根据一实施例的图形处理器执行单元指令格式的框图。在一个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框示出通常在执行单元指令中包括的组件,而虚线包括可选或者只包括在指令的子集中的组件。所述和所示指令是宏指令,表现在它们是供应到执行单元的指令,而不同于一旦处理指令便从指令解码产生的微操作。
在一个实施例中,图形处理器执行单元本身支持128比特格式710的指令。基于选择的指令、指令选项和操作数的数量,64比特压缩指令格式730可用于一些指令。原生128比特格式710提供到所有指令选项的访问,而一些选项和操作受限于64比特格式730。64比特格式730中可用的原生指令随实施例变化。在一个实施例中,使用索引字段713中的索引值集,部分压缩指令。执行单元硬件基于索引值引用压缩表集,并且使用压缩表输出重构128比特格式710的原生指令。
对于每个格式,指令操作码712定义执行单元要执行的操作。指令单元跨每个操作数的多个数据元素平行执行每个指令。例如,响应加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道执行同时加法运算。默认情况下,执行单元跨操作数的所有数据通道执行每个指令。指令控制字段712允许对某些执行选项的控制,如通道选择(例如,预测)和数据通道顺序(例如,混合)。对于128比特指令710,执行大小字段716限制将平行执行的数据通道的数量。执行大小字段716不可用于在64比特压缩指令格式730中使用。
一些执行单元指令最多具有三个操作数,包括两个源操作数src0 722、src1 722和一个目的地718。在一个实施例中,执行单元支持双目的地指令,其中暗示了目的地之一。数据操纵指令能够具有第三源操作数(例如,SRC2 724),其中,指令操作码JJ12确定源操作数的数量。指令的最后源操作数能够是通过指令传递的立即(例如,硬编码)值。
在一个实施例中,基于操作码比特字段将指令编组以简化操作码解码740。对于8比特操作码,比特4、5和6允许执行单元确定操作码的类型。所示精确的操作码编组是示范。在一个实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,mov、cmp)。移动和逻辑组742共享5个最高有效比特(MSB),其中,移动指令为0000xxxxb形式(例如,0x0x),并且逻辑指令为0001xxxxb形式(例如,0x01)。流控制指令组744(例如,call、jmp)包括0010xxxxb形式的指令(例如,0x20)。杂项指令组746包括指令的混合,包括0011xxxxb形式的同步指令(例如,wait、send)(例如,0x30)。平行数学指令组748包括0100xxxxb形式的组件式算术指令(例如,add、mul)(例如,0x40)。平行数学组748跨数据通道平行执行算术运算。向量数学组750包括0101xxxxb形式的算术指令(例如,dp4)(例如,0x50)。向量数学组执行诸如在向量操作数上的点积计算等算术。
图形管线-图8
图8是包括图形管线820、媒体管线830、显示引擎840、线程执行逻辑850及再现输出管线870的图形处理器的另一实施例的框图。在一个实施例中,图形处理器是包括一个或更多个通用处理核的多核处理系统内的图形处理器。通过到一个或更多个控制寄存器(未示出)的寄存器写入,或者经通过环形互连802发布到图形处理器的命令,控制图形处理器。环形互连802将图形处理器耦合到其它处理组件,如其它图形处理器或通用处理器。来自环形互连的命令由命令流传送器803截接,命令流传送器803将指令供应到图形管线820或媒体管线830的单独组件。
命令流传送器803引导顶点获取器805组件的操作,顶点获取器805组件从存储器读取顶点数据,并且执行由命令流传送器803提供的顶点处理命令。顶点获取器805将顶点数据提供到顶点着色器807,顶点着色器807执行对每个顶点的坐标空间变换和光照操作。顶点获取器805和顶点着色器807通过经线程调度器831将执行线程调度到执行单元852A、852B,执行顶点处理指令。
在一个实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。执行单元852A、852B具有对每个阵列特定或者在阵列之间共享的附连L1高速缓存851。该高速缓存能够配置为数据高速缓存、指令高速缓存或被分区以便在不同分区中包含数据和指令的单个高速缓存。
在一个实施例中,图形管线820包括镶嵌组件以执行3D对象的硬件加速镶嵌。可编程外壳着色器811配置镶嵌操作。可编程域着色器817提供镶嵌输出的后端评估。镶嵌器813在外壳着色器811的方向操作,并且包含专用逻辑以基于作为输入提供到图形管线820的粗几何模型,生成详细的几何对象集。如果未使用镶嵌,则能够绕过镶嵌组件811、813、817。
完整的几何对象能够由几何形状着色器819经调度到执行单元852A、852B的一个或更多个线程处理,或者直接继续到裁剪器829。几何形状着色器在整个几何对象上,而不是如图形管线的前面阶段中一样在顶点或顶点的面片(patch)上操作。如果禁用镶嵌,则几何形状着色器819接收来自顶点着色器807的输入。如果镶嵌单元被禁用,则几何形状着色器819可由几何形状着色器程序编程以便执行几何形状镶嵌。
在光栅化之前,由裁剪器829处理顶点数据,裁剪器829是固定功能裁剪器或具有裁剪和几何形状着色器功能的可编程裁剪器。在一个实施例中,再现输出管线870中的光栅化器873调度像素着色器以将几何对象转换成其每像素表示。在一个实施例中,像素着色器逻辑包括在线程执行逻辑850中。
图形引擎具有互连总线、互连结构或允许数据和消息在图形引擎的主要组件之间传递的一些其它互连机制。在一个实施例中,执行单元852A、852B和相关联高速缓存851纹理和媒体采样器853及纹理/采样器高速缓存858经数据端口856互连以执行存储器访问,并且与图形引擎的再现输出管线组件进行通信。在一个实施例中,采样器854、高速缓存851、858和执行单元852A、852B每个具有单独的存储器访问路径。
在一个实施例中,再现输出管线870包含将基于顶点的对象转换成其相关联基于像素的表示的光栅化器和深度测试组件873。在一个实施例中,光栅化器逻辑包括执行固定功能三角形和线条光栅化的窗口器(windower)/掩蔽器(masker)单元。相关联再现和深度缓冲器高速缓存878、879在一个实施例中也可用。像素操作组件877在数据上执行基于像素的操作,但在一些情况下,与2D操作相关联的操作(例如,通过混和的比特块图像传输)由2D引擎841执行,或者在显示时由显示控制器843使用覆盖显示平面替代。在一个实施例中,共享L3高速缓存875可用于所有图形组件,从而允许数据的共享而不使用主系统存储器。
图形处理器媒体管线830包括媒体引擎337和视频前端834。在一个实施例中,视频前端834接收来自命令流传送器803的管线命令。然而,在一个实施例中,媒体管线830包括单独的命令流传送器。视频前端834在将命令发送到媒体引擎837前处理媒体命令。在一个实施例中,媒体引擎包括线程派生功能性以派生线程,以便经线程调度器831向线程执行逻辑850调度。
在一个实施例中,图形引擎包括显示引擎840。在一个实施例中,显示引擎840在图形处理器的外部,并且经环形互连802或一些其它互连总线或结构与图形处理器耦合。显示引擎840包括2D引擎841和显示控制器843。显示引擎840包含能够独立于3D管线操作的特殊用途逻辑。显示控制器843与显示装置(未示出)耦合,显示装置可如在膝上型计算机中一样是系统集成显示器,或者是经显示装置连接器附连的外部显示装置。
图形管线820和媒体管线830可配置成基于多个图形和媒体编程接口执行操作,并且对任何一个应用编程接口(API)不是特定的。在一个实施例中,用于图形处理器的驱动程序软件将对特定图形或媒体库特定的API调用转换成能够由图形处理器处理的命令。在各种实施例中,提供了对Khronos Group支持的开放图形库(OpenGL)和开放计算语言(OpenCL™)、Microsoft Corporation的Direct3D库的支持,或者在一个实施例中,提供了对OpenGL和D3D的支持。也可提供对开放源计算机视觉库(OpenCV)的支持。如果能够形成从带有兼容3D管线的将来API的管线到图形处理器的管线的映射,则也将支持该将来API。
图形管线编程-图9A-B
图9A是示出根据一实施例的图形处理器命令格式的框图,并且图9B是示出根据一实施例的图形处理器命令序列的框图。图9A中的实线框示出通常在图形命令中包括的组件,而虚线包括可选或者只包括在图形命令的子集中的组件。图9A的示范图形处理器命令格式900包括识别命令的目标客户端902的数据字段、命令操作代码(操作码)904及用于命令的相关数据906。子操作码905和命令大小908也包括在一些命令中。
客户端902指定处理命令数据的图形装置的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段以决定命令的进一步处理并且将命令数据路由到适当的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、再现器单元、2D单元、3D单元及媒体单元。每个客户端单元具有处理命令的对应处理管线。一旦命令由客户端单元收到,客户端单元便读取操作码904和子操作码905(如果存在)以确定要执行的操作。客户端单元使用命令的数据字段906中的信息执行命令。对于一些命令,预期显式命令大小908将指定命令的大小。在一个实施例中,命令解析器基于命令操作码,自动确定至少一些命令的大小。在一个实施例中,经双字的倍数对齐命令。
图9B中的流程图示出样本命令序列910。在一个实施例中,具有图形处理器的一实施例的数据处理系统的软件或固件使用示出的命令序列的某个版本设置、执行和终止图形操作集。为示范目的示出和描述了样本命令序列,然而,实施例不限于这些命令或此命令序列。另外,可将命令作为命令序列名的成批命令发现,使得图形处理器将以至少部分并发方式处理命令的序列.
样本命令序列910可以管线刷新(pipeline flush)命令912开始,以促使任何活动图形管线完成用于管线的当前待定命令。在一个实施例中,3D管线922和媒体管线924不并发操作。管线刷新经执行以促使活动图形管线完成任何待定命令。响应管线刷新,用于图形处理器的命令解析器将暂停命令处理,直至活动图形引擎完成待定操作,并且相关读取高速缓存失效。可选的是,标记为“脏”的再现高速缓存中的任何数据能够被刷新到存储器。管线刷新命令912能够用于管线同步,或者在将图形处理器置于低功率状态前使用。
在命令序列要求图形处理器明确在管线之间交换时,使用管线选择命令913。在发出管线命令前,除非上下文要发出用于两个管线的命令,否则,在执行上下文内只要求管线选择命令913一次。在一个实施例中,要求管线刷新命令912正好在经管线选择命令913的管线交换前。
管理控制命令914配置用于操作的图形管线,并且用于编程3D管线922和媒体管线924。管线控制命令914配置用于活动管线的管线状态。在一个实施例中,管线控制命令914用于管线同步,并且在处理成批命令前从活动管线内的一个或更多个高速缓冲存储器清除数据。
返回缓冲器状态命令916用于为相应管线配置返回缓冲器集以便写入数据。一些管线操作要求分配,选择或配置在处理期间操作将中间数据写入的一个或更多个返回缓冲器。图形处理器也使用一个或更多个返回缓冲器存储输出数据,并且执行跨线程通信。返回缓冲器状态916包括选择用于管线操作集的返回缓冲器的大小和数量。
基于用于操作的活动管线,命令序列中的剩余命令不同。基于管线确定920,调整命令序列以适应以3D管线状态930开始的3D管线922,或以媒体管线状态940开始的媒体管线924。
用于3D管线状态930的命令包括用于顶点缓冲器状态、顶点元素状态、恒色状态、深度缓冲器状态和在处理3D图元命令前要配置的其它状态变量的3D状态设置命令。至少部分基于在使用的特定3D API,确定这些命令的值。如果某些管线元素将不使用,则3D管线状态930命令也能够选择性地禁用或绕过那些元素。
3D图元932命令用于提交要由3D管线处理的3D图元。经3D图元932命令传递到图形处理器的命令和相关联参数被转发到图形管线中的顶点获取功能。顶点获取功能使用3D图元932命令数据生成顶点数据结构。顶点数据结构存储在一个或更多个返回缓冲器中。3D图元932命令用于经顶点着色器在3D图元上执行顶点操作。为处理顶点着色器,3D管线922将着色器执行线程调度到图形处理器执行单元。
3D管线922经执行934命令或事件触发。在一个实施例中,寄存器写入触发命令执行。在一个实施例中,经命令序列名的“转到”(go)或“踢除”(kick)命令触发执行。在一个实施例中,使用管线同步命令触发命令执行以通过图形管线刷新命令序列。3D管线将执行用于3D图元的几何形状处理。一旦操作完成,结果几何对象便被光栅化,并且像素引擎为结果像素着色。也可包括用于那些操作的控制像素着色和像素后端操作的另外命令。
在执行媒体操作时,样本命令序列910沿媒体管线924继续。通常,用于媒体管线924的特定使用和编程的方式取决于要执行的媒体或计算操作。特定媒体解码操作可在媒体解码期间卸载到媒体管线。也能够绕过媒体管线,并且能够使用一个或更多个通用处理核提供的资源,完全或部分执行媒体解码。在一个实施例中,媒体管线也包括用于通用图形处理器单元(GPGPU)操作的元素,其中,图形处理器用于使用明确与图形图元的再现有关的计算着色器程序,执行SIMD向量操作。
媒体管线924以与3D管线922类似的方式配置。在媒体对象命令942前,将媒体管线状态命令940集调度或放置到命令队列中。媒体管线状态命令940包括配置将用于处理媒体对象的媒体管线元素的数据。这包括配置在媒体管线内的视频解码和视频编码逻辑的数据,如编码或解码格式。媒体管线状态命令940也支持使用一个或更多个指针“间接指引”包含成批状态设置的状态元素。
媒体对象命令942将指针供应到媒体对象以便由媒体管线处理。媒体对象包括存储器缓冲器,存储器缓冲器包含要处理的视频数据。在一个实施例中,在发出媒体对象命令942前,所有媒体管线状态必须是有效的。一旦配置管线状态,并且将媒体对象命令942排队,便经执行命令934或等效执行事件(例如,寄存器写入)触发媒体管线924。随后,通过3D管线922或媒体管线924提供的操作,对来自媒体管线924的输出进行后处理。在一个实施例中,以类似于媒体操作的方式,配置和执行GPGPU操作。
图形软件体系结构-图10
图10示出根据一实施例,用于数据处理系统的示范图形软件体系结构。软件体系结构包括3D图形应用程序1010、操作系统1020和至少一个处理器1030。系统1030包括图形处理器1032和一个或更多个通用处理器核1034。图形应用程序1010和操作系统1020每个在数据处理系统的系统存储器1050中执行。
在一个实施例中,3D图形应用程序1010包含有着色器指令1012的一个或更多个着色器程序。着色器语言指令可处于高级着色器语言,如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。应用程序也包括适合用于由通用处理器核1034执行的机器语言的可执行指令1014。应用程序也包括由顶点数据定义的图形对象1016。
操作系统1020可以是Microsoft Corporation的Microsoft® Windows®操作系统、专有UNIX类似操作系统或使用Linux内核的变型的开放源UNIX类似操作系统。Direct3DAPI在使用中时,操作系统1020使用前端着色器编译器1024将HLSL中的任何着色器指令1012编译成更低级着色语言。编译可以是即时编译或者应用程序能够执行共享预编译。在一个实施例中,在3D图形应用程序1010的编译期间,将高级着色器编译成低级着色器。
用户模式图形驱动程序1026可包含后端着色器编译器1027以将着色器指令1012转换成硬件特定表示。OpenGL API在使用中时,将GLSL高级语言中的着色器指令1012传递到用户模式图形驱动程序1026以便进行编译。用户模式图形驱动程序使用操作系统内核模式功能1028与内核模式图形驱动程序1029进行通信。内核模式图形驱动程序1029与图形处理器1032进行通信以调度命令和指令。
就在本文中描述各种操作或功能而言,能够将它们描述或定义为硬件电路、软件代码、指令、配置和/或数据。内容能够在硬件逻辑中实施,或者实施为可直接执行软件(“对象”或“可执行”形式)、源代码、设计在图形引擎上执行的高级着色器代码或用于特定处理器或图形核的指令集中的低级汇编语言代码。本文中所述实施例的软件内容能够经上面存储有内容的制品提供,或者经操作通信接口以经通信接口发送数据的方法提供。
非暂时性机器可读存储媒体能够促使机器执行所述功能或操作,并且包括存储机器(例如,计算装置、电子系统等)可访问形式的信息的任何机制,如可录制/非可录制媒体(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光存储媒体、闪存装置等)。通信接口包括连接到任何硬连线、无线、光学等媒体以便与另一装置通信的任何机制,如存储器总线接口、处理器总线接口、因特网连接、磁盘控制器等。通过提供配置参数,或者发送信号,使通信接口准备好提供描述软件内容的数据信号,配置通信接口。经发送到通信接口的一个或更多个命令或信号,能够访问通信接口。
所述各种组件能够是用于执行所述操作或功能的部件。本文中所述每个组件包括软件、硬件或这些软件或硬件的组合。组件能够实现为软件模块、硬件模块、专用硬件(例如应用程序特定的硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。除本文中所述外,在不脱离其范围的情况下,能够对本发明的公开实施例和实现进行各种修改。因此,本文中的说明和示例应视为说明性并且不是限制性。本发明的范围应完全参照随后的权利要求衡量。
图11A、11B、11C和11D示出可为其应用一个或更多个实施例的各种用例。例如,如图所示,在图11A中左侧,图像示为在计算装置(例如,移动计算装置,如智能电话、平板计算机等)上以纵向模式1102完全可见,但在右侧转到横向模式1104时,相同图像示为被严重裁剪。这一般在用户将诸如智能电话等移动装置从纵向转到横向时发生,或反之亦然。如图所示,在计算装置的此类移动能够严重裁剪正常显示的图像时,它可能表明在再现时效果远远不及的后启动裁剪动作。
类似地,图11B示出诸如移动计算装置等计算装置的显示屏幕的触摸滑动。例如且如图所示,通过执行触摸滑动,可将左侧的正常图像1112裁剪成右侧更小得多的可见图像1114,其中,参照此示例,将近44%的像素被示为不可见。
图11C示出诸如移动计算装置等计算装置的显示屏幕的触摸收缩。例如且如图所示,通过执行触摸收缩,可将左侧的正常图像1122裁剪成右侧更小得多的可见图像1124,其中,参照此示例,将近75%的像素被变换成背景。
图11D示出诸如移动计算装置等计算装置的显示屏幕的触摸拉伸。例如且如图所示,通过执行触摸拉伸,可在右侧放大图像1134中裁剪左侧的正常图像1132,其中,参照此示例,将近75%的像素是模糊的。
图12示出根据一个实施例,采用动态预启动裁剪机制1210的计算装置1200。计算装置1200(例如,移动计算装置)可以与图1的数据处理系统100相同,并且相应地,为简单起见,上面参照图1-10所述的许多细节此处不重复。如本文档通篇将进一步描述的一样,计算装置1200可包括充当用于托管动态预启动裁剪机制(“预启动机制”)1210的主机的移动计算装置(例如,智能电话、平板计算机、膝上型计算机、游戏控制台、便携式工作站等),移动计算装置包括任何数量和类型的组件以执行各种任务,为诸如在计算装置1200的GPU 1214等移动装置中的GPU促进有效预启动裁剪。要注意的是,在本文档通篇中,像“图形域”等术语可与“图形处理单元”或简称“GPU”互换引用,并且类似地,“CPU域”或“主机域”可与“计算机处理单元”或简称“CPU”互换引用。
计算装置1200可包括任何数量和类型的通信装置,如诸如服务器计算机、台式计算机等大型计算系统,并且可还包括机顶盒(例如,基于因特网的有线电视机顶盒等)、基于全球定位系统(GPS)的装置等。计算装置1200可包括充当通信装置的移动计算装置,如包括智能电话的蜂窝电话、个人数字助理(PDA)、平板计算机、膝上型计算机、电子阅读器、智能电视、电视平台、智能窗口、头戴式显示器(HMD)和其它可佩戴装置(例如,可佩戴眼镜、手表、手镯、智能卡、珠宝、衣服等)、媒体播放器等。
例如,在一个实施例中,计算装置1200可包括采用在诸如系统级芯片(“SoC”或“SOC”)1202等单个芯片上集成计算装置1200的各种硬件和/或组件的集成电路(“IC”)的移动计算装置。此类组件可包括任何数量和类型的硬件和/或软件组件,诸如(但不限于)CPU1212、具有图形子系统1216和计算子系统1218的GPU 1214、存储器1208、预启动机制1210、网络装置、驱动程序或诸如此类及诸如触摸屏、触摸板、触摸垫、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器等输入/输出(I/O)源1204。
计算装置1200可包括充当在计算装置1200的硬件和/或物理资源与用户之间接口的操作系统(OS) 1206。可预见的是,CPU 1212可包括一个或更多个处理器,如图1的处理器102,而GPU 1214可包括一个或更多个图形处理器,如图1的图形处理器108。此外,如图所示,GPU 1214可划分成图形子系统1216和计算子系统1218以执行如本文档通篇所述的任何数量和类型的任务。
如图所示,在一个实施例中,除采用预启动机制1210外,计算装置1200可还包括任何数量和类型的硬件组件和/或软件组件,诸如(但不限于)CPU 1212、具有图形子系统1216和计算子系统1218等的GPU 1214、存储器1208、网络装置、驱动程序或诸如此类及诸如触摸屏、触摸板、触摸垫、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器等输入/输出(I/O)源1204。在一个实施例中,容积机制1210可由GPU 1214托管。在另一实施例中且如图所示,容积机制1210不可托管,并且在保持与诸如GPU 1214的图形子系统1216和/或计算子系统1218、CPU 1212、操作系统1206和计算装置1200的其它软件应用程序和/或组件的通信的同时,它可独立并且在计算装置100别处托管。
计算装置1200可包括充当在计算装置1200的硬件和/或物理资源与用户之间接口的操作系统(OS) 1206。可预见的是,CPU 1212可包括一个或更多个处理器,如图1的处理器1214,而GPU 1214可包括一个或更多个图形处理器,如图1的图形处理器108。在一个实施例中,并且如参照随后图形进一步所述,容积机制1210可与GPU 1214的图形子系统1216和/或计算子系统1218在通信中以促进任何数量和类型的任务,从而如通过本文档所述促进用于图形图像的容积的实时再现。
要注意的是,像“节点”、“计算节点”、“服务器”、“服务器装置”、“云计算机”、“云服务器”、“云服务器计算机”、“机器”、“主机”、“装置”、“计算装置”、“计算机”、“计算系统”及诸如此类等术语可在本文档通篇互换使用。还要注意的是,像“应用程序”、“软件应用程序”、“程序”、“软件程序”、“包”、“软件包”及诸如此类等术语可在本文档通篇互换使用。此外,像“作业”、“输入”、“请求”、“消息”及诸如此类等术语可在本文档通篇互换使用。
可预见并且如参照图1-10进一步所述,如上所述图形管线的一些过程在软件中实现,而其它过程在硬件中实现。图形管线可在图形协处理器设计中实现,其中,CPU 1212设计成与可包括在CPU 1212中或与其在相同位置的GPU 1214一起工作。在一个实施例中,GPU1214可采用任何数量和类型的常规软件和硬件逻辑以执行与图形再现有关的常规功能及新颖软件和硬件逻辑以执行诸如图1的指令等任何数量和类型的指令以执行如本文档通篇公开的容积机制1210的各种新颖功能。
如前面提及的一样,存储器1208可包括随机存取存储器(RAM),RAM包括具有对象信息的应用数据库。诸如图1的存储器控制器集线器126等存储器控制器集线器可访问RAM中的数据,并且将它转发到用于图形管线处理的GPU 1214。RAM可包括双倍数据率RAM (DDRRAM)、扩展数据输出RAM (EDO RAM)等。CPU 1212与如参照图3所述的硬件图形管线交互,以共享图形管线功能性。处理的数据存储在硬件图形管线中的缓冲器中,并且状态信息存储在存储器1208中。随后,将结果图像传送到显示组件或装置以便显示,如图3的显示装置320。可预见的是,显示装置可具有各种类型,如阴极射线管(CRT)、薄膜晶体管(TFT)、液晶显示器(LCD)、有机发光二极管(OLED)阵列乖乖,以向用户显示信息。
存储器1208可包括缓冲器(例如,帧缓冲器)的预分配的区域;然而,本领域技术人员应理解,实施例不限于此,并且可使用更低存储器管线可访问的任何存储器。计算装置1200可还包括如在图1中引用的输入/输出(I/O)控制集线器(ICH) 130、一个或更多个I/O装置等。
CPU 1212可包括一个或更多个处理器以执行指令,以便执行计算系统实现的任何软件例程。指令经常涉及在数据上执行的某种操作。数据和指令均可存储在系统存储器1208和任何相关联高速缓存中。高速缓存一般设计成具有比系统存储器1208更短的时延时间;例如,高速缓存可能与处理器集成到相同的硅芯片上和/或通过更快的静态RAM (SRAM)单元构建,而系统存储器1208可能通过更慢的动态RAM (DRAM)单元构建。通过趋向于在高速缓存中而不是系统存储器1208上存储更经常使用的指令和数据,改进了计算装置1200的总体性能效率。可预见的是,在一些实施例中,GPU 1214可作为CPU 1212的一部分(如物理CPU包的一部分)存在,在此情况下,存储器1208可由CPU 1212和GPU 1214共享,或者保持单独。
可使系统存储器1208变得对计算装置1200内的其它组件可用。例如,在软件程序的实现中由一个或更多个处理器操作从到计算装置1200的各种接口(例如,键盘和鼠标、打印机端口、局域网(LAN)端口、调制解调器端口等)收到或者从计算机装置1200的内部存储元素检索的任何数据(例如,输入图形数据)前,经常暂时将数据排队到系统存储器1208中。类似地,在传送或存储软件程序确定应通过计算系统接口之一从计算装置1200发送到外部实体,或者存储到内部存储元素中的数据前,经常在系统存储器1208中暂时将数据排队。
此外,例如,诸如图1的ICH 130等ICH可用于确保在系统存储器1208与其适应的对应计算系统接口(如果计算系统未如此设计,则与内部存储装置)之间适当传递此类数据,并且可在其自己与观察的I/O装置之间具有双向点对点链路。
类似地,诸如图1的MCH 126等MCH可用于管理在CPU 1212和GPU 1214、接口和内部存储元素之间可相对于彼此在时间上接近出现的对系统存储器1208访问的各种争用请求。
I/O源1204可包括为向和/或从计算装置1200(例如,网络适配器)传送数据或者为在计算装置1200(例如,硬盘驱动器)内的大规模非易失性存储而实现的一个或更多个I/O装置。包括字母数字和其它键的用户输入装置可用于将信息和命令选择传递到GPU 1214。另一类型的用户输入装置是传递方向信息和命令选择到GPU 1214并且控制在显示装置上光标移动的光标控制,如鼠标、轨迹球、触摸屏、触摸垫或光标方向键。计算机装置1200的相机和麦克风阵列可用于观察手势、录制音频和视频,并且接收和传送视觉和音频命令。
计算装置1200可还包括网络接口以提供对网络的访问,如LAN、宽域网(WAN)、城域网(MAN)、个人区域网络(PAN)、蓝牙、云网络、移动网络(例如,第三代(3G)等)、内联网、因特网等。网络接口例如可包括具有天线的无线网络接口,天线可表示一个或更多个天线。网络接口例如也可包括有线网络接口以便经网络电缆与远程装置进行通信,网络电缆例如可以是以太网电缆、同轴电缆、光纤电缆、串行电缆或并行电缆。
网络接口例如可通过符合IEEE 802.12b和/或IEEE 802.12g标准,提供到LAN的接入,和/或无线网络接口例如可通过符合蓝牙标准,提供到个人区域网络的接入。也可支持其它无线网络接口和/或协议,包括标准的以前和以后版本。除经无线LAN标准的通信外或者不使用经无线LAN标准的通信,网络接口可使用例如时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或任何其它类型的无线通信协议提供无线通信。
网络接口可包括一个或更多个通信接口,如调制解调器、网络接口卡或其它熟知接口装置,如用于耦合到以太网、令牌环或其它类型的物理有线或无线附连的那些装置以便例如提供通信链路以支持LAN或WAN。这样,计算机系统也可经例如包括内联网或因特网的常规网络基础设施耦合到多个外设装置、客户端、控制表面、控制台或服务器。
要领会的是,对于某些实现,比上述示例配备更少或更多的系统可以是优选的。因此,计算装置1200的配置可根据许多因素因实现的不同而改变,如价格约束、性能要求、技术改进或其它情况。电子装置或计算机系统1200的示例可包括(但不限于)移动装置、个人数字助理、移动计算装置、智能电话、蜂窝电话、手持机、单向寻呼器、双向寻呼器、消息传递装置、计算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、手持式计算机、平板计算机、服务器、服务器阵列或服务器农场、web服务器、网络服务器、因特网服务器、工作站、微型计算机、大型计算机、超级计算机、网络家电、web家电、分布式计算系统、多处理器系统、基于处理器的系统、消费者电子器件、可编程消费者电子器件、电视、数字电视、机顶盒、无线接入点、订户站、移动订户中心、无线电网络控制器、路由器、集线器、网关、桥接器、交换器、机器或其组合。
实施例可实现为以下任意之一或其组合:使用母板互连的一个或多个微芯片或集成电路、硬件逻辑、由存储器装置存储并且由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。术语“逻辑”可例如包括软件或硬件和/或软件和硬件的组合。
实施例例如可提供为计算机程序产品,计算机程序产品可包括上面存储有一个或多个机器可执行指令的一个或多个机器可读介质,指令在由诸如计算机、计算机的网络或其它电子装置等一个或多个机器执行时,可促使一个或多个机器执行根据本文中所述实施例的操作。机器可读介质可包括但不限于软盘、光盘、CD-ROM(压缩光盘只读存储器)、磁光盘、ROM、RAM、EPROM(可擦除编程只读存储器)、EEPROM(电擦除可编程只读存储器)、磁卡或光学卡、闪存和/或适用于存储机器可执行指令的其它类型的介质/机器可读介质。
另外,实施例可作为计算机程序产品下载,其中,程序可经通信链路(例如,调制解调器和/或网络连接),通过载波或其它传播介质中包含和/或调制的一个或更多个数据信号,从远程计算机(例如,服务器)下载到请求的计算机(例如,客户端)。
图13示出根据一个实施例的动态预启动裁剪机制1210。在一个实施例中,预启动机制1210可任何数量和类型的组件/逻辑以执行各种任务,为诸如在计算装置1200等移动装置中的GPU 1214促进有效预启动裁剪。例如且在一个实施例中,预启动机制1210可包括(但不限于):检测和接收逻辑1301、评估和计算逻辑1303、判定逻辑1305、处理逻辑1307及通信/兼容性逻辑1309。还示出且如参照图12前面提及的一样,预启动机制1210可在与CPU和/或GPU的通信中,从而在与诸如图12的计算装置1200的CPU 1212和GPU 1214等CPU和/或GPU的通信中可执行一个或更多个任务。此外,像“模糊”、“不可见”、“看不见”、“剔除”和“废弃”及其对应形式等术语可在本文档通篇中互换使用。
如前面提及的一样,常规技术效率低且严重受限,表现在它们助长了过多不必要且非智能的图形数据的处理,如计算和处理所有图像的所有像素而无论如何再现图像,这导致系统资源的过多不当使用,如时间、功率、存储器、占用空间等。这对于诸如移动计算机等更小或资源受约束的装置特别成问题。此类常规技术在遇到裁剪的图像时效率特别低,这强制常规运行时/驱动程序在所有像素(包括不相关的那些像素)上执行重复再计算并且延迟在再现时的对应裁剪后启动。因此,此类常规技术成本相当高、功率效率低,在处理导致裁剪图像的触摸事件时且极其低效,并且深深植根于用户体验中。实施例提供适用于装置显示裁剪状态的预启动裁剪机制1210,使得它能够验证活跃的计算元素,并且如果需要,则调用更有效的预启动裁剪。实施例提供用于在功率和资源消耗方面均有效的技术,并且提供用于无缝和有效的处理路径。
在一个实施例中,与通信/兼容性逻辑1309协作,检测和接收逻辑1301继续接收来自诸如图12的计算装置1200的GPU 1214等对应计算装置的GPU的显示裁剪状态(也称为“裁剪数据”、“状态数据”、“显示数据”或简称为“裁剪状态”)。可预见的是,例如,在诸如智能电话和平板等移动计算装置上,显示触摸事件是相当常见、动态且可能触发重复的图像裁剪事件。还可预见的是,诸如图12的图形子系统1216等此类移动装置的GPU的图形子系统可持续观察和获得如相对于图11A-11D所示由用户的动作触发的此类事件的显示裁剪状态。
在一个实施例中,检测和接收逻辑1301可触发GPU的图形子系统以便将显示裁剪状态从图形子系统传递到GPU的计算子系统,如图12的GPU 1212的计算子系统1218。例如,在一个实施例中,图形子系统可设置成基于预确定的准则操作,使得图形子系统可持续,按预定义的时间期定期,在发生一个或更多个事件时和/或在由检测和接收逻辑 1301主动触发时和/或诸如此类,自动将显示裁剪状态传递到计算子系统。
将与用户动作有关的状态数据从图形子系统传递到计算子系统的此新颖技术允许计算子系统具有关于所有图像,特别是部分模糊图像的必需和相关数据,数据随后可用于考虑和执行如预启动机制1210促进的预启动裁剪处理。
在一个实施例中,在计算子系统接收显示裁剪状态时,随后在评估和计算逻辑1303接收此状态数据以执行与状态数据有关的评估和/或计算。例如且在一个实施例中,评估和计算逻辑1303可考虑状态数据,以基于任何数量和类型的因素、准则、阈值等确定状态数据是否表明预启动裁剪的必要。例如且在一个实施例中,预确定的阈值表示或包括被剔除像素的百分比,该百分比可用于与状态数据进行比较,以基于状态数据和阈值,确定是否可执行预启动裁剪过程。
例如,预确定阈值可设置基于百分比的准则,以建议除非剔除至少15%的像素,否则可不执行裁剪启动(而不同于预启动裁剪),这是因为影响不到15%的总像素的任何剔除可被认为是可接受的。相反,如果15%或更多像素被剔除,如从状态数据确定的一样,则可认为图像裁剪适当,并且因此在此情况下,可表明预启动裁剪是必要的。可预见的是,为简明、清晰和便于理解实施例不限于任何特定百分比或根本不限于任何百分比,15%仅用作示例。
在一个实施例中,在评估和计算时,评估和计算逻辑1303可向判定逻辑1305建议其判定以做进一步处理。继续前一示例,在比较与部分模糊图像有关的状态数据和预确定的阈值时,如果确定被剔除的像素量小于15%,则在未超过预确定的阈值后,评估和计算逻辑1303可向判定逻辑1305建议可不触发裁剪启动。然而,例如,如果在比较从状态数据提取的信息和预确定的阈值时,评估和计算逻辑1303可确定部分模糊图像中被剔除像素的百分比超过至少15%,则评估和计算逻辑1303可向判定逻辑1305建议预启动裁剪。
在一个实施例中,判定逻辑1305可接收来自评估和计算逻辑1303的任何建议,并且基于一个或更多个建议,在无裁剪启动与预裁剪启动之间选择。例如,在一些实施例中,判定逻辑1305可基于任何数量和类型的因素,取代建议,如带宽的可用性、系统资源等。在接收来自评估和计算逻辑1303的建议时,如触发无裁剪启动,判定逻辑1305可选择无裁剪启动,并且指示处理逻辑1307启动过程。在一个实施例中,处理逻辑1307在接收指令时,触发无裁剪启动,并且相应地执行任何相关过程。
在一个实施例中,在执行无裁剪启动中,处理逻辑1307可处理图像的所有像素,这可在与图像有关的状态数据未能满足用于触发预启动裁剪的预确定的阈值或准则时触发。例如,如前面讨论的一样,如果状态数据和阈值的比较揭示图像根本不模糊,如未检测到像素的剔除,或者利用了所有像素或者模糊度是可接受的,在使用像素(例如,继续前一示例,在使用超过85%的像素,或者剔除了不到15%的像素),则可如评估和计算逻辑1303确定,判定逻辑1305判定或选择以及处理逻辑1307促进或处理的一样,可触发无裁剪启动。
在一个实施例中,如果如由评估和计算逻辑1303所促进的一样,在与预确定的阈值比较时,图像的状态数据揭示与图像有关的状态数据超过阈值,使得被剔除的像素的数量多于可接受数量,则可如评估和计算逻辑1303确定,判定逻辑1305判定或选择以及处理逻辑1307促进或处理的一样,可触发预启动裁剪。
在处理预启动裁剪时,在一个实施例中,处理逻辑1307可只需要处理在利用的像素并且不是确定要剔除的像素。换而言之,例如,如果在图像显示裁剪期间剔除44%的像素(如由于图11B中的触摸滑动),则在一个实施例中,只有在利用的56%(例如,100% -44%=56%)的像素完成如处理逻辑1307促进的任何随后过程,而被剔除(且因此未利用)的其它44%的像素未处理,节省了相当大的处理时间、资源、功率等。类似地,在一些实现中,在使用如由处理逻辑1307促进的预启动裁剪中,在剔除更高百分比的像素时,甚至可留存更大量的资源,如参照图11C-11D,75%的像素由于被剔除或模糊而未处理。
此外,在一个实施例中,如相对于图13所示,诸如基于无裁剪启动或预启动裁剪,在GPU上的计算启动过程可调用内核、使用多个线程平行执行图像处理任务的执行指令的集合等,其中,每个线程可用于处理一个像素。例如,可跨在启动过程中用于像素的处理的执行单元同时和平行启动任何数量的计算线程。在一个实施例中,在使用预启动裁剪过程中,被剔除像素均未得到处理,这导致与处理所有像素相比,处理更少得多的像素,并且相应地可启动更少的线程,以及转而又可留存宝贵的系统资源和/或将其用于其它过程,如在系统上运行的其它应用程序等。
要注意的是,在将与图像有关的状态数据从图形子系统传递到计算子系统中,确定被利用或剔除的像素量,这随后可用于执行有效的基于预启动裁剪的处理。在一个实施例中,在完成像素的处理时,无论处理是基于如由处理逻辑1307促进的无裁剪启动还是预启动裁剪,诸如处理的图像等处理的任何结果随后可由处理逻辑1307转发到GPU的图形子系统,由此便于在计算装置的显示屏幕上显示。
在确保与更改的技术、参数、协议、标准等的兼容性的同时,通信/兼容性逻辑1311可用于促进在诸如图12的计算装置1200等一个或更多个计算装置与任何数量和类型的其它计算装置(如移动计算装置,台式计算机、服务器计算装置等)、处理装置(如中央处理单元(CPU)、图形处理单元(GPU)等)、图像捕捉装置(如摄像头)、显示元素(如显示组件、显示装置、显示屏幕等)、用户/上下文感知组件和/或标识/验证传感器/装置(如生物统计传感器/检测器、扫描仪等)、存储器或存储装置、数据库或数据源(如,数据存储装置、硬盘驱动器、固态驱动器、硬盘、存储器卡或装置、存储器电路等)、网络(例如,云网络、因特网、内联网、蜂窝网络、邻近度网络,如蓝牙、蓝牙低能量(BLE)、Bluetooth Smart、Wi-Fi邻近度、射频标识(RFID)、近场通信(NFC)、体域网(BAN)等)、无线或有线通信和相关协议(例如,Wi-Fi®、WiMAX、以太网等)、连接性和位置管理技术、软件应用程序/网站(例如,社交和/或商业网络网站、商业应用程序、游戏及其它娱乐应用程序等)、编程语言等之间的动态通信和兼容性。
在本文档通篇中,像“逻辑”、“组件”、“模块”、“框架”、“引擎”及诸如此类等术语可互换引用,并且例如包括软件、硬件和/或诸如固件等软件和硬件的任何组合。此外,诸如“GPU”、“CPU”、“裁剪”、“预启动”、“后启动”、“RenderScript®”、“触摸滑动”、“触摸收缩”、“纵向”、“横向”、“维”、“ID”、“2D”、“3D”、“移动计算装置”等特定品牌、字、术语、短语、名称和/或首字母缩略词的任何使用不应理解为将实施例限制成在产品中或者在本文档外的文献中携带该标示的软件或装置。
可预见的是,任何数量和类型的组件可添加到预启动机制1210和/或从中删除,以促进包括添加,删除和/或增强某些特征的各种实施例。为简明、清晰和易于理解预启动机制1210起见,此处未示出或讨论诸如计算装置的组件等许多标准和/或已知组件。可预见的是,如本文中所述实施例不限于任何特定技术、拓扑、系统、体系结构和/或标准,并且足够动态以采纳和适应任何将来更改。
图14示出用于促进常规后启动裁剪过程的方法1400。如此处所示和前面提及的一样,方法1400在框1401 GPU的计算子系统触发无裁剪启动开始,并且在框1403,启动基于无裁剪启动的处理。在框1405,启动和执行影响图像的所有像素(包括不可见或被剔除像素、可见像素等)的处理,并且随后在框1407,将处理的图像传递到GPU的图形子系统。
图15A示出根据一个实施例,用于为在计算装置的部分模糊图像促进动态预启动裁剪过程的方法1500。方法1500可由处理逻辑执行,处理逻辑可包括硬件(例如,电路、专用逻辑、可编程逻辑等)、软件(如在处理装置上运行的指令)或其组合。在一个实施例中,方法1500可由图12-13的预启动机制1210执行。为使呈现简明和清晰起见,以线性序列示出方法1500的过程;然而,可预见的是,能够平行、异步或以不同顺序执行任何数量的过程。为简明起见,可在此后不讨论或重复参照前面图1-14讨论的许多细节。
如本文档通篇讨论的一样,在计算装置(例如,移动计算装置,如智能电话、平板计算机等)上,显示触摸事件相当动态,并且经常触发重复的图像裁剪事件,造成部分模糊图像。实施例提供用于执行如由方法1500促进的部分模糊图像的预启动裁剪处理,产生改进和可领会的性能增益及系统资源的留存,如代码处理、线程、功率、时间和存储器等。
方法1500在框1501通过生成和获得如由用户进行的一个或更多个显示触摸事件触发的与图形图像有关的显示裁剪状态开始。例如,此显示裁剪状态或状态数据可从计算装置的GPU的图形子系统获得,如图12的计算装置1200的GPU 1214的图形子系统1216。如前面提及的一样,此状态数据可响应用户在计算装置执行各种图像变换行动而生成,如将图像从纵向更改成横向或反之亦然,触摸滑动,触摸收缩,触摸拉伸等,如参照图11A-11D所示。
在一个实施例中,在框1503,图形子系统随后可传输或转发状态数据到计算装置的计算子系统,并且在一个实施例中,在框1505,状态数据在计算装置的GPU的计算子系统接收,如图12的计算装置1200的GPU 1214的计算子系统1218。如前面参照图13讨论的一样,可以持续或基于预确定的时间期定期,响应一个或更多个事件偶尔或者在由图12的预启动机制1210的一个或更多个组件触发时手动和/或诸如此类的方式,将此状态数据从图形子系统提供到计算子系统。
在框1507,基于状态数据的评估和计算,做出有关是否充分裁剪图像以触发图像的预启动裁剪处理的确定。在一个实施例中,如前面参照图13讨论的一样,状态数据的评估和计算可包括(但不限于)状态数据的内容与预确定的阈值(例如,百分比阈值,如2%、5%、15%、32%等)进行匹配,以确定在例如视为被剔除或不可见的像素的百分比(和/或量和/或数量)的处理方面,图像的部分模糊度是否是可接受的。例如,如果被剔除像素的百分比小是可接受的(如基于预确定的阈值等),其中处理此类像素可不要求消耗太多资源(例如,执行线程、时间、功率等),则在一个实施例中,在框1509可触发图像的无裁剪启动处理,并且在框1513可处理图像。随后,将处理的图像提供回GPU的图形子系统以便在框1501做进一步处理。
然而,如果充分裁剪图像,其中图像的被剔除或不可见像素的百分比(和/或量和/或数量)相当大,如超过预确定的阈值(例如,等于/大于15%等),则在一个实施例中,在框1511可触发图像的预启动裁剪处理。如本文档通篇讨论的一样,在执行图像的预启动裁剪处理中,只可处理图像的可见像素,而可忽略并且在框1513的处理中不包括图像的被剔除像素。随后,将处理的图像提供回GPU的图形子系统以便在框1501做进一步处理。在一个实施例中,更少像素经预启动裁剪处理的此处理导致占用计算装置(例如,移动计算机,如智能电话、平板计算机等)的更少处理线程和其它资源(例如,功率、时间、存储器等),从而产生计算装置的总体更快和更有效的性能。
图15B示出根据一个实施例,用于在图形处理单元的计算启动过程的事务序列1550。事务序列1550可由处理逻辑执行,处理逻辑可包括硬件(例如,电路、专用逻辑、可编程逻辑等)、软件(如在处理装置上运行的指令)或其组合。在一个实施例中,事务序列1550可由图11-12的预启动机制1210执行。为使呈现简明和清晰起见,以线性序列示出事务序列1550的过程;然而,可预见的是,能够平行、异步或以不同顺序执行任何数量的过程。为简明起见,可在此后不讨论或重复参照前面图1-15A讨论的许多细节。
如图所示,在GPU上的计算启动过程可调用线程调度1551,这可导致内核的调用、执行指令的集合等,以如应用到在任何显示裁剪的范围或要处理的完全图像中包含的每个像素一样,平行执行图像处理任务。如参照图15A所述,在一个实施例中,由于在如框1513促进的图像处理基于预启动裁剪时可处理更少像素,因此,可需要占用和使用更少的对应计算线程、执行单元1553A-1553N等。
如图所示,启动过程可跨与在计算装置的系统存储器1555通信的执行单元1553A-1553N,并发调度任何数量的计算线程以便共享资源。可预见的是,系统存储器1555可与图12的计算装置1200的存储器1208类似或相同。
对“一个实施例”、“一实施例”、“示例实施例”、“各种实施例”等的引用表示如此描述的实施例可包括特定特征、结构或特性,但并非每个实施例一定包括特定特征、结构或特性。此外,一些实施例可具有其它实施例所述的一些或所有特征,或不具有其任何特征。
在前面所述说明书中,实施例已参照其特定示范实施例描述。然而,将可明白,在不脱离如随附权利要求所述实施例的更广的精神和范围的情况下,可对其进行各种修改和更改。相应地,说明书和附图要视为是说明性而不是限制性。
在下面的描述和权利要求书中,可使用术语“耦合”及其衍生词。“耦合”用于指两个或更多个元素相互合作或交互,但它们可以有或没有中间物理或电组件。
在权利要求中使用时,除非另有规定,否则,使用序数形容词“第一”、“第二”、“第三”等描述普通元素只表示在引用类似元素的不同实施,并且无意暗示如此描述的元素必须在时间上、空间上、排序中或以任何其它方式处于给定序列。以下条款和/或示例涉及其它实施例或示例。
示例中的细节可在一个或更多个实施例中任意处使用。不同实施例或示例的各种特征可以各种方式与包括的一些特征和排除的其它特征组合以满足多种不同应用。示例可包括主题,诸如方法、用于执行方法的行动的部件、包括指令的至少一个机器可读介质,指令在由机器执行时促使机器执行方法、设备或系统的行动,以便促进根据本文中所述实施例和示例的混合通信。
一些实施例涉及示例1,示例1包括一种为计算装置上的部分模糊图像促进动态和有效预启动裁剪的设备,包括:检测和接收逻辑,以接收与具有部分模糊区域的图像有关的状态数据,其中,图像能够在计算装置的图形处理单元上处理;评估和计算逻辑,以评估状态数据,其中,评估包括图像的可见像素和不可见像素的至少之一的计算;判定逻辑,以选择在图像的处理中要包括的可见像素,其中,忽略了不可见像素;以及处理逻辑,以基于可见像素,处理图像。
示例2包括示例1的主题,其中,图像的部分模糊区域由计算装置的显示方位的一个或更多个更改造成,其中,一个或更多个更改包括滑动、收缩和拉伸至少之一。
示例3包括示例2的主题,其中,一个或更多个更改还包括将计算装置从第一布局转成第二布局,其中,第一和第二布局包括纵向布局、横向布局和对角布局的至少之一,其中,计算装置包括具有智能电话和平板计算机的至少之一的移动计算装置。
示例4包括示例1的主题,其中,可见像素包括图像的部分模糊区域的清楚部分的可察觉像素,其中,不可见像素包括图像的部分模糊区域的模糊部分的被剔除像素。
示例5包括示例1的主题,其中,计算还包括基于预确定的准则匹配状态数据和预定义的阈值,其中,预定义的阈值指示不可见像素的可接受百分比。
示例6包括示例1的主题,其中,判定逻辑还要:为图像的处理选择可见像素;以及如果不可见像素的百分比等于或大于如预定义的阈值指示的不可见像素的可接受百分比,则为图像的处理忽略不可见像素。
示例7包括示例6的主题,其中如果不可见像素的百分比小于如预定义的阈值指示的不可见像素的可接受百分比,则判定逻辑还要为图像的处理选择可见像素和不可见像素。
示例8包括示例1的主题,还包括:图形处理单元的图形子系统,以观察状态数据并且将状态数据转发到图形处理单元的计算子系统;以及计算子系统,以经检测和接收逻辑接收来自图形子系统的状态数据。
一些实施例涉及示例9,示例9包括一种用于为计算装置上的部分模糊图像促进动态和有效预启动裁剪的方法,包括:接收与具有部分模糊区域的图像有关的状态数据,其中,图像能够在计算装置的图形处理单元上处理;评估状态数据,其中,评估包括图像的可见像素和不可见像素的至少之一的计算;选择在图像的处理中要包括的可见像素,其中,忽略了不可见像素;以及基于可见像素,处理图像。
示例10包括示例9的主题,其中,图像的部分模糊区域由计算装置的显示方位的一个或更多个更改造成,其中,一个或更多个更改包括滑动、收缩和拉伸至少之一。
示例11包括示例10的主题,其中,一个或更多个更改还包括将计算装置从第一布局转成第二布局,其中,第一和第二布局包括纵向布局、横向布局和对角布局的至少之一,其中,计算装置包括具有智能电话和平板计算机的至少之一的移动计算装置。
示例12包括示例9的主题,其中,可见像素包括图像的部分模糊区域的清楚部分的可察觉像素,其中,不可见像素包括图像的部分模糊区域的模糊部分的被剔除像素。
示例13包括示例9的主题,其中,计算还包括基于预确定的准则匹配状态数据和预定义的阈值,其中,预定义的阈值指示不可见像素的可接受百分比。
示例14包括示例9的主题,还包括:为图像的处理选择可见像素;以及如果不可见像素的百分比等于或大于如预定义的阈值指示的不可见像素的可接受百分比,则为图像的处理忽略不可见像素。
示例15包括示例14的主题,还包括如果不可见像素的百分比小于如预定义的阈值指示的不可见像素的可接受百分比,则为图像的处理选择可见像素和不可见像素。
示例16包括示例9的主题,还包括:经图形处理单元的图形子系统,观察状态数据并且将状态数据提供到图形处理单元的计算子系统;以及经计算子系统,接收来自图形子系统的状态数据。
示例17包括至少一种包括多个指令的机器可读介质,指令在计算装置上执行时实现或执行如前面权利要求任一项要求保护的方法,或实现如前面权利要求任一项要求保护的设备。
示例18包括至少一种包括多个指令的非暂时性或有形机器可读介质,指令在计算装置上执行时实现或执行如前面权利要求任一项要求保护的方法,或实现如前面权利要求任一项要求保护的设备。
示例19包括一种系统,系统包括实现或执行如前面权利要求任一项要求保护的方法,或实现如前面权利要求任一项要求保护的设备。
示例20包括一种设备,设备包括执行如前面权利要求任一项要求保护的方法。
示例21包括一种计算装置,计算装置布置成实现或执行如前面权利要求任一项要求保护的方法,或实现如前面权利要求任一项要求保护的设备。
示例22包括一种通信装置,通信装置布置成实现或执行如前面权利要求任一项要求保护的方法,或实现如前面权利要求任一项要求保护的设备。
一些实施例涉及示例23,示例23包括一种系统,系统包括具有指令的存储装置和执行指令以促进执行一个或更多个操作的机制的处理器,包括:接收与具有部分模糊区域的图像有关的状态数据,其中,图像能够在计算装置的图形处理单元上处理;评估状态数据,其中,评估包括图像的可见像素和不可见像素的至少之一的计算;选择在图像的处理中要包括的可见像素,其中,忽略了不可见像素;以及基于可见像素,处理图像。
示例24包括示例23的主题,其中,图像的部分模糊区域由计算装置的显示方位的一个或更多个更改造成,其中,一个或更多个更改包括滑动、收缩和拉伸至少之一。
示例25包括示例24的主题,其中,一个或更多个更改还包括将计算装置从第一布局转成第二布局,其中,第一和第二布局包括纵向布局、横向布局和对角布局的至少之一,其中,计算装置包括具有智能电话和平板计算机的至少之一的移动计算装置。
示例26包括示例23的主题,其中,可见像素包括图像的部分模糊区域的清楚部分的可察觉像素,其中,不可见像素包括图像的部分模糊区域的模糊部分的被剔除像素。
示例27包括示例23的主题,其中,计算还包括基于预确定的准则匹配状态数据和预定义的阈值,其中,预定义的阈值指示不可见像素的可接受百分比。
示例28包括示例23的主题,其中,一个或更多个操作还包括:为图像的处理选择可见像素;以及如果不可见像素的百分比等于或大于如预定义的阈值指示的不可见像素的可接受百分比,则为图像的处理忽略不可见像素。
示例29包括示例28的主题,其中,一个或更多个操作还包括如果不可见像素的百分比小于如预定义的阈值指示的不可见像素的可接受百分比,则为图像的处理选择可见像素和不可见像素。
示例30包括示例23的主题,其中一个或更多个操作还包括:经图形处理单元的图形子系统,观察状态数据并且将状态数据提供到图形处理单元的计算子系统;以及经计算子系统,接收来自图形子系统的状态数据。
一些实施例涉及示例31,示例31包括一种设备,包括:用于接收与具有部分模糊区域的图像有关的状态数据的部件,其中,图像能够在计算装置的图形处理单元上处理;用于评估状态数据的部件,其中,评估包括图像的可见像素和不可见像素的至少之一的计算;用于选择在图像的处理中要包括的可见像素的部件,其中,忽略了不可见像素;以及用于基于可见像素,处理图像的部件。
示例32包括示例31的主题,其中,图像的部分模糊区域由计算装置的显示方位的一个或更多个更改造成,其中,一个或更多个更改包括滑动、收缩和拉伸至少之一。
示例33包括示例32的主题,其中,一个或更多个更改还包括将计算装置从第一布局转成第二布局,其中,第一和第二布局包括纵向布局、横向布局和对角布局的至少之一,其中,计算装置包括具有智能电话和平板计算机的至少之一的移动计算装置。
示例34包括示例31的主题,其中,可见像素包括图像的部分模糊区域的清楚部分的可察觉像素,其中,不可见像素包括图像的部分模糊区域的模糊部分的被剔除像素。
示例35包括示例31的主题,其中,计算还包括用于基于预确定的准则匹配状态数据和预定义的阈值的部件,其中,预定义的阈值指示不可见像素的可接受百分比。
示例36包括示例31的主题,还包括:用于为图像的处理选择可见像素的部件;以及用于如果不可见像素的百分比等于或大于如预定义的阈值指示的不可见像素的可接受百分比,则为图像的处理忽略不可见像素的部件。
示例37包括示例36的主题,还包括用于如果不可见像素的百分比小于如预定义的阈值指示的不可见像素的可接受百分比,则为图像的处理选择可见像素和不可见像素的部件。
示例38包括示例31的主题,还包括:用于经图形处理单元的图形子系统,观察状态数据并且将状态数据提供到图形处理单元的计算子系统的部件;以及用于经计算子系统,接收来自图形子系统的状态数据的部件。
图形和前面的描述提供了实施例的示例。本领域技术人员将领会,一个或更多个所述元素可很好地组合成单个功能元素。备选,某些要素可分割成多个功能要素。来自一个实施例的要素可添加到另一实施例。例如,本文中所述进程的顺序可更改并且不限于本文中所述的方式。另外,任何流程图的动作无需以所示顺序实现;所有动作也需要一定要执行。此外,与其它动作不相关的那些动作可与其它动作平行执行。实施例的范围决不受限于这些特定示例。许多变化是可能,而无论是否在说明书中明确提供,如结构、维度和材料使用中的差别。实施例的范围至少如所附权利要求书所提供的一样广。
Claims (26)
1.一种为计算装置上部分模糊图像促进动态和有效的预启动裁剪的设备,包括:
检测和接收逻辑,用于接收与具有部分模糊区域的图像有关的显示裁剪状态,其中所述图像能够在计算装置的图形处理单元上处理;
评估和计算逻辑,用于评估所述显示裁剪状态,其中所述评估包括所述图像的可见像素和不可见像素的至少之一的计算;
判定逻辑,用于基于所述评估来触发预启动剪裁以选择所述可见像素以被包括在所述图像的处理中,其中忽略所述不可见像素;以及
处理逻辑,用于基于所述可见像素处理所述图像,
其中所述图像的所述部分模糊区域由所述计算装置的显示方位的一个或更多个更改造成,其中所述一个或更多个更改包括滑动、收缩和拉伸的至少之一。
2.如权利要求1所述的设备,其中所述一个或更多个更改还包括将所述计算装置从第一布局转成第二布局,其中所述第一和第二布局包括纵向布局、横向布局和对角布局的至少之一,其中所述计算装置包括具有智能电话和平板计算机的至少之一的移动计算装置。
3.如权利要求1所述的设备,其中所述可见像素包括所述图像的所述部分模糊区域的清楚部分的可察觉像素,其中所述不可见像素包括所述图像的所述部分模糊区域的模糊部分的被剔除像素。
4.如权利要求1所述的设备,其中所述计算还包括基于预确定的准则匹配所述显示裁剪状态和预定义的阈值,其中所述预定义的阈值指示所述不可见像素的可接受百分比。
5.如权利要求4所述的设备,其中所述判定逻辑还用于:
为所述图像的所述处理选择所述可见像素;以及
如果所述不可见像素的百分比等于或大于如所述预定义的阈值指示的不可见像素的所述可接受百分比,则为所述图像的所述处理忽略所述不可见像素。
6.如权利要求5所述的设备,其中如果所述不可见像素的百分比小于如所述预定义的阈值指示的不可见像素的所述可接受百分比,则所述判定逻辑还用于为所述图像的所述处理选择所述可见像素和所述不可见像素。
7.如权利要求1所述的设备,还包括:
所述图形处理单元的图形子系统,用于观察所述显示裁剪状态并且将所述显示裁剪状态转发到所述图形处理单元的计算子系统;以及
所述计算子系统,用于经所述检测和接收逻辑接收来自所述图形子系统的所述显示裁剪状态。
8.一种为计算装置上部分模糊图像促进动态和有效的预启动裁剪的方法,包括:
接收与具有部分模糊区域的图像有关的显示裁剪状态,其中所述图像能够在计算装置的图形处理单元上处理;
评估所述显示裁剪状态,其中评估包括所述图像的可见像素和不可见像素的至少之一的计算;
基于所述评估来触发预启动剪裁以选择所述可见像素以被包括在所述图像的处理中,其中忽略所述不可见像素;以及
基于所述可见像素处理所述图像,
其中所述图像的所述部分模糊区域由所述计算装置的显示方位的一个或更多个更改造成,其中所述一个或更多个更改包括滑动、收缩和拉伸的至少之一。
9.如权利要求8所述的方法,其中所述一个或更多个更改还包括将所述计算装置从第一布局转成第二布局,其中所述第一和第二布局包括纵向布局、横向布局和对角布局的至少之一,其中所述计算装置包括具有智能电话和平板计算机的至少之一的移动计算装置。
10.如权利要求8所述的方法,其中所述可见像素包括所述图像的所述部分模糊区域的清楚部分的可察觉像素,其中所述不可见像素包括所述图像的所述部分模糊区域的模糊部分的被剔除像素。
11.如权利要求8所述的方法,其中所述计算还包括基于预确定的准则匹配所述显示裁剪状态和预定义的阈值,其中所述预定义的阈值指示所述不可见像素的可接受百分比。
12.如权利要求11所述的方法,还包括:
为所述图像的所述处理选择所述可见像素;以及
如果所述不可见像素的百分比等于或大于如所述预定义的阈值指示的不可见像素的所述可接受百分比,则为所述图像的所述处理忽略所述不可见像素。
13.如权利要求12所述的方法,还包括如果所述不可见像素的百分比小于如所述预定义的阈值指示的不可见像素的所述可接受百分比,则为所述图像的所述处理选择所述可见像素和所述不可见像素。
14.如权利要求8所述的方法,还包括:
经所述图形处理单元的图形子系统观察所述显示裁剪状态并且将所述显示裁剪状态提供到所述图形处理单元的计算子系统;以及
经所述计算子系统接收来自所述图形子系统的所述显示裁剪状态。
15.一种机器可读介质,所述机器可读介质上存储有多个指令,所述多个指令在计算装置上执行时实现或执行如权利要求8-14任一项所述的方法。
16.一种包括用于实现或执行如权利要求8-14任一项所述方法的机制的系统。
17.一种包括用于执行如权利要求8-14任一项所述方法的部件的设备。
18.一种布置成实现或执行如权利要求8-14任一项所述方法的计算装置。
19.一种布置成实现或执行如权利要求8-14任一项所述方法的通信装置。
20.一种为计算装置上部分模糊图像促进动态和有效的预启动裁剪的设备,包括:
用于接收与具有部分模糊区域的图像有关的显示裁剪状态的部件,其中所述图像能够在计算装置的图形处理单元上处理;
用于评估所述显示裁剪状态的部件,其中评估包括所述图像的可见像素和不可见像素的至少之一的计算;
用于基于所述评估来触发预启动剪裁以选择所述可见像素以被包括在所述图像的处理中的部件,其中忽略所述不可见像素;以及
用于基于所述可见像素处理所述图像的部件,
其中所述图像的所述部分模糊区域由所述计算装置的显示方位的一个或更多个更改造成,其中所述一个或更多个更改包括滑动、收缩和拉伸的至少之一。
21.如权利要求20所述的设备,其中所述一个或更多个更改还包括将所述计算装置从第一布局转成第二布局,其中所述第一和第二布局包括纵向布局、横向布局和对角布局的至少之一,其中所述计算装置包括具有智能电话和平板计算机的至少之一的移动计算装置。
22.如权利要求20所述的设备,其中所述可见像素包括所述图像的所述部分模糊区域的清楚部分的可察觉像素,其中所述不可见像素包括所述图像的所述部分模糊区域的模糊部分的被剔除像素。
23.如权利要求20所述的设备,其中所述计算还包括基于预确定的准则匹配所述显示裁剪状态和预定义的阈值,其中所述预定义的阈值指示所述不可见像素的可接受百分比。
24.如权利要求23所述的设备,还包括:
用于为所述图像的所述处理选择所述可见像素的部件;以及
用于如果所述不可见像素的百分比等于或大于如所述预定义的阈值指示的不可见像素的所述可接受百分比,则为所述图像的所述处理忽略所述不可见像素的部件。
25.如权利要求24所述的设备,还包括用于如果所述不可见像素的百分比小于如所述预定义的阈值指示的不可见像素的所述可接受百分比,则为所述图像的所述处理选择所述可见像素和所述不可见像素的部件。
26.如权利要求20所述的设备,还包括:
用于经所述图形处理单元的图形子系统观察所述显示裁剪状态并且将所述显示裁剪状态提供到所述图形处理单元的计算子系统的部件;以及
用于经所述计算子系统接收来自所述图形子系统的所述显示裁剪状态的部件。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462019065P | 2014-06-30 | 2014-06-30 | |
US62/019065 | 2014-06-30 | ||
US14/578,318 US9691122B2 (en) | 2014-06-30 | 2014-12-19 | Facilitating dynamic and efficient pre-launch clipping for partially-obscured graphics images on computing devices |
US14/578318 | 2014-12-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105224165A CN105224165A (zh) | 2016-01-06 |
CN105224165B true CN105224165B (zh) | 2021-06-22 |
Family
ID=54931121
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510287493.6A Active CN105224165B (zh) | 2014-06-30 | 2015-05-29 | 为计算装置上部分模糊图形图像促进动态和有效的预启动裁剪的方法和设备 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9691122B2 (zh) |
CN (1) | CN105224165B (zh) |
TW (1) | TWI596569B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9720827B2 (en) * | 2014-11-14 | 2017-08-01 | Intel Corporation | Providing multiple memory modes for a processor including internal memory |
EP3065051A1 (en) * | 2015-03-05 | 2016-09-07 | Ingo Josopait | Flow control for language-embedded programming in general-purpose computing on graphics processing units |
US10643296B2 (en) * | 2016-01-12 | 2020-05-05 | Qualcomm Incorporated | Systems and methods for rendering multiple levels of detail |
US9990691B2 (en) * | 2016-02-17 | 2018-06-05 | Intel Corporation | Ray compression for efficient processing of graphics data at computing devices |
US10338953B2 (en) * | 2016-03-18 | 2019-07-02 | Intel Corporation | Facilitating execution-aware hybrid preemption for execution of tasks in computing environments |
CN106454098A (zh) * | 2016-10-31 | 2017-02-22 | 深圳晨芯时代科技有限公司 | 一种虚拟现实拍摄及显示的方法、系统 |
EP3482286A1 (en) * | 2016-11-17 | 2019-05-15 | Google LLC | Media rendering with orientation metadata |
CN113918249B (zh) * | 2021-09-14 | 2023-11-21 | 北京房江湖科技有限公司 | 一种背景模糊控件的实现方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266550B1 (en) * | 2008-05-28 | 2012-09-11 | Google Inc. | Parallax panning of mobile device desktop |
CN102956026A (zh) * | 2011-08-26 | 2013-03-06 | 鲍丽燕 | 基于不变矩的Copy-Move型篡改图像盲检测方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008250813A (ja) * | 2007-03-30 | 2008-10-16 | Konami Digital Entertainment:Kk | 画像生成装置、画像処理方法、および、プログラム |
GB2452300B (en) * | 2007-08-30 | 2009-11-04 | Imagination Tech Ltd | Predicated geometry processing in a tile based rendering system |
US8325182B2 (en) * | 2008-12-31 | 2012-12-04 | Intel Corporation | Methods and systems to selectively batch-cull graphics primitives in response to sample cull results |
US9990119B2 (en) * | 2011-12-15 | 2018-06-05 | Blackberry Limited | Apparatus and method pertaining to display orientation |
-
2014
- 2014-12-19 US US14/578,318 patent/US9691122B2/en active Active
-
2015
- 2015-05-20 TW TW104116038A patent/TWI596569B/zh active
- 2015-05-29 CN CN201510287493.6A patent/CN105224165B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8266550B1 (en) * | 2008-05-28 | 2012-09-11 | Google Inc. | Parallax panning of mobile device desktop |
CN102956026A (zh) * | 2011-08-26 | 2013-03-06 | 鲍丽燕 | 基于不变矩的Copy-Move型篡改图像盲检测方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201618030A (zh) | 2016-05-16 |
US9691122B2 (en) | 2017-06-27 |
CN105224165A (zh) | 2016-01-06 |
TWI596569B (zh) | 2017-08-21 |
US20150379762A1 (en) | 2015-12-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10796397B2 (en) | Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices | |
CN106687927B (zh) | 促进在计算装置上的图形处理单元的命令分组的动态并行调度 | |
US11010858B2 (en) | Mechanism to accelerate graphics workloads in a multi-core computing architecture | |
CN105224165B (zh) | 为计算装置上部分模糊图形图像促进动态和有效的预启动裁剪的方法和设备 | |
US10366468B2 (en) | Ray compression for efficient processing of graphics data at computing devices | |
CN108701053B (zh) | 促进针对计算环境中的任务执行的执行感知混合抢占 | |
US9916634B2 (en) | Facilitating efficient graphics command generation and execution for improved graphics performance at computing devices | |
US10565670B2 (en) | Graphics processor register renaming mechanism | |
US20170140570A1 (en) | Facilitating efficeint centralized rendering of viewpoint-agnostic graphics workloads at computing devices | |
US10282804B2 (en) | Facilitating configuration of computing engines based on runtime workload measurements at computing devices | |
US10403024B2 (en) | Optimizing for rendering with clear color | |
US20170212791A1 (en) | Facilitating dynamic thread-safe operations for variable bit-length transactions on computing devices | |
US9589312B2 (en) | Exploiting frame-to-frame coherence for optimizing color buffer clear performance in graphics processing units | |
US10002405B2 (en) | Smart optimization of unused graphics buffer memory in computing environments | |
WO2017200672A1 (en) | Triangle rendering mechanism | |
US10769751B2 (en) | Single input multiple data processing mechanism | |
US9971580B2 (en) | Fast access and use of common data values relating to applications in parallel computing environments |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |