图形处理电路和方法_3

文档序号:9597601阅读:来源:国知局
〃。通 过对第一顶点着色器的输出的再使用,指令数能从126变为24,因此导致增强了第二顶点 着色器406的性能。
[0040] 在一个示例性的设计中,第一顶点着色器的输出被第二顶点着色器406再使用, 所述第一顶点着色器的输出包含至少一个顶点坐标值和至少一个中间值。然而,再使用顶 点坐标值和中间值两者仅仅是为了说明目的,其并不意味着对本发明的限制。第二顶点着 色器用于再使用由第一顶点着色器生成的至少一个中间值,来生成至少一个变量值,具有 所述第二顶点着色器的任何图形处理设计仍然落入本发明的保护范围。特别是,通过再使 用中间值,还实现了减少在第二顶点着色阶段所执行指令数目的相同目标。
[0041]由于顶点输出缓冲器104的有限存储容量,并非所有在第一顶点着色操作期间所 生成的中间值都会被存储到顶点输出缓冲器104。即,仅有从第一顶点着色操作期间生成的 候选中间值中所获得的选定中间值才允许通过第一顶点着色器402存储到顶点输出缓冲 器104中。
[0042] 在第一示例性选择设计中,仅有边界节点值被当作候选中间值。换句话说,每个候 选中间值都直接用于计算顶点坐标值和/或变量值。为了从候选中间值中确定选定中间 值,第一顶点着色器402进一步用于为候选中间值确定多个加权值,每个候选中间值与至 少一个顶点坐标值的生成以及至少一个变量值(例如,用户定义变量,比如可变变量)的生 成相关联,候选中间值的加权值正比于获得所述候选中间值所需执行的指令数目。请参考 图6,其是为候选中间值计算加权值实例的示意图。假定节点N5为边界节点,其值由第一 顶点着色器406直接使用,以计算顶点坐标值,和/或由第二顶点着色器402直接使用,以 计算用户定义变量值。子树1包含涉及在节点N1计算输出值的K1个指令/计算。子树2 包含涉及在节点N2计算输出值的K2个指令/计算。节点N3的输出值通过执行基于节点N1和N2输出值的一个指令而获得。节点N4的输出值通过执行一个指令而获得。节点N5 的输出值(即,一个候选中间值)通过执行基于节点N3和N4的输出值的一个指令而获得。 因此,候选中间值的加权值可以被设置为K1+K2+3。
[0043] 在确定了所有候选中间值的加权值之后,第一顶点着色器402比较所述加权值 来选择候选中间值的一部分作为选定中间值,并将选定中间值存储到顶点输出缓冲器104 中。例如,第一顶点着色器402对候选中间值的加权值进行排序,随后选择一些候选中间值 作为选定中间值,每个所选择的中间值的加权值大于剩余候选中间值具有的加权值。
[0044] 在第二示例性选择设计中,候选中间值无须是边界节点值。第一顶点着色器402 用于确定多个候选中间值的多个所节约的指令数目(即,所节约的指令数),每个候选中间 值与至少一个顶点坐标值的生成以及至少一个变量值(例如,用户定义变量值,比如可变 变量值)的生成相关联。请参考图7,其是为候选中间值计算所节约的指令数目(即,所节 约的指令数)实例的示意图。假定节点Nl、N2和N3的值与第一顶点着色器402中一个顶 点坐标值的生成以及第二顶点着色器406中一个变量值的生成相关联。节点N1和N2可以 为边界节点。然而,在此实例中,节点Nl、N2和N3的值全都被当作候选中间值。如果节点 N1的候选中间值被作为选定中间值,由于在计算节点N2的值时仍需要节点N3的值,则仅 能在第二顶点着色器406中节约两个指令,且第二顶点着色器406仍然要执行用于计算节 点N3的值的指令。如果节点N2的候选中间值被作为选定中间值,由于在计算节点N1的值 时仍需要节点N3的值,则仅能在第二顶点着色器406中节约两个指令,且第二顶点着色器 406仍然要执行用于计算节点N3的值的指令。如果节点N3的候选中间值被作为选定中间 值,由于节点N3对于位于其下方的节点N4、N5、N6是主导节点(dominantnode),则可以在 第二顶点着色器406中节约四个指令。对比于节点Nl、N2的候选中间值,当第二顶点着色 器406再使用节点3的候选中间值时,节点3的候选中间值能够节约更多指令。因此,由于 节点N3的候选中间值具有更大的所节约的指令数,其被选定并存储到顶点输出缓冲器104 中。
[0045] 在确定了所有候选中间值的所节约的指令数目(S卩,所节约的指令数)之后,第一 顶点着色器402比较所节约的指令数,以选择候选中间值的一部分作为选定中间值,所述 选定中间值被存储到顶点输出缓冲器。例如,第一顶点着色器402对候选中间值的所节约 的指令数进行挑选,随后选择一些候选中间值作为选定中间值,每个所选择的中间值具有 的所节约的指令数大于剩余候选中间值具有的所节约的指令数。
[0046] 在示例性的设计之中,可以利用单指令多数据(single-instruction multiple-data,SHffi)可编程着色器来实施每个顶点着色器,以获得更好的性能。本发明 进一步提出通过压缩顶点线程组来改善SB?通道的使用。图8是根据本发明第三实施例 的图形处理电路的示意图。非限制性地举例来说,图形处理电路800可以为使用在电子设 备中的图形处理单元(GPU)的一部分。在此实施例中,图形处理单元800包含顶点重新打 包电路805,前述的第一顶点着色器102 (或402),第二顶点着色器106 (或406),顶点输出 缓冲器104以及图元剔除电路108。应当注意到,图8中仅示出了与本发明相关的组件。实 际上,图形处理电路800可以具有额外的电路块,其取决于实际的设计考虑。
[0047] 为了进一步增加顶点着色性能,顶点着色器可以采用例如管线(pipeline)的处 理技术来尝试并行处理尽可能多的图形数据。例如,将具有sn?架构的顶点着色器设计为 使在图形管线中的并行处理量最大化。根据所述sn?架构,并行执行同样的指令来处理 多数据输入。即,通过多个sn?通道而同步地执行一个线程组中的线程。在此实施例中, 第二顶点着色器106/406可以是具有固定数目的sn?通道的sn?可编程着色器(即执 行单元)。如上所述,图元剔除电路108命令顶点输出缓冲器104通过移除不合格顶点的 缓冲坐标值来丢弃与不合格图元(例如不可见图元)相关联的顶点。因此,第二顶点着色 器106/406不会将时间浪费在处理与不合格顶点相关联的顶点之上。然而,当丢弃某些顶 点时,原始顶点线程组会因不合格顶点遮盖(masked-out) -些线程。当具有至少一个不合 格顶点的原始顶点线程组由具有SB?架构的第二顶点着色器106/406进行处理时,至少 一个sn?通道是闲置的(即未激活),这导致第二顶点着色器106/406的未充分利用。图 9是无压缩的sn?执行流程的示意图。假定第二顶点着色器106/406是具有四个sn?通 道1^)、1^、1^乂3的3頂0可编程着色器。原始顶点线程组60、61、62、63、64由第二顶点着 色器106/406在不同周期内顺序处理。如图9所示,原始顶点线程组G0包含线程T。。、TQ1、 !'。2、1'。3;原始顶点线程组61包含线程1' 1。、1'11、1'12、1'13;原始顶点线程组62包含线程1' 2。、1'21,、 1'22、1'23;原始顶点线程组63包含线程1' 3。,、1'31、1'32、1'33;原始顶点线程组64包含线程1' 4。、1'41、 T42、T43。在此实施例中,由于不合格顶点,线程TQ1、T13、T22、T4。为遮盖(masked-out)线程。 因此,当原始顶点线程组GO由第二顶点着色器106/406处理时,S頂D通道L1是未激活的; 当原始顶点线程组G1由第二顶点着色器106/406处理时,SB?通道L3是未激活的;当原 始顶点线程组G2由第二顶点着色器106/406处理时,S頂D通道L2是未激活的;以及,当原 始顶点线程组G4由第二顶点着色器106/406处理时,S頂D通道L0是未激活的。线程T。。、 Tffi-TQ3、T1Q-T12、T2Q-T21、T23、T3Q-T33、T41-T43中的每个被一个待处理的合格顶点所填充。因此, 当原始顶点线程组GO、Gl、G2、G3、G4由第二顶点着色器106/406顺序处理时,需要五个周 期来完成合格顶点的顶点着色处理。
[0048] 本发明提出,为了获得更好的SB?利用率而使用线程组压缩。顶点重新打包电路 805耦
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1