CN111383314A - 一种验证着色器函数的方法、装置及计算机存储介质 - Google Patents
一种验证着色器函数的方法、装置及计算机存储介质 Download PDFInfo
- Publication number
- CN111383314A CN111383314A CN202010286679.0A CN202010286679A CN111383314A CN 111383314 A CN111383314 A CN 111383314A CN 202010286679 A CN202010286679 A CN 202010286679A CN 111383314 A CN111383314 A CN 111383314A
- Authority
- CN
- China
- Prior art keywords
- shader
- function
- functions
- vertex
- result
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 239000000872 buffer Substances 0.000 claims abstract description 28
- 238000004088 simulation Methods 0.000 claims abstract description 25
- 230000006870 function Effects 0.000 claims description 229
- 230000015654 memory Effects 0.000 claims description 45
- 239000012634 fragment Substances 0.000 claims description 42
- 238000012545 processing Methods 0.000 claims description 36
- 230000008569 process Effects 0.000 claims description 15
- 230000008571 general function Effects 0.000 claims description 7
- 239000012536 storage buffer Substances 0.000 claims description 6
- 239000000126 substance Substances 0.000 claims description 3
- 238000009877 rendering Methods 0.000 description 53
- 238000012795 verification Methods 0.000 description 25
- 238000004364 calculation method Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000009193 crawling Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000005282 brightening Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明实施例公开了一种验证着色器函数的方法、装置及计算机存储介质;该方法可以包括:根据原始数据通过GPU中的着色器运行对应的着色器函数,捕获所述着色器函数的运行结果;通过GPU将所述着色器函数的运行结果传递至设定的缓冲区对象缓存;通过CPU根据所述原始数据模拟运行所述着色器函数,获取所述着色器函数的模拟结果;通过CPU读取所述缓冲区对象内的所述着色器函数运行结果;通过CPU将所述着色器函数运行结果与所述着色器函数的模拟结果进行比较以验证所述着色器函数。
Description
技术领域
本发明实施例涉及图像处理器(GPU,Graphic Processing Unit)技术领域,尤其涉及一种验证着色器函数的方法、装置及计算机存储介质。
背景技术
目前,在图形渲染管线中,可以通过着色器语言(SL,Shader Language)编写着色器Shader函数以实现图形渲染管线中各种类型着色器的着色器程序。由于Shader函数运行于GPU中,基于CPU和GPU之间存储编译环境的不同,针对Shader函数的验证更加复杂。
一般来说,目前针对Shader函数的验证方案,都是针对图形渲染管线的最终输出数据进行封装或解析,从而判断图形渲染管线在处理过程中所使用的Shader函数的执行结果是否正确。上述方案必须整个图形渲染管线执行完毕后才能够对输出数据进行解析,导致验证时流水线层级多,验证效率低。
发明内容
有鉴于此,本发明实施例期望提供一种验证着色器函数的方法、装置及计算机存储介质;能够便捷地对Shader函数进行验证,提高了验证的灵活性。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供了一种验证着色器函数的方法,包括:
根据原始数据通过GPU中的着色器运行对应的着色器函数,捕获所述着色器函数的运行结果;
通过GPU将所述着色器函数的运行结果传递至设定的缓冲区对象缓存;
通过CPU根据所述原始数据模拟运行所述着色器函数,获取所述着色器函数的模拟结果;
通过CPU读取所述缓冲区对象内的所述着色器函数运行结果;
通过CPU将所述着色器函数运行结果与所述着色器函数的模拟结果进行比较以验证所述着色器函数。
在上述方案中,所述着色器包括顶点着色器、几何着色器、片段着色器以及计算着色器中的至少一项;相应地,所述着色器函数包括顶点着色器函数、几何着色器函数、片段着色器函数以及计算着色器函数中的至少一项。
在上述方案中,所述顶点着色器函数包括针对顶点数据进行处理的顶点函数以及用于通用计算的通用函数;所述几何着色器函数包括细分函数和几何处理函数。
在上述方案中,所述通过GPU将所述着色器函数的运行结果传递至设定的缓冲区对象缓存,包括:
通过GPU在所述着色器函数运行完毕后,将所述着色器函数的运行结果写入着色器存储缓冲器对象SSBO。
第二方面,本发明实施例提供了一种验证着色器函数的装置,所述装置包括:存储器、CPU、GPU以及缓冲区对象缓存;其中,
所述存储器用于存储原始数据;
所述GPU,经配置以执行以下步骤:
根据原始数据通过着色器运行对应的着色器函数,捕获所述着色器函数的运行结果;
以及,将所述着色器函数的运行结果传递至所述缓冲区对象缓存;
所述CPU,经配置已执行以下步骤:
根据所述原始数据模拟运行所述着色器函数,获取所述着色器函数的模拟结果;以及,
读取所述缓冲区对象缓存内的所述着色器函数运行结果;以及,
将所述着色器函数运行结果与所述着色器函数的模拟结果进行比较以验证所述着色器函数。
在上述方案中,所述着色器包括顶点着色器、几何着色器、片段着色器以及计算着色器中的至少一项;相应地,所述着色器函数包括顶点着色器函数、几何着色器函数、片段着色器函数以及计算着色器函数中的至少一项。
在上述方案中,所述顶点着色器函数包括针对顶点数据进行处理的顶点函数以及用于通用计算的通用函数;所述几何着色器函数包括细分函数和几何处理函数。
在上述方案中,所述GPU,还经配置以执行:
在所述着色器函数运行完毕后,将所述着色器函数的运行结果写入着色器存储缓冲器对象SSBO。
第三方面,本发明实施例提供了一种计算装置,所述计算装置包括第二方面任一项所述的验证着色器函数的装置。
第四方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有验证着色器函数的程序,所述验证着色器函数的程序被至少一个处理器执行时实现第一方面任一项所述的验证着色器函数的方法的步骤。
本发明实施例提供了一种验证着色器函数的方法、装置及计算机存储介质;着色器函数的运行结果在着色器函数运行完毕后传递至设定的缓冲区对象缓存,使得CPU在获得着色器函数的模拟结果后从该设定的缓冲区对象缓存中读取着色器函数的运行结果进行比对以验证所述着色器函数是否正确。由此,对于着色器函数的验证无需完成完整的图形渲染管线流程,减少验证所要执行的流水线长度,从而降低了验证执行的复杂度,而且通过CPU的模拟运算结果与GPU的真实运行结果进行比对,能够减少人为验证过程中的计算误差和格式转换误差,保证了着色器函数的验证正确性。
附图说明
图1为本发明实施例提供的一种计算装置的组成框图;
图2为本发明实施例提供的一种GPU的组成框图。
图3为本发明实施例提供的图形渲染管线与计算着色器的关系示意图。
图4为本发明实施例提供的一种验证着色器函数的方法流程示意图。
图5为本发明实施例提供的一种验证着色器函数的方法实施流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参见图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(加速图形端口)、超传输或者任何其他总线或点到点通信协议,并且不同设备间的连接可使用本领域已知的不同协议。
在一个实施例中,GPU 112 包含经优化用于图形和视频处理的电路,包括例如视频输出电路。在另一个实施例中,GPU 112 包含经优化用于通用处理的电路,同时保留底层(underlying)的计算架构。在又一个实施例中,可以将GPU 112 与一个或多个其他系统元件集成起来,诸如存储器桥105、CPU 102 以及I/O 桥107,以形成片上系统(SoC)。
应该理解,本文所示系统是示例性的,并且变化和修改都是可能的。连接拓扑,包括桥的数量和布置、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。
图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)、快闪存储器、磁性数据媒体或光学存储媒体。
基于此,GPU 112可以经配置以执行与下述相关的各种操作:经由存储器桥105和总线113从CPU 102 和/ 或系统存储器104 所提供的图形数据生成像素数据,与本地图形存储器204(例如常用帧缓冲区(buffer))交互以存储和更新像素数据,传递像素数据到显示设备110 等等。
在操作中,CPU 102 是计算装置100 的主处理器,控制和协调其他系统组件的操作。具体地,CPU 102 发出控制GPU 112的操作的命令。在一些实施例中,CPU 102 为GPU112写入命令流到数据结构中(在图1或图2中未明确示出),所述数据结构可位于系统存储器104、图形存储器204、或CPU 102 和GPU 112都可访问的其他存储位置中。将指向每个数据结构的指针写到入栈缓冲区(pushbuffer)以启动对数据结构中的命令流的处理。GPU112从一个或多个入栈缓冲区读取命令流,然后相对于CPU 102 的操作异步地执行命令。可以为每个入栈缓冲区指定执行优先权以控制对不同入栈缓冲区的调度。
具体如图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 一起集成在单个芯片上。
在一个实施例中,通信路径113 可以是PCI-EXPRESS 链路,如本领域所知的,在PCI-EXPRESS 链路中专用通道被分配到GPU 112。I/O 单元205 生成用于在通信路径113上传输的数据包(或其他信号),并且还从通信路径113 接收所有传入的数据包(或其他信号),将传入的数据包引导到GPU 112的适当组件。例如,可将与处理任务有关的命令引导到调度器207,而可将与存储器操作有关的命令(例如,对图形存储器204的读取或写入)引导到图形存储器204。
在GPU 112中,可以包括渲染核阵列230,该阵列230可以包括C 个通用的渲染核208,其中C>1。基于阵列230中的通用渲染核208,GPU112能够并发执行大量的程序任务或计算任务。举例来说,每个渲染核均可被编程以能够执行与种类繁多的程序相关的处理任务,包括但不限于,线性与非线性数据变换,视频和/或音频数据过滤、建模操作(例如,应用物理定律以确定对象的位置、速率和其他属性)、图形渲染操作(例如,曲面细分着色器、顶点着色器、几何着色器、和/或片段着色器程序)等等。
此外,GPU 112中还可以包括固定功能处理单元231,其可包含经硬连线以执行某些功能的硬件。尽管固定功能硬件可经由例如一或多个控制信号而配置以执行不同功能,但所述固定功能硬件通常并不包含能够接收用户编译程序的程序存储器。在一些实例中,固定功能处理单元231可包含例如执行图元装配的处理单元、执行光栅化处理单元和执行片段操作的处理单元。对于执行图元装配的处理单元来说,其能够将通过顶点着色器单元已完成着色的顶点按照原始连接关系还原出图形的网格结构,即图元,从而供后续片元着色器单元进行处理;所述光栅化操作包括转换新图元并将片段输出至片段着色器;而片段操作则包括例如深度测试、裁剪测试、 Alpha混合或者透明度混合等,经过上述操作所输出的像素数据可以作为图形数据通过显示设备110进行显示。综合上述渲染核阵列230以及固定功能处理单元231,能够实现一个完整的图形渲染管线的逻辑模型。
此外,渲染核阵列230可以从调度器207接收将要执行的处理任务。调度器207可独立地调度所述任务由GPU 112的资源(比如渲染核阵列230中的一或多个渲染核208)执行。在一个实例中,调度器207可以是硬件处理器。在图2中所示出的实例中,调度器207可包含于GPU 112中。在其它实例中,调度器207还可以是与CPU 102和GPU 112分离的单元。调度器207还可被配置成接收命令和/或操作的流的任何处理器。
调度器207可处理一或多个命令流,其包含调度操作,所述调度操作包含于由GPU112执行的一或多个命令流中。具体地说,调度器207可处理一或多个命令流,且调度所述一或多个命令流中的操作,以由渲染核阵列230执行。在操作中,CPU 102藉由图1中系统存储器104所包括的GPU驱动程序103可向调度器207发送包括待由GPU 112执行的一系列操作的命令流。调度器207可通过I/O单元205接收包括命令流的操作流且可基于命令流中的操作次序依序地处理命令流的操作,且可调度命令流中的操作可以由渲染核阵列230中的一或多个处理单元执行。
基于上述图1及图2的描述,图3示出了以图2所示的GPU 112的结构所形成的图形渲染管线80的示例,需要说明的是,图形渲染管线80的核心部分是利用渲染核阵列230中所包括的通用渲染核208以及固定功能处理单元231通过级联形成的逻辑结构,此外,对于GPU112中所包括的调度器207、图形存储器204以及I/O单元205,均为实现该图形渲染管线80这一逻辑结构功能的外围电路或装置,相应来说,图形渲染管线80通常包含可编程执行单元(如图3中圆角框示意)和固定功能单元(如图3中方框示意),举例来说,可编程执行单元的功能可由渲染核阵列230中所包括的通用渲染核208来执行,固定功能单元的功能可由固定功能处理单元231实现。如图3所示,图形渲染管线80所包括的各级依次为:
顶点抓取模块82,在图3的实例中展示为固定功能单元且通常负责将图形数据(三角形、线和点)供应到图形渲染管线80。举例来说,顶点抓取模块82可收集高阶表面、图元等的顶点数据,且将顶点数据和属性输出到顶点着色器84。
顶点着色器84是可编程执行单元,其配置为执行顶点着色器程序,按顶点着色器程序所指定的来亮化和变换顶点数据。例如,顶点着色器84可被编程以将顶点数据从基于对象的坐标表示(对象空间)变换到可替代地基于诸如世界空间或规格化设备坐标(NDC)空间的坐标系。顶点着色器84可读取由顶点抓取模块82所存储的数据用于在处理顶点数据中使用。
图元装配模块86,在图3中展示为固定功能单元,负责收集顶点着色器模块84输出的顶点并将所述顶点组成几何图元。例如,图元装配模块86可以配置为将每三个连续的顶点组成为几何图元(即三角形)。在一些实施例中,特定的顶点可以被重复用于连续的几何图元(例如,三角形带中的两个连续的三角形可以共享两个顶点)。
几何着色器88是可编程执行单元,其配置为执行几何着色器程序,按几何着色器程序所指定的来变换从图元装配模块86所接收的图形基元。例如,几何着色器88可被编程以将图形基元细分成一个或多个新图形基元并计算用来将新图形基元光栅化的参数,诸如平面方程系数。在一些示例中,几何着色器88并非图形渲染管线80的必要着色器,因此,几何着色器88是可选的,如图中用虚线表示。在一些实施例中,几何着色器88还可在几何流中添加或删除元素。几何着色器88将指定新图形基元的参数和顶点输出到裁剪和划分模块90。
裁剪和划分模块90,在图3中展示为固定功能单元,负责对装配完成的图元进行裁剪剔除后,按照tile的大小进行划分。
光栅化模块92通常为负责准备片元着色器94的图元的固定功能单元。举例来说,光栅化模块92可产生若干碎片以供片元着色器94进行阴影处理。在一些示例中,光栅化模块92可扫描转换新图形基元并将片段和覆盖数据输出到片元着色器94;此外,光栅化模块92可配置为实施z剔除(z-culling)和其他基于z的优化。
片元着色器94是可编程的执行单元,其配置为执行片段着色器程序、按片段着色器程序所指定的来变换从光栅化模块92所接收的片段。例如,片元着色器94可被编程以实施诸如透视校正、纹理映射、着色、混合等操作,以产生输出到输出合并器模块96的经着色的片段。
输出合并器模块96,在图3中展示为固定功能单元,通常负责实施诸如模板(stencil)、z测试、混合等的光栅操作,并输出像素数据作为经处理的图形数据用于存储在图形存储器204中。经处理的图形数据可存储在图形存储器204中,用于在显示设备110上显示或用于由CPU102或GPU 112进一步处理。
针对上述图形渲染管线80,如图3所示,当渲染核阵列230中的一个或部分通用渲染核208被编程并结合固定功能处理单元231以执行图形渲染管线80相关的流程的同时,还会将渲染核阵列230中的一个或部分通用渲染核208被编程以执行独立于图形渲染管线80的并行计算的计算着色器42。计算着色器42与图形渲染管线80均能够对GPU 112中图形存储器204内的资源进行调用和写入。
其中,顶点着色器84、几何着色器88、片元着色器94以及计算着色器42的功能均通过SL针对通用渲染核208进行相应的着色器程序编程以实现,在编写顶点着色器程序、几何着色器程序、片元着色器程序以及计算着色器程序的过程中,针对着色器程序内所包括的Shader函数进行验证,通常需要完成上述图3所示的完整的图形渲染管线80的逻辑流程,并将渲染结果通过图形渲染管线80存储于以帧缓存器为例的图形存储器204中。需要对渲染结果进行判断时,只能通过图形渲染管线80的固定输出,以进行图形界面的有效绘制,解析图形、像素数据、对比预期等验证操作。由此可以看出,目前常规的验证方案整个过程执行流水线较长,且不能进行数据交互,类似黑盒测试。大大限制了数据传递的灵活性,增加了结果反馈的复杂度。
有鉴于此,本发明实施例期望能够描述一种验证着色器函数的技术,对于实现图3中所描述的着色器的Shader函数能够不必再完成完整的图形渲染管线80的逻辑流程就能够进行及时的验证,减少反馈的流水线长度。具体来说,参见图4,其示出了本发明实施例提供的一种验证着色器函数的方法,该方法可以包括:
S401:根据原始数据通过GPU中的着色器运行对应的着色器函数,捕获所述着色器函数的运行结果;
S402:通过GPU将所述着色器函数的运行结果传递至设定的缓冲区对象缓存;
S403:通过CPU根据所述原始数据模拟运行所述着色器函数,获取所述着色器函数的模拟结果;
S404:通过CPU读取所述缓冲区对象内的所述着色器函数运行结果;
S405:通过CPU将所述着色器函数运行结果与所述着色器函数的模拟结果进行比较以验证所述着色器函数。
需要说明的是,所述着色器包括顶点着色器、几何着色器、片段着色器以及计算着色器中的至少一项;相应地,所述着色器函数包括顶点着色器函数、几何着色器函数、片段着色器函数以及计算着色器函数中的至少一项。
在具体实施图4所示的技术方案时,所述原始数据可以优选为预先准备完成的且用于进行着色器函数运算的数据。此外,S401和S402与S403的执行顺序并不具体限定,也就是说,在执行的先后顺序方面,S401和S402可以在S403之前、之后或者同时执行,本发明实施例不对执行顺序进行具体限定。通过图4所示的技术方案,可以看出,着色器函数的运行结果在着色器函数运行完毕后传递至设定的缓冲区对象缓存,使得CPU在获得着色器函数的模拟结果后从该设定的缓冲区对象缓存中读取着色器函数的运行结果进行比对以验证所述着色器函数是否正确。由此可以看出,采用图4所示的技术方案,对于着色器函数的验证无需完成完整的图形渲染管线流程,减少验证所要执行的流水线长度,从而降低了验证执行的复杂度,而且通过CPU的模拟运算结果与GPU的真实运行结果进行比对,能够减少人为验证过程中的计算误差和格式转换误差,保证了着色器函数的验证正确性。
对于图4所示的技术方案,在一些示例中,所述通过GPU将所述着色器函数的运行结果传递至设定的缓冲区对象缓存,包括:
通过GPU在所述着色器函数运行完毕后,将所述着色器函数的运行结果写入着色器存储缓冲器对象(SSBO,Shader Storage Buffer Object)。
对于上述示例,需要说明的是,SSBO所指的是一种缓冲区对象,属于GLSL着色器的buffer,用于存储与检索着色器语言的数据,其内容能够供其他着色器调用或者提供至应用程序本身。更为重要的是,SSBO是可读可写的,并且具有更大的可变的存储空间。可以理解地,基于上述SSBO的特性,将所述着色器函数的运行结果传递至SSBO,不再依赖管线的固定输出,能够实现自定义的输出格式,数据传递方式更加灵活。并且利用SSBO的高容量,可以通过流stream的方式一次性传递多组数据以增加数据吞吐量,在数据宽度上能够增加传递的数据量。与常规方案相比,能够减少对图形渲染管线渲染结果的封装及解析。
基于上述描述,通过SSBO,顶点着色器84和/或几何着色器88就可以各自组合成一个小的渲染管线,而不用后续的光栅化模块92及片元着色器94处理,如此,就能够利用GPU强大的计算能力实现一些通用的计算。基于此,在一些示例中,所述顶点着色器函数包括针对顶点数据进行处理的顶点函数以及用于通用计算的通用函数。举例来说,顶点函数能够亮化和变换顶点数据,通用函数用于进行通用计算。
此外,在一些示例中,由于几何着色器88于图形渲染管线80内属于可选执行的着色器,相应于几何着色器88被选中执行且所述着色器函数为几何着色器函数,所述几何着色器函数包括细分函数和几何处理函数。举例来说,细分函数用于图形基元的顶点细分成一个或多个新图形基元的顶点;几何处理函数则可以用于在几何数据流中添加或删除元素。
针对上述技术方案,还需要说明的是,对于片元着色器94来说,其作为图形渲染管线80的最后一级可编程着色器,其运行结果仍然还需要通过输出合并器模块96才能够存储至帧缓存中,因此,对于片元着色器函数的运行结果,GPU仍旧可以将其传输至SSBO,CPU可以从SSBO中读取并自身模拟得到的模拟结果进行比较,从而验证片元着色器函数是否正确。
针对上述技术方案,对于计算着色器42,通常用于与绘制图元和像素无关的任务,并且计算着色器42也不是常规的图形渲染管线80的一部分,因此,针对该着色器的着色器函数验证,同样可以利用SSBO按照上述技术方案实施。当计算着色器42完成时即结束计算,从而反馈结果至SSBO。
基于上述方案,以公共函数abs函数为例,在GPU112一端,顶点着色器84接收预先准备的原始数据,并根据顶点着色器函数对原始数据进行计算,计算结果通过GPU 112中设置的SSBO写入模块传递至SSBO;
而在CPU 102一端,CPU 102仅需要针对同样的原始数据运行使用任意编程语言所编写的与GPU 112端运行相同的顶点着色器函数以对顶点着色器进行模拟,从而获得模拟结果,并在SSBO读取计算结果之后,将模拟结果和计算结果进行比对,就能够完成abs函数的验证。无需再等待完整的图形渲染管线80执行完成后的输出数据的封装和解析;并且CPU 102端同GPU 112端对着色器函数的实现方法一致,从而避免由于技术实现各异所导致的验证差异。
对于上述技术方案,参见图5,其示出了上述技术方案的具体实现的框图,该具体实现流程如下:
S1:预先准备参与着色器函数运算的原始数据。
S2:顶点着色器根据原始数据运行顶点相关的着色器函数或者通用计算函数,并将运行结果写入SSBO;如图5中的实线所示,可以理解地,以开放图形库(OpenGL,OpenGraphics Library)为例,该步骤所写入的运行结果预计为OPENGL中约50%的着色器函数的结果,通过提前写入结果以进行比对,从而完成顶点着色器函数的验证闭环。
S3:几何着色器根据原始数据运行几何着色器函数,并将运行结果写入SSBO;可以理解地,几何着色器函数可以包括细分处理函数和几何处理函数,并且在几何着色器函数运行之前,需要将顶点着色器的输出作为几何着色器函数输入,因此,原始数据将会依次通过顶点着色器和几何着色器之后才能获得几何着色器函数的结果,如图5中点线所示。以开放图形库(OpenGL,Open Graphics Library)为例,该步骤所写入的运行结果预计为OpenGL中约20%的着色器函数的结果,通过提前写入结果以进行比对,从而完成几何着色器函数的验证闭环。
S4:片元着色器根据原始数据运行片元着色器函数,并将运行结果写入SSBO;可以理解地,在片元着色器函数运行之前,需要将几何着色器的输出作为片元着色器函数输入,而几何着色器的输入则需要顶点着色器的输出,因此,原始数据将会依次通过顶点着色器、几何着色器以及片元着色器之后才能获得片元着色器函数的结果,如图5中点划线所示。以开放图形库(OpenGL,Open Graphics Library)为例,片元着色器函数约为OpenGL中剩余的30%的着色器函数。
S5:计算着色器根据原始数据运行计算着色器函数,并将运行结果写入SSBO;如图5中虚线所示,可以理解地,通过提前写入结果以进行比对,从而完成计算着色器函数的验证闭环。
S6:CPU针对原始数据模拟运行GPU端的着色器函数,并将模拟结果反馈至比较部分。
S7:CPU从SSBO中读取运行结果。
S8:CPU将运行结果与模拟结果进行比较,以验证对应运行结果的着色器函数。
基于上述技术方案相同的技术构思,本发明实施例提供了一种验证着色器函数的装置,该装置可以为图1所示的计算装置的一部分,包括:存储器、CPU、GPU以及缓冲区对象缓存;其中,
所述存储器用于存储原始数据;
所述GPU,经配置以执行以下步骤:
根据原始数据通过着色器运行对应的着色器函数,捕获所述着色器函数的运行结果;
以及,将所述着色器函数的运行结果传递至所述缓冲区对象缓存;
所述CPU,经配置已执行以下步骤:
根据所述原始数据模拟运行所述着色器函数,获取所述着色器函数的模拟结果;以及,
读取所述缓冲区对象缓存内的所述着色器函数运行结果;以及,
将所述着色器函数运行结果与所述着色器函数的模拟结果进行比较以验证所述着色器函数。
在一些示例中,所述着色器包括顶点着色器、几何着色器、片段着色器以及计算着色器中的至少一项;相应地,所述着色器函数包括顶点着色器函数、几何着色器函数、片段着色器函数以及计算着色器函数中的至少一项。
在一些示例中,所述顶点着色器函数包括针对顶点数据进行处理的顶点函数以及用于通用计算的通用函数;所述几何着色器函数包括细分函数和几何处理函数。
在一些示例中,所述GPU,还经配置以执行:
在所述着色器函数运行完毕后,将所述着色器函数的运行结果写入着色器存储缓冲器对象SSBO。
可以理解地,在本实施例中,“部分”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是单元,还可以是模块也可以是非模块化的。
在上述一或多个实例或示例中,所描述功能可实施于硬件、软件、固件或其任何组合中。如果实施于软件中,那么可将功能作为一或多个指令或代码存储在计算机可读媒体上或经由计算机可读媒体传输。计算机可读媒体可包含计算机数据存储媒体或通信媒体,通信媒体包含促进将计算机程序从一处传递到另一处的任何媒体。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本发明中描述的技术的指令、代码和/或数据结构的任何可用媒体。举例来说且非限制,此类计算机可读媒体可包括U盘、移动硬盘、RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置,或可用于运载或存储呈指令或数据结构的形式的所要程序代码且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输软件,那么同轴电缆、光纤电缆、双绞线、DSL或例如红外线、无线电和微波等无线技术包含于媒体的定义中。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
代码可由一或多个处理器执行,所述一或多个处理器例如是一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效的可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。因此,如本文中所使用的术语“处理器”和“处理单元”可指前述结构或适于实施本文中所描述的技术的任何其它结构中的任一者。另外,在一些方面中,本文中所描述的功能性可在经配置用于编码和解码的专用硬件和/或软件模块内提供,或者并入在组合式编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本发明实施例的技术可实施于各种各样的装置或设备中,所述装置或设备包含无线手持机、集成电路(IC)或一组IC(即,芯片组)。本发明中描述各种组件、模块或单元是为了强调经配置以执行所公开的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元的集合来提供,所述硬件单元包含如上文所描述的一或多个处理器。
已描述了本发明的各种方面。这些和其它实施例在所附权利要求书的范围内。需要说明的是:本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种验证着色器函数的方法,其特征在于,包括:
根据原始数据通过GPU中的着色器运行对应的着色器函数,捕获所述着色器函数的运行结果;
通过GPU将所述着色器函数的运行结果传递至设定的缓冲区对象缓存;
通过CPU根据所述原始数据模拟运行所述着色器函数,获取所述着色器函数的模拟结果;
通过CPU读取所述缓冲区对象内的所述着色器函数运行结果;
通过CPU将所述着色器函数运行结果与所述着色器函数的模拟结果进行比较以验证所述着色器函数。
2.根据权利要求1所述的方法,其特征在于,所述着色器包括顶点着色器、几何着色器、片段着色器以及计算着色器中的至少一项;相应地,所述着色器函数包括顶点着色器函数、几何着色器函数、片段着色器函数以及计算着色器函数中的至少一项。
3.根据权利要求2所述的方法,其特征在于,所述顶点着色器函数包括针对顶点数据进行处理的顶点函数以及用于通用计算的通用函数;所述几何着色器函数包括细分函数和几何处理函数。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述通过GPU将所述着色器函数的运行结果传递至设定的缓冲区对象缓存,包括:
通过GPU在所述着色器函数运行完毕后,将所述着色器函数的运行结果写入着色器存储缓冲器对象SSBO。
5.一种验证着色器函数的装置,其特征在于,所述装置包括:存储器、CPU、GPU以及缓冲区对象缓存;其中,
所述存储器用于存储原始数据;
所述GPU,经配置以执行以下步骤:
根据原始数据通过着色器运行对应的着色器函数,捕获所述着色器函数的运行结果;
以及,将所述着色器函数的运行结果传递至所述缓冲区对象缓存;
所述CPU,经配置已执行以下步骤:
根据所述原始数据模拟运行所述着色器函数,获取所述着色器函数的模拟结果;以及,
读取所述缓冲区对象缓存内的所述着色器函数运行结果;以及,
将所述着色器函数运行结果与所述着色器函数的模拟结果进行比较以验证所述着色器函数。
6.根据权利要求5所述的装置,其特征在于,所述着色器包括顶点着色器、几何着色器、片段着色器以及计算着色器中的至少一项;相应地,所述着色器函数包括顶点着色器函数、几何着色器函数、片段着色器函数以及计算着色器函数中的至少一项。
7.根据权利要求6所述的装置,其特征在于,所述顶点着色器函数包括针对顶点数据进行处理的顶点函数以及用于通用计算的通用函数;所述几何着色器函数包括细分函数和几何处理函数。
8.根据权利要求5至7任一项所述的装置,其特征在于,所述GPU,还经配置以执行:
在所述着色器函数运行完毕后,将所述着色器函数的运行结果写入着色器存储缓冲器对象SSBO。
9.一种计算装置,其特征在于,所述计算装置包括权利要求5至8任一项所述的验证着色器函数的装置。
10.一种计算机存储介质,所述计算机存储介质存储有验证着色器函数的程序,所述验证着色器函数的程序被至少一个处理器执行时实现权利要求1至4任一项所述的验证着色器函数的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010286679.0A CN111383314A (zh) | 2020-04-13 | 2020-04-13 | 一种验证着色器函数的方法、装置及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010286679.0A CN111383314A (zh) | 2020-04-13 | 2020-04-13 | 一种验证着色器函数的方法、装置及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111383314A true CN111383314A (zh) | 2020-07-07 |
Family
ID=71222797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010286679.0A Pending CN111383314A (zh) | 2020-04-13 | 2020-04-13 | 一种验证着色器函数的方法、装置及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111383314A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113393585A (zh) * | 2021-08-18 | 2021-09-14 | 西安芯瞳半导体技术有限公司 | 一种渲染问题定位方法、装置、定位设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180350027A1 (en) * | 2017-05-31 | 2018-12-06 | Vmware, Inc. | Emulation of Geometry Shaders and Stream Output Using Compute Shaders |
CN110928610A (zh) * | 2020-02-07 | 2020-03-27 | 南京芯瞳半导体技术有限公司 | 验证着色器函数的方法、装置及计算机存储介质 |
-
2020
- 2020-04-13 CN CN202010286679.0A patent/CN111383314A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180350027A1 (en) * | 2017-05-31 | 2018-12-06 | Vmware, Inc. | Emulation of Geometry Shaders and Stream Output Using Compute Shaders |
CN110928610A (zh) * | 2020-02-07 | 2020-03-27 | 南京芯瞳半导体技术有限公司 | 验证着色器函数的方法、装置及计算机存储介质 |
Non-Patent Citations (2)
Title |
---|
于平: "基于GPU加速的辐射度光照算法的研究及应用", 《国外电子测量技术》 * |
殷宏: "虚拟现实技术及应用", 国防工业出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113393585A (zh) * | 2021-08-18 | 2021-09-14 | 西安芯瞳半导体技术有限公司 | 一种渲染问题定位方法、装置、定位设备及存储介质 |
CN113393585B (zh) * | 2021-08-18 | 2021-11-19 | 西安芯瞳半导体技术有限公司 | 一种渲染问题定位方法、装置、定位设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9177351B2 (en) | Multi-primitive graphics rendering pipeline | |
CN111062858B (zh) | 高效的提前渲染方法、装置及计算机存储介质 | |
US10636213B2 (en) | Graphics processing systems | |
US20130021358A1 (en) | Area-based rasterization techniques for a graphics processing system | |
US9280956B2 (en) | Graphics memory load mask for graphics processing | |
EP3350766B1 (en) | Storing bandwidth-compressed graphics data | |
CN111127299A (zh) | 一种加速光栅化遍历的方法、装置及计算机存储介质 | |
CN112801855B (zh) | 基于图元的渲染任务调度的方法、装置及存储介质 | |
CN117237513A (zh) | 光线跟踪系统和方法、在光线跟踪系统中处理数据的方法 | |
EP3427229B1 (en) | Visibility information modification | |
CN110928610B (zh) | 验证着色器函数的方法、装置及计算机存储介质 | |
CN111080761B (zh) | 一种渲染任务的调度方法、装置及计算机存储介质 | |
CN112189215A (zh) | 用于在图形流水线中实现存储器使用减少的编译器辅助技术 | |
CN111367780A (zh) | 一种gpu的性能测试方法、装置及计算机存储介质 | |
CN111080505B (zh) | 一种提高图元装配效率的方法、装置及计算机存储介质 | |
US11250611B1 (en) | Graphics processing | |
US11978234B2 (en) | Method and apparatus of data compression | |
CN111383314A (zh) | 一种验证着色器函数的方法、装置及计算机存储介质 | |
US20060022990A1 (en) | Generating subdivision surfaces on a graphics hardware with floating-point fragment shaders | |
CN113256764A (zh) | 一种光栅化装置、方法及计算机存储介质 | |
CN111179151A (zh) | 一种提高图形渲染效率的方法、装置及计算机存储介质 | |
CN111179403A (zh) | 并行生成纹理映射Mipmap图像的方法、装置及计算机存储介质 | |
CN117369820B (zh) | 渲染流程图的生成方法、装置及设备 | |
US20230377086A1 (en) | Pipeline delay elimination with parallel two level primitive batch binning | |
CN114037795A (zh) | 一种不可见像素的剔除方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200707 |
|
RJ01 | Rejection of invention patent application after publication |