CN102103512B - 编译可编程剔除单元 - Google Patents

编译可编程剔除单元 Download PDF

Info

Publication number
CN102103512B
CN102103512B CN201010620058.8A CN201010620058A CN102103512B CN 102103512 B CN102103512 B CN 102103512B CN 201010620058 A CN201010620058 A CN 201010620058A CN 102103512 B CN102103512 B CN 102103512B
Authority
CN
China
Prior art keywords
boundary
compiling
interval
hypothesis
code
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
Application number
CN201010620058.8A
Other languages
English (en)
Other versions
CN102103512A (zh
Inventor
R·M·托特
F·P·克莱伯格
J·N·哈塞尔格林
C·J·穆克伯格
T·G·阿凯奈-莫勒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN102103512A publication Critical patent/CN102103512A/zh
Application granted granted Critical
Publication of CN102103512B publication Critical patent/CN102103512B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

在编译期间,若有可能则计算可编程剔除单元的区间界限。对于每个变量,在编译期间计算区间界限,且这些界限连同其他元数据一起被用于生成优化剔除程序。若不可能,则可作出假设且该假设用于编译代码。在一些实施例中,若该假设证明是无效的,则可作出新假设并且可重新编译代码。

Description

编译可编程剔除单元
背景技术
本发明一般涉及数字表示的图形,尤其涉及改善生成数字表示的图形的性能。
在20世纪80年代和90年代,出现了带有图形加速器的用于计算机和游戏控制台的显示适配器,从而在图形生成中使中央处理单元(CPU)卸载。最初,显示适配器提供2D图形的加速,但最终它们也包括支持加速3D图形。现代显示适配器使用通常称为图形处理单元(GPU)的处理单元。
由于3D图形的复杂性,GPU将其大量处理能力用于执行与3D图形有关的计算。总是有需要更高帧率(每秒呈现的屏幕图像)、更高分辨率和更高图像质量的新应用和游戏,从而产生应当在尽可能短的时间里呈现每个屏幕图像的要求。换言之,提高性能总是重要的。
可通过实现更高的时钟速度、管线化、或利用并行计算以提高GPU的处理能力来提高性能。然而,这往往产生更多热量,从而冷却GPU而产生更多功耗和更高风扇噪音。此外,对每个GPU的时钟速度是有限制的。
附图简述
图1是示出根据本发明实施例的在显示适配器中不同实体如何交互的框图。
图2是示出图1的显示适配器中使用的不同程序之间的关系的示意框图。
图3示出可在图1的显示适配器中使用区间算术来剔除瓦块的示例。
图4a和4b示出可在图1的显示适配器中执行的剔除过程的流程图。
图5示出实施图1的显示适配器的典型通用计算机的概览架构。
图6a是示出图1的显示适配器中的输入值的例外情形的显示视图。
图6b是示出图6a的情形中的输入值的曲线图。
图7a和7b是可在图1的显示适配器中使用的纹理的说明性透视图。
图8a-d是可在图1的显示适配器中使用的纹理的说明性视图。
图9是一个实施例的流程图。
详细描述
参照图1,显示适配器100可包括多边形构造块102,其负责如所连接的中央处理单元(CPU)570(图5中所示)所指示地构造多边形。尽管可使用任何多边形,通常使用三隅角形。对于每个多边形,瓦块光栅器104将要呈现的多边形划分成一个或多个瓦块(tile),其中每个瓦块至少部分地与该多边形交迭。一般而言,瓦块是一群片断。在一个实施例中,瓦块是包含多个片断的二维矩形。这些片断各自对应于一像素,且包含用于呈现该像素以及测试是否应当在屏幕上呈现该像素所需的所有数据。瓦块的常见大小是8x8片断,但任何大小的瓦块都落在本发明的范围内。
分层深度剔除块106执行分层深度剔除,这是基于深度缓冲的剔除。这里,可执行保守测试以证明该瓦块是否被深度缓冲器中的内容覆盖。换言之,该测试确定从观看者的观点来看是否有另一个所呈现的对象完全覆盖该瓦块中的多边形。如果是这种情形,则整个瓦块可被剔除,即被挑出以作较少处理,例如被跳过。这随后在一些实施例中可得到性能增益。分层深度剔除可在可编程剔除单元108的剔除之前或之后执行。该单元可以是固定函数,这在一个实施例中意味着其不执行可置换程序。
在可编程剔除单元108中,根据也称为可置换剔除模块的可置换剔除程序118来执行剔除。该剔除程序118的细节以及作用在下文结合图4a更详细地解释。
在片断光栅器110中,经可编程剔除单元108处理的瓦块被分解成与多边形交迭的片断。这些片断各自对应于一像素,且包含用于呈现该像素以及测试是否应当在屏幕上呈现该像素所需的数据。片断数据可包括光栅位置、深度、色彩、纹理坐标、模板、α(阿尔法,用于混合)等。对于每个像素,可能存在多个片断样本。
在片断编程单元112中,使用片断程序120来处理从片断光栅器输出的片断。该单元的目的是为了执行诸如将先前评估的色彩与纹理组合、以及添加诸如雾等效果、以及在可能时标识不需要呈现的片断(即,片断剔除)等任务。
纹理单元114用于例如使用一维、二维、三维、四维和立方图纹理进行纹理查找,以及将这些提供给可编程剔除单元108和片断编程单元112。
混合/深度/α单元116使用从片断编程单元112提供的片断在将这些片断写入目标缓冲器之前执行深度测试、α测试、以及混合。
图2中所示的组合程序或编译器程序222可用于自动生成在可编程剔除单元108中使用的剔除程序118和在片断编程单元112中使用的片断程序120。任选地,程序员可编写单独的剔除和片断程序118、120。
作为示例,考虑组合程序222的伪代码段(1),其原始编写成用作片断程序:
DP3d,n,I    (1)
KIL d<0
TEX2D c,t0,r1
MUL out.col,d,c
该程序通过使用DP3指令将光(I)矢量与法线(n)矢量之间的点积计算成结果(d)来执行基本漫射光照。n矢量和I矢量每片断变化。KIL指令终止其中表面法线不面向光(由d小于0指示)的所有片断。TEX2D指令执行二维纹理至c的查找。最后,将结果(d)乘以漫射材料系数(c)。
KIL指令是用于剔除整个瓦块的片断的机会。但为了这样做,应当保守地证明KIL指令的条件对整个瓦块成立。在该示例中,还必须有可能保守地评估DP3指令,因为KIL指令取决于该指令的结果。此外,必须有可能找出整个瓦块的输入(该情形中为法线n和光I的矢量)的保守界限,因为DP3指令又取决于这些值。
为了实现该保守评估链,可编程剔除单元与片断编程单元基于相同的指令集。然而,代替将浮点变量作为指令的源和目的寄存器——在处理片断时使用区间并且指令是使用区间算术的原理来实现是典型的。作为简单示例,考虑标准ADD(加法)指令。
ADDc , a , b ⇔ c = a + b - - - ( 2 )
对于相应的可编程剔除单元区间指令,这些操作数被区间代替,其中区间例如被定义为:
a ^ = [ a , a ‾ ] = { x | a ‾ ≤ x ≤ a ‾ } - - - ( 3 )
可编程剔除单元ADD指令则为:
ADD c ^ , a ^ , b ^ ⇔ c ^ , = a ^ + b ^ - - - ( 4 )
其中区间加法运算实现为:
a ^ + b ^ = [ a ‾ , a ‾ ] + [ b ‾ , b ‾ ] = [ a ‾ + b ‾ , a ‾ + b ‾ ] - - - ( 5 )
由此可见,区间加法的结果包含“正常”加法的所有可能结果,或者更正式地,给定因此这在保守情况下是正确的。以类似方式,片断程序指令集中的每条指令的行为被重新定义。
除了使用区间指令以外,输入也可被定义为区间。因此,必须有可能计算在整个瓦块的片断上插值的量的保守界限。注意,尽管本文使用区间算术,但是可使用表示整个瓦块的任何合适算术。例如,也可在本发明的范围内等同地使用仿射算术和泰勒算术。
通过以上推理,可从组合程序(1)自动推导出剔除程序118。推导出的剔除程序为:
DP 3 d ^ , n ^ , I ^ - - - ( 6 )
KIL d ^ < 0
此外,这里从组合程序(1)推导出片断程序120,其将等同于组合程序220。片断程序为:
DP3 d,n,I              (7)
KIL d<0
TEX2D c,t0,r1
MUL out.col,d,c
对于整个瓦块的片断,假设确定其法线330的输入区间334为以及其光矢量332的区间336为如图3中所示。假设z坐标为0,这简化了该示例。这些区间表示之间的点积得到因此,可得出结论:至多可为由于该值严格小于0,在以上参照图2解释的剔除程序中,该整个瓦块可被剔除而不对每个片断执行片断程序,这将在以下参照图4a更详细地解释。在本发明的一些实施例中,这是性能增益的来源。
图4a示出可在图1的显示适配器100中执行的剔除过程的流程图。在该过程开始时,可选择要呈现的多边形。在“选择瓦块进行处理”步骤440中,选择瓦块,其中所选择的瓦块至少部分地与该多边形交迭。随后在“执行剔除程序”步骤452中执行剔除程序。
在该实施例中,在剔除程序请求输入值时,该过程继续到“向剔除程序提供输入值”步骤454a。输入值是与以某种方式表示瓦块中的所有片断的特性有关的值。例如,输入值可以是法线、位置坐标、光矢量、色彩、纹理坐标等。在该实施例中,使用区间算术来计算所请求的输入值。换言之,仅在需要输入值时根据‘拉’机制计算输入值,这与参照图4b解释的‘推’机制不同。剔除程序的结果是当前处理的瓦块是否应当被剔除。这可以严格地确定,由此仅在当前多边形对该瓦块的区域中最终呈现的图像没有贡献时,该瓦块才被剔除。替换地,可执行有损剔除,由此若当前多边形对该瓦块的区域中最终呈现的图像的贡献低于某个阈值,该瓦块被剔除。
当剔除程序已完成处理时,该过程继续到“条件剔除条件为真”步骤456。在该步骤中,根据剔除程序的输出确定是否应当对当前处理的瓦块执行剔除。若要执行剔除,则该过程继续到“执行指令集A”步骤458。否则,该过程继续到“执行指令集B”步骤460。在一个实施例中,若剔除条件为假,则该瓦块被分解成若干较小瓦块且该过程返回到“选择瓦块进行处理”步骤440。这可以对越来越小的瓦块相继地重复,从而实现分层式多级剔除过程。
剔除程序也可输出除剔除条件以外的结果。这些结果可沿图形管线向下发送以作进一步处理。此类实施例的示例可包括颠倒分层深度剔除单元106(图1)和可编程剔除单元108(图1)的次序。可编程剔除单元计算瓦块中的深度值的界限或区间,且该区间被发送给分层深度剔除单元。分层深度剔除单元随后基于程序计算出的深度值执行剔除。
在“执行指令集A”步骤458中,对瓦块的子集(通常为片断)执行指令集A。这些片断共同覆盖与正被处理的三隅角形交迭的该瓦块的所有像素。
在“执行指令集B”步骤460中,对瓦块的子集(通常为片断)执行指令集B。这通常是在瓦块级之后对片断的呈现的常规处理。
指令集A通常比指令集B的要求低,导致在确定剔除条件为真时对该瓦块作处理的指令数量减少,从而导致性能提高。在一个实施例中,指令集A为空,从而大量减少了处理,即大量提高了性能。该流程继续迭代直至在步骤462没有更多瓦块。
图4b示出与参照图4a描述的过程基本上等同的过程。“选择瓦块进行处理”步骤440、“执行剔除程序”步骤452、“条件剔除条件为真”步骤456、“执行指令集A”步骤458、“执行指令集B”步骤460和“条件更多瓦块”步骤462皆等同于图4a的相应步骤。
然而,这里在执行剔除程序之前处理“向剔除程序提供输入值”步骤454b。在该步骤中,在该实施例中使用区间算术计算并提供所有相关输入值,从而剔除程序能访问这些值。这实现了输入值计算的‘推’机制。
图5示出实施图1的显示适配器100的典型通用计算机583的概览架构。该计算机具有能够执行软件指令的控制器570,诸如CPU。在一些实施例中,控制器570连接到诸如动态随机存取存储器(RAM)之类的易失性存储器571以及可与图1的显示适配器100相同的显示适配器500。显示适配器500又连接到诸如监视器之类的显示器576。控制器570还连接到诸如硬驱动器或闪存之类的永久存储573以及诸如光学介质(如CD、DVD、HD-DVD或蓝光碟)的读取器和/或写入器之类的光学存储574。网络接口581也连接到控制器570以提供对诸如局域网、广域网(例如,因特网)、无线局域网或无线城域网之类的网络582的接入。通过外围设备接口577,CPU 570可与鼠标578、键盘579或任何其他外围设备580(包括操纵杆、打印机、扫描仪等)通信。
注意,尽管以上描述了通用计算机来实施本发明,但本发明也可等同地实施在利用数字图形尤其是3D图形的任何环境中,例如游戏机、移动电话、移动因特网设备(MID)、MP3播放器等。可以使用任何计算机架构。
在以上所述的指令集的一种实现中,可以使用区间算术来计算输入值。随后可对整个瓦块的片断执行剔除程序。然而,为了这样做,还需要计算变化的(或插值的)输入的界限区间。
最初,使用插值来计算瓦块的所有四个隅角中变化的属性的值。随后计算这四个值的界限区间并将其称为还计算三隅角形顶点处变化的属性的界限区间并将其称为整个瓦块上变化的属性的最终界限区间可计算为有其他方式来计算这些区间,例如通过考虑与瓦块交迭的所有片断。
最后,可处理例外情形,其在图6a中示出。这里,以棋盘纹理686的形式示出三隅角形685上的透视校正插值。由此可见,该纹理关于投影线687成镜像,投影线687是三隅角形685的水平面若无限大将投影出的线。该镜像效应是透视校正插值中使用的除法造成的一种形式的反投影。现在,假设需要计算与该投影线交迭的瓦块688上一些变化的属性的界限区间
图6b示出透视校正插值函数690,以及在插值瓦块688的四个隅角时获得的值691a-d。这些隅角的界限区间692明显不正确,因为当该函数在投影线上接近无限时,没有将函数690的所有值包含在该区间中。
该例外情形可通过将设为作为与投影线交迭的瓦块的界限区间来处理。在该实施例中,仅遍历与该三隅角形实际交迭的瓦块,且使用透视法校正的重心坐标来进行插值。
在为瓦块的隅角计算透视法校正的重心坐标时,可容易地检测问题瓦块。透视法校正的重心坐标表达为有理函数,且若分母对于任何瓦块隅角小于0,则该瓦块与投影线相交。
如下执行N维纹理查找。总体思路是提供计算给定区域上的纹理数据的界限区间的快速且高效的手段。该示例的其余部分将仅考虑二维纹理,但一般化是直截了当的。
最初计算经历基于区间的纹理查找的每个纹理的两个纹理贴图(mipmap)金字塔。如图7a和7b中所示,每个元素(例如纹理贴图中的元素793)计算为四个相应纹素(texel)——例如该金字塔中紧接在其下的元素794a-d——的逐分量最小值(如图7a中所示)或最大值(如图7b中所示)。可以看出,最终结果为界限区间的纹理贴图金字塔。这种类型的预计算可由驱动程序容易地处理,类似于如何自动生成标准纹理贴图。
在执行纹理查找时,希望计算轴对准界限框上的纹理数据的界限区间,其为纹理坐标区间。首先,计算合适的纹理贴图级为:
| log 2 ( max ( t x &OverBar; - t x &OverBar; , t y &OverBar; , - t y &OverBar; ) ) |
其中是非规一化整数纹理坐标(即,它们包括纹理的维度)的二维区间。它们被合适地舍入以使得t i 被向下取整以及被向上取整,其中iε{x,y}。
在变换到该纹理贴图级时,t在任何维度上将不大于1个纹素宽,且在最宽维度上将至少为1/2纹素宽。因此,获得图8a-d中所示的纹理坐标区间的4种可能情形。在用于法向线性插值的访问方案中,总是从左下隅角在纹素(t x t y )处的纹素796采样2x2纹素的正方形。纹理查找的结果随后计算为与纹理坐标区间实际交迭的纹素的色彩的界限。即,丢弃图8a-c中由标号795所指示的打阴影的纹素。由于经纹理贴图变换的t将被舍入到最接近的整数坐标,因此该交迭测试可通过仅比较最后比特来非常高效地实现。纹理查找过程与普通“三线性(trilinearly)”过滤纹理查找基本上同样高成本。最大的差别在于需要从两个不同纹理贴图金字塔中的相同级而非两个毗邻级进行采样,且将最终结果计算为界限而非使用线性插值。该策略本来就支持不同种类的外包模式(wrapping mode),诸如箝位(clamp)、重复以及镜像重复。合适的外包模式可在纹理贴图级计算后简单地应用于区间坐标以获得预期结果。
在一个实施例中,可以仅创建在剔除程序中实际使用的纹理贴图级。该优化对于在屏幕空间中发生的算法尤其重要,诸如顺序无关透明。在这种情形中,提前知道只需要基级上的纹理以及与屏幕上的瓦块相对应的纹理贴图级。例如可在分层深度剔除单元中找出最小和最大深度值。也有可能(但较不可能)最小和最大色彩已被出于压缩目的计算,否则需要计算它们。
使用与二维纹理相同的方法为立方图计算最小/最大纹理贴图金字塔。对于边缘,纹理贴图色彩被计算为该边缘两侧的4个纹素的最小或最大值,而对于隅角,纹理贴图色彩被耦合成源自该隅角的所有三条边上的4个纹素的最小或最大值。边缘的相对侧上的纹素因此在较高纹理贴图级中将共享相同的色彩。类似地,隅角中的三个纹素将共享相同的色彩。
该纹理贴图金字塔可用于通过仅访问立方体的一条边来进行保守立方图查找。首先,计算主轴的基于区间的等效。给定纹理坐标区间将主轴i定义为t i 具有相同符号且被最大化的轴。若t i 在所有轴上都具有不同符号,则不能找到主轴。然而,这仅可能在原点位于纹理坐标区间内时发生。在这种情形中,纹理坐标区间将投影到整个立方图上。这可以通过选取最高纹理贴图级并采样任意立方图表面来处理。
一旦找到主轴,就可将纹理坐标区间投影到立方图的相应边上。该投影通过单独投影其余两个轴中的每个轴的界限来进行。考虑其中x是主轴而y是想要投影其界限的轴的示例。则计算界限所需要投影的纹理坐标区间以及极点有6种可能情形(注意,没有区间可与y轴相交,因为在这种情形中x轴将不是主轴)。这足以查找纹理坐标区间的符号,并通过查找表来获得极点。
投影其余两个轴的极点以构成二维投影坐标区间。该区间被用于计算纹理贴图级以及执行二维纹理查找,与以上针对二维情形描述的方法相同。
为了改善性能,希望减少在剔除着色器(shader)中进行的工作量以及增加所计算的界限的紧密度。一般而言,关于区间指令的元数据被用于生成优化标量指令。元数据可以是区间界限或甚至是关于需要界限的哪一侧的信息,或关于需要执行什么操作的高级信息。例如,关于是否要进行平方而非乘法的信息可以是可用于生成优化标量指令的元数据类型的示例。随后在编译时可在整个代码中跟踪这些界限以计算每个变量以及每个指令的界限。这些界限使得有可能使代码更高效。
因此,在图9的框910,剔除程序118被接收并经历静态输入界限分析。这些界限在一个实施例中可基于应用编程接口标准。
此类标准的示例包括某些种类的输入的预期值。界限还可基于常数、变量类型、以及数据类型。例如,变量类型可以是为正的无符号整数。数据类型可以是必须在0到1的范围内的值。这些界限已知是正确的。若此类界限不存在,则界限可为正负无限。
这些界限可用作在编译时以区间方式评估剔除程序以确定每个变量的可能界限的输入。可应用已知数学结果以缩窄编译时界限。示例包括以下事实:绝对值总是为正,sine和cosine在-1到1的范围中,箝位操作限制可能值的范围。因此,代码可在编译时在区间范围内执行。结果是剔除程序中每个指令的有效值范围。
所搜集的区间随后可用在低级以生成更高效的区间算术评估代码,其在一些实施例中可改善运行时性能。例如,已知区间乘法中的两个操作数为非负将运行时区间评估的成本从10条指令减少到仅2条。因此,该编译时分析可减小剔除程序的长度并改善性能。静态输入界限分析提供了区间中间表示连同输入界限。
即使不能确定非无限界限且使用正负无限的默认界限,跟踪“无限”界限仍可能存在益处。在实践中,剔除程序具有一个或多个输入。对于这些输入中的全部或部分,在一些情形中可确定更严格的界限。例如,考虑y=sin(x),其中x是剔除程序的输入。若不使用除了x在正负无限之间以外的界限,在代码中跟踪该界限可能仍是有用的。例如,sin(x)的输出总是由范围[-1,1]界定。该范围随后可被跟踪以简化该程序中的其他操作。
在一些实施例中可使用框912中的动态输入界限假设。它们涉及使用基于域专用知识的假设来改善性能。例如,域专用知识可包括纹理一般在0到1的范围中这一事实。可作出动态假设以进一步改善静态界限。
作为示例,纹理读取的结果在编译时一般可能是完全未知的。然而,作出该值将落在0到1范围内的假设是合理的,因为大多数纹理是作为无符号归一化值来存储的。在一些实施例中,着色器编译器可基于输入格式自动作出该合理假设并使用该信息来生成更快的剔除程序。只要输入实际上的确落在所假设的范围内,该更快代码路径就将是有效的。
然而,若浮点表面例如被绑定到着色器,则可能违背0到1的范围假设。在运行时,着色器执行机制将知晓错误假设并且可请求校正的剔除着色器。这可以通过对该特定着色器跳过剔除直至校正的版本可用来异步地进行(若需要)。降级可在几个步骤中进行。在纹理的情形中,大多数图像仅包含非负值,即使诸如浮点等表示可代表负值。违背0到1范围可意味着该数据至少由0和无限界定,这仍给予优于完全未知数据的性能优点。
来自动态输入界限假设的输出再次是区间中间表示加上在一些实施例中通过动态输入界限假设补充的输入界限。
在框914,在编译时在整个代码中跟踪这些界限以计算每个变量的界限。这些界限使得有可能生成更高效的代码。在编译时执行该代码并且分析每个指令以确定其可能的输入和输出范围。该过程始于用静态动态输入界限开始并向前传播。
框914的输出是每个指令的区间中间表示和界限。在框916,在一些实施例中可对单侧界限进行优化。在一些情形中,只需要结果的上限或下限。指令可被标记为生成作为单侧的输出。该单侧标记可将信息向后传播到可能的范围。
框916的输出是区间中间表示、界限以及侧信息,无论是下侧、上侧还是下侧和上侧两者。
随后,在框918,区间中间表示被转换成优化标量中间表示。界限信息和侧信息可用于用优化标量指令序列来替换每个区间指令。因此,代替天然地通过一般的标量指令序列来代替每个内部指令,可使用界限来限制标量指令支持的范围。例如,若已知区间乘法的输入范围严格非负,则指令可用较短的标量指令序列来代替,其已被优化成仅对非负数进行工作。
最后,在框920,标量中间表示被用于标准编译器优化,诸如死代码消除、矢量化以及代码生成。在框920之后输出可执行代码,且该流程从编译时转换到运行时。
在运行时,可重新评价动态假设,如框926中指示的。如在928确定的,若该假设有效,则可运行剔除程序,如框930中指示的。
否则,可考虑各种替换。例如,可判定不能进行剔除。替换地,可用更一般的假设来请求新的剔除程序。作为另一替换,可运行具有更一般假设的预编译剔除程序,皆在框932中指示。若存在几个预编译程序,则可选择具有满足当前假设的最严格输入假设的预编译程序。
在一些实施例中,可使用其他界定算术,诸如仿射算术或泰勒算术。在这些情形中,输入/输出界限可用适合所选算术的更高维度表示来代替。
在一些实施例中,图9中描绘的序列可在软件中实现。在这种情形中,该序列可实施为存储在计算机可读介质上的指令。该介质可以是例如半导体、光学、或磁性存储。这些指令由包括控制器或处理器的计算机执行。例如,控制器和处理器可以是图5中的CPU 570或者是显示适配器500的一部分。存储这些指令的存储可例如是存储器571或者存储573或574。
本文中所描述的图形处理技术可以各种硬件架构来实现。例如,图形功能可整合在芯片组内。替换地,可使用分立的图形处理器。作为又一实施例,图形功能可由通用处理器(包括多核处理器)来实现。
贯穿本说明书引述的“一个实施例”或“实施例”意指结合该实施例描述的特定特征、结构或特性被包含在本发明内所涵盖的至少一个实现中。由此,短语“一个实施例”或“实施例”的出现不一定引述同一实施例。此外,特定特征、结构或特性可设立成除了所示特定实施例以外的其他合适形式,且所有此类形式可被涵盖在本申请的权利要求内。
尽管本发明已关于有限的几个实施例作了描述,本领域技术人员将会从其中意识到许多改变和变型。所附权利要求旨在覆盖所有这样的改变和变型,只要其落在本发明的实质精神和范围内。

Claims (27)

1.一种用于编译可编程剔除单元的方法,包括:
在编译时期间,确定可编程剔除单元的代码是否具有能确定的界限,其中所述界限被用作在编译时以区间方式评估剔除程序以确定每个变量的可能界限的输入;以及
若是,则在编译时在所述代码中跟踪所述界限以计算对于每个变量的界限;
若在编译时期间无法确定所述界限,则在编译时在所述代码中使用正负无限的默认界限。
2.如权利要求1所述的方法,其特征在于,在编译时在所述代码中跟踪所述界限以计算对于每个变量的界限的步骤进一步包括:输出每个指令的区间中间表示和界限,之后,将区间中间表示转换成优化标量中间表示。
3.如权利要求2所述的方法,其特征在于,还包括:使用被跟踪的界限以使用优化标量指令序列来替换每个区间指令。
4.如权利要求1所述的方法,其特征在于,若在编译时不能确定所述界限,则可选地在编译时作出对所述区间界限的假设。
5.如权利要求1所述的方法,其特征在于,在编译时在所述代码中跟踪所述界限以计算对于每个变量的界限的步骤进一步包括:输出每个指令的区间中间表示和界限,之后,进行优化以生成作为单侧界限的输出。
6.如权利要求4所述的方法,其特征在于,包括在运行时重新评价所述假设。
7.如权利要求6所述的方法,其特征在于,若确定所述假设是有效的,则运行所述代码;
若确定所述假设不是有效的,则执行以下之一:
判定不能进行剔除;
作出新假设并在所述新假设下编译所述代码;
运行具有更一般假设的预编译剔除程序。
8.如权利要求7所述的方法,其特征在于,当运行具有更一般假设的预编译剔除程序时,若存在几个预编译程序,则可选择具有满足当前假设的最严格输入假设的预编译程序。
9.如权利要求1所述的方法,其特征在于,跟踪所述界限包括使用界限算术来评估指令。
10.如权利要求9所述的方法,其特征在于,使用界限算术来评估指令包括使用区间算术、仿射算术或泰勒算术之一。
11.一种用于编译可编程剔除单元的设备,包括:
用于在编译时期间确定可编程剔除单元的代码是否具有能计算的界限的装置,其中所述界限被用作在编译时以区间方式评估剔除程序以确定每个变量的可能界限的输入;以及
用于若是,则在编译时期间在所述代码中跟踪所述界限以计算对于每个变量的界限的装置;
用于若在编译时期间无法确定所述界限,则在编译时在所述代码中使用正负无限的默认界限的装置。
12.如权利要求11所述的设备,其特征在于,用于在编译时在所述代码中跟踪所述界限以计算对于每个变量的界限的装置输出每个指令的区间中间表示和界限,所述设备还包括:用于将区间中间表示转换成优化标量中间表示的装置。
13.如权利要求12所述的设备,其特征在于,还包括:用于使用被跟踪的界限以使用优化标量指令序列来替换每个区间指令的装置。
14.如权利要求11所述的设备,其特征在于,还包括:用于若在编译时不能计算所述区间界限则可选地在编译时作出对所述区间界限的假设的装置。
15.如权利要求11所述的设备,其特征在于,用于在编译时在所述代码中跟踪所述界限以计算对于每个变量的界限的装置输出每个指令的区间中间表示和界限,所述设备还包括:用于进行优化以生成作为单侧区间界限的输出的装置。
16.如权利要求14所述的设备,其特征在于,还包括:用于在运行时重新评价所述假设的装置。
17.如权利要求16所述的设备,其特征在于,还包括:用于若确定所述假设是有效的则运行所述代码的装置;
用于若确定所述假设不是有效的则执行以下之一的装置:
判定不能进行剔除;
作出新假设并在所述新假设下编译所述代码;
运行具有更一般假设的预编译剔除程序。
18.如权利要求17所述的设备,其特征在于,用于运行具有更一般假设的预编译剔除程序的装置还包括:用于若存在几个预编译程序则可选择具有满足当前假设的最严格输入假设的预编译程序的装置。
19.一种用于编译可编程剔除单元的装置,包括:
可编程剔除单元;以及
耦合到所述可编程剔除单元的编译器,所述编译器用于确定所述可编程剔除单元的代码是否具有能计算的界限,若是则对于每个变量在编译期间在所述代码中跟踪所述界限以计算对于每个变量的界限,若在编译时期间无法确定所述界限,则在编译时在所述代码中使用正负无限的默认界限;
其中所述界限被用作在编译时以区间方式评估剔除程序以确定每个变量的可能界限的输入。
20.如权利要求19所述的装置,其特征在于,所述装置是显示适配器。
21.如权利要求19所述的装置,其特征在于,若不能计算所述区间界限,则所述编译器在编译时作出对所述区间界限的假设。
22.如权利要求21所述的装置,其特征在于,包括控制器以执行软件指令。
23.如权利要求22所述的装置,其特征在于,所述控制器用于在运行时重新评价所述假设。
24.如权利要求22所述的装置,其特征在于,所述控制器用于在确定所述假设有效时运行所述代码,若确定所述假设不是有效的,则执行以下之一:
判定不能进行剔除;
作出新假设并在所述新假设下编译代码;
运行具有更一般假设的预编译剔除程序。
25.如权利要求24所述的装置,其特征在于,当运行具有更一般假设的预编译剔除程序时,若存在几个预编译程序,则所述编译器可选择具有满足当前假设的最严格输入假设的预编译程序。
26.如权利要求19所述的装置,其特征在于,用于在编译时在所述代码中跟踪所述界限以计算对于每个变量的界限的编译器进一步用于:输出每个指令的区间中间表示和界限,所述编译器将区间中间表示转换成优化标量中间表示。
27.如权利要求26所述的装置,其特征在于,所述编译器使用被跟踪的界限以使用优化标量指令序列来替换每个区间指令。
CN201010620058.8A 2009-12-22 2010-12-21 编译可编程剔除单元 Expired - Fee Related CN102103512B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/644,075 2009-12-22
US12/644,075 US9038034B2 (en) 2009-12-22 2009-12-22 Compiling for programmable culling unit

Publications (2)

Publication Number Publication Date
CN102103512A CN102103512A (zh) 2011-06-22
CN102103512B true CN102103512B (zh) 2015-03-11

Family

ID=43778260

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010620058.8A Expired - Fee Related CN102103512B (zh) 2009-12-22 2010-12-21 编译可编程剔除单元

Country Status (7)

Country Link
US (1) US9038034B2 (zh)
EP (1) EP2348407B1 (zh)
JP (1) JP5203445B2 (zh)
KR (1) KR101251117B1 (zh)
CN (1) CN102103512B (zh)
SG (1) SG172542A1 (zh)
TW (1) TWI512669B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9038034B2 (en) * 2009-12-22 2015-05-19 Intel Corporation Compiling for programmable culling unit
US9153068B2 (en) * 2011-06-24 2015-10-06 Nvidia Corporation Clipless time and lens bounds for improved sample test efficiency in image rendering
CN104040589B (zh) * 2012-01-16 2018-05-25 英特尔公司 使用随机光栅化生成随机采样分布的图形处理方法和设备
JP5711713B2 (ja) * 2012-10-01 2015-05-07 住友電気工業株式会社 多層熱回復物品
US9390541B2 (en) * 2013-04-09 2016-07-12 Intel Corporation Programmable tile shader
US9582847B2 (en) * 2013-04-22 2017-02-28 Intel Corporation Color buffer compression
US9501864B2 (en) * 2013-12-27 2016-11-22 Intel Corporation Adaptive depth offset compression
GB2525666B (en) 2014-05-02 2020-12-23 Advanced Risc Mach Ltd Graphics processing systems
GB2520822B (en) * 2014-10-10 2016-01-13 Aveva Solutions Ltd Image rendering of laser scan data
US9626733B2 (en) 2014-11-24 2017-04-18 Industrial Technology Research Institute Data-processing apparatus and operation method thereof
KR102472131B1 (ko) * 2015-09-03 2022-11-29 삼성전자주식회사 쉐이더 프로그램을 생성하는 방법 및 장치
US9477451B1 (en) * 2015-11-06 2016-10-25 International Business Machines Corporation Generating dynamic measurement metadata for efficient compilation and optimization on a target device
WO2017164924A1 (en) * 2016-03-21 2017-09-28 Siemens Product Lifecycle Management Software Inc. System for gpu based depth reprojection for accelerating depth buffer generation
US20170371761A1 (en) * 2016-06-24 2017-12-28 Advanced Micro Devices, Inc. Real-time performance tracking using dynamic compilation
US10102662B2 (en) 2016-07-27 2018-10-16 Advanced Micro Devices, Inc. Primitive culling using automatically compiled compute shaders
US10235811B2 (en) 2016-12-29 2019-03-19 Intel Corporation Replicating primitives across multiple viewports
US10592387B2 (en) 2018-01-02 2020-03-17 International Business Machines Corporation Dataflow analysis to reduce the overhead of on stack replacement
US10628910B2 (en) 2018-09-24 2020-04-21 Intel Corporation Vertex shader with primitive replication

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1950851A (zh) * 2004-03-30 2007-04-18 辉达公司 用于各向异性纹理过滤的较短印迹

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4731606A (en) * 1985-08-02 1988-03-15 International Business Machines Corporation Method for rapid windowing of display information in computer graphics
US5377320A (en) * 1992-09-30 1994-12-27 Sun Microsystems, Inc. Method and apparatus for the rendering of trimmed nurb surfaces
JP3362942B2 (ja) * 1993-12-27 2003-01-07 株式会社東芝 情報処理装置
AUPM704494A0 (en) * 1994-07-25 1994-08-18 Canon Information Systems Research Australia Pty Ltd Efficient methods for the interpretation of a graphical programming language
US6016398A (en) * 1997-04-01 2000-01-18 Intel Corporation Method for using static single assignment to color out artificial register dependencies
US6480205B1 (en) * 1998-07-22 2002-11-12 Nvidia Corporation Method and apparatus for occlusion culling in graphics systems
US7952583B2 (en) * 2000-06-19 2011-05-31 Mental Images Gmbh Quasi-monte carlo light transport simulation by efficient ray tracing
US6980935B2 (en) * 2001-07-31 2005-12-27 Schlumberger Technology Corp. Method, apparatus and system for constructing and maintaining scenegraphs for interactive feature-based geoscience geometric modeling
US7159212B2 (en) * 2002-03-08 2007-01-02 Electronic Arts Inc. Systems and methods for implementing shader-driven compilation of rendering assets
US7171343B2 (en) * 2002-07-16 2007-01-30 Sun Microsystems, Inc. Computing interval parameter bounds from fallible measurements using systems of nonlinear equations
US20040103248A1 (en) * 2002-10-08 2004-05-27 Hass David T. Advanced telecommunications processor
CA2506419C (en) * 2002-11-15 2014-01-21 Sunfish Studio, Inc. Visible surface determination system & methodology in computer graphics using interval analysis
US7145565B2 (en) * 2003-02-27 2006-12-05 Nvidia Corporation Depth bounds testing
US7733347B2 (en) * 2004-11-05 2010-06-08 Microsoft Corporation Automated construction of shader programs
WO2006115716A2 (en) 2005-04-05 2006-11-02 Sunfish Studio, Llc System and method of visible surface determination in computer graphics using interval analysis
JP4977712B2 (ja) 2005-12-01 2012-07-18 スウィフトフット グラフィックス アーベー ディスプレースクリーン上に立体画像をレンダリングするコンピュータグラフィックスプロセッサならびにその方法
CN103310480B (zh) * 2007-01-24 2016-12-28 英特尔公司 通过使用可置换的剔除程序提高图形性能的方法和装置
US8495602B2 (en) * 2007-09-28 2013-07-23 Qualcomm Incorporated Shader compile system and method
SE0801742L (sv) * 2008-07-30 2010-01-31 Intel Corp Förfarande, apparat och datorprogramprodukt för förbättrad grafikprestanda
US9038034B2 (en) * 2009-12-22 2015-05-19 Intel Corporation Compiling for programmable culling unit
US9058697B2 (en) * 2011-04-28 2015-06-16 Intel Corporation Depth of field rasterization by culling regions on a lens from which a convex polygon to be rendered is not visible

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1950851A (zh) * 2004-03-30 2007-04-18 辉达公司 用于各向异性纹理过滤的较短印迹

Also Published As

Publication number Publication date
EP2348407B1 (en) 2017-11-29
JP5203445B2 (ja) 2013-06-05
TWI512669B (zh) 2015-12-11
TW201145210A (en) 2011-12-16
CN102103512A (zh) 2011-06-22
US9038034B2 (en) 2015-05-19
SG172542A1 (en) 2011-07-28
EP2348407A1 (en) 2011-07-27
KR101251117B1 (ko) 2013-04-05
KR20110073364A (ko) 2011-06-29
US20110148876A1 (en) 2011-06-23
JP2011134326A (ja) 2011-07-07

Similar Documents

Publication Publication Date Title
CN102103512B (zh) 编译可编程剔除单元
US8698818B2 (en) Software rasterization optimization
US7394464B2 (en) Preshaders: optimization of GPU programs
CN101681526B (zh) 通过使用可置换的剔除程序提高图形性能的方法和装置
US20100097377A1 (en) Graphics Processing Using Culling on Groups of Vertices
Wang et al. Real-time rendering on a power budget
McCormick et al. Scout: a data-parallel programming language for graphics processors
Sitthi-amorn et al. Automated reprojection-based pixel shader optimization
Ujaldón et al. On the computation of the Circle Hough Transform by a GPU rasterizer
CN111767046A (zh) 一种着色器代码复用方法及终端
JP5864474B2 (ja) 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法
Van Kooten et al. Point-based visualization of metaballs on a gpu
Tillmann et al. Online-autotuning of parallel SAH kD-trees
WILLCOCKS Sparse volumetric deformation
Rios et al. A benchmark on multi improvement neighborhood search strategies in CPU/GPU systems
Samardžić An implementation of ray tracing algorithm for the multiprocessor machines
Lejdfors High-Level GPU Programming: Domain-Specific Optimization and Inference
Trapp OpenGL-Performance and Bottlenecks
Yan et al. Design and implementation of 3D scan conversion algorithm based on Handel-C
Haykal An Optimized Triangle Rasterizer
KR20130017824A (ko) 멀티 패스를 가진 쉐이더를 프로그램 하는 인터페이스 장치 및 방법
James et al. Scout: A Hardware-Accelerated System for Quantitatively Driven Visualization and Analysis
Lejdfors High-level GPU programming
Bjønnes Variably sized filter kernels for GPU Accelerated Photon Mapping
Golba Deferred rendering using Compute shaders

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150311

Termination date: 20211221