CN107077833B - 用于最后排序架构的高效的帧到帧相干性利用的装置和方法 - Google Patents
用于最后排序架构的高效的帧到帧相干性利用的装置和方法 Download PDFInfo
- Publication number
- CN107077833B CN107077833B CN201580058533.8A CN201580058533A CN107077833B CN 107077833 B CN107077833 B CN 107077833B CN 201580058533 A CN201580058533 A CN 201580058533A CN 107077833 B CN107077833 B CN 107077833B
- Authority
- CN
- China
- Prior art keywords
- frame
- pixels
- blocks
- draw call
- static
- 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
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
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/121—Frame memory handling using a cache memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/122—Tiling
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Image Generation (AREA)
Abstract
描述了一种用于最后排序架构的帧到帧相干性算法的装置和方法。在本发明的一个实施例中,如果像素分块完全被来自一个帧中的静态绘制调用的一个三角形所覆盖,则用此绘制调用的标识符来标记此分块。对于下一帧,如果绘制了相同的静态绘制调用,则将访问相同的分块,并且如果对于所有像素所述绘制调用的片段都通过,则指示分块将包含与前一帧完全相同的像素颜色值。因此,不需要为所述像素分块运行像素着色器,并且可以反而从前一帧中再次使用所述分块的颜色值。
Description
技术领域
本发明总体上涉及计算机处理器领域。更具体地,本发明涉及一种用于最后排序架构的高效的帧到帧相干性利用的装置和方法。
背景技术
通过向每个处理器指派场景中的基元(primitive)子集可使几何结构处理并行。通过向每个处理器指派必要像素计算的一部分可使光栅化并行。渲染涉及计算每个基元对每个像素的影响。基元可以落在实际观看屏幕之上或之外的任何地方。渲染将所述基元排序到屏幕。
图形架构的特征通常在于它们进行排序。排序可以在几何结构处理过程中进行(称为首先排序(sort-first))、在几何结构处理与光栅化之间进行(称为中间排序(sort-middle))、或在光栅化过程中进行(称为最后排序(sort-last))。首先排序意指在原始基元的屏幕空间参数已知之前使原始基元重新分布,中间排序意指使屏幕空间基元重新分布,并且最后排序意指使像素、样本或像素片段重新分布。
图11A和图11B示出了愤怒的小鸟TM(Angry BirdsTM)游戏程序的两个现有技术帧。这两个现有技术帧是相似的,但是即使在图11A中相似的帧刚刚被渲染,当对图11B中的帧进行渲染时,传统的首先排序架构必须从头开始。
附图说明
通过以下结合附图的详细描述可以更好地理解本发明,在附图中:
图1是具有处理器的计算机***的实施例的框图,所述处理器具有一个或多个处理器核多个和图形处理器;
图2是具有一个或多个处理器核、集成存储器控制器、以及集成图形处理器的处理器的一个实施例的框图;
图3是图形处理器的一个实施例的框图,所述图形处理器可以是分立式图形处理单元、或者可以是与多个处理核集成的图形处理器;
图4是用于图形处理器的图形处理引擎的实施例的框图;
图5是图形处理器的另一实施例的框图;
图6是包括处理元件阵列的线程执行逻辑的框图;
图7示出了根据实施例的图形处理器执行单元指令格式;
图8是图形处理器的另一实施例的框图,所述图形处理器包括图形流水线、媒体流水线、显示引擎、线程执行逻辑、以及渲染输出流水线;
图9A是示出根据实施例的图形处理器命令格式的框图;
图9B是示出根据实施例的图形处理器命令序列的框图;
图10示出了根据实施例的用于数据处理***的示例性图形软件架构;
图11A和图11B示出了Angry BirdsTM游戏程序的两个现有技术帧;
图12A和图12B示出了像素分块被一个或多个三角形覆盖的两个场景;
图13示出了根据实施例如何标记像素分块以便再循环;
图14示出了根据实施例的最后排序架构的操作的流程图;并且
图15示出了根据实施例的存在透明和不透明纹理的场景。
具体实施方式
在以下描述中,出于解释的目的,阐述了许多具体的细节以便提供对本发明的以下描述的实施例的彻底理解。然而,对于本领域技术人员而言,可以在不具有这些具体细节中一些细节的情况下实践本发明的实施例将是明显的。在其他情况下,以框图的形式示出公知的结构和设备,以避免模糊本发明实施例的基本原理。
示例性图形处理器架构和数据类型
概述-图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,所述指令集可以包括便于其他指令集的仿真的指令。处理器核107还可以包括其他处理设备,例如数字信号处理器(DSP)。
在一个实施例中,处理器102包括高速缓冲存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。在一个实施例中,高速缓存存储器104在处理器102的各个组件之间共享。在一个实施例中,处理器102还使用外部高速缓存(例如,三级(L3)高速缓存或最后一级高速缓存(LLC))(未示出),所述外部高速缓存可以使用已知的高速缓存相干性技术在处理器核107之间共享。处理器102中另外包括寄存器组106,所述处理器可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器、以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器102的设计。
处理器102耦合至处理器总线110,用于在处理器102与***100内的其他组件之间传输数据信号。***100使用示例性“中枢”***架构,包括存储器控制器中枢116和输入输出(I/O)控制器中枢130。存储器控制器中枢116便于存储器设备与***100的其他组件之间的通信,而I/O控制器中枢(ICH)130经由本地I/O总线提供到I/O设备的连接。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪速存储器设备、或具有合适性能用作处理存储器的一些其他存储器设备。存储器120可以存储当处理器102执行处理时使用的数据122和指令121。存储器控制器中枢116还与可选的外部图形处理器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是具有一个或多个处理器核202A-N、集成存储器控制器214、以及集成图形处理器208的处理器200的一个实施例的框图。处理器200可以包括多达并且包括用虚线框表示的附加核202N。所述核202A-N各自包括一个或多个内部高速缓存单元204A-N。在一个实施例中,每个核还可以访问一个或多个共享高速缓存单元206。
内部高速缓存单元204A-N和共享高速缓存单元206表示处理器200内的高速缓存存储器层级。高速缓存存储器层级可以包括每个核内的至少一级指令数据高速缓存以及一级或多级共享中级高速缓存(如二级(L2)、三级(L3)、四级(L4)或其他级的高速缓存),其中在外部存储器之前的最高级高速缓存被归类为最后一级高速缓存(LLC)。在一个实施例中,高速缓存相干性逻辑维持各高速缓存单元206和204A-N之间的相干性。
处理器200还可以包括一组一个或多个总线控制器单元216和***代理210。所述一个或多个总线控制器单元管理一组***总线,例如一个或多个***组件互连总线(例如,PCI、PCI Express)。***代理210提供用于各个处理器组件的管理功能。在一个实施例中,***代理210包括管理对各个外部存储器设备(未示出)的访问的一个或多个集成存储器控制器214。
在一个实施例中,所述核202A-N中的一者或多者包括用于同时多线程的支持。在这一实施例中,***代理210包括用于在多线程处理过程中协调和操作核202A-N的组件。***代理210可以另外包括功率控制单元(PCU),所述功率控制单元包括用于调节核202A-N和图形处理器208的功率状态的逻辑和组件。
处理器200另外包括用于执行多项图形处理操作的图形处理器208。在一个实施例中,图形处理器208与所述一组共享高速缓存单元206以及包括一个或多个集成存储器控制器214的***代理单元210耦合。在一个实施例中,显示控制器211与图形处理器208耦合以将图形处理器输出驱动到一个或多个耦合的显示器。显示控制器211可以是经由至少一个互连件与所述图形处理器耦合的分开的模块,或者可以集成在图形处理器208或***代理210内。
在一个实施例中,基于环的互连单元212用于耦合处理器200的内部组件,然而可以使用替代的互连单元,例如点对点互连、交换互连或其他技术,包括本领域公知的技术。在一个实施例中,图形处理器208经由I/O链路213与环形互连件212耦合。
示例性I/O链路213表示I/O互连件的多个品种中的至少一种,包括有助于各个处理器组件与诸如eDRAM模块的高性能嵌入式存储器模块218之间的通信的封装I/O互连件。在一个实施例中,每个核202A-N和图形处理器208将嵌入式存储器模块218用作共享的最后一级高速缓存。
在一个实施例中,核202A-N是执行相同指令集架构的同质核。在另一实施例中,核202A-N在指令集架构(ISA)方面是异构的,其中核202A-N中的一者或多者执行第一指令集,而其他核中的至少一者执行所述第一指令集的子集或不同的指令集。
处理器200可以是一个或多个衬底的一部分或者使用多种处理技术中的任何一种(例如互补金属氧化物半导体(CMOS)、双极结/互补金属氧化物半导体(BiCMOS)或N型金属氧化物半导体逻辑(NMOS))来实施在所述一个或多个衬底上。另外,处理器200可以被实施在一个或多个芯片上或实施为具有所示组件(除此之外还具有其他组件)的片上***(SOC)集成电路。
图3是图形处理器的一个实施例的框图,所述图形处理器可以是分立式图形处理单元、或者可以是与多个处理核集成的图形处理器300。在一个实施例中,所述图形处理器经由存储器映射的I/O接口以及经由置于处理器存储器中的命令与所述图形处理器上的多个寄存器进行通信。图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、到一个或多个内部高速缓存、到一个或多个共享外部高速缓存、和/或到***存储器的接口。
图形处理器300还包括用于将显示输出数据驱动到显示设备320的显示控制器302。显示控制器302包括用于显示和组合多层视频或用户接口元件的一个或多个覆盖平面的硬件。在一个实施例中,图形处理器300包括视频编解码器引擎306,所述视频编解码器引擎用于对来自或在以下一个或多个媒体编码格式之间的媒体进行编码、解码或转码,所述媒体编码格式包括但不限于:运动图像专家组(MPEG)格式,例如MPEG-2;高级视频编码(AVC)格式,例如H.264/MPEG-4AVC;以及电影与电视工程师协会(SMPTE)421M/VC-1和联合图像专家组(JPEG)格式,例如JPEG和Motion JPEG(MJPEG)格式。
在一个实施例中,图形处理器300包括块图像传输(BLIT)引擎304,所述BLIT引擎用于执行包括例如位边界块传输的二维(2D)光栅化器操作。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。图形处理引擎310是用于执行包括三维(3D)图形操作和媒体操作的图形操作的计算引擎。
GPE 310包括用于执行3D操作(例如使用作用于3D基元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景)的3D流水线312。3D流水线312包括可编程和固定的功能元件,所述功能元件执行元件内的各种任务和/或向3D/媒体子***315产生执行线程。虽然3D流水线312可以用于执行媒体操作,但是GPE 310的实施例还包括专门用于执行诸如视频后处理和图像增强的媒体操作的媒体流水线316。
在一个实施例中,媒体流水线316包括用于执行一个或多个专门的媒体操作(例如视频解码加速、视频解交织和视频编码加速)来代替或代表视频编解码器引擎306的固定功能或可编程逻辑单元。在一个实施例中,媒体流水线316另外包括用于产生在3D/媒体子***315上执行的线程的线程产生单元。所产生的线程对包括在所述3D/媒体子***中的一个或多个图形执行单元执行用于媒体操作的计算。
3D/媒体子***315包括用于执行由3D流水线312和媒体流水线316产生的线程的逻辑。在一个实施例中,流水线将多个线程执行请求发送到3D/媒体子***315,所述3D/媒体子***包括用于仲裁各个请求和将其分派到可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元阵列。在一个实施例中,3D/媒体子***315包括用于线程指令和数据的一个或多个内部高速缓存。在一个实施例中,所述子***还包括用于在多个线程之间共享数据并存储输出数据的共享存储器,所述共享存储器包括多个寄存器和可寻址存储器。
3D/媒体处理-图4
图4是用于图形处理器的图形处理引擎410的实施例的框图。在一个实施例中,图形处理引擎(GPE)410是图3所示的GPE 310的一个版本。GPE 410包括3D流水线412和媒体流水线416,所述流水线各自可以不同于或类似于图3的3D流水线312和媒体流水线316的实施方式。
在一个实施例中,GPE 410与命令流传送器(command streamer)403耦合,所述命令流传送器向GPE 3D流水线412和媒体流水线416提供命令流。命令流传送器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执行图像处理操作以增强所生成的图像和视频的视觉质量。在一个实施例中,缩放和滤波模块436在将数据提供给执行单元阵列414之前在采样操作过程中对图像和视频数据进行处理。
在一个实施例中,图形处理引擎410包括数据端口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(有时称为核片)为特征的多个可缩放线程执行资源,所述模块化核各自具有多个子核550A-N、560A-N(有时称为核子片)。所述图形处理器可以具有任意数量的图形核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)指令。各个数据元素可以作为打包数据类型存储在寄存器中,并且所述执行单元将基于所述元素的数据大小处理各个元素。例如,当在256位宽的向量上操作时,向量的256个位被存储在寄存器中,并且所述执行单元对作为四个分开的64位打包数据元素(四字(QW))大小数据元素)、八个分开的32位打包数据元素(双字(DW)大小数据元素)、十六个分开的16位打包数据元素(字(W)大小数据元素)、或三十二个分开的8位数据元素(字节(B)大小的数据元素)的向量进行操作。然而,不同的向量宽度和寄存器大小是可能的。
线程执行逻辑600中包括了用于对所述执行单元的线程指令进行高速缓存的一个或多个内部指令高速缓存(例如,606)。在一个实施例中,包括了用于在线程执行过程中对线程数据进行高速缓存的一个或多个数据高速缓存(例如,612)。包括了提供用于3D操作的纹理采样和用于媒体操作的媒体采样的采样器610。在一个实施例中,采样器610包括用于在将采样数据提供给执行单元之前在采样处理过程中对纹理或媒体数据进行处理的专门纹理或媒体采样功能。
在执行过程中,图形和媒体流水线通过线程产生和分派逻辑向线程执行逻辑600发送线程启动请求。线程执行逻辑600包括本地线程分派器604,所述本地线程分派器仲裁来自图形流水线和媒体流水线的线程发起请求、并且在一个或多个执行单元608A-N上实例化所请求的线程。例如,、或者丢弃来自另一处理的一个或多个像几何结构流水线(例如,图5的536)将顶点处理、镶嵌(tessellation)或几何结构处理线程分派到线程执行逻辑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定义所述执行单元要执行的操作。所述执行单元横跨每个操作数的多个数据元素并行地执行每条指令。例如,响应于添加指令,所述执行单元横跨表示纹理元素或图片元素的每个颜色通道执行同步添加操作。默认情况下,所述执行单元横跨操作数的所有数据信道执行每条指令。指令控制字段714使得能够控制某些执行选项,例如信道选择(例如,预测)和数据信道排序(例如,搅和)。对于128位指令710,执行大小字段716限制将并行执行的数据信道的数量。执行大小字段716不可用于64位紧凑指令格式730。
一些执行单元指令具有多达三个操作数,包括两个源操作数src 720、srcl722和一个目的地718。在一个实施例中,所述执行单元支持双目的地指令,其中所述目的地之一是隐含的。数据操作指令可以具有第三源操作数(例如,SRC2 724),其中指令操作码712确定源操作数的数量。指令的最后一个源操作数可以是与所述指令一起传递的立即数(例如,硬编码)值。
在一个实施例中,基于操作码位字段对多个指令进行分组以简化操作码解码740。对于8位操作码,位4、5和6允许所述执行单元确定操作码的类型。所示的精确操作码分组是示例性的。在一个实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,mov、cmp)。移动和逻辑组742共享五个最高有效位(MSB),其中移动指令采用0000xxxxb(例如,0x0x)的形式,并且逻辑指令采用0001xxxxb(例如,0x01)的形式。流控制指令组744(例如,call、jmp)包括采用0010xxxxb(例如0x20)形式的指令。杂项指令组746包括多个指令的混合,所述指令包括采用0011xxxxb(例如,0x30)形式的同步指令(例如,等待发送)。并行数学指令组748包括采用0100xxxxb(例如,0x40)形式的分量算术指令(例如,add、mul)。并行数学组748横跨多个数据通道并行地执行算术运算。向量数学组750包括采用0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。所述向量数学组对向量操作数执行诸如点积计算的算术。
图形流水线-图8
图8是图形处理器的另一实施例的框图,所述图形处理器包括图形流水线820、媒体流水线830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一个实施例中,所述图形处理器是包括一个或多个通用处理核的多核处理***内的图形处理器。通过对一个或多个控制寄存器(未示出)的寄存器写入或通过经由环互连件802发出到图形处理器的命令来控制所述图形处理器。环互连件802将所述图形处理器耦合到其他处理组件,例如其他图形处理器或通用处理器。来自环形互连的命令由命令流传送器803进行解释,所述命令流传送器向图形流水线820或媒体流水线830的多个单独组件提供指令。
命令流传送器803指导顶点获取器805组件的操作,所述顶点获取器组件读取来自存储器的顶点数据并且执行由命令流传送器803提供的顶点处理命令。顶点获取器805将顶点数据提供给顶点着色器807,所述顶点着色器对每个顶点执行坐标空间变换和点亮操作。顶点获取器805和顶点着色器807通过经由线程分派器831将执行线程分派到执行单元852A、852B来执行顶点处理指令。
在一个实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集的向量处理器阵列。执行单元852A、852B具有附接的L1高速缓存851,所述L1高速缓存特定于每个阵列或在阵列之间共享。所述高速缓存可以被配置为数据高速缓存、指令高速缓存、或被分区以包含不同分区中的数据和指令的单个高速缓存。
在一个实施例中,图形流水线820包括用于执行3D对象的硬件加速镶嵌的镶嵌组件。可编程外壳着色器(hull shader)811对所述镶嵌操作进行配置。可编程域着色器817提供镶嵌输出的后端评估。镶嵌器813在外壳着色器811的方向上操作、并且包含用于基于作为输入提供到图形流水线820的粗略几何模型来生成一组详细几何对象的专用逻辑。如果不使用镶嵌,则镶嵌组件811、813、817可以被旁路。
完整的几何结构对象可以由几何结构着色器819经由分派到执行单元852A、852B的一个或多个线程来处理,或者可以直接进行到剪辑器829。所述几何结构着色器对整个几何结构对象进行操作,而不是像在图形流水线的先前阶段对顶点或顶点补丁进行操作。如果镶嵌被禁用,则几何结构着色器819接收来自顶点着色器807的输入。如果镶嵌单元被禁用,则几何结构着色器819可由几何结构着色器程序编程以执行几何结构镶嵌。
在光栅化之前,顶点数据由剪辑器829进行处理,所述剪辑器是具有剪辑和几何结构着色器功能的固定功能剪辑器或可编程剪辑器。在一个实施例中,渲染输出流水线870中的光栅化器873分派多个像素着色器以将所述几何对象转换为它们的每像素表示。在一个实施例中,线程执行逻辑850中包括像素着色器逻辑。
图形引擎具有互连总线、互连结构、或允许在所述图形引擎的主要组件之间传递数据和消息的一些其他互连机制。在一个实施例中,执行单元852A、852B和相关联的高速缓存851、纹理和媒体采样器854、以及纹理/采样器高速缓存858经由数据端口856互连,所述数据端口用于执行存储器访问并且与图形引擎的渲染输出流水线组件通信。在一个实施例中,采样器854,高速缓存851、858以及执行单元852A、852B各自具有分开的存储器访问路径。
在一个实施例中,渲染输出流水线870包含光栅化器和深度测试组件873,所述深度测试组件将基于顶点的对象转换为其相关联的基于像素的表示。在一个实施例中,光栅化器逻辑包括用于执行固定功能三角形和线光栅化的加窗器/掩蔽器。在一个实施例中,相关联的渲染和深度缓冲器高速缓存878、879也是可用的。像素操作组件877对数据进行基于像素的操作,然而在某些情况下,与2D操作(例如,利用混合的位块图像传输)相关联的像素操作由2D引擎841进行、或者在显示时使用覆盖显示平面由显示控制器843替代。在一个实施例中,共享L3高速缓存875可用于所有图形组件,从而允许在不使用主***存储器的情况下共享数据。
图形处理器媒体流水线830包括媒体引擎837和视频前端834。在一个实施例中,视频前端834从命令流传送器803接收多个流水线命令。然而,在一个实施例中,媒体流水线830包括分开的命令流传送器。在将命令发送到媒体引擎837之前,视频前端834对媒体命令进行处理。在一个实施例中,所述媒体引擎包括线程产生功能,以经由线程分派器831产生用于分派到线程执行逻辑850的线程。
在一个实施例中,所述图形引擎包括显示引擎840。在一个实施例中,显示引擎840在图形处理器的外部、并且经由环连接件802或某些其他互连总线或结构与图形处理器耦合。显示引擎840包括2D引擎841和显示控制器843。显示引擎840包含能独立于3D流水线操作的专用逻辑。显示控制器843与显示设备(未示出)耦合,所述显示设备可以是如膝上型计算机中的***集成显示设备、或经由显示设备连接器附接的外部显示设备。
图形流水线820和媒体流水线830可配置为基于多个图形和媒体编程接口来执行操作,并且不特定于任何一个应用编程接口(API)。在一个实施例中,用于图形处理器的驱动程序软件将特定于具体图形或媒体库的API调用转换为可由图形处理器处理的命令。在多个不同实施例中,为Khronos集团所支持的开放图形库(OpenGL)和开放式计算语言(OpenCL)、来自Microsoft公司的Direct3D库提供支持,或者在一个实施例中为OpenGL和D3D两者提供支持。还可以为开源计算机视觉库(OpenCV)提供支持。如果可以将未来API的流水线映射到图形处理器的流水线,则还将支持具有兼容3D流水线的未来API。
图形流水线编程-图9A和图9B
图9A是示出根据实施例的图形处理器命令格式的框图,并且图9B是示出根据实施例的图形处理器命令序列的框图。图9A中的实线框示出了一般包括在图形命令中的组件,而虚线包括任选的或仅包括在所述图形命令的子集中的组件。图9A的示例性图形处理器命令格式900包括用于标识所述命令的目标客户端902、命令操作代码(操作码)904、以及用于所述命令的相关数据906的数据字段。一些命令中还包括子操作码905和命令大小908。
客户端902指定对所述命令数据进行处理的图形设备的客户端单元。在一个实施例中,图形处理器命令解析器检查每个命令的客户端字段以调节对所述命令的进一步处理并将命令数据路由到适当的客户端单元。在一个实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、以及媒体单元。每个客户端单元都具有对所述命令进行处理的对应处理流水线。一旦命令被客户端单元接收,客户端单元读取操作码904和子操作码905(如果有的话),以确定要执行的操作。所述客户端单元使用所述命令的数据906字段中的信息来执行所述命令。对于某些命令,预期显式命令大小908指定所述命令的大小。在一个实施例中,命令解析器基于命令操作码自动地确定所述命令中的至少一些命令的大小。在一个实施例中,多个命令通过多个双字对齐。
图9B中的流程图示出了样本命令序列910。在一个实施例中,以所述图形处理器的实施例为特征的数据处理***的软件或固件使用了所示的命令序列的版本,以建立、执行和终止一组图形操作。为了示例性目的示出和描述了样本命令序列,然而实施例不限于这些命令或此命令序列。此外,所述命令可以作为命令序列中的一批命令发出,使得图形处理器将以至少部分并发的方式对所述命令序列进行处理。
样本命令序列910可以以流水线转储清除(flush)命令912开始,以使任何活动的图形流水线完成流水线的当前待决命令。在一个实施例中,3D流水线922和媒体流水线924不并发地操作。执行流水线转储清除以使活动的图形流水线完成任何待决命令。响应于流水线转储清除,用于所述图形处理器的命令解析器将暂停命令处理,直到活动的绘制引擎完成待决操作并且使相关的读取高速缓存无效。任选地,标记为“脏”的渲染高速缓存中的任何数据都可以被转储清除到存储器。流水线转储清除命令912可以用于流水线同步或者在将图形处理器置于低功率状态之前使用。
当命令序列要求图形处理器明确地在流水线之间切换时,使用流水线选择命令913。在发出流水线命令之前,流水线选择命令913在执行上下文中只需要一次,除非所述上下文是为两条流水线发出命令。在一个实施例中,紧接在通过流水线选择命令913进行流水线切换之前需要流水线转储清除命令912。
流水线控制命令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排好队,则媒体流水线924通过执行944命令或等效的执行事件(例如,寄存器写入)来触发。然后可以通过由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可以是来自公司的操作***、专有的UNIX类操作***、或者使用Linux内核变体的开源UNIX类操作***。当Direct3D API正在使用时,操作***1020使用前端着色器编译器1024以将HLSL中的任何着色器指令1012编译成较低级的着色器语言。编译可能是即时编译,或者所述应用可以执行共享预编译。在一个实施例中,在3D图形应用1010的编译过程中,高级着色器被编译成低级着色器。
用户模式图形驱动器1026可以包含用于将着色器指令1012转换成硬件特定的表示的后端着色器编译器1027。当OpenGL API正在使用时,GLSL高级语言的着色器指令1012被传递给用户模式图形驱动程序1026进行编译。用户模式图形驱动器使用操作***内核模式功能1028与内核模式图形驱动程序1029进行通信。内核模式图形驱动器1029与图形处理器1032进行通信以分派命令和指令。
在本文所描述的各操作或功能程度上,它们可以被描述或定义为硬件电路、软件代码、指令、配置和/或数据。可以以硬件逻辑或可直接执行软件(“对象”或“可执行”形式)、源代码、经设计用于在图形引擎上执行的高级着色器代码、或指令集中的用于特定处理器或图形核的低级汇编语言代码来实施内容。本文中所描述的实施例的软件内容可以经由一种其上存储有内容的制品或经由一种操作通信接口经由通信接口发送数据的方法被提供。
一种非瞬态机器可读存储介质可以使机器执行所描述的功能或操作,并且包括存储具有机器(例如,计算设备、电子***等)可存取形式的信息的任何机制,如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光存储介质、闪存设备等)。通信接口包括与硬连线、无线、光学等介质中的任一者交互的任何机制,所述机制与诸如存储器总线接口、处理器总线接口、因特网连接件、磁盘控制器等的另一设备进行通信。通过提供配置参数或发送信号来配置所述通信接口,以便制备用于提供描述软件内容的数据信号的通信接口。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
所描述的各组件可以是用于执行所描述的操作或功能的装置。本文所描述的每个组件包括软件、硬件或它们的组合。这些组件可以被实现为软件模块、硬件模块、专用硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路等。除了本文所描述的内容之外,可以对所公开的实施例和实施方式进行各种修改,而不脱离它们的范围。因此,本文的说明和示例应在说明性的而非限制性意义上被解释。本发明的范围应当仅参照以下权利要求书来衡量。
用于最后排序架构的高效的帧到帧相干性利用的装置和方法
在本发明的一个实施例中,用于最后排序架构的帧到帧相干性算法能够有效地处理绘制调用并且减少重复处理量。这种技术具有省电优势,特别是对于移动设备。
在本发明的一个实施例中,所述逻辑按如下方式工作:如果像素分块(分块)完全被来自一个帧中的静态绘制调用的一个三角形所覆盖,则所述分块用所述绘制调用的标识符标记。对于下一帧,如果绘制相同的静态绘制调用,则访问相同的分块,并且如果对于所有像素所述绘制调用的片段都通过,则指示分块包含与前一帧完全相同的像素颜色值。因此,不需要为所述像素分块运行像素着色器,并且可以反而从前一帧中再次使用所述分块的颜色值。
图12A示出了所述算法的一个场景,其中像素分块完全被来自静态绘制调用的一个三角形所覆盖。在本发明的一个实施例中,像素分块1205用4×4矩形像素区域示出。在本发明的其他实施例中,像素分块可以具有不同的尺寸,例如但不限于16×16和32×32像素。在本发明的一个实施例中,静态绘制调用绘制完全覆盖像素分块1205的三角形1210。
在本发明的一个实施例中,如果使用深度缓冲,则所述算法要求深度缓冲器保持最新。相关领域的普通技术人员应熟悉深度缓冲,并且在此不再赘述。在本发明的一个实施例中,将来自一个帧的颜色值再次用于下一帧被表示为再循环,并且允许用于静态的绘制调用。在本发明的一个实施例中,静态绘制调用从一帧到下一帧完全相同。静态绘制调用包括但不限于具有相同输入、状态、均匀度、纹理、几何结构、整个状态向量和其他参数中的一者或多者的两个绘制调用。在本发明的一个实施例中,在应用编程接口中检测静态绘制调用。在本发明的另一实施例中,静态绘制调用由用户检测或标识。
在本发明的另一实施例中,所述帧到帧相干性算法可以被扩展以覆盖其中像素分块被静态绘制调用的一个或多个三角形覆盖的场景。图12B示出了所述算法的一种场景,其中像素分块完全被两个三角形1215和1225所覆盖。在本发明的一个实施例中,像素分块1220类似地用4×4矩形像素区域示出。在本发明的一个实施例中,静态绘制调用绘制完全覆盖像素分块1220的两个三角形1215和1225。在本发明的一个实施例中,为了表示像素分块1220中的哪个像素被覆盖,使用了与像素分块1220中的每个像素(或样本)相关联的覆盖掩码。
在本发明的一个实施例中,所述图形处理器存储每个分块的标识符(ID)。例如,在本发明的一个实施例中,所述标识符是每W×H分块的N位数,例如每16×16像素分块的8位数。所述算法不受所述分块的尺寸的限制,并且在本发明的其他实施例中,可以使用每个分块的像素的任何配置。在本发明的一个实施例中,用于所述N位数的一个位组合放在一边以用于指示所述再循环是不可能的。例如,在一个实施例中,数字(2N-1)用于指示分块不可再循环。
在本发明的一个实施例中,如果所述分块完全被静态绘制调用的一个或多个三角形覆盖,则所述分块的标识被设置为所述静态绘制调用的标识符。当观察到特定像素分块的标识符与所述静态绘制调用的标识符相同时,指示可以再循环特定分块的颜色。相关领域的普通技术人员将容易地理解,可以使用指示所述分块与静态绘制调整相关联或联系的其他手段,并且在此不再赘述。
图13示出了根据本发明的实施例如何标记像素分块以便再循环。在步骤1302中,图形处理器检查特定像素分块是否完全被静态绘制调用的一个或多个三角形覆盖。在本发明的一个实施例中,如果否,则在步骤1308中,像素分块的标识符(ID分块)被设置为(2N-1),以指示所述分块是不可再循环的。在本发明的其他实施例中,像素分块的标识符(ID分块)可以被设置为不同的数字,以指示所述分块是不可再循环的。
如果所述特定像素分块被静态绘制调用的一个或多个三角形完全覆盖,则在步骤1304中,图形处理器检查所有片段是否通过深度测试。如果否,则在步骤1308中,像素分块的标识符(ID分块)被设置为(2N-1),以指示所述分块是不可再循环的。如果是,则在步骤1306中,像素分块的标识符(ID分块)被设置为所述静态绘制调用的标识符(IDDC),以指示所述分块是可再循环的。在本发明的一个实施例中,如果所述分块的标识符与当前绘制到所述分块的静态绘制调用的标识符完全相同,则可以进行再循环。
图13中的流程被展示用于特定像素分块,并且在本发明的一个实施例中所述流程被应用于所有分块。在本发明的一个实施例中,图13中的流程还适用于通过深度测试的片段,即适用于可见的片段。
图14示出了根据实施例的最后排序架构的操作的流程图。图像首先通过光栅化器阶段1402。在深度缓冲器阶段1404中存储深度值。在本发明的一个实施例中,在覆盖掩码阶段1406中更新每个像素分块的覆盖掩码。当扩展所述算法以检测多个三角形一起是否覆盖整个分块时,使用所述覆盖掩码,如图12所示。
在本发明的一个实施例中,覆盖掩模的小的高速缓存用于此目的。当将静态绘制调用渲染到分块时,在所述高速缓存中分配记录(可能通过驱逐另一记录),并且存储正在处理所述记录的绘制调用。例如,在本发明的一个实施例中,如果分块包含16×16像素或样本,则每个样本一位存储在高速缓存记录中,并且所述一位是位掩码或覆盖掩码。
当分配发生时,所述覆盖掩码被设置为全零。在本发明的一个实施例中,当所述绘制调用的三角形已经覆写当前分块中的样本时,所述覆盖掩码中的对应位被设置为1。如果所述覆盖掩码被全部设置为l,则表示静态绘制调用完全覆盖所述分块,并且所述分块的标识符被设置为所述静态绘制调用的标识符。在本发明的一个实施例中,来自所述高速缓存的驱逐策略是用于驱逐最近最近(LRU)使用的高速缓存记录。在本发明的另一实施例中,来自所述高速缓存的驱逐策略是选择M个最近最少使用的高速缓存记录、并且在其覆盖掩码中选择最少位设置为1的记录。
在步骤1408中,对于下一帧,检查所述分块的标识符(ID分块)是否被设置为所述静态绘制调用的标识符(IDDC)。如果是,步骤1410中的流程可以将来自前一帧的用于所述分块的颜色再循环。如果否,则步骤1412中的流程转到像素着色器,以生成在颜色无法再循环时用于分块的颜色。在步骤1414中,流程转到用于所述分块的混合阶段。
在本发明的一个实施例中,在图14的流程中,当替换所述分块的所有颜色时,这意味着可以混合被启用,但是需要替换所有像素颜色(例如,当α等于1时),以使算法工作。
图15示出了在本发明的一个实施例中存在透明和不透明纹理的场景。例如,在一个实施例中,所述图像被假设为具有透明纹理,即对于没有云的背景是透明的并且对于在存在云的背景是不透明的。分块1504中的颜色可以使用图14中的流程再循环,但是分块1502中的颜色由于包括透明和不透明的纹理而不能被再循环。可以将图14中的流程扩展以通过对于背景绘制调用和云绘制调用两者来每个分块存储两个静态绘图调用使分块1502中的颜色再循环。相关领域的普通技术人员将容易地理解如何修改图14的流程,并且在此不再赘述。
在本发明的一个实施例中,本文描述的算法需要启用深度缓冲。在本发明的另一实施例中,当深度缓冲被禁用时仍然可以使用所述算法。在该实施例中,假设所有片段都通过深度测试(图13中的步骤1304),即可以跳过深度测试。在具有z形预通过(z-prepass)的又一实施例中,利用所描述的算法,再循环是更有效的,因为只有可见表面将计算像素着色。在本实施例的一个实施例中,所描述的算法可以用于任何渲染目标。在本发明的另一实施例中,当支持部分帧更新(例如扩展显示端口(eDP)版本1.4/1.5)时,对于发送到显示器的最终帧缓冲器,经再循环的分块不被再发送到显示器,因为可以检测这些前后帧相同的再循环分块。
本发明的实施例可以包括上面已经描述的各个步骤。这些步骤可以体现在可用于使通用或专用处理器执行这些步骤的机器可执行指令中。可替代地,这些步骤可以由含有用于执行这些步骤的硬件连线的逻辑的特定硬件组件执行,或者由程序计算机组件和自定义硬件组件的任意组合执行。
如本文所述,指令可以是指硬件的具体配置,例如被配置为用于执行某些操作或具有存储在非瞬态计算机可读介质中实施的存储器中的预定功能或软件指令的专用集成电路(ASIC)。因此,可以使用在一个或多个电子设备(例如,终端站、网络元件等)上存储和执行的代码和数据来实现这些图中所示的技术。这样的电子设备使用计算机机器可读介质(例如,非瞬态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪速存储器设备;相变存储器)以及瞬态计算机机器可读通信介质(例如,电、光、声或其他形式的传播信号—例如载波、红外信号、数字信号等))来(在内部和/或通过网络与其他电子设备)存储和传达代码和数据。此外,这样的电子设备典型地包括耦合到一个或多个其他组件(例如,一个或多个存储设备(非瞬态机器可读存储介质)、用户输入/输出设备(例如键盘、触摸屏和/或显示器)、以及网络连接件)的一组一个或多个处理器。所述一组处理器和其他组件的耦合典型地通过一个或多个总线和桥(也称为总线控制器)。存储设备和携带网络流量的信号分别代表一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子设备的存储设备典型地存储用于在所述电子设备的所述一组一个或多个处理器上执行的代码和/或数据。当然,可以使用软件、固件和/或硬件的不同组合来实现本发明的实施例的一个或多个部分。在本文整个详细描述中,出于解释的目的,阐述了许多具体的细节以便提供对本发明的彻底理解。然而,对于本领域技术人员而言,可以在不具有这些具体细节中的一些细节的情况下实践本发明将是明显的。在某些情况下,为了避免模糊本发明的主题,未详细描述公知的结构和功能。因此,本发明的范围和精神应根据以下权利要求来确定。
Claims (19)
1.一种用于最后排序架构的高效的帧到帧相干性利用的方法,包括:
存储与像素分块相关联的标识符;
判定所述像素分块是否完全由第一帧中的第一静态绘制调用覆盖;
响应于确定了所述像素分块完全由来自所述第一帧中的所述第一静态绘制调用的三角形覆盖而将与所述像素分块相关联的所述标识符设置为与所述第一静态绘制调用相关联的标识符;
在第二帧中判定第二静态绘制调用的标识符是否匹配与所述像素分块相关联的所述标识符;以及
将所述第一帧中的所述像素分块的像素颜色值再次用于所述第二帧中的所述像素分块的所述像素颜色值。
2.如权利要求1所述的方法,其中,判定所述像素分块是否完全由所述第一帧中的所述第一静态绘制调用覆盖包括:判定所述像素分块是否完全由来自所述第一帧中的第一静态绘制调用的三角形覆盖。
3.如权利要求2所述的方法,进一步包括:
判定所述第一静态绘制调用的所有片段是否都通过深度测试;以及
响应于确定了所述像素分块完全由所述第一帧中的所述第一静态绘制调用覆盖并且确定了所述第一静态绘制调用的所有片段都通过所述深度测试而将与所述像素分块相关联的所述标识符设置为与所述第一静态绘制调用相关联的所述标识符。
4.如权利要求3所述的方法,其中,与所述像素分块相关联的所述标识符包括N位数,并且其中,所述N位数包括用于指示将所述第一帧中的所述像素分块的所述像素颜色值再次用于所述第二帧中的所述像素分块的所述像素颜色值是不可能的一个位组合。
5.如权利要求4所述的方法,其中,所述一个位组合是2N-1,并且其中,所述第一静态绘制调用和所述第二静态绘制调用具有相同的输入、状态、均匀度、纹理、几何结构和状态向量中的一者或多者并且其中,所述第一静态绘制调用和所述第二静态绘制调用是由用户标记的。
6.至少一种计算机可读存储介质,包括一组指令,所述一组指令当被计算设备执行时使所述计算设备:
初始化包括多个位的覆盖掩码,每个位与分块的多个样本中的对应的一个样本相关联;
对于第一帧中的第一静态绘制调用的一个或多个三角形中的每一者,当所述对应的一个样本已被覆写时,对与所述对应的一个样本相关联的所述位进行置位;
当所述覆盖掩码的所有位都已置位时,将所述分块的标识符设置为所述第一静态绘制调用的标识符;
在第二帧中判定第二静态绘制调用的标识符是否匹配所述分块的所述标识符;以及
将所述第一帧中的所述分块的像素颜色值再次用于所述第二帧中的所述分块的所述像素颜色值。
7.如权利要求6所述的介质,其中,所述覆盖掩码被存储在包括多个高速缓存行的高速缓存中,并且其中,所述高速缓存的驱逐策略包括:驱逐最近最少使用的高速缓存行;或者驱逐包含具有最少数量的被置位的位的覆盖掩码的高速缓存行。
8.如权利要求7所述的介质,进一步包括:
判定所述分块调用的所有样本是否都通过深度测试;以及
当所述覆盖掩码的所有位都已置位时并且当所述分块调用的所有样本都通过深度测试时,将所述分块的所述标识符设置为所述第一静态绘制调用的标识符。
9.如权利要求8所述的介质,其中,所述分块的所述标识符包括N位数,并且其中,所述N位数包括用于指示将所述第一帧中的所述分块的像素颜色值再次用于所述第二帧中的所述分块的所述像素颜色值是不可能的一个位组合。
10.如权利要求9所述的介质,其中,所述一个位组合是2N-1,并且其中,所述第一静态绘制调用和所述第二静态绘制调用具有相同的输入、状态、均匀度、纹理、几何结构和状态向量中的一者或多者,并且其中,所述第一静态绘制调用和所述第二静态绘制调用是由用户标记的。
11.一种用于最后排序架构的高效的帧到帧相干性利用的装置,包括:
图形处理引擎,所述图形处理引擎用于:
存储与像素分块相关联的标识符;
判定所述像素分块是否完全由第一帧中的第一静态绘制调用覆盖;
响应于确定了所述像素分块完全由来自所述第一帧中的所述第一静态绘制调用的三角形覆盖而将与所述像素分块相关联的所述标识符设置为与所述第一静态绘制调用相关联的标识符;
在第二帧中判定第二静态绘制调用的标识符是否匹配与所述像素分块相关联的所述标识符;以及
将所述第一帧中的所述像素分块的像素颜色值再次用于所述第二帧中的所述像素分块的所述像素颜色值。
12.如权利要求11所述的装置,其中,所述图形处理引擎进一步用于:
判定所述第一静态绘制调用的所有片段是否都通过深度测试;以及
响应于确定了所述像素分块完全由所述第一帧中的所述第一静态绘制调用覆盖并且确定了所述第一静态绘制调用的所有片段都通过所述深度测试而将与所述像素分块相关联的所述标识符设置为与所述第一静态绘制调用相关联的所述标识符。
13.如权利要求12所述的装置,其中,所述分块的标识符包括N位数,并且其中,所述N位数包括用于指示将所述第一帧中的所述像素分块的所述像素颜色值再次用于所述第二帧中的所述像素分块的所述像素颜色值是不可能的一个位组合。
14.至少一种计算机可读存储介质,包括一组指令,所述一组指令当被计算设备执行时使所述计算设备执行如权利要求1-5中的任一项所述的方法。
15.一种用于最后排序架构的高效的帧到帧相干性利用的设备,包括:
用于存储与像素分块相关联的标识符的装置;
用于判定所述像素分块是否完全由第一帧中的第一静态绘制调用覆盖的装置;
用于响应于确定了所述像素分块完全由来自所述第一帧中的所述第一静态绘制调用的三角形覆盖而将与所述像素分块相关联的所述标识符设置为与所述第一静态绘制调用相关联的标识符的装置;
用于在第二帧中判定第二静态绘制调用的标识符是否匹配与所述像素分块相关联的所述标识符的装置;以及
用于将所述第一帧中的所述像素分块的像素颜色值再次用于所述第二帧中的所述像素分块的所述像素颜色值的装置。
16.如权利要求15所述的设备,其中,用于判定所述像素分块是否完全由所述第一帧中的所述第一静态绘制调用覆盖的装置包括:用于判定所述像素分块是否完全由来自所述第一帧中的第一静态绘制调用的三角形覆盖的装置。
17.如权利要求16所述的设备,进一步包括:
用于判定所述第一静态绘制调用的所有片段是否都通过深度测试的装置;以及
用于响应于确定了所述像素分块完全由所述第一帧中的所述第一静态绘制调用覆盖并且确定了所述第一静态绘制调用的所有片段都通过所述深度测试而将与所述像素分块相关联的所述标识符设置为与所述第一静态绘制调用相关联的所述标识符的装置。
18.如权利要求17所述的设备,其中,与所述像素分块相关联的所述标识符包括N位数,并且其中,所述N位数包括用于指示将所述第一帧中的所述像素分块的所述像素颜色值再次用于所述第二帧中的所述像素分块的所述像素颜色值是不可能的一个位组合。
19.如权利要求18所述的设备,其中,所述一个位组合是2N-1,并且其中,所述第一静态绘制调用和所述第二静态绘制调用具有相同的输入、状态、均匀度、纹理、几何结构和状态向量中的一者或多者并且其中,所述第一静态绘制调用和所述第二静态绘制调用是由用户标记的。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/549,430 | 2014-11-20 | ||
US14/549,430 US9799091B2 (en) | 2014-11-20 | 2014-11-20 | Apparatus and method for efficient frame-to-frame coherency exploitation for sort-last architectures |
PCT/US2015/055290 WO2016081097A1 (en) | 2014-11-20 | 2015-10-13 | Apparatus and method for efficient frame-to-frame coherency exploitation for sort-last architectures |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107077833A CN107077833A (zh) | 2017-08-18 |
CN107077833B true CN107077833B (zh) | 2019-09-03 |
Family
ID=56010699
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580058533.8A Expired - Fee Related CN107077833B (zh) | 2014-11-20 | 2015-10-13 | 用于最后排序架构的高效的帧到帧相干性利用的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9799091B2 (zh) |
EP (1) | EP3221850B1 (zh) |
CN (1) | CN107077833B (zh) |
WO (1) | WO2016081097A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2532495B (en) * | 2014-11-21 | 2018-05-02 | Advanced Risc Mach Ltd | Graphics processing systems |
US10127707B2 (en) | 2016-06-27 | 2018-11-13 | Intel Corporation | Discard mechanism for tile-based rendering |
CN108830920B (zh) * | 2018-06-28 | 2022-06-21 | 武汉斗鱼网络科技有限公司 | 一种创建常量缓冲区方法、装置及可读存储介质 |
GB2579114B (en) | 2019-05-31 | 2021-04-21 | Imagination Tech Ltd | Controlling rendering operations |
GB2579113B (en) * | 2019-05-31 | 2021-04-21 | Imagination Tech Ltd | Rendering optimisation |
CN110475128B (zh) * | 2019-08-02 | 2021-09-28 | 视联动力信息技术股份有限公司 | 一种视频转码方法、装置、电子设备和存储介质 |
US11670035B2 (en) * | 2020-03-15 | 2023-06-06 | Intel Corporation | Apparatus and method for performing non-local means filtering using motion estimation circuitry of a graphics processor |
WO2022110084A1 (zh) * | 2020-11-28 | 2022-06-02 | 华为技术有限公司 | 像素处理方法以及图形处理器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1881456A1 (en) * | 2006-07-20 | 2008-01-23 | Samsung Electronics Co., Ltd. | Method and system for tile binning using half-plane edge function |
CN101986710A (zh) * | 2010-11-03 | 2011-03-16 | 北京航空航天大学 | 一种基于sort-last体系结构的并行绘制*** |
CN103632337A (zh) * | 2012-05-07 | 2014-03-12 | 英特尔公司 | 实时的顺序无关透明渲染 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636215B1 (en) * | 1998-07-22 | 2003-10-21 | Nvidia Corporation | Hardware-assisted z-pyramid creation for host-based occlusion culling |
US6753878B1 (en) * | 1999-03-08 | 2004-06-22 | Hewlett-Packard Development Company, L.P. | Parallel pipelined merge engines |
US6556203B1 (en) * | 2000-06-30 | 2003-04-29 | Intel Corporation | Tile-based digital differential analyzer rasterization |
US6714196B2 (en) * | 2000-08-18 | 2004-03-30 | Hewlett-Packard Development Company L.P | Method and apparatus for tiled polygon traversal |
US6768492B2 (en) * | 2000-10-06 | 2004-07-27 | Microsoft Corporation | Texture tiling with adjacency information |
KR101140460B1 (ko) | 2004-05-24 | 2012-04-30 | 에스티 에릭슨 에스에이 | 그래픽 시스템, 꼭지점 데이터의 타일 기반 변환 방법 및 컴퓨터 판독가능한 저장 매체 |
US7167171B2 (en) | 2004-06-29 | 2007-01-23 | Intel Corporation | Methods and apparatuses for a polygon binning process for rendering |
GB0524804D0 (en) * | 2005-12-05 | 2006-01-11 | Falanx Microsystems As | Method of and apparatus for processing graphics |
US8477134B1 (en) * | 2006-06-30 | 2013-07-02 | Nvidia Corporation | Conservative triage of polygon status using low precision edge evaluation and high precision edge evaluation |
KR100793990B1 (ko) * | 2006-09-18 | 2008-01-16 | 삼성전자주식회사 | 타일 기반 3차원 렌더링에서의 조기 z 테스트 방법 및시스템 |
WO2008055204A2 (en) * | 2006-10-31 | 2008-05-08 | Dotted Pair, Inc. | System and method for interacting with item catalogs |
US8243069B1 (en) * | 2006-11-03 | 2012-08-14 | Nvidia Corporation | Late Z testing for multiple render targets |
US8448067B2 (en) * | 2006-12-07 | 2013-05-21 | Sony Computer Entertainment America, LLC | Graphics command management tool and methods for analyzing performance for command changes before application modification |
US8059119B2 (en) * | 2007-12-05 | 2011-11-15 | Stmicroelectronics S.R.L. | Method for detecting border tiles or border pixels of a primitive for tile-based rendering |
US9697641B2 (en) * | 2009-10-15 | 2017-07-04 | Nvidia Corporation | Alpha-to-coverage using virtual samples |
KR101661931B1 (ko) | 2010-02-12 | 2016-10-10 | 삼성전자주식회사 | 3차원 그래픽스 랜더링 장치 및 그 방법 |
US8659597B2 (en) | 2010-09-27 | 2014-02-25 | Intel Corporation | Multi-view ray tracing using edge detection and shader reuse |
GB201103698D0 (en) * | 2011-03-03 | 2011-04-20 | Advanced Risc Mach Ltd | Graphics processing |
KR102018699B1 (ko) | 2011-11-09 | 2019-09-06 | 삼성전자주식회사 | 타일 비닝 장치 및 방법 |
US9111392B2 (en) * | 2012-09-27 | 2015-08-18 | Intel Corporation | Stochastic depth buffer compression using generalized plane encoding |
US9336561B2 (en) | 2012-12-19 | 2016-05-10 | Intel Corporation | Color buffer caching |
US9311743B2 (en) * | 2013-10-23 | 2016-04-12 | Qualcomm Incorporated | Selectively merging partially-covered tiles to perform hierarchical z-culling |
US9940686B2 (en) * | 2014-05-14 | 2018-04-10 | Intel Corporation | Exploiting frame to frame coherency in a sort-middle architecture |
-
2014
- 2014-11-20 US US14/549,430 patent/US9799091B2/en active Active
-
2015
- 2015-10-13 EP EP15861276.2A patent/EP3221850B1/en active Active
- 2015-10-13 WO PCT/US2015/055290 patent/WO2016081097A1/en active Application Filing
- 2015-10-13 CN CN201580058533.8A patent/CN107077833B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1881456A1 (en) * | 2006-07-20 | 2008-01-23 | Samsung Electronics Co., Ltd. | Method and system for tile binning using half-plane edge function |
CN101986710A (zh) * | 2010-11-03 | 2011-03-16 | 北京航空航天大学 | 一种基于sort-last体系结构的并行绘制*** |
CN103632337A (zh) * | 2012-05-07 | 2014-03-12 | 英特尔公司 | 实时的顺序无关透明渲染 |
Also Published As
Publication number | Publication date |
---|---|
EP3221850A4 (en) | 2018-12-05 |
WO2016081097A1 (en) | 2016-05-26 |
US20160148339A1 (en) | 2016-05-26 |
CN107077833A (zh) | 2017-08-18 |
EP3221850B1 (en) | 2019-12-18 |
EP3221850A1 (en) | 2017-09-27 |
US9799091B2 (en) | 2017-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107077833B (zh) | 用于最后排序架构的高效的帧到帧相干性利用的装置和方法 | |
CN104978760B (zh) | 映射多速率着色到单片程序 | |
US10504275B2 (en) | Methods and apparatus for more efficient ray tracing of instanced geometry | |
US10262456B2 (en) | Method and apparatus for extracting and using path shading coherence in a ray tracing architecture | |
CN108694738A (zh) | 去耦的多层渲染频率 | |
CN106575449A (zh) | 仅位置着色管线 | |
CN109564700A (zh) | 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化 | |
CN107077828A (zh) | 对颜色查找表的大小进行压缩 | |
CN109564695A (zh) | 用于高效3d图形流水线的装置和方法 | |
CN109643464A (zh) | 用于高效深度预过程的方法和装置 | |
CN106575431A (zh) | 用于高度高效的图形处理单元(gpu)执行模型的方法和装置 | |
CN110136223A (zh) | 使用三角形的属性的加权平均来合并粗像素着色的片段 | |
CN109923519A (zh) | 用于加速多核计算架构中的图形工作负荷的机制 | |
CN110956687A (zh) | 用于光线追踪重度实例化场景的跨实例从前到后遍历的装置和方法 | |
CN108694685A (zh) | 改进的图形处理器微架构内的多分辨率图像平面渲染 | |
CN108734630A (zh) | 线程串行化、分布式并行编程、和运行时间扩展 | |
CN107004280A (zh) | 用于高效的纹理压缩的方法和装置 | |
CN109643463A (zh) | 预设图形处理器内的分级式深度逻辑 | |
WO2016153709A1 (en) | Edge-based coverage mask compression | |
CN107004293A (zh) | 仅位置流水线中的宽松拣分 | |
CN106687924A (zh) | 用于基于当前状态来更新着色器程序的方法和装置 | |
CN106662999A (zh) | 用于simd结构化分支的方法和装置 | |
CN107004294A (zh) | 用于高吞吐量栅格器的方法和装置 | |
CN108780579A (zh) | 使用压缩数据的每样本msaa渲染 | |
CN106575440A (zh) | 恒定缓冲器大小多采样抗混叠深度压缩 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190903 Termination date: 20211013 |