当前位置: 首页 > 专利查询>ARM有限公司专利>正文

图形处理系统技术方案

技术编号:15450618 阅读:91 留言:0更新日期:2017-05-31 12:23
图形处理系统。在该图形处理系统中,栅格化器(51)进行操作以识别针对被渲染的基元的多对片段(54、55),针对该基元,并非片段中的全部采样位置都被基元(50)覆盖。当片段(54、55)到达片段着色器(27)时,创建(56)相应的执行线程(57、58)用于由片段着色器(27)来执行以对片段(54、55)进行处理。然后,执行(59)使用线程组(57、58)的辅助线程的片段着色器程序的第一部分。然后,在片段着色器程序中存在进行操作以使得线程组(57、58)的活动线程被合并到单个的、组合的线程组(61)中的合并指令(60)。紧接着该线程组合并,片段着色器程序的其余程序步骤针对合并后的线程组(61)来执行(62)。

Graphics processing system

Graphics processing system. In the graphics processing system, a trellis (51) operates to recognize a plurality of pairs of fragments (54, 55) for rendered primitives, which are not covered by primitives (50) for all the sampling locations in the fragment instead of the primitives. When the fragment (54, 55) reaches the fragment shader (27), (56) the corresponding execution threads (57, 58) are executed by the fragment shader (27) to process the segments (54, 55). Then, execute (59) the first part of the fragment shader program using the auxiliary thread of the thread group (57, 58). Then, in the fragment shader program, there is a merge instruction (60) that operates to enable the active threads of the thread groups (57, 58) to be merged into a single, combined thread group (61). Next, the thread is combined, and the rest of the program steps of the fragment shader program are executed against the merged thread group (61) (62).

【技术实现步骤摘要】
图形处理系统
本专利技术涉及图形处理系统,特别地,涉及包括一个或更多个可编程处理阶段(“着色器”)的图形处理系统的操作。
技术介绍
图形处理通常是以流水线的方式来执行的,具有对数据进行操作以生成最终渲染输出(例如显示的帧)的一个或更多个流水线阶段。现在,很多图形处理流水线包括一个或更多个可编程处理阶段,通常被称为“着色器(shader)”。例如,图形处理流水线可以包括几何着色器、顶点着色器和片段(fragment)(像素)着色器中的一个或更多个,并且通常为全部的上述着色器。这些着色器是这样的可编程处理阶段:其对输入数据值执行着色器程序以生成期望的一组输出数据(例如,在片段着色的情况下适当地进行着色(shade)和渲染的片段数据),用于通过图形流水线的其余部分进行的处理和/或用于输出。图形处理流水线的着色器可以共享可编程处理电路,或者它们各自可以是不同的可编程处理单元。因此,图形处理单元(GPU)着色器核心是这样的处理单元:其通过运行针对要生成的图形输出中的每个图形项目的小程序来执行图形处理,上述图形输出诸如是渲染目标,例如,帧(“项目”在这方面通常是顶点或采样位置(例如,在片段着色器的情况下))。这通常使得具有高并行度,这是由于典型的渲染输出(例如,帧)特征在于具有相当大数量的顶点和片段,这些顶点和片段中的每一个可以独立地进行处理。在图形着色器操作中,每个“项目”将借助于执行线程来进行处理,该执行线程将执行针对讨论中的图形“项目”的讨论中的着色器。提高着色器执行效率的已知方式是将执行线程(在每个线程对应于例如一个顶点或一个采样位置的情况下)分组成“成组”或者“成束”的线程,在这种情况下,一组的线程以一致步调运行,一次一个指令。这样,能够在该组中的全部线程之间共享指令取出和调度资源。(用于这种线程组的其它术语包括“warps”和“wavefronts”。为了方便起见,将在本文中使用术语“线程组”,但是除非另有说明,该术语旨在包含全部的等同术语和布置。)在片段着色器的情况下(对渲染输出的基元中的每个采样位置执行一次的着色器),线程组通常包含一个或更多个“四元组(quads)”,其中“四元组”是采样位置的2x2分组。按照这种方式将采样位置组织成每四元组有利于在片段着色器中完成的部分操作,诸如取决于这种采样点增量的采样点增量计算和操作,诸如利用分级细化(mipmapping)的纹理查找。申请人已经意识到在这种布置中,在基元的边缘处,2x2采样位置四元组可以跨越基元的边缘,采样位置中的一部分在基元内部,而其它采样位置则在外部。在这种情况下,仍将针对四元组中的全部四个采样位置开始线程,但是事实上仅被基元覆盖的那些采样位置将是“活动”线程。然而,对于对应于在基元外部的采样位置的线程(为了方便起见,在本文中其将被称为“非活动”和/或“辅助”线程),仍然需要部分片段着色处理。这是因为例如,需要针对这种非活动(“辅助”)线程的片段着色结果中的一部分作为对诸如采样位置增量类型计算这样的片段着色操作中的一部分的输入。(然后,通过这种辅助线程计算出的结果在片段着色器结束时被丢弃(因为它们不另被需要))。图1例示了这种情况。图1示意性地示出要生成的图形输出的采样位置102的阵列101,其中采样位置的各个2x2分组被组织成将共同进行处理的“四元组”103。当基元被栅格化时,栅格化器将识别至少部分地被基元覆盖的这些采样位置四元组(分组),并且发出用于对每个至少部分地被覆盖的四元组(采样位置的分组(组))进行渲染的图形片段。然后,每个这种片段将作为线程组(warp)通过片段着色器进行处理,每个被覆盖的采样位置是该组(warp)中的“活动”线程,并且任何未被覆盖的采样位置是非活动(“辅助”)线程。图1示出覆盖采样位置的阵列的示例性基元104。从图1中可以看出,当采样位置四元组105针对基元103进行处理时,2x2四元组105内的采样位置中的三个采样位置将是“活动的”(即,表示基元3内部的采样位置),而四元组104中的第四个采样位置106由于其落在基元103的边缘的外部将是“非活动的”。因此,当针对四元组104执行片段着色器程序时,针对未被覆盖的采样位置106的线程组内部的线程将作为“辅助”线程被执行和处理。申请人相信,线程组的处理特别是在图形处理流水线的着色器中的处理仍然有改进的空间。
技术实现思路
根据本专利技术的第一方面,提供有一种操作图形处理流水线的方法,该图形处理流水线包括执行指令以进行着色操作的可编程着色阶段,其中,执行线程能够一起被分组为线程组,在所述线程组中,分组的线程以一致步调、一次一个指令地来执行,所述方法包括以下步骤:连同线程组合并事件指示一起向所述着色器阶段发出用于通过所述着色器阶段执行以对执行线程进行处理用于生成渲染输出的着色器程序,所述线程组合并事件指示表示所述着色器程序执行中的如下的点,即,在该点处,能够将线程组中的并非全部线程都是活动的所述线程组进行合并;所述图形处理流水线:识别要通过所述着色阶段进行处理的一组两个或更多个线程组,对于所述两个或更多个线程组,所述线程组中的并非全部线程都是活动的,并且所述两个或更多个线程组能够被合并为单个线程组;以及所述着色阶段:针对所识别的线程组执行所述着色器程序,针对所识别的线程组执行所述着色器程序包括以下步骤:当所识别的线程组已经到达所述线程组合并事件指示时,将所述线程组合并为包含来自所述线程组中的每一个线程组的活动线程的单个线程组;以及在所述合并事件指示点之后,针对经合并的线程组执行所述着色器程序中的进一步的指令。根据本专利技术的第二方面,提供有一种数据处理系统,该数据处理系统包括:图形处理流水线,该图形处理流水线包括执行指令以进行着色操作的可编程着色阶段,其中,执行线程能够一起被分组为线程组,在所述线程组中,分组的线程以一致步调、一次一个指令地来执行;以及编译器,该编译器对针对所述着色阶段的程序进行编译以生成用于通过所述着色阶段执行的指令;其中,所述编译器被配置为:连同线程组合并事件指示一起向所述着色器阶段发出用于通过所述着色器阶段执行以对执行线程进行处理用于生成渲染输出的着色器程序,所述线程组合并事件指示表示所述着色器程序执行中的如下的点,即,在该点处,能够将线程组中的并非全部线程都是活动的所述线程组进行合并;所述图形处理流水线被配置为:识别要通过所述着色阶段进行处理的各个组的两个或更多个线程组,对于所述两个或更多个线程组,所述线程组中的并非全部线程都是活动的,并且所述两个或更多个线程组能够被合并为相应的单个线程组;以及所述着色阶段被配置为:执行针对所识别的线程组的所述着色器,所述执行针对所识别的线程组的所述着色器包括以下步骤:当相应的所识别的一组可合并的线程组中的线程组已经到达所述线程组合并事件指示时,将所述线程组合并为包含来自所述线程组中的每一个线程组的活动线程的单个线程组;以及在所述合并事件指示点之后,针对经合并的线程组执行所述着色器程序中的进一步的指令。本专利技术涉及执行线程可以一起被分组到线程组(“warp”)中的图形处理流水线中着色器程序的执行。在本专利技术中,具有部分“非活动”(“辅助”)线程的线程组被识别,然后“合并事件”指示被用来触发将这些线程组合并为单个本文档来自技高网
...
图形处理系统

【技术保护点】
一种操作图形处理流水线的方法,该图形处理流水线包括执行指令以进行着色操作的可编程着色阶段,其中,执行线程能够一起被分组为线程组,在所述线程组中,分组的线程以一致步调、一次一个指令地来执行,所述方法包括以下步骤:连同线程组合并事件指示一起向所述着色器阶段发出用于通过所述着色器阶段执行以对执行线程进行处理用于生成渲染输出的着色器程序,所述线程组合并事件指示表示所述着色器程序执行中的如下的点,即,在该点处,能够将线程组中的并非全部线程都是活动的所述线程组进行合并;所述图形处理流水线:识别要通过所述着色阶段进行处理的一组两个或更多个线程组,对于所述两个或更多个线程组,所述线程组中的并非全部线程都是活动的,并且所述两个或更多个线程组能够被合并为单个线程组;以及所述着色阶段:针对所识别的线程组执行所述着色器程序,针对所识别的线程组执行所述着色器程序包括以下步骤:当所识别的线程组已经到达所述线程组合并事件指示时,将所述线程组合并为包含来自所述线程组中的每一个线程组的活动线程的单个线程组;以及在所述合并事件指示点之后,针对经合并的线程组执行所述着色器程序中的进一步的指令。

【技术特征摘要】
2015.07.30 GB 1513425.71.一种操作图形处理流水线的方法,该图形处理流水线包括执行指令以进行着色操作的可编程着色阶段,其中,执行线程能够一起被分组为线程组,在所述线程组中,分组的线程以一致步调、一次一个指令地来执行,所述方法包括以下步骤:连同线程组合并事件指示一起向所述着色器阶段发出用于通过所述着色器阶段执行以对执行线程进行处理用于生成渲染输出的着色器程序,所述线程组合并事件指示表示所述着色器程序执行中的如下的点,即,在该点处,能够将线程组中的并非全部线程都是活动的所述线程组进行合并;所述图形处理流水线:识别要通过所述着色阶段进行处理的一组两个或更多个线程组,对于所述两个或更多个线程组,所述线程组中的并非全部线程都是活动的,并且所述两个或更多个线程组能够被合并为单个线程组;以及所述着色阶段:针对所识别的线程组执行所述着色器程序,针对所识别的线程组执行所述着色器程序包括以下步骤:当所识别的线程组已经到达所述线程组合并事件指示时,将所述线程组合并为包含来自所述线程组中的每一个线程组的活动线程的单个线程组;以及在所述合并事件指示点之后,针对经合并的线程组执行所述着色器程序中的进一步的指令。2.根据权利要求1所述的方法,所述方法包括用于所述图形处理流水线的所述着色器编译器,其针对要通过着色器阶段执行的着色器程序执行以下步骤:确定在所述着色器程序的执行内是否存在如下的点,即,在该点处,能够将各自具有非活动线程的两个或更多个线程组进行合并;以及当确定在所述着色器程序执行中存在能够将具有非活动线程的两个或更多个线程组进行合并的点时,在所述着色器程序中包括或者为所述着色器程序提供线程组合并事件指示,所述线程组合并事件指示表示所述着色器程序执行中能够将各自具有非活动线程的两个或更多个线程组进行合并的点。3.一种对程序进行编译以生成用于图形处理流水线的着色阶段的指令的方法,该图形处理流水线执行指令以执行着色操作,其中,执行线程能够一起被分组为线程组,在所述线程组中,分组的线程以一致步调、一次一个指令地来执行;针对要通过着色器阶段执行的着色器程序,所述方法包括以下步骤:确定在所述着色器程序的执行内是否存在如下的点,即,在该点处,能够将各自具有非活动线程的两个或更多个线程组进行合并;以及当确定在所述着色器程序执行中存在能够将具有非活动线程的两个或更多个线程组进行合并的点时,在所述着色器程序中包括或者为所述着色器程序提供线程组合并事件指示,所述线程组合并事件指示表示所述着色器程序执行中能够将各自具有非活动线程的两个或更多个线程组进行合并的点。4.根据权利要求2或3所述的方法,所述方法进一步包括以下步骤:在所述着色器程序执行中,所述编译器将要求针对非活动线程的结果的任何着色器程序操作布置在所述线程组合并事件点之前,并且将不需要针对线程组中的非活动线程而被执行的任何着色器程序操作布置在所述线程组合并事件点之后。5.根据权利要求1至3中的任一项所述的方法,其中,将具有非重叠活动线程的线程组被识别为能够被合并为单个线程组的线程组。6.根据权利要求1至3中的任一项所述的方法,所述方法进一步包括以下步骤:将采样位置的分配重新映射到针对线程组的线程组路径,以允许线程组然后进行合并。7.根据权利要求1至3中的任一项所述的方法,所述方法进一步包括以下步骤:针对在执行所述着色器程序时要被合并为单个线程组的一组线程组,提供以下组件,以供在针对所述线程组的所述着色器程序的执行期间使用:一组公共寄存器,其在物理上由要被合并为所述单个线程组的所述一组线程组中的所述线程组共享;以及一组私人寄存器,其是如下的寄存器的组,即,对于所述一组线程组中的每个线程组来说分别是专属的,并且对于要进行合并的所述一组线程组中的其它线程组来说是不可访问。8.根据权利要求7所述的方法,所述方法进一步包括以下步骤:在所述着色器程序执行中的所述线程组合并点之前,所述线程组仅针对其各自的活动线程对针对所述一组线程组的所述公共寄存器进行写入。9.根据权利要求7所述的方法,所述方法进一步包括以下步骤:执行在所述着色器程序执行中的所述合并事件点之前的要求使用非活动线程的任何着色器程序操作,并且使用针对所讨论的线程组的所述私人寄存器。10.根据权利要求7所述的方法,所述方法进一步包括以下步骤:将需要跨越所述线程组合并事件而保存的来自所述线程组合并事件点之前的任何数据项存储在针对所述一组线程组的所述公共寄存器中。11.一种数据...

【专利技术属性】
技术研发人员:J·尼斯塔德
申请(专利权)人:ARM有限公司
类型:发明
国别省市:英国,GB

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1