首页 / 专利库 / 资料储存系统 / 高速缓冲存储器 / 顶点缓存 / 验证着色器函数的方法、装置及计算机存储介质

验证着色器函数的方法、装置及计算机存储介质

阅读:716发布:2020-05-14

专利汇可以提供验证着色器函数的方法、装置及计算机存储介质专利检索,专利查询,专利分析的服务。并且本 发明 实施例 公开了验证 着色器 函数的方法、装置及计算机存储介质;该方法可以包括:针对预先准备的用于进行着色器函数运算的原始数据通过GPU中图形 渲染 管线中片元着色器之前的第一着色器运行第一着色器函数;通过GPU在所述第一着色器函数运行完毕后捕获所述第一着色器函数的运行结果并传递至设定缓存;通过CPU根据所述原始数据模拟运行所述第一着色器函数,获取所述第一着色函数的模拟结果;通过CPU读取设定缓存内的所述第一着色器函数的运行结果;通过CPU将所述第一着色器函数的运行结果与所述第一着色函数的模拟结果进行比较以验证所述第一着色器函数。,下面是验证着色器函数的方法、装置及计算机存储介质专利的具体信息内容。

1.一种验证着色器函数的方法,其特征在于,包括:
针对预先准备的用于进行着色器函数运算的原始数据通过GPU中图形渲染管线中片元着色器之前的第一着色器运行第一着色器函数;
通过GPU在所述第一着色器函数运行完毕后捕获所述第一着色器函数的运行结果并传递至设定缓存;
通过CPU根据所述原始数据模拟运行所述第一着色器函数,获取所述第一着色函数的模拟结果;
通过CPU读取设定缓存内的所述第一着色器函数的运行结果;
通过CPU将所述第一着色器函数的运行结果与所述第一着色函数的模拟结果进行比较以验证所述第一着色器函数。
2.根据权利要求1所述的方法,其特征在于,所述第一着色器包括顶点着色器和几何着色器中的至少一项;相应地,所述第一着色器函数包括顶点着色器函数和几何着色器函数中的至少一项。
3.根据权利要求2所述的方法,其特征在于,相应于所述第一着色器函数为顶点着色器函数,所述第一着色器函数包括针对顶点数据进行处理的顶点函数以及用于通用计算的通用函数。
4.根据权利要求2所述的方法,其特征在于,相应于几何着色器被选中执行且所述第一着色器函数为几何着色器函数,所述第一着色器函数包括细分函数和几何处理函数。
5.根据权利要求1所述的方法,其特征在于,所述通过GPU在所述第一着色器函数运行完毕后捕获所述第一着色器函数的运行结果并传递至设定缓存,包括:
通过GPU在所述第一着色器函数运行完毕后,利用变换反馈Transfrom feedback将所述第一着色器函数的运行结果传递至Transfrom feedback缓存。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
通过GPU中的第二着色器运行第二着色器函数,并将所述第二着色器的运行结果传递至缓存FrameBuffer;其中,所述第二着色器包括片元着色器;
通过CPU从帧缓存中读取所述第二着色器函数的运行结果;
通过CPU根据所述原始数据模拟运行所述第二着色器函数,获取所述第二着色函数的模拟结果;
通过CPU将所述第二着色器函数的运行结果与所述第二着色函数的模拟结果进行比较以验证所述第二着色器函数。
7.一种验证着色器函数的装置,其特征在于,所述装置包括:存储器、CPU和GPU;其中,所述存储器用于存储原始数据;
所述GPU,经配置以执行以下步骤:
针对所述原始数据通过图形渲染管线中片元着色器之前的第一着色器运行第一着色器函数;以及,
在所述第一着色器函数运行完毕后捕获所述第一着色器函数的运行结果并传递至设定缓存;
所述CPU,经配置已执行以下步骤:
根据所述原始数据模拟运行所述第一着色器函数,获取所述第一着色函数的模拟结果;以及,
读取设定缓存内的所述第一着色器函数的运行结果;以及,
将所述第一着色器函数的运行结果与所述第一着色函数的模拟结果进行比较以验证所述第一着色器函数。
8.根据权利要求7所述的装置,其特征在于,所述GPU,经配置以执行:通过第二着色器运行第二着色器函数,并将所述第二着色器的运行结果传递至帧缓存FrameBuffer;
所述CPU,还经配置已执行以下步骤:从帧缓存中读取所述第二着色器函数的运行结果;以及,
根据所述原始数据模拟运行所述第二着色器函数,获取所述第二着色函数的模拟结果;以及
将所述第二着色器函数的运行结果与所述第二着色函数的模拟结果进行比较以验证所述第二着色器函数。
9.一种计算装置,其特征在于,所述计算装置包括权利要求7或8所述的验证着色器函数的装置。
10.一种计算机存储介质,所述计算机存储介质存储有验证着色器函数的程序,所述验证着色器函数的程序被至少一个处理器执行时实现权利要求1至6任一项所述的验证着色器函数的方法的步骤。

说明书全文

验证着色器函数的方法、装置及计算机存储介质

技术领域

[0001] 本发明实施例涉及图像处理器(GPU,Graphic Processing Unit)技术领域,尤其涉及验证着色器函数的方法、装置及计算机存储介质。

背景技术

[0002] 目前,在图形渲染管线中,可以通过着色器语言(SL,Shader Language)编写着色器Shader函数以实现图形渲染管线中各种类型着色器的着色器程序。由于Shader函数运行于GPU中,基于CPU和GPU之间存储编译环境的不同,针对Shader函数的验证更加复杂。
[0003] 一般来说,目前针对Shader函数的验证方案,都是针对图形渲染管线的最终输出数据进行封装或解析,从而判断图形渲染管线在处理过程中所使用的Shader函数的执行结果是否正确。上述方案必须整个图形渲染管线执行完毕后才能够对输出数据进行解析,导致验证时流线层级多,验证效率低。

发明内容

[0004] 有鉴于此,本发明实施例期望提供验证着色器函数的方法、装置及计算机存储介质;能够便捷地对Shader函数进行验证,提高了验证的灵活性。
[0005] 本发明实施例的技术方案是这样实现的:第一方面,本发明实施例提供了一种验证着色器函数的方法,包括:
针对预先准备的用于进行着色器函数运算的原始数据通过GPU中图形渲染管线中片元着色器之前的第一着色器运行第一着色器函数;
通过GPU在所述第一着色器函数运行完毕后捕获所述第一着色器函数的运行结果并传递至设定缓存;
通过CPU根据所述原始数据模拟运行所述第一着色器函数,获取所述第一着色函数的模拟结果;
通过CPU读取设定缓存内的所述第一着色器函数的运行结果;
通过CPU将所述第一着色器函数的运行结果与所述第一着色函数的模拟结果进行比较以验证所述第一着色器函数。
[0006] 第二方面,本发明实施例提供了一种验证着色器函数的装置,所述装置包括:存储器、CPU和GPU;其中,所述存储器用于存储原始数据;
所述GPU,经配置以执行以下步骤:
针对所述原始数据通过图形渲染管线中片元着色器之前的第一着色器运行第一着色器函数;以及,
在所述第一着色器函数运行完毕后捕获所述第一着色器函数的运行结果并传递至设定缓存;
所述CPU,经配置已执行以下步骤:
根据所述原始数据模拟运行所述第一着色器函数,获取所述第一着色函数的模拟结果;以及,
读取设定缓存内的所述第一着色器函数的运行结果;以及,
将所述第一着色器函数的运行结果与所述第一着色函数的模拟结果进行比较以验证所述第一着色器函数。
[0007] 第三方面,本发明实施例提供了一种计算装置,所述计算装置包括第二方面所述的验证着色器函数的装置。
[0008] 第四方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有验证着色器函数的程序,所述验证着色器函数的程序被至少一个处理器执行时实现第一方面所述的验证着色器函数的方法的步骤。
[0009] 本发明实施例提供了一种验证着色器函数的方法、装置及计算机存储介质;通过GPU将片元着色期之前的第一着色器函数的运行结果在第一着色器函数运行完毕后传递至设定缓存,使得CPU在获得第一着色器函数的模拟结果后从该设定缓存中读取第一着色器函数的运行结果进行比对以验证所述第一着色器函数。由此,对于第一着色器函数的验证无需完成完整的图形渲染管线流程,减少验证所要执行的流水线长度,从而降低了验证执行的复杂度,而且通过CPU的模拟运算结果与GPU的真实运行结果进行比对,能够减少人为验证过程中的计算误差和格式转换误差,保证了着色器函数的验证正确性。附图说明
[0010] 图1为本发明实施例提供的一种计算装置的组成框图;图2为本发明实施例提供的一种GPU的组成框图;
图3为本发明实施例提供的一种图形渲染管线的逻辑结构示意图;
图4为本发明实施例提供的一种验证着色器函数的方法流程示意图;
图5为本发明实施例提供的另一种验证着色器函数的方法流程示意图;
图6为本发明实施例提供的一种验证着色器函数的方法具体实施流程示意图。

具体实施方式

[0011] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
[0012] 参见图1,其示出了能够实现本发明实施例的计算装置100,该计算装置100可以包含但不限于以下各项:无线装置、移动或蜂窝电话(包含所谓的智能电话)、个人数字助理(PDA)、视频游戏控制台(包含视频显示器、移动视频游戏装置、移动视频会议单元)、膝上型计算机、桌上型计算机、电视机顶盒、平板计算装置、电子书阅读器、固定或移动媒体播放器,等。在图1的实例中,计算装置100可以包括中央处理单元(CPU)102 和经由可以包括存储器桥105 的互连路径通信的系统存储器104。存储器桥105,其可以是例如北桥芯片,经由总线或其他通信路径106(例如超传输(HyperTransport)链路)连接到I/O(输入/ 输出)桥107。I/O 桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108(例如键盘鼠标轨迹球、能够作为组成部分并入显示设备110的触摸屏或其他类型的输入装置)接收用户输入并且经由路径106 和存储器桥105 将所述输入转发到CPU 102。图形处理器112 经由总线或其他通信路径113(例如PCI Express、加速图形端口或超传输链路)耦合到存储器桥
105;在一个实施例中,GPU 112可以是将像素传递到显示设备110(例如传统的基于CRT或LCD 的监视器)的图形子系统。系统盘114 也连接到I/O 桥107。开关116 提供I/O 桥107 与诸如网络适配器118 以及各种外插卡120 和121 的其他组件之间的连接。其他组件(未明确示出),包括USB 或其他端口连接、CD 驱动器、DVD 驱动器、胶片录制设备及类似组件,也可以连接到I/O 桥107。使图1 中各种组件互连的通信路径可以使用任何适合的协议实现,诸如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或者任何其他总线或点到点通信协议,并且不同设备间的连接可使用本领域已知的不同协议。
[0013] 在一个实施例中,GPU 112 包含经优化用于图形和视频处理的电路,包括例如视频输出电路。在另一个实施例中,GPU 112 包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构。在又一个实施例中,可以将GPU 112 与一个或多个其他系统元件集成起来,诸如存储器桥105、CPU 102 以及I/O 桥107,以形成片上系统(SoC)。
[0014] 应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数量和布置、CPU 102 的数量以及GPU 112 的数量,可根据需要修改。例如,在一些实施例中,系统存储器104 直接连接到CPU 102 而不是通过桥,并且其他设备经由存储器桥105 和CPU 102 与系统存储器104 通信。在其他替代性拓扑中,GPU 112 连接到I/O 桥107 或直接连接到CPU 102,而不是连接到存储器桥105。而在其他实施例中,I/O 桥107 和存储器桥105 可能被集成到单个芯片上。大量实施例可以包括两个或两个以上的CPU 102 以及两个或两个以上的GPU 112。本文所示的特定组件是可选的;例如,任意数量的外插卡或外围设备都可能得到支持。在一些实施例中,开关116被去掉,网络适配器118 和外插卡
120、121 直接连接到I/O 桥107。
[0015] 图2示出了能够实现本发明实施例技术方案的一种GPU 112示意框图,在本发明实施例中,图形存储器204可为GPU 112的一部分。因此,GPU 112可在不使用总线的情况下从图形存储器204读取数据且将数据写入到图形存储器204。换句话说,GPU 112可使用本地存储装置而不是芯片外存储器在本地处理数据。此类图形存储器204可被称作芯片上存储器。这允许GPU 112通过消除GPU 112经由总线读取和写入数据的需要来以更高效的方式操作,其中经由总线操作可经历繁重的总线业务。然而,在一些情况下,GPU 112可不包含单独的存储器,而是经由总线利用系统存储器10。图形存储器204可包含一或多个易失性或非易失性存储器或存储装置,例如,随机存取存储器(RAM)、静态RAM(SRAM)、动态RAM(DRAM)、可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、快闪存储器、磁性数据媒体或光学存储媒体。
[0016] 基于此,GPU 112可以经配置以执行与下述相关的各种操作:经由存储器桥105和总线113从CPU 102 和/ 或系统存储器104 所提供的图形数据生成像素数据,与本地图形存储器204(例如常用缓冲区(buffer))交互以存储和更新像素数据,传递像素数据到显示设备110 等等。
[0017] 在操作中,CPU 102 是计算装置100 的主处理器,控制和协调其他系统组件的操作。具体地,CPU 102 发出控制GPU 112的操作的命令。在一些实施例中,CPU 102 为GPU 112写入命令流到数据结构中(在图1或图2中未明确示出),所述数据结构可位于系统存储器104、图形存储器204、或CPU 102 和GPU 112都可访问的其他存储位置中。将指向每个数据结构的指针写到入栈缓冲区(pushbuffer)以启动对数据结构中的命令流的处理。GPU 
112从一个或多个入栈缓冲区读取命令流,然后相对于CPU 102 的操作异步地执行命令。可以为每个入栈缓冲区指定执行优先权以控制对不同入栈缓冲区的调度。
[0018] 具体如图2中所述,GPU 112可以经由连接到存储器桥105(或者,在一个替代性实施例中,直接连接到CPU 102)的通信路径113与计算装置100的其余部分通信的I/O(输入/输出)单元205相连接。GPU 112到计算装置100的其余部分的连接也可以变化。在一些实施例中,GPU 112可作为外插卡来实现,所述外插卡可被插入到计算机系统100 的扩展槽中。在其他实施例中,GPU 112可以和诸如存储器桥105 或I/O 桥107 的总线桥一起集成在单个芯片上。而在其他实施例中,GPU 112的一些或所有元件可以和CPU 102 一起集成在单个芯片上。
[0019] 在一个实施例中,通信路径113 可以是PCI-EXPRESS 链路,如本领域所知的,在PCI-EXPRESS 链路中专用通道被分配到GPU 112。I/O 单元205 生成用于在通信路径113 上传输的数据包(或其他信号),并且还从通信路径113 接收所有传入的数据包(或其他信号),将传入的数据包引导到GPU 112的适当组件。例如,可将与处理任务有关的命令引导到调度器207,而可将与存储器操作有关的命令(例如,对图形存储器204的读取或写入)引导到图形存储器204。
[0020] 在GPU 112中,可以包括渲染核阵列230,该阵列230可以包括C 个通用的渲染核208,其中C>1。基于阵列230中的通用渲染核208,GPU112能够并发执行大量的程序任务或计算任务。举例来说,每个渲染核均可被编程以能够执行与种类繁多的程序相关的处理任务,包括但不限于,线性与非线性数据变换,视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图形渲染操作(例如,曲面细分着色器、顶点着色器、几何着色器、和/或片段着色器程序)等等。
[0021] 此外,GPU 112中还可以包括固定功能处理单元231,其可包含经硬连线以执行某些功能的硬件。尽管固定功能硬件可经由例如一或多个控制信号而配置以执行不同功能,但所述固定功能硬件通常并不包含能够接收用户编译程序的程序存储器。在一些实例中,固定功能处理单元231可包含例如执行图元装配的处理单元、执行光栅化处理单元和执行片段操作的处理单元。对于执行图元装配的处理单元来说,其能够将通过顶点着色器单元已完成着色的顶点按照原始连接关系还原出图形的网格结构,即图元,从而供后续片元着色器单元进行处理;所述光栅化操作包括转换新图元并将片段输出至片段着色器;而片段操作则包括例如深度测试、裁剪测试、 Alpha混合或者透明度混合等,经过上述操作所输出的像素数据可以作为图形数据通过显示设备110进行显示。综合上述渲染核阵列230以及固定功能处理单元231,能够实现一个完整的图形渲染管线的逻辑模型。
[0022] 此外,渲染核阵列230可以从调度器207接收将要执行的处理任务。调度器207可独立地调度所述任务由GPU 112的资源(比如渲染核阵列230中的一或多个渲染核208)执行。在一个实例中,调度器207可以是硬件处理器。在图2中所示出的实例中,调度器207可包含于GPU 112中。在其它实例中,调度器207还可以是与CPU 102和GPU 112分离的单元。调度器
207还可被配置成接收命令和/或操作的流的任何处理器。
[0023] 调度器207可处理一或多个命令流,其包含调度操作,所述调度操作包含于由GPU 112执行的一或多个命令流中。具体地说,调度器207可处理一或多个命令流,且调度所述一或多个命令流中的操作,以由渲染核阵列230执行。在操作中,CPU 102藉由图1中系统存储器104所包括的GPU驱动程序103可向调度器207发送包括待由GPU 112执行的一系列操作的命令流。调度器207可通过I/O单元205接收包括命令流的操作流且可基于命令流中的操作次序依序地处理命令流的操作,且可调度命令流中的操作可以由渲染核阵列230中的一或多个处理单元执行。
[0024] 基于上述图1及图2的描述,图3示出了以图2所示的GPU 112的结构所形成的图形渲染管线80的示例,需要说明的是,图形渲染管线80的核心部分是利用渲染核阵列230中所包括的通用渲染核208以及固定功能处理单元231通过级联形成的逻辑结构,此外,对于GPU 112中所包括的调度器207、图形存储器204以及I/O单元205,均为实现该图形渲染管线80这一逻辑结构功能的外围电路或装置,相应来说,图形渲染管线80通常包含可编程执行单元(如图3中圆框示意)和固定功能单元(如图3中方框示意),举例来说,可编程执行单元的功能可由渲染核阵列230中所包括的通用渲染核208来执行,固定功能单元的功能可由固定功能处理单元231实现。如图3所示,图形渲染管线80所包括的各级依次为:
顶点抓取模82,在图3的实例中展示为固定功能单元且通常负责将图形数据(三角形、线和点)供应到图形渲染管线80。举例来说,顶点抓取模块82可收集高阶表面、图元等的顶点数据,且将顶点数据和属性输出到顶点着色器84。
[0025] 顶点着色器84是可编程执行单元,其配置为执行顶点着色器程序,按顶点着色器程序所指定的来亮化和变换顶点数据。例如,顶点着色器84可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到可替代地基于诸如世界空间或规格化设备坐标(NDC)空间的坐标系。顶点着色器84可读取由顶点抓取模块82所存储的数据用于在处理顶点数据中使用。
[0026] 图元装配模块86,在图3中展示为固定功能单元,负责收集顶点着色器模块84输出的顶点并将所述顶点组成几何图元。例如,图元装配模块86可以配置为将每三个连续的顶点组成为几何图元(即三角形)。在一些实施例中,特定的顶点可以被重复用于连续的几何图元(例如,三角形带中的两个连续的三角形可以共享两个顶点)。
[0027] 几何着色器88是可编程执行单元,其配置为执行几何着色器程序,按几何着色器程序所指定的来变换从图元装配模块86所接收的图形基元。例如,几何着色器88可被编程以将图形基元细分成一个或多个新图形基元并计算用来将新图形基元光栅化的参数,诸如平面方程系数。在一些示例中,几何着色器88并非图形渲染管线80的必要着色器,因此,几何着色器88是可选的,如图中用虚线表示。在一些实施例中,几何着色器88还可在几何流中添加或删除元素。几何着色器88将指定新图形基元的参数和顶点输出到裁剪和划分模块90。
[0028] 裁剪和划分模块90,在图3中展示为固定功能单元,负责对装配完成的图元进行裁剪剔除后,按照tile的大小进行划分。
[0029] 光栅化模块92通常为负责准备片元着色器94的图元的固定功能单元。举例来说,光栅化模块92可产生若干碎片以供片元着色器94进行阴影处理。在一些示例中,光栅化模块92可扫描转换新图形基元并将片段和覆盖数据输出到片元着色器94;此外,光栅化模块92可配置为实施z剔除(z-culling)和其他基于z的优化。
[0030] 片元着色器94是可编程的执行单元,其配置为执行片段着色器程序、按片段着色器程序所指定的来变换从光栅化模块92所接收的片段。例如,片元着色器94可被编程以实施诸如透视校正、纹理映射、着色、混合等操作,以产生输出到输出合并器模块96的经着色的片段。
[0031] 输出合并器模块96,在图3中展示为固定功能单元,通常负责实施诸如模板(stencil)、z测试、混合等的光栅操作,并输出像素数据作为经处理的图形数据用于存储在图形存储器204中。经处理的图形数据可存储在图形存储器204中,用于在显示设备110上显示或用于由CPU102或GPU 112进一步处理。
[0032] 针对上述图形渲染管线80,其中,顶点着色器84、几何着色器88以及片元着色器94的功能均通过SL针对通用渲染核208进行相应的着色器程序编程以实现,在编写顶点着色器程序、几何着色器程序以及片元着色器程序的过程中,针对着色器程序内所包括的Shader函数进行验证,通常需要完成上述图3所示的完整的图形渲染管线80的逻辑流程,并将渲染结果通过图形渲染管线80存储于以帧缓存器为例的图形存储器204中,需要对渲染结果进行判断时,只能通过图形渲染管线80的固定输出,以进行图形界面的有效绘制,解析图形、像素数据、对比预期等验证操作。由此可以看出,目前常规的验证方案整个过程执行流水线较长,且不能进行数据交互,类似黑盒测试。大大限制了数据传递的灵活性,增加了结果反馈的复杂度。
[0033] 有鉴于此,本发明实施例期望能够描述一种验证着色器函数的技术,对于实现图形渲染管线80中部分着色器的Shader函数能够不必再完成完整的图形渲染管线80的逻辑流程就能够进行及时的验证,减少反馈的流水线长度。具体来说,参见图4,其示出了本发明实施例提供的一种验证着色器函数的方法,该方法可以包括:S401:针对预先准备的用于进行着色器函数运算的原始数据通过GPU中图形渲染管线中片元着色器之前的第一着色器运行第一着色器函数;
S402:通过GPU在所述第一着色器函数运行完毕后捕获所述第一着色器函数的运行结果并传递至设定缓存;
S403:通过CPU根据所述原始数据模拟运行所述第一着色器函数,获取所述第一着色函数的模拟结果;
S404:通过CPU读取设定缓存内的所述第一着色器函数的运行结果;
S405:通过CPU将所述第一着色器函数的运行结果与所述第一着色函数的模拟结果进行比较以验证所述第一着色器函数。
[0034] 需要说明的是,所述第一着色器包括顶点着色器和几何着色器中的至少一项;相应地,所述第一着色器函数包括顶点着色器函数和几何着色器函数中的至少一项。
[0035] 上述方案在实现过程中,S401、S402和S403与S404的执行顺序并不具体限定,也就是说,在执行的先后顺序方面,S401、S402和S403可以在S404之前、之后或者同时执行,本发明实施例不对执行顺序进行具体限定。通过图4所示的技术方案,可以看出,第一着色器函数的运行结果在第一着色器函数运行完毕后传递至设定缓存,使得CPU在获得第一着色器函数的模拟结果后从该设定缓存中读取第一着色器函数的运行结果进行比对以验证所述第一着色器函数。由此可以看出,采用图4所示的技术方案,对于第一着色器函数的验证无需完成完整的图形渲染管线流程,减少验证所要执行的流水线长度,从而降低了验证执行的复杂度,而且通过CPU的模拟运算结果与GPU的真实运行结果进行比对,能够减少人为验证过程中的计算误差和格式转换误差,保证了着色器函数的验证正确性。
[0036] 对于图4所示的技术方案,在一些示例中,所述通过GPU在所述第一着色器函数运行完毕后捕获所述第一着色器函数的运行结果并传递至设定缓存,包括:通过GPU在所述第一着色器函数运行完毕后,利用变换反馈(Transfrom feedback)将所述第一着色器函数的运行结果传递至Transfrom feedback缓存。
[0037] 对于上述示例,需要说明的是,Transform Feedback指在图形渲染管线中,顶点着色器84处理(如果有几何着色器88,那么就在几何着色器88处理后)之后,图元装配之前的一个步骤。它可以重新捕获即将装配为图元(点,线段,三角形)的顶点,然后将部分或全部属性传递到缓存对象上来。举例来说,通常会采用顶点缓冲对象(VBO,Vertex Buffer Object)来存储用于执行绘制操作的顶点。而通过变换反馈重新捕获着色器处理之后的顶点,并将这些处理后的顶点写回到VBO以避免将这些顶点数据从图形内存传输到主内存后再进行回调。可以理解地,通过Transform Feedback将所述第一着色器函数的运行结果传递至Transfrom feedback缓存,不再依赖管线的固定输出,能够实现自定义的输出格式,数据传递方式更加灵活,并且可以通过流stream的方式一次性传递多组数据以增加数据吞吐量,在数据宽度上能够增加传递的数据量。与常规方案相比,能够减少对图形渲染管线渲染结果的封装及解析。
[0038] 基于上述描述,通过Transform Feedback,顶点着色器84和/或几何着色器88就可以组合成一个小的渲染管线,而不用后续的光栅化模块92及片元着色器94处理,如此,就能够利用GPU强大的计算能实现一些通用的计算。基于此,在一些示例中,相应于所述第一着色器函数为顶点着色器函数,所述第一着色器函数包括针对顶点数据进行处理的顶点函数以及用于通用计算的通用函数。举例来说,顶点函数能够亮化和变换顶点数据,通用函数用于进行通用计算。
[0039] 此外,在一些示例中,由于几何着色器88于图形渲染管线80内属于可选执行的着色器,相应于几何着色器88被选中执行且所述第一着色器函数为几何着色器函数,所述第一着色器函数包括细分函数和几何处理函数。举例来说,细分函数用于图形基元的顶点细分成一个或多个新图形基元的顶点;几何处理函数则可以用于在几何数据流中添加或删除元素。
[0040] 对于图4所示的技术方案,第一着色器函数为图形渲染管线80中处于片元着色器94之前的顶点着色器以及几何着色器88的着色器函数,那么对于本发明实施例来说,第二着色器包括片元着色器,相应地,第二着色器函数包括片段着色器函数。那么对于第二着色器函数,在一些示例中,参见图5,还可以包括:
S501:通过GPU中的第二着色器运行第二着色器函数,并将所述第二着色器的运行结果传递至帧缓存FrameBuffer;
S502:通过CPU从帧缓存中读取所述第二着色器函数的运行结果;
S503:通过CPU根据所述原始数据模拟运行所述第二着色器函数,获取所述第二着色函数的模拟结果;
S504:通过CPU将所述第二着色器函数的运行结果与所述第二着色函数的模拟结果进行比较以验证所述第二着色器函数。
[0041] 需要说明的是,对于片元着色器来说,其作为图形渲染管线80的最后一级可编程着色器,其运行结果已经能够完成完整的图形渲染管线80而存储至帧缓存中,因此,CPU可以从FrameBuffer中读取第二着色器函数的运行结果,并和自身模拟得到的模拟结果进行比较,从而验证第二着色器函数是否正确。
[0042] 对于上述方案,以公共函数abs函数为例,在GPU一端,顶点着色器84接收预先准备的原始数据,并根据顶点着色器函数对原始数据进行计算,计算结果通过Transfrom feedback传递至Transfrom feedback缓存;而在CPU一端,CPU仅需要针对同样的原始数据运行相同的顶点着色器函数以对顶点着色器进行模拟,从而获得模拟结果,并在Transfrom feedback缓存读取计算结果之后,将模拟结果和计算结果进行比对,就能够完成abs函数的验证。无需再等待完整的图形渲染管线
80完成后的输出数据的封装和解析;并且CPU端同GPU端对着色器函数的实现方法一致,从而避免由于技术实现各异所导致的验证差异。
[0043] 对于上述技术方案,参见图6,其示出了上述技术方案的具体实现的框图,该具体实现流程如下:S1:预先准备参与着色器函数运算的原始数据;
S2:顶点着色器根据原始数据运行顶点相关的着色器函数或者通用计算函数,并将运行结果通过Transform feedback写回至Transform feedback缓存;可以理解地,以开放图形库(OpenGL,Open Graphics Library)为例,该步骤所写回的运行结果预计为OPENGL中约
50%的着色器函数的结果,通过提前写回结果以进行比对,从而完成顶点着色器函数的验证闭环。
[0044] S3:几何着色器通过运行几何着色器函数,并将运行结果,通过Transform feedback写回至Transform feedback缓存;可以理解地,以开放图形库(OpenGL,Open Graphics Library)为例,该步骤所写回的运行结果预计为OpenGL中约20%的着色器函数的结果,通过提前写回结果以进行比对,从而完成几何着色器函数的验证闭环。
[0045] S4:片元着色器运行片元着色器函数,并将运行结果通过完整的图形渲染管线写入帧缓存FrameBuffer;可以理解地,以开放图形库(OpenGL,Open Graphics Library)为例,片元着色器函数约为OpenGL中剩余的30%的着色器函数。
[0046] S5:CPU的模拟运算部分针对原始数据模拟GPU端的着色器函数,并将模拟结果反馈至比较部分;S6:CPU的比较部分将Transform feedback缓存或帧缓存读取的运行结果与模拟结果进行比较,以验证对应运行结果的着色器函数
基于上述技术方案相同的技术构思,本发明实施例提供了一种验证着色器函数的装置,该装置可以为图1所示的计算装置的一部分,包括:存储器、CPU和GPU;其中,所述存储器用于存储原始数据;
所述GPU,经配置以执行以下步骤:
针对所述原始数据通过图形渲染管线中片元着色器之前的第一着色器运行第一着色器函数;以及,
在所述第一着色器函数运行完毕后捕获所述第一着色器函数的运行结果并传递至设定缓存;
所述CPU,经配置已执行以下步骤:
根据所述原始数据模拟运行所述第一着色器函数,获取所述第一着色函数的模拟结果;以及,
读取设定缓存内的所述第一着色器函数的运行结果;以及,
将所述第一着色器函数的运行结果与所述第一着色函数的模拟结果进行比较以验证所述第一着色器函数。
[0047] 在一些示例中,所述GPU,经配置以执行:在所述第一着色器函数运行完毕后,利用变换反馈(Transfrom feedback)将所述第一着色器函数的运行结果传递至Transfrom feedback缓存。
[0048] 在一些示例中,所述GPU,还经配置以执行:通过第二着色器运行第二着色器函数,并将所述第二着色器的运行结果传递至帧缓存FrameBuffer;所述CPU,还经配置已执行以下步骤:从帧缓存中读取所述第二着色器函数的运行结果;以及,
根据所述原始数据模拟运行所述第二着色器函数,获取所述第二着色函数的模拟结果;以及
将所述第二着色器函数的运行结果与所述第二着色函数的模拟结果进行比较以验证所述第二着色器函数。
[0049] 可以理解地,在本实施例中,“部分”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是单元,还可以是模块也可以是非模块化的。
[0050] 在上述一或多个实例或示例中,所描述功能可实施于硬件、软件、固件或其任何组合中。如果实施于软件中,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体可包含计算机数据存储媒体或通信媒体,通信媒体包含促进将计算机程序从一处传递到另一处的任何媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。举例来说且非限制,此类计算机可读媒体可包括U盘、移动硬盘、RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于运载或存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站服务器或其它远程源传输软件,那么同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
[0051] 代码可由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的可编程逻辑器件、分立或者晶体管逻辑器件、分立硬件组件。。因此,如本文中所使用的术语“处理器”和“处理单元”可指前述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可在经配置用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合式编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
[0052] 本发明实施例的技术可实施于各种各样的装置或设备中,所述装置或设备包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所公开的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
[0053] 已描述了本发明的各种方面。这些和其它实施例在所附权利要求书的范围内。需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
[0054] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
[0055] 需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
[0056] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈