【技术实现步骤摘要】
本专利技术涉及图形处理系统,具体地涉及包括一个或更多个可编程处理阶段(“着色器(shader)”)的图形处理系统的操作。
技术介绍
图形处理通常以流水线形式来进行,一个或更多个流水线阶段对数据进行操作,以产生最终的渲染输出(例如,显示的帧)。现在,许多图形处理流水线包括一个或更多个可编程处理阶段(通常称为“着色器”)。例如,图形处理流水线可以包括几何着色器、顶点着色器以及片段(像素)着色器中的一个或更多个(并且通常为全部)。这些着色器为对输入数据值执行着色器程序,以产生用于由图形流水线的剩余部分处理和/或用于输出的所期望的一组输出数据(例如,在片段着色器的情况下为适当着色且渲染的片段数据)。图形处理流水线的着色器可以共享可编程处理电路,或者它们可以各为不同的可编程处理单元。将由需要通过图形处理流水线使用高级着色器编程语言(诸如GLSL、HLSL、OpenCL等)进行的处理的应用,来提供要由图形处理流水线的给定“着色器”执行的着色器程序。该着色器程序将由指示相关语言标准(规范)中所定义的期望编程步骤的“表达”构成。然后,高级着色器程序由着色器语言编译器翻译为用于目标图形处理流水线的二进制代码。该二进制代码将由用于给定目标图形处理流水线的指令组规范中所指定的“指令”构成。如
中已知的,用于将着色器语言表达转换成二进制代码指令的编译处理,可以经由编译器内的程序的若干中间表示来进行。由此,以高级着色器语言编写的程序可以翻译成编译器特定中间表示(并且,可以存在编译器内的数个连续中间表示),最终的中间表示翻译成用于目标图形处理流水线的二进制代码指令。由此,对“ ...
【技术保护点】
一种操作图形处理流水线的方法,该图形处理流水线包括可编程着色阶段,该可编程着色阶段执行指令以执行着色操作,所述方法包括以下步骤:当所述着色器阶段要执行着色器程序以执行着色操作时,包括要在执行所述着色器程序时执行的一系列指令的所述着色器程序进行如下操作:向要执行所述着色器程序的所述着色器阶段发布多个执行线程,以便执行,其中,向所述着色器阶段发布所述执行线程以便所述着色器程序的执行的步骤被配置为,使得对于所述执行线程中的不同执行线程,所述着色器程序的执行能够在针对所述着色器程序的所述一系列指令内的不同指令处开始;以及对于所述执行线程执行所述着色器程序,其中,对于所述执行线程执行所述着色器程序的步骤包括如下步骤:对于在针对所述着色器程序的所述一系列指令中的第一点处开始的所述执行线程中的一个或更多个,执行所述着色器程序;以及对于在针对所述着色器程序的所述一系列指令中的不同点处开始的所述执行线程中的另一个或多个,执行所述着色器程序。
【技术特征摘要】
2015.07.20 GB 1512669.11.一种操作图形处理流水线的方法,该图形处理流水线包括可编程着色阶段,该可编程着色阶段执行指令以执行着色操作,所述方法包括以下步骤:当所述着色器阶段要执行着色器程序以执行着色操作时,包括要在执行所述着色器程序时执行的一系列指令的所述着色器程序进行如下操作:向要执行所述着色器程序的所述着色器阶段发布多个执行线程,以便执行,其中,向所述着色器阶段发布所述执行线程以便所述着色器程序的执行的步骤被配置为,使得对于所述执行线程中的不同执行线程,所述着色器程序的执行能够在针对所述着色器程序的所述一系列指令内的不同指令处开始;以及对于所述执行线程执行所述着色器程序,其中,对于所述执行线程执行所述着色器程序的步骤包括如下步骤:对于在针对所述着色器程序的所述一系列指令中的第一点处开始的所述执行线程中的一个或更多个,执行所述着色器程序;以及对于在针对所述着色器程序的所述一系列指令中的不同点处开始的所述执行线程中的另一个或多个,执行所述着色器程序。2.根据权利要求1所述的方法,其中,要执行所述着色器程序的执行线程能够在所述着色器程序的开始处和在所述着色器程序中的计算所述着色器程序中的公用表达的至少一些指令之后,开始其所述着色器程序的执行。3.根据权利要求1或2所述的方法,其中,执行线程能够在执行所述着色器程序中的、对于正执行所述着色器程序的执行线程组的子集公用的表达的指令之后,开始所述着色器程序的执行。4.根据权利要求1、2或3所述的方法,其中,针对将对于要执行所述着色器程序的线程组中所有线程产生公用结果的任意着色器程序表达的指令,在针对所述着色器程序的所述一系列指令中比需要对于各线程单独执行的着色器程序表达的任意指令更早。5.根据权利要求1至4中任意一项所述的方法,其中,所述着色器程序包括:如下的指令,这些指令执行将对于要执行所述着色器程序的线程组中的所有线程产生公用结果的着色器程序表达;以及如下的指令,这些指令执行需要对于各线程单独执行的表达,但不依赖执行所述着色器程序中的公用表达的指令的结果;并且要执行所述着色器程序的执行线程能够在所述着色器程序中的、执行所述着色器程序中的所述公用表达的指令之后,但在执行需要对于各线程单独执行的表达的、但不依赖执行所述着色器程序中的公用表达的指令的结果的指令的开始之前,开始所述着色器程序的执行。6.根据前述权利要求中任意一项所述的方法,所述方法包括以下步骤:对于要执行所述着色器程序的工作项发布单个线程。7.根据前述权利要求中任意一项所述的方法,所述方法包括以下步骤:对于要执行所述着色器程序的工作项发布多个线程,各个线程在针对所述着色器程序的所述一系列指令内的不同指令处开始其所述着色器程序的执行。8.根据前述权利要求中任意一项所述的方法,所述方法包括以下步骤:发布线程,以在所述着色器程序的开始时开始线程的执行,直到一个执行线程完成所述着色器程序为止;以及其后,发布执行线程,以在所述着色器程序中的后面开始点处开始所述着色器程序。9.根据前述权利要求中任意一项所述的方法,所述方法包括以下步骤:追踪由执行线程进行的所述着色器程序中的特定指令或特定指令组的完成;以及在线程完成所述着色器程序中的特定指令或特定指令组时,释放如下线程,这些线程要在后面开始点处开始所述着色器程序以便执行。10.根据前述权利要求中任意一项所述的方法,所述方法包括以下步骤:在针对所述着色器程序的所述一系列指令中的第一开始点处开始其所述着色器程序的执行的至少一个执行线程,将它通过所述指令的执行而产生的结果存储在寄存器中,以便由在针对所述着色器程序的所述一系列指令中的后面点处开始其所述着色器程序的执行的其它线程来使用。11.一种编译程序以产生指令的方法,所述指令针对图形处理流水线的着色阶段,该着色阶段执行指令以执行着色操作,对于要由着色器阶段执行的着色器程序,所述方法包括以下步骤:在所述着色器程序的执行顺序中,把针对将对于要执行所述着色器程序的工作项组中的所有工作项产生相同结果的着色器程序表达的指令,置于针对需要对于各工作项单独执行的着色器程序表达的指令之前。12.一种图形处理流水线,该图形处理流水线包括可编程着色阶段,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。