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

图形处理制造技术

技术编号:14530253 阅读:55 留言:0更新日期:2017-02-02 12:53
本申请涉及图形处理。具体地,要由图形处理单元的着色器核心执行的着色器程序(60)的一系列指令被划分为,执行着色器程序的“全局”公用表达的初始指令组(61)、着色器程序中的执行着色器程序要处理的工作项组内的给定工作组公用的表达的指令组(62)、以及需要对于各工作项单独执行的主指令序列(63)。然后,执行线程能够在全局公用表达开始时(64)、或在工作组公用表达开始时(65)、或在主指令序列开始时(66)开始执行着色器程序。

【技术实现步骤摘要】

本专利技术涉及图形处理系统,具体地涉及包括一个或更多个可编程处理阶段(“着色器(shader)”)的图形处理系统的操作。
技术介绍
图形处理通常以流水线形式来进行,一个或更多个流水线阶段对数据进行操作,以产生最终的渲染输出(例如,显示的帧)。现在,许多图形处理流水线包括一个或更多个可编程处理阶段(通常称为“着色器”)。例如,图形处理流水线可以包括几何着色器、顶点着色器以及片段(像素)着色器中的一个或更多个(并且通常为全部)。这些着色器为对输入数据值执行着色器程序,以产生用于由图形流水线的剩余部分处理和/或用于输出的所期望的一组输出数据(例如,在片段着色器的情况下为适当着色且渲染的片段数据)。图形处理流水线的着色器可以共享可编程处理电路,或者它们可以各为不同的可编程处理单元。将由需要通过图形处理流水线使用高级着色器编程语言(诸如GLSL、HLSL、OpenCL等)进行的处理的应用,来提供要由图形处理流水线的给定“着色器”执行的着色器程序。该着色器程序将由指示相关语言标准(规范)中所定义的期望编程步骤的“表达”构成。然后,高级着色器程序由着色器语言编译器翻译为用于目标图形处理流水线的二进制代码。该二进制代码将由用于给定目标图形处理流水线的指令组规范中所指定的“指令”构成。如
中已知的,用于将着色器语言表达转换成二进制代码指令的编译处理,可以经由编译器内的程序的若干中间表示来进行。由此,以高级着色器语言编写的程序可以翻译成编译器特定中间表示(并且,可以存在编译器内的数个连续中间表示),最终的中间表示翻译成用于目标图形处理流水线的二进制代码指令。由此,对“表达”的参照在这里(除非场境另外需要)涉及要编译成目标图形处理器二进制代码(即,要被表达为硬件微指令)的着色器语言结构。(如
中已知的,这种着色器语言结构可以根据讨论中的着色器语言而被称为“表达”、“语句(statement)”等。为方便起见,这里将使用术语“表达”,但这旨在包含所有等同的着色器语言结构(诸如GLSL的“语句”))。“指令”对应地涉及被发出为执行“表达”的实际硬件指令(代码)。由此,图形处理流水线着色器通过对于要生成的输出(诸如渲染目标(例如,帧))中的各“工作项”(这种情况下的“工作项”将通常为顶点或采样位置(例如,在片段着色器的情况下))运行小程序来执行处理。在图形处理流水线用于“计算着色”(例如在OpenCL或DirectCompute下)的情况下,那么工作项将为适当的计算着色工作项。因为典型渲染输出(例如帧)是各可以被单独处理的相当大量的工作项(例如,顶点或片段)的特征,所以该着色器操作通常使得能够具有高并行度。在图形着色器操作中,经由将对于讨论中的工作项执行讨论中的着色器程序的执行线程,来处理各工作项。因为通常存在要对给定着色器程序处理的大量工作项(例如,顶点或采样位置)以及由此而存在大量的对应线程,所以图形处理系统可以被认为是大型多线程系统。申请人已经认识到,许多图形着色器程序将包括将对于(例如,对于绘制调用中的各线程)要执行的多组多个线程产生相同值的操作(表达)。例如,因为数据输入是一致变量,所以OpenCLES顶点着色器:将对于各线程(其中,各线程表示给定顶点)产生相同的“a*b*c”计算值。由此,如果该计算可以执行一次且结果可在多个线程之间共享,则可以使得着色器程序的执行更有效。申请人之前在其更早的英国第GB-A-2516358号专利申请中,提出了如下各项的使用:“导航(pilot)”着色器程序的使用,其执行一次将对于(例如,绘制调用的)一组多个线程产生相同值的表达;和然后的“主”着色器程序的使用,其使用“导航着色器”的结果代替每次重新计算公用表达,对于各工作项来执行。然而,尽管如此,但申请人相信仍然,存在改进包括一个或更多个着色器阶段的图形处理流水线中的着色器程序的执行的余地。
技术实现思路
根据本专利技术的第一方面,提供了一种操作图形处理流水线的方法,该图形处理流水线包括可编程着色阶段,该可编程着色阶段执行指令以执行着色操作,所述方法包括以下步骤:当所述着色器阶段要执行着色器程序以执行着色操作时,包括要在执行所述着色器程序时执行的一系列指令的所述着色器程序进行如下操作:向要执行所述着色器程序的所述着色器阶段发布多个执行线程,以便执行,其中,向所述着色器阶段发布所述执行线程以便所述着色器程序的执行的步骤被配置为,使得对于所述执行线程中的不同执行线程,所述着色器程序的执行可以在针对所述着色器程序的所述一系列指令内的不同指令处开始;以及对于所述执行线程执行所述着色器程序,其中,对于所述执行线程执行所述着色器程序的步骤包括如下步骤:对于在针对所述着色器程序的所述一系列指令中的第一点处开始的所述执行线程中的一个或更多个,执行所述着色器程序;以及对于在针对所述着色器程序的所述一系列指令中的不同点处开始的所述执行线程中的另一个或多个,执行所述着色器程序。根据本专利技术的第二方面,提供了一种图形处理流水线,该图形处理流水线包括可编程着色阶段,该可编程着色阶段执行指令以执行着色操作;其中,所述图形处理流水线被配置为:当所述着色器阶段要执行着色器程序以执行着色操作时,包括要在执行所述着色器程序时执行的一系列指令的所述着色器程序进行如下操作:向要执行所述着色器程序的所述着色器阶段发布多个执行线程,以便执行,其中,向所述着色器阶段发布所述执行线程以便所述着色器程序的执行的步骤被配置为,使得对于所述执行线程中的不同执行线程,所述着色器程序的执行可以在针对所述着色器程序的所述一系列指令内的不同指令处开始;以及对于所述执行线程执行所述着色器程序,其中,对于所述执行线程执行所述着色器程序的步骤包括如下步骤:对于针对所述着色器程序的所述一系列指令中的第一点处开始的所述执行线程中的一个或更多个,执行所述着色器程序;以及对于所述着色器程序的所述一系列指令中的不同点处开始的所述执行线程中的另一个或多个,执行所述着色器程序。本专利技术涉及图形处理流水线中的着色器程序的执行。在本专利技术中,要执行着色器程序的不同执行线程可以在着色器程序中的不同开始点处开始执行着色器程序中的指令。换言之,着色器程序具有用于执行线程的多个可能“开始”(“进入”)点,使得线程可以在着色器程序内的不同点处(例如,并且优选地,在更适于讨论中的执行线程的点处)开始执行着色器程序。在这一点上,申请人意识到,可以安排要在着色器程序的起点处或接近起点执行的着色器程序中的“公用”操作(表达)(即,在每次对于执行着色器程序的线程组中的一些或所有线程执行时,将产生相同值的表达(操作)),“非公用”操作(表达)(即,对于执行着色器程序的线程组中的各线程将(潜在地)产生不同值的表达(操作))在着色器程序中后面执行。此外,通过允许执行线程在着色器程序的该系列指令内的不同点处“进入”(开始)着色器程序,一些线程可以从起点处执行着色器程序(从而例如执行着色器程序中的公用操作),其它线程被设置为,在后面的点处开始执行着色器程序(从而,例如,并且优选地避免对于这些线程执行公用操作)。那么,这可以具有减少执行“公用”操作(表达)的线程的数量,从而使得着色器程序的整体执行更有效。由此,在本专利技术中,可以减少执行着色器本文档来自技高网
...

【技术保护点】
一种操作图形处理流水线的方法,该图形处理流水线包括可编程着色阶段,该可编程着色阶段执行指令以执行着色操作,所述方法包括以下步骤:当所述着色器阶段要执行着色器程序以执行着色操作时,包括要在执行所述着色器程序时执行的一系列指令的所述着色器程序进行如下操作:向要执行所述着色器程序的所述着色器阶段发布多个执行线程,以便执行,其中,向所述着色器阶段发布所述执行线程以便所述着色器程序的执行的步骤被配置为,使得对于所述执行线程中的不同执行线程,所述着色器程序的执行能够在针对所述着色器程序的所述一系列指令内的不同指令处开始;以及对于所述执行线程执行所述着色器程序,其中,对于所述执行线程执行所述着色器程序的步骤包括如下步骤:对于在针对所述着色器程序的所述一系列指令中的第一点处开始的所述执行线程中的一个或更多个,执行所述着色器程序;以及对于在针对所述着色器程序的所述一系列指令中的不同点处开始的所述执行线程中的另一个或多个,执行所述着色器程序。

【技术特征摘要】
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.一种图形处理流水线,该图形处理流水线包括可编程着色阶段,...

【专利技术属性】
技术研发人员:P·哈里斯
申请(专利权)人:ARM有限公司
类型:发明
国别省市:英国;GB

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

1