CN103150699B - 图形指令生成装置和图形指令生成方法 - Google Patents
图形指令生成装置和图形指令生成方法 Download PDFInfo
- Publication number
- CN103150699B CN103150699B CN201210511387.8A CN201210511387A CN103150699B CN 103150699 B CN103150699 B CN 103150699B CN 201210511387 A CN201210511387 A CN 201210511387A CN 103150699 B CN103150699 B CN 103150699B
- Authority
- CN
- China
- Prior art keywords
- graphics command
- metainstruction
- model data
- mentioned
- state
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明提供一种图形指令生成装置和图形指令生成方法。中间指令生成部生成中间指令,该中间指令是具有用于描绘对象的模型数据的中间性的描绘指令。图形指令变换部将所生成的中间指令变换成用于使图形处理器执行的图形指令串。相同性判定部判断应从中间指令生成的图形指令的状态是否与以前所生成的图形指令的状态相同。图形指令生成部生成由相同性判定部判定为状态不相同的图形指令,并将判定为状态相同的图形指令作为冗余的指令而不生成。
Description
技术领域
本发明涉及生成图形指令的技术,特别涉及根据中间指令生成图形指令的技术。
背景技术
在个人计算机或游戏专用机中,执行利用了高品质的3维计算机图形的游戏或模拟机等应用程序,进行使实景与计算机图形融合了的影像内容(contents)的再现等,高画质图形的利用非常广泛。
一般,通过CPU与图形处理单元(GPU)的协作来执行图形处理。CPU是进行通用的运算的通用处理器,但GPU是用于进行高度的图形运算的专用处理器。CPU基于对象的3维模型进行投影变换等几何运算,GPU从CPU接收顶点数据等执行渲染。GPU由光栅器、像素着色器等专用硬件构成,通过管线(pipeline)处理执行图形处理。最近的GPU还能具备被称作程序着色器的着色器功能,为支持着色器编程,一般提供有图形库。
在渲染对象时,CPU需要生成由GPU硬件执行的图形指令,传递给GPU。该图形指令的生成处理需要较多的CPU时间,故有的导入中间指令,将图形指令的生成处理分成中间指令的生成和从中间指令向图形指令变换的2阶段。通过用不同的线程执行中间指令的生成和从中间指令向图形指令的变换,在中间指令生成后,能并行地执行将中间指令变换成图形指令的处理和用于描绘下一帧的物理模型计算等图形以外的处理,能提高CPU的使用效率。
〔在先技术文献〕
〔专利文献〕
〔专利文献1〕日本特开2008-123520号公报
然而,将多个中间指令变换成图形指令后,若按所生成的图形指令的顺序(sequence),则有时尽管状态(state)未被变更,却反复执行相同的图形指令,由于该冗余性,执行效率会下降。
发明内容
本发明是鉴于这样的课题而研发的,其目的在于提供一种能提高从中间指令生成的图形指令的执行效率的技术。
为解决上述课题,本发明一个方案的图形指令生成装置包括:生成中间指令的中间指令生成部,该中间指令是具有用于描绘对象的模型数据的中间性的描绘指令;图形指令变换部,将所生成的中间指令变换成用于使图形处理器执行的图形指令串。上述图形指令变换部包括:相同性判定部,判断应从上述中间指令生成的图形指令的状态是否与以前所生成的图形指令的状态相同;图形指令生成部,生成由上述相同性判定部判定为状态不相同的图形指令,并将判定为状态相同的图形指令作为冗余的指令而不生成。
本发明的另一方案是一种图形指令生成方法。该方法包括:生成中间指令的中间指令生成步骤,该中间指令是具有用于描绘对象的模型数据的中间性的描绘指令;将所生成的中间指令变换成用于使图形处理器执行的图形指令串的图形指令变换步骤。上述图形指令变换步骤包括:判断应从上述中间指令生成的图形指令的状态是否与以前所生成的图形指令的状态相同的相同性判定步骤;生成由上述相同性判定步骤判定为状态不相同的图形指令,并将被判定为状态相同的图形指令作为冗余的指令而不生成的图形指令生成步骤。
此外,将以上构成要素的任意组合、本发明的表现形式在方法、装置、系统、计算机程序、数据结构、记录介质等间变换后的实施方式,作为本发明的方案也是有效的。
附图说明
图1是实施方式的图形处理系统的构成图。
图2是图形指令生成装置的构成图。
图3的(a)~(d)是说明从中间指令生成图形指令的情况的图。
图4的(a)是说明图2的转变成本计算部所进行的模型数据的转变成本的计算方法的图,图4的(b)是说明图2的排序关键字赋予部所进行的对模型数据赋予排序关键字的赋予方法的图。
图5是表示实施方式的图形指令生成装置所进行的图形指令生成处理的步骤的流程图。
图6是表示由图2的图形指令变换部执行的步骤S60的向图形指令的变换处理的详细步骤的流程图。
图7是说明由多个处理生成渲染的中间指令串,在一个渲染处理中进行排序和冗余性消除的系统的图。
图8是说明由多个服务器生成渲染的中间指令串,在与服务器进行通信的客户机中进行排序和冗余性消除的系统的图。
图9是说明由多个客户机生成渲染的中间指令串,在与多个客户机进行通信的服务器中进行排序和冗余性消除的系统的图。
具体实施方式
本发明将通过以下基于实施方式的具体说明而得到明确,该实施方式仅用于说明本发明的原理,并非限定本发明的范围。
图1是实施方式的图形处理系统的构成图。该图形处理系统包括主处理单元100、图形处理单元140、系统存储器180、本地存储器160。
主处理单元100可以是单一的主处理器,也可以是包含多个处理器的多处理器系统,或者,还可以是将多个处理器核集成在1个封装中的多核处理器。在此作为一例,主处理单元100是包含主处理器101和多个副处理器110的异构(Heterogeneous:异种混合)多核处理器。主处理器101和多个副处理器110通过总线120连接,总线120上介由存储器接口170连接有系统存储器180。主处理器101和多个副处理器110能介由总线120对系统存储器180读写数据。
总线120上介由输入输出接口(以下称作“IOIF”)130连接有外部设备190。在此仅是一例,并非限定于此,外部设备190包括图形处理单元140和本地存储器160。
图形处理单元(以下简称“GPU”)140是装配有图形处理器核的图形芯片,能介由本地总线150对本地存储器160读写数据。
主处理单元100和GPU140通过IOIF130连接,主处理单元100和GPU140彼此能介由IOIF130交换数据。
主处理单元100生成用于描绘对象的描绘指令,并将其在设于系统存储器180内的指令缓存器中排队。GPU140依次读出指令缓存器中所保存的描绘指令进行处理。
主处理单元100基于对象的3维模型,生成多边形的顶点坐标值、顶点颜色、法线矢量、UV值等几何数据,存储到系统存储器180中。此外,主处理单元100将用于映射到多边形表面的纹理存储到系统存储器180中。进而,主处理单元100从硬盘等记录介质读入着色器程序,存储到系统存储器180中。
系统存储器180的存储器区域被内存映射(memorymapping)为I/O地址空间,GPU140能经由IOIF130读取被内存映射为I/O地址空间的系统存储器180的存储器区域。
存储有几何数据、纹理及着色器程序的系统存储器180内的存储器区域被内存映射为IOIF130的控制器所设的存储器内的I/O地址空间。GPU140介由IOIF130读出被内存映射为I/O地址空间的几何数据、纹理及着色器程序。GPU140能将从系统存储器180读出的几何数据、纹理等图形运算所需要的数据存储到本地存储器160中。
GPU140按照着色器程序,利用几何数据生成多边形的光栅数据,将像素数据写入本地存储器160内的帧缓存器。进而,GPU140将纹理映射于多边形表面,将纹理映射后的像素数据写入帧缓存器。
图2是图形指令生成装置200的构成图。图形指令生成装置200是由主处理单元100实现的功能构成。主处理单元100是多核处理器时,由主处理器101或至少一个副处理器110上的线程执行图形指令生成装置200的各功能构成。
图形指令生成装置200包括转变成本计算部10、排序关键字赋予部20、中间指令生成部30、模型数据存储部32、工作数据存储部34、排序部40、及图形指令变换部50,图形指令变换部50包括相同性判定部60、图形指令生成部70、及状态高速缓存器80。
中间指令中作为用于渲染对象的数据,有模型数据和工作数据。模型数据是几何数据、纹理、着色器程序等帧间不被更新的信息,被存储于模型数据存储部32。工作数据是对象的位置、姿势等按帧更新的信息,被存储于工作数据存储部34。
转变成本计算部10从模型数据存储部32读出模型数据,计算在两个中间指令间转变模型数据时的转变成本,将转变成本存储于模型数据存储部32。
排序关键字赋予部20基于转变成本决定使模型数据转变的顺序,按照该转变顺序对模型数据赋予排序关键字,存储到模型数据存储部32中。排序关键字赋予部20通过从某一个模型数据、例如最占据所显示的画面区域的模型数据开始,按转变成本由小到大的顺序巡回模型数据,来决定使模型数据转变的顺序,并按该转变顺序对模型数据赋予排序关键字。
中间指令生成部30基于包含渲染对象的信息的场景图(SceneGraph),针对各帧分别从模型数据存储部32读出模型数据,从工作数据存储部34读出工作数据,生成具有模型数据和工作数据的中间指令。
排序部40基于各中间指令的模型数据所被赋予的排序关键字,改换中间指令生成部30所生成的多个中间指令的执行顺序。
图形指令变换部50将被排序部40改换了执行顺序的多个中间指令分别变换成用于使图形处理器执行的图形指令串。
在图形指令变换部50中,相同性判定部60判定应从中间指令生成的图形指令的状态是否与以前所生成的图形指令的状态相同。图形指令生成部70生成被相同性判定部60判定为状态不相同的图形指令,但被判定为状态相同的图形指令作为冗余的指令而不生成。
更具体来说,由图形指令生成部70生成的图形指令的状态被高速缓存到状态高速缓存器80中。相同性判定部60基于应从中间指令生成的图形指令的状态,参照状态高速缓存器80,若高速缓存命中,则判定为应从中间指令生成的图形指令的状态与以前所生成的图形指令的状态相同,若没有高速缓存命中,则通过应从中间指令生成的图形指令的状态值来更新被高速缓存于状态高速缓存器80中的状态值。在高速缓存命中的情况下,该图形指令作为冗余指令而不由图形指令生成部70生成,在没有高速缓存命中的情况下,图形指令生成部70生成图形指令。
图形指令生成部70所生成的图形指令被传递给GPU140,被使用GPU140的硬件功能来执行,由此对象被渲染。
图3的(a)~(d)是说明从中间指令生成图形指令的情况的图。
图3的(a)表示由中间指令生成部30生成的中间指令串。在此,作为中间指令,DrawPacket1、DrawPacket2、DrawPacket3被按该顺序生成。图3的(b)表示被排序部40排序后的中间指令串。在此,排序结果为,两个中间指令DrawPacket1、DrawPacket2的执行顺序被调换,中间指令的执行顺序成为DrawPacket2、DrawPacket1、DrawPacket3的顺序。按排序部40所生成的中间指令的执行顺序执行中间指令时,与按中间指令生成部30所生成的执行顺序执行中间指令时相比,模型数据的转变成本减小。
图3的(c)和图3的(d)表示图形指令变换部50从中间指令变换为图形指令的情况。
首先,为进行比较,参照图3的(c)说明不使相同性判定部60动作时从中间指令变换的图形指令串。
图形指令生成部70将在被排序部40排序(sort)后的中间指令串中最初的中间指令DrawPacket2变换成图形指令串后,成为
SetTexture(A);
SetVertexShader(P);
SetFragmentShader(X);
DrawIndexArray(J)。
将此称为第1图形指令串。在此,SetTexture是设定纹理的图形指令,SetVertexShader是设定顶点着色器程序的图形指令,SetFragmentShader是设定片段着色器的图形指令,DrawIndexArray是基于所设定的参数和程序执行渲染的图形指令。括弧内的A、P、X、J是状态。例如,函数SetTexture()的自变量A为纹理ID,SetVertexShader()的自变量P为着色器ID或存储器上的程序的地址。
然后,图形指令生成部70将在被排序部40排序后的中间指令串中第2个中间指令DrawPacket1变换成图形指令串后,成为
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(K)。
将此称作第2图形指令串。
进而,图形指令生成部70将在被排序部40排序后的中间指令串中第3个中间指令DrawPacket3变换成图形指令串后,成为
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(L)。
将此称作第3图形指令串。
接下来,参照图3的(d),说明使相同性判定部60动作时从中间指令变换的图形指令串。
相同性判定部60将第1图形指令串与第2图形指令串进行比较,判定是否按相同状态值重复生成了相同的图形指令。第2图形指令串中的SetTexture(B)是与第1图形指令串中的SetTexture(A)相同的图形指令,但状态值不同(B≠A)。第2图形指令串中的SetVertexShader(P)是与第1图形指令串中的SetVertexShader(P)相同的图形指令,状态值也相同(都是P)。第2图形指令串中的SetFragmentShader(Y)是与第1图形指令串中的SetFragmentShader(X)相同的图形指令,但状态值不同(Y≠X)。第2图形指令串中的DrawIndexArray(K)是与第1图形指令串中的DrawIndexArray(J)相同的图形指令,但状态值不同(K≠J)。
第2图形指令串中的SetVertexShader(P)是与第1图形指令串中的SetVertexShader(P)相同状态的相同指令,故是冗余的指令,无需执行。因此,图形指令生成部70基于相同性判定部60的判定结果,不生成第2图形指令串中的SetVertexShader(P),生成其余的SetTexture(B)、SetFragmentShader(Y)、DrawIndexArray(K)。即,在相同性判定部60动作的情况下,图形指令生成部70生成的第2图形指令串成为如下这样。
SetTexture(B);
SetFragmentShader(Y);
DrawIndexArray(K)。
同样,相同性判定部60将第2图形指令串与第3图形指令串比较,判定是否按相同状态值重复生成了相同的图形指令。第3图形指令串中的SetTexture(B)是与第2图形指令串中的SetTexture(B)相同的图形指令,状态值也相同(都是B)。第3图形指令串中的SetVertexShader(P)是与第2图形指令串中的SetVertexShader(P)相同的图形指令,状态值也相同(都是P)。第3图形指令串中的SetFragmentShader(Y)是与第2图形指令串中的SetFragmentShader(Y)相同的图形指令,状态值也相同(都是Y)。第3图形指令串中的DrawIndexArray(L)是与第2图形指令串中的DrawIndexArray(K)相同的图形指令,但状态值不同(L≠K)。
由于第3图形指令串中的SetTexture(B)、SetVertexShader(P)、SetFragmentShader(Y)是与第2图形指令串中的SetTexture(B)、SetVertexShader(P)、SetFragmentShader(Y)相同状态的相同指令,故是冗余的指令,无需执行。因此,图形指令生成部70基于相同性判定部60的判定结果,不生成第3图形指令串中的SetTexture(B)、SetVertexShader(P)、SetFragmentShader(Y),而生成其余的DrawIndexArray(L)。即,在相同性判定部60动作的情况下,图形指令生成部70生成的第3图形指令串成为如下这样。
DrawIndexArray(L)。
总结以上,根据本实施方式的图形指令变换部50,相同性判定部60判定图形指令的状态的相同性,图形指令生成部70基于相同性判定结果,从被排序部40排序后的中间指令串生成消除了冗余性的以下图形指令串。
SetTexture(A);
SetVertexShader(P);
SetFragmentShader(X);
DrawIndexArray(J);
SetTexture(B);
SetFragmentShader(Y);
DrawIndexArray(K);
DrawIndexArray(L)。
与图3的(c)的相同性判定部60不动作的情况相比,所生成的图形指令的数量从12减到8,处理效率得到提高。
在此,说明排序部40将图3的(a)所示的中间指令生成部30所生成的中间指令串如图3的(b)所示那样排序的意义。
假设若没有由排序部40进行排序,则按图3的(a)的中间指令串的顺序生成图形指令串。此时,若相同性判定部60不动作,则中间指令串将被变换成以下的图形指令串。
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(K);
SetTexture(A);
SetVertexShader(P);
SetFragmentShader(X);
DrawIndexArray(J);
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(L)。
在此,若相同性判定部60进行动作,则上述图形指令串的第6个SetVertexShader(P)是与之前所执行的第2个SetVertexShader(P)相同的状态,第10个SetVertexShader(P)是与之前所执行的第6个SetVertexShader(P)相同的状态,故可作为冗余而消除。但是,由于其它图形指令与之前所执行的相同的图形指令相比状态不同,故不是冗余。例如第5个SetTexture(A)与之前所执行的第1个SetTexture(B)相比状态不同,第9个SetTexture(B)与之前所执行的第5个SetTexture(A)相比状态不同,故都是不能省略执行的。
因此,相同性判定部60的相同判定的结果,能作为冗余而消除的图形指令只有2个,消除由图形指令生成部70生成的冗余性后的图形指令串如下这样,图形指令的数量成为10。
SetTexture(B);
SetVertexShader(P);
SetFragmentShader(Y);
DrawIndexArray(K);
SetTexture(A);
SetFragmentShader(X);
DrawIndexArray(J);
SetTexture(B);
SetFragmentShader(Y);
DrawIndexArray(L)。
通过像这样由排序部40对中间指令串的执行顺序进行排序,能增加相同性判定部60判定为冗余的图形指令的数量,能由图形指令生成部70生成消除冗余性而最优化了的图形指令串,提高图形处理的效率。
以下,详细说明基于转变成本的中间指令串的排序处理。
图4的(a)是说明转变成本计算部10所进行的计算模型数据的转变成本的计算方法的图,图4的(b)是说明排序关键字赋予部20所进行的向模型数据赋予排序关键字的赋予方法的图。
在从某模型数据向其它模型数据转变时,转变成本计算部10计算表示图形运算的相关硬件所承受的处理负荷的转变成本。例如在因模型数据转变,纹理被变更时,将转变成本记为10分,片段着色器被变更时,将转变成本记为30分,顶点着色器被变更时,将转变成本记为20分。这些分在图形硬件中相对地表示了变更纹理、片段着色器、顶点着色器时的负荷。
例如在从模型数据A转变为模型数据B时,若纹理有3幅、片段着色器有1个被变更,则合计转变成本成为10×3+30=60。
转变成本计算部10针对在各帧中应被渲染的对象的模型数据,计算在2个模型数据间转变时的转变成本。图4的(a)表示针对4个模型数据A~D,计算任意2个模型数据间的转变成本的例子。从模型数据A向模型数据B的转变成本为10,从模型数据A向模型数据C的转变成本为30,从模型数据A向模型数据D的转变成本为50,从模型数据B向模型数据C的转变成本为40,从模型数据B向模型数据D的转变成本为20,从模型数据C向模型数据D的转变成本为10。
排序关键字赋予部20通过以最占据所显示的画面区域的模型数据、例如可能占据画面的中心的模型数据为开始点,反复依次选择转变成本最小的模型数据,来巡回所有的模型数据。由此,决定使模型数据转变的顺序,并按照该转变顺序对模型数据赋予排序关键字。
之所以从可能占据画面中心的模型数据开始,是因为通过首先描绘该模型数据,后续的中间指令生成的像素会隐于其后,能通过剔除(culling)而跳过处理的可能性提高,处理效率得到提高。
在此,假定模型数据A占据画面的中心,从模型数据A开始。如图4的(b)所示那样,以模型数据A为起点若转变为模型数据B,转变成本为10分,若转变为模型数据C,转变成本为30分,若转变为模型数据D,转变成本为50分,故从3个模型数据B、C、D中选择转变成本最小的模型数据B作为第2个。
同样地,从模型数据B若转变为模型数据C,转变成本为40分,若转变为模型数据D,转变成本为20分,故从其余2个模型数据C、D中选择转变成本最小的模型数据D作为第3个。最后,从模型数据D转变为剩余的模型数据C。向第4个模型数据C的转变成本为10。
这样,排序关键字赋予部20基于模型数据间的转变成本,按模型数据A、B、D、C的顺序决定使模型数据转变的顺序,并按该顺序分别对模型数据A、B、D、C分配排序关键字0、1、2、3。
在此,通过计算任意2个模型数据间的转变成本,然后以某模型数据为起点搜索最小转变成本,来决定模型数据的转变顺序,赋予排序关键字,但也可以基于转变成本用其它搜索算法决定模型数据的转变顺序。此外,当计算所有任意2个模型数据间的转变成本会造成处理负荷时,也可以针对模型数据的一部分的组合求出转变成本,将巡回模型数据的路径限定为已求出转变成本的范围。
中间指令生成部30生成具有模型数据和工作数据的中间指令时,模型数据被分配有排序关键字,排序部40按排序关键字的顺序对中间指令生成部30生成的中间指令串进行排序。由此,模型数据相似的中间指令被集群(clustering)而被连续地执行。
若按模型数据的转变成本由小到大的顺序使模型数据转变,则从中间指令串生成了图形指令串时,重复执行的图形指令的状态相一致的情况变多。例如,转变成本较小,就意味着纹理或着色器的变更较少,图形指令的状态被变更的情况也变少。因此,在按模型数据的转变成本由小到大的顺序对中间指令串排序后,在将中间指令串变更成图形指令串时,就能增加可通过相同性判定而消除的图形指令的数量。
图5是表示实施方式的图形指令生成装置200所进行的图形指令生成处理的步骤的流程图。
生成应被渲染的所有对象的模型数据(S10)。转变成本计算部10计算在模型数据间转变时的转变成本(S20)。排序关键字赋予部20基于转变成本决定转变模型数据的顺序,并按照该顺序对模型数据赋予排序关键字(S30)。步骤S10~S30的处理被离线地执行,在模型数据存储部32中存储带排序关键字的模型数据。
针对各帧反复执行以下步骤S40~S70。首先,中间指令生成部30生成具有模型数据和工作数据的中间指令(S40)。排序部40按模型数据所被赋予的排序关键字的顺序对中间指令生成部30生成的中间指令进行排序(S50)。图形指令变换部50将排序后的中间指令变换成图形指令(S60)。在进行下一帧的渲染时(S70的“是”),返回步骤S40,反复进行步骤S40~S60的处理,若在当前帧结束渲染(S70的“否”),则结束图形指令生成处理。
图6是表示由图形指令变换部50执行的步骤S60的向图形指令的变换处理的详细步骤的流程图。
在图形指令变换部50中,相同性判定部60基于从中间指令接下来所要生成的图形指令的状态和其设定值,参照状态高速缓存器80,查询该状态值是否已被高速缓存(S80)。
在状态高速缓存器80中该状态值高速缓存命中时(S82的“是”),由于已经有相同状态值的图形指令被执行,故相同性判定部60判定为从中间指令要生成的图形指令是冗余,图形指令生成部70不生成该图形指令地结束。
另一方面,若在状态高速缓存器80中该状态值没有高速缓存命中(S82的“否”),则要么是从中间指令接下来要生成的图形指令在之前被以不同的状态值执行了,要么是该图形指令还没被执行过。在该情况下,相同性判定部60判定为从中间指令将生成的图形指令并非冗余,以该状态值更新状态高速缓存器80(S84),图形指令生成部70从中间指令生成图形指令(S86)。
相同性判定部60和图形指令生成部70利用状态高速缓存器80反复进行步骤S80~S86的处理,将中间指令串变换成图形指令串。由此,生成消除了进行相同设定的冗余图形指令的图形指令串。
以下列举被高速缓存在状态高速缓存器80中的状态的种类的具体例子。
(1)片段着色器/顶点着色器的程序ID
在生成片段着色器/顶点着色器的程序时,赋予了唯一ID,在状态高速缓存器80中保持该ID,相同性判定部60在是相同ID时判定为程序设定指令是冗余的,图形指令生成部70跳过该程序设定指令的生成。当着色器存在于一个逻辑地址空间内时,该ID可以是其开头地址。
(2)纹理ID
在生成纹理时赋予了唯一ID,在状态高速缓存器80中针对各纹理单元分别保持其ID。相同性判定部60在渲染时检查纹理单元的ID,若相同,则判定为纹理设定指令是冗余的,图形指令生成部70跳过该纹理设定指令的生成。当纹理存在于一个逻辑地址空间内时,该ID可以是其开头地址。
(3)深度(depth)测试/混合(Blend)/模板(Stencil)测试的设定值
将进行还是不进行(enable/disable)深度测试、混合、模板测试的设定用Bool值保持在状态高速缓存器80中,相同性判定部60在设定值相同的情况下,判定为设定是否进行这些处理的指令是冗余的,图形指令生成部70跳过该设定指令的生成。
(4)深度测试函数/混合函数/模板测试操作器
将表示所设定的各函数的常数高速缓存在状态高速缓存器80中。若是深度测试函数,则将识别该深度函数是等于(=)、小于(<)、大于(>)的哪一者的常数保存在状态高速缓存器80中,若是混合函数,则将识别混合比率的常数保存在状态高速缓存器80中,若是模板测试操作器,则将识别是增量/减量的哪一者的常数保存在状态高速缓存器80中。在识别各函数的常数相同的情况下,相同性判定部60判定为这些函数的设定指令是冗余的,图形指令生成部70跳过该设定指令的生成。
(5)各种矩阵
对各种矩阵赋予了ID,在状态高速缓存器80中保存该ID。在是相同的ID的情况下,相同性判定部60判定为矩阵的设定指令为冗余,图形指令生成部70跳过该矩阵的设定指令的生成。例如关于View矩阵和Projection矩阵,通过渲染而进行切换的是在阴影贴图(ShadowMap)渲染时和通常渲染时,几乎没什么变化,故多数情况下能跳过矩阵的设定指令的生成。
总结被高速缓存在状态高速缓存器80中的内容如下。
ViewMatrixID
ProjectionMatrixID
ModelMatrixID
FragmentShaderID
VertexShaderID
TextureID
DepthTest(Enable/Disable)
DepthTestFunction
StencilTest(Enable/Disable)
StencilTestFunction
Blend(Enable/Disable)
BlendFunction
如上所述通过本实施方式的图形指令生成装置200,将基于模型数据的转变成本而排序了的中间指令依次变换成图形指令。在变换成图形指令时,预先高速缓存由图形指令设定的状态的值,仅在状态的设定值有变化时生成图形指令,由此,能减少所生成的图形指令的数量,能提高处理效率。在GPU硬件进行较深的管线动作,一部分状态有变化时,在管线的上段会失速(stall),等待状态的更新,但在本实施方式中,能抑制GPU硬件内部的上下文(context)切换所导致的性能下降,故能渲染更多的数据。
参照图7~图9说明实施方式的图形指令生成装置200的几个应用例。
图7是说明由多个处理生成渲染的中间指令串,在一个渲染处理中进行排序和冗余性消除的系统的图。
多个处理A~C并行地生成渲染的中间指令串,但存在对纹理、着色器等各种资源赋予ID而管理的唯一管理处理,从而系统整体上使资源的ID成为唯一地进行管理。各处理A~C向唯一ID管理处理询问各种资源的ID,对模型数据赋予排序关键字。各处理A~C所生成的中间指令串被传递给一个渲染处理,最终,渲染处理进行基于排序关键字的中间指令串排序、从中间指令串向图形指令串的变换、以及基于状态的相同性判定的冗余性消除。
在该情况下,图形指令生成装置200的转变成本计算部10、排序关键字赋予部20、中间指令生成部30的功能被分配于各处理A~C,而排序部40、相同性判定部60、图形指令生成部70的各功能被分配于1个渲染处理。
在该应用例中,用多个处理来使处理分散化,具有能提高处理效率的效果。
图8是说明由多个服务器生成渲染的中间指令串,在与服务器通信的客户机中进行排序和冗余性消除的系统的图。
在服务提供者侧,对纹理、着色器等各种资源赋予ID来管理,各服务器A~C并行地生成渲染的中间指令串,将模型数据的排序关键字同内容一起发送到客户机的应用程序,由此,客户机能够对中间指令进行排序,生成消除了冗余性的图形指令。
在该情况下,图形指令生成装置200的转变成本计算部10、排序关键字赋予部20、中间指令生成部30的功能被分配给各服务器A~C,而排序部40、相同性判定部60、图形指令生成部70的各功能被分配给客户机。
在该应用例中,具有能削减客户机的描绘负荷,提高客户机的描绘效率,并且能削减客户机的耗电这样的效果。
图9是说明由多个客户机生成渲染的中间指令串,在与多个客户机通信的服务器中进行排序和冗余性消除的系统的图。
客户机生成将服务提供方所事先生成的模型数据组合后的模型,将渲染中间指令发送到服务器。服务器接收多个客户机A~C所生成的中间指令,将它们渲染于一个画面。例如在渲染较大的图像时,有时由多个客户机并行地生成中间指令,服务器从多个客户机A~C收到中间指令来进行渲染。
服务器对从多个客户机A~C收到的中间指令进行排序,在变换成图形指令串时,削减冗余的图形指令来进行渲染。
最后,服务器将渲染后的图像发送给各客户机A~C。该图像中包含有其它客户机所发送的模型数据。
在该情况下,图形指令生成装置200的转变成本计算部10、排序关键字赋予部20、中间指令生成部30的功能被分配给各客户机A~C,而排序部40、相同性判定部60、图形指令生成部70的各功能被分配给服务器。
在该应用例中,能削减服务器的耗电、计算资源。
以上基于实施方式说明了本发明。实施方式仅是例示,本领域技术人员当理解其各构成要素和各处理处理的组合可以有各种变形例,并且这样的变形例也包含在本发明的范围内。
Claims (5)
1.一种图形指令生成装置,包括:
生成中间指令的中间指令生成部,该中间指令是具有用于描绘对象的模型数据的中间性的描绘指令,和
图形指令变换部,将所生成的中间指令变换成用于使图形处理器执行的图形指令串;
其中,上述图形指令变换部包括:
相同性判定部,判断应从上述中间指令生成的图形指令的状态是否与以前所生成的图形指令的状态相同,和
图形指令生成部,生成由上述相同性判定部判定为状态不相同的图形指令,并将判定为状态相同的图形指令作为冗余的指令而不生成,
其特征在于,还包括:
转变成本计算部,通过变更用于描绘对象的模型数据,来计算表示图形运算所涉及的硬件受到的负荷的转变成本,
排序关键字赋予部,基于上述转变成本决定使模型数据转变的顺序,并按照该转变顺序对各模型数据赋予排序关键字,以及
排序部,基于由上述中间指令生成部生成的各中间指令的模型数据所被赋予的排序关键字,改换该多个中间指令的执行顺序;
上述图形指令变换部将被上述排序部改换了执行顺序的多个中间指令分别变换成图形指令串。
2.如权利要求1所述的图形指令生成装置,其特征在于,
上述图形指令变换部还包括状态高速缓存器,高速缓存由上述图形指令生成部生成的图形指令的状态;
上述相同性判定部针对应从上述中间指令生成的图形指令的状态参照上述状态高速缓存器,当高速缓存命中时,判定为应从上述中间指令生成的图形指令的状态与以前所生成的图形指令的状态相同,当未高速缓存命中时,利用应从上述中间指令生成的图形指令的状态来更新高速缓存器。
3.如权利要求1所述的图形指令生成装置,其特征在于,
上述排序关键字赋予部从某一个模型数据开始,按上述转变成本由小到大的顺序巡回模型数据,由此决定使模型数据转变的顺序。
4.如权利要求1所述的图形指令生成装置,其特征在于,
上述排序部以最占据所显示的画面区域的模型数据为开头,按上述转变成本由小到大的顺序巡回模型数据,由此决定使模型数据转变的顺序。
5.一种图形指令生成方法,包括:
生成中间指令的中间指令生成步骤,该中间指令是具有用于描绘对象的模型数据的中间性的描绘指令,和
将所生成的中间指令变换成用于使图形处理器执行的图形指令串的图形指令变换步骤;
其中,上述图形指令变换步骤包括:
判断应从上述中间指令生成的图形指令的状态是否与以前所生成的图形指令的状态相同的相同性判定步骤,和
生成由上述相同性判定步骤判定为状态不相同的图形指令,并将被判定为状态相同的图形指令作为冗余的指令而不生成的图形指令生成步骤,
其特征在于,还包括:
转变成本计算步骤,通过变更用于描绘对象的模型数据,来计算表示图形运算所涉及的硬件受到的负荷的转变成本,
排序关键字赋予步骤,基于上述转变成本决定使模型数据转变的顺序,并按照该转变顺序对各模型数据赋予排序关键字,以及
排序步骤,基于在上述中间指令生成步骤中生成的各中间指令的模型数据所被赋予的排序关键字,改换该多个中间指令的执行顺序;
在上述图形指令变换中,将被上述排序部改换了执行顺序的多个中间指令分别变换成图形指令串。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011-267090 | 2011-12-06 | ||
JPJP2011-267090 | 2011-12-06 | ||
JP2011267090A JP5436526B2 (ja) | 2011-12-06 | 2011-12-06 | グラフィックスコマンド生成装置、グラフィックスコマンド生成方法、サーバ装置、およびクライアント装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150699A CN103150699A (zh) | 2013-06-12 |
CN103150699B true CN103150699B (zh) | 2016-02-17 |
Family
ID=48523671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210511387.8A Active CN103150699B (zh) | 2011-12-06 | 2012-12-04 | 图形指令生成装置和图形指令生成方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9424617B2 (zh) |
JP (1) | JP5436526B2 (zh) |
CN (1) | CN103150699B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9342857B2 (en) * | 2013-03-29 | 2016-05-17 | Nvidia Corporation | Techniques for locally modifying draw calls |
US9256729B2 (en) * | 2013-06-20 | 2016-02-09 | International Business Machines Corporation | Address translation/specification field for hardware accelerator |
CN104679486B (zh) * | 2013-11-28 | 2019-05-28 | 华为技术有限公司 | 一种图形数据的处理方法、装置及系统 |
CN103714569B (zh) * | 2013-12-19 | 2017-12-15 | 华为技术有限公司 | 一种渲染指令的处理方法、装置和系统 |
EP2995494B1 (en) * | 2014-09-11 | 2020-04-08 | Continental Automotive GmbH | Animation arrangement |
US10078883B2 (en) | 2015-12-03 | 2018-09-18 | Qualcomm Incorporated | Writing graphics data from local memory to system memory |
EP3185214A1 (en) * | 2015-12-22 | 2017-06-28 | Dassault Systèmes | Streaming of hybrid geometry and image based 3d objects |
KR102644276B1 (ko) | 2016-10-10 | 2024-03-06 | 삼성전자주식회사 | 그래픽 처리 장치 및 방법 |
KR102091398B1 (ko) * | 2017-01-27 | 2020-03-20 | 미쓰비시덴키 가부시키가이샤 | 화상 묘화 장치, 화상 묘화 방법, 및 화상 묘화 프로그램 |
CN109558187B (zh) * | 2017-09-27 | 2022-08-23 | 斑马智行网络(香港)有限公司 | 一种用户界面渲染方法及装置 |
JP6826021B2 (ja) * | 2017-11-20 | 2021-02-03 | 株式会社日立製作所 | ストレージシステム |
US11636327B2 (en) * | 2017-12-29 | 2023-04-25 | Intel Corporation | Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism |
US10269167B1 (en) | 2018-05-21 | 2019-04-23 | Apple Inc. | Indirect command buffers for graphics processing |
US12112394B2 (en) * | 2020-02-03 | 2024-10-08 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using configurable shaders |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101663640A (zh) * | 2007-06-27 | 2010-03-03 | 国际商业机器公司 | 提供合成显示的系统和方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03155593A (ja) * | 1989-11-14 | 1991-07-03 | Toshiba Corp | グラフィック表示装置 |
US6020894A (en) | 1990-08-16 | 2000-02-01 | Canon Kabushiki Kaisha | Full-color desktop publishing system |
JPH0540463A (ja) * | 1991-08-08 | 1993-02-19 | Hitachi Ltd | 多階調文字発生装置 |
US5966140A (en) * | 1997-06-20 | 1999-10-12 | Microsoft Corporation | Method for creating progressive simplicial complexes |
JPH11170657A (ja) * | 1997-12-16 | 1999-06-29 | Fuji Xerox Co Ltd | 画像処理装置 |
US6574360B1 (en) * | 1999-07-23 | 2003-06-03 | International Business Machines Corp. | Accelerated occlusion culling using directional discretized occluders and system therefore |
US20070013694A1 (en) * | 2005-07-13 | 2007-01-18 | Microsoft Corporation | Optimized meshlet ordering |
US7694290B2 (en) * | 2005-09-01 | 2010-04-06 | Intel Corporation | System and method for partitioning an application utilizing a throughput-driven aggregation and mapping approach |
US8269782B2 (en) | 2006-11-10 | 2012-09-18 | Sony Computer Entertainment Inc. | Graphics processing apparatus |
US8448067B2 (en) * | 2006-12-07 | 2013-05-21 | Sony Computer Entertainment America, LLC | Graphics command management tool and methods for analyzing performance for command changes before application modification |
US8200594B1 (en) * | 2008-09-10 | 2012-06-12 | Nvidia Corporation | System, method, and computer program product for accelerating a game artificial intelligence process |
JP5304443B2 (ja) * | 2009-05-28 | 2013-10-02 | 富士通セミコンダクター株式会社 | 描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム |
JP2011083914A (ja) * | 2009-10-13 | 2011-04-28 | Ricoh Co Ltd | 画像形成装置、その制御方法及び制御プログラム |
-
2011
- 2011-12-06 JP JP2011267090A patent/JP5436526B2/ja active Active
-
2012
- 2012-11-30 US US13/690,004 patent/US9424617B2/en active Active
- 2012-12-04 CN CN201210511387.8A patent/CN103150699B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101663640A (zh) * | 2007-06-27 | 2010-03-03 | 国际商业机器公司 | 提供合成显示的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US9424617B2 (en) | 2016-08-23 |
JP2013120438A (ja) | 2013-06-17 |
JP5436526B2 (ja) | 2014-03-05 |
US20130141448A1 (en) | 2013-06-06 |
CN103150699A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103150699B (zh) | 图形指令生成装置和图形指令生成方法 | |
EP1921584B1 (en) | Graphics processing apparatus, graphics library module, and graphics processing method | |
TWI604410B (zh) | 改善暫存器不足和提升平行處理的即時分析式重新計算技術 | |
US8269782B2 (en) | Graphics processing apparatus | |
CN100342331C (zh) | 用于执行渲染美术品的着色器驱动编译的方法 | |
AU2010202390B2 (en) | Rasterising disjoint regions of a page in parallel | |
CN101131768B (zh) | 图形管线中基于瓦片的精度的光栅化 | |
US7038685B1 (en) | Programmable graphics processor for multithreaded execution of programs | |
US8941669B1 (en) | Split push buffer rendering for scalability | |
KR20160063079A (ko) | 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 타일 기반 그래픽스 파이프라인을 수행하는 방법 | |
US9886735B2 (en) | Hybrid engine for central processing unit and graphics processor | |
US9250848B2 (en) | Dynamically adjusting the complexity of worker tasks in a multi-threaded application | |
CN101371247A (zh) | 用于图形处理器的并行阵列结构 | |
CN110223216B (zh) | 一种基于并行plb的数据处理方法、装置及计算机存储介质 | |
CN103003839A (zh) | 反锯齿样本的拆分存储 | |
US20130120381A1 (en) | Fast rendering of knockout groups using a depth buffer of a graphics processing unit | |
US8553041B1 (en) | System and method for structuring an A-buffer to support multi-sample anti-aliasing | |
US20130063453A1 (en) | Reordering graph execution for processing optimization | |
JP5864474B2 (ja) | 空間を分割してグラフィックスを処理する画像処理装置及び画像処理方法 | |
US8988444B2 (en) | System and method for configuring graphics register data and recording medium | |
US20230195626A1 (en) | Variable dispatch walk for successive cache accesses | |
US20230205698A1 (en) | Cache blocking for dispatches | |
US20230401070A1 (en) | Performance benchmarking-based selection of processor for generating graphic primitives | |
Antochi et al. | Efficient state management for tile-based 3d graphics architectures | |
JPH07296186A (ja) | ポリゴンデータのソート方法及びこれを用いたゲーム装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |