图形片段的后处理方法及装置与流程

文档序号:26728768发布日期:2021-09-22 21:27阅读:95来源:国知局
图形片段的后处理方法及装置与流程

1.本发明涉及计算机技术领域,具体而言,涉及一种图形片段的后处理方法及装置。


背景技术:

2.在图形处理器gpu设计中,通常光栅化后的片段都需要通过完整的测试逻辑,完成覆盖和遮挡的测试后,才能执行下一个渲染任务,如果不进行测试,就会出现奇怪的渲染场景,进行混合和逻辑运算的目的也是为了各个渲染任务之间可以做到平滑过渡,不会出现非常生硬的变换,但是由于前后片段渲染输出的时间顺序,不能保证各个片段之间是否存在遮挡和覆盖的情况,就需要首先顺序保存之前的染色片段,然后与之后染色片段进行深度和模板引擎stencil的对比,如果不满足要求,就剔除,或者执行用户需要的操作任务,此时如果不采用高速缓冲存储器cache进行缓存,就需要频繁地访问外部存储,导致测试和逻辑运算的时间很长,也会阻塞前端片段渲染任务和整个图形渲染的管线,所以在片段后期的处理速度也就直接影响了渲染器的工作效率。
3.因此,在增加颜色cache和深度cache后,顺序地执行测试任务,通过顺序流水线的方式,也会频繁地访问外存导致片段后处理的效率很低,从而直接影响了整个图形管线的像素输出效率。
4.针对上述相关技术中对图形片段的后处理效率较低,使得gpu的像素输出率较低的问题,目前尚未提出有效的解决方案。


技术实现要素:

5.本发明实施例提供了一种图形片段的后处理方法及装置,以至少解决相关技术中对图形片段的后处理效率较低使得gpu的像素输出率较低的技术问题。
6.根据本发明实施例的一个方面,提供了一种图形片段的后处理方法,包括:获取对源片段进行后处理的处理消息,其中,所述源片段为需要进行后处理的图形片段;基于所述处理消息判断后处理系统是否开启裁剪测试模块,其中,所述后处理系统为用于对所述源片段进行后处理的系统;在所述后处理系统未开启所述裁剪测试模块时,将所述源片段同时输入到透明度测试模块、模板测试模块以及深度测试模块,并基于所述透明度测试模块、所述模板测试模块以及所述深度测试模块的开启状态对所述源片段并行执行所述透明度测试、所述模板测试以及所述深度测试。
7.可选地,在获取对源片段进行后处理的处理消息之前,该图形片段的后处理方法还包括:生成所述源片段,其中,所述源片段以quad为基本处理模块;按照预定存储方式将所述源片段存储至先进先出fifo存储器。
8.可选地,基于所述处理消息判断后处理系统是否开启裁剪测试模块,包括:获取控制状态机发送的剪裁使能状态信息;基于所述剪裁使能状态信息判断所述后处理系统是否开启所述裁剪测试模块。
9.可选地,基于所述透明度测试模块、所述模板测试模块以及所述深度测试模块的
开启状态对所述源片段并行执行所述透明度测试、所述模板测试以及所述深度测试,包括:确定所述后处理系统同时开启所述透明度测试模块、所述模板测试模块以及所述深度测试模块;将所述源片段同时输入至所述透明度测试模块、所述模板测试模块以及所述深度测试模块中;分别在所述透明度测试模块、所述模板测试模块以及所述深度测试模块中对所述源片段执行所述透明度测试、所述模板测试以及所述深度测试。
10.可选地,分别在所述透明度测试模块、所述模板测试模块以及所述深度测试模块中对所述源片段执行所述透明度测试、所述模板测试以及所述深度测试,包括:在所述透明度测试模块中生成用于进行透明度测试的透明度执行掩码,并在所述模板测试模块中生成用于进行模板测试的模板执行掩码;将所述透明度执行掩码和所述模板执行掩码传递到所述深度测试模块中,以对所述源片段执行深度测试。
11.可选地,基于所述透明度测试模块、所述模板测试模块以及所述深度测试模块的开启状态对所述源片段并行执行所述透明度测试、所述模板测试以及所述深度测试,包括:确定所述后处理系统未同时开启所述透明度测试模块、所述模板测试模块以及所述深度测试模块;将所述源片段同时输入至所述透明度测试模块、所述模板测试模块以及所述深度测试模块中;将从所述深度测试模块中输出的源片段输入到混合模块中,同时将所述源片段的深度信息以及模板信息分别输出到深度掩码模块和模板掩码模块。
12.可选地,基于所述透明度测试模块、所述模板测试模块以及所述深度测试模块的开启状态对所述源片段并行执行所述透明度测试、所述模板测试以及所述深度测试,包括:确定所述后处理系统仅开启所述透明度测试模块或所述模板测试模块中的任意一个,并开启深度测试模块;在所述透明度测试模块中生成用于进行透明度测试的透明度执行掩码,或在所述模板测试模块中生成用于进行模板测试的模板执行掩码;将所述透明度执行掩码以及所述模板执行掩码传递到所述深度测试模块中执行掩码操作,得到执行掩码标识;在所述深度测试模块中按照所述执行掩码的标识,对所述透明度测试模块和所述模板测试模块进行像素剔除以及模板更新。
13.可选地,基于所述透明度测试模块、所述模板测试模块以及所述深度测试模块的开启状态对所述源片段并行执行所述透明度测试、所述模板测试以及所述深度测试,包括:确定所述后处理系统中所述透明度测试模块、所述模板测试模块以及所述深度测试模块均未开启;将所述模板测试模块的模板信息以及所述深度测试模块的深度信息分别输出到所述后处理系统中的模板掩码模块以及深度掩码模块中,同时将像素信息输出到所述后处理系统中的像素混合模块中。
14.可选地,该图形片段的后处理方法还包括:判断所述后处理系统的混合操作模块是否开启;在所述混合操作模块开启的情况下,将所述像素信息输入到所述后处理系统中的像素混合模块中;在所述混合操作模块未开启的情况下,将所述像素信息输出到所述后处理系统的像素掩码模块中,并判断所述后处理系统的逻辑操作模块是否开启;在所述逻辑操作模块开启的情况下,将所述像素信息输入到所述后处理系统的像素逻辑模块。
15.根据本发明实施例的另外一个方面,还提供了一种图形片段的后处理装置,包括:获取单元,用于获取对源片段进行后处理的处理消息,其中,所述源片段为需要进行后处理的图形片段;判断单元,用于基于所述处理消息判断后处理系统是否开启裁剪测试模块,其中,所述后处理系统为用于对所述源片段进行后处理的系统;处理单元,用于在所述后处理
系统未开启所述裁剪测试模块时,将所述源片段同时输入到透明度测试模块、模板测试模块以及深度测试模块,并基于所述透明度测试模块、所述模板测试模块以及所述深度测试模块的开启状态对所述源片段并行执行所述透明度测试、所述模板测试以及所述深度测试。
16.可选地,该图形片段的后处理装置还包括:生成单元,用于在获取对源片段进行后处理的处理消息之前,生成所述源片段,其中,所述源片段以quad为基本处理模块;存储单元,用于按照预定存储方式将所述源片段存储至先进先出fifo存储器。
17.可选地,所述判断单元,包括:第一获取模块,用于获取控制状态机发送的剪裁使能状态信息;第一判断模块,用于基于所述剪裁使能状态信息判断所述后处理系统是否开启所述裁剪测试模块。
18.可选地,所述处理单元,包括:第一确定模块,用于确定所述后处理系统同时开启所述透明度测试模块、所述模板测试模块以及所述深度测试模块;第一输入模块,用于将所述源片段同时输入至所述透明度测试模块、所述模板测试模块以及所述深度测试模块中;第一处理模块,用于分别在所述透明度测试模块、所述模板测试模块以及所述深度测试模块中对所述源片段执行所述透明度测试、所述模板测试以及所述深度测试。
19.可选地,所述第一处理模块,包括:生成子模块,用于在所述透明度测试模块中生成用于进行透明度测试的透明度执行掩码,并在所述模板测试模块中生成用于进行模板测试的模板执行掩码;传递子模块,用于将所述透明度执行掩码和所述模板执行掩码传递到所述深度测试模块中,以对所述源片段执行深度测试。
20.可选地,所述处理单元,包括:第二确定模块,用于确定所述后处理系统未同时开启所述透明度测试模块、所述模板测试模块以及所述深度测试模块;第二输入模块,用于将所述源片段同时输入至所述透明度测试模块、所述模板测试模块以及所述深度测试模块中;第三输入模块,用于将从所述深度测试模块中输出的源片段输入到混合模块中,同时将所述源片段的深度信息以及模板信息分别输出到深度掩码模块和模板掩码模块。
21.可选地,所述处理单元,包括:第三确定模块,用于确定所述后处理系统仅开启所述透明度测试模块或所述模板测试模块中的任意一个,并开启深度测试模块;生成模块,用于在所述透明度测试模块中生成用于进行透明度测试的透明度执行掩码,或在所述模板测试模块中生成用于进行模板测试的模板执行掩码;执行模块,用于将所述透明度执行掩码以及所述模板执行掩码传递到所述深度测试模块中执行掩码操作,得到执行掩码标识;第二处理模块,用于在所述深度测试模块中按照所述执行掩码的标识,对所述透明度测试模块和所述模板测试模块进行像素剔除以及模板更新。
22.可选地,所述处理单元,包括:第四确定模块,用于确定所述后处理系统中所述透明度测试模块、所述模板测试模块以及所述深度测试模块均未开启;第四输入模块,用于将所述模板测试模块的模板信息以及所述深度测试模块的深度信息分别输出到所述后处理系统中的模板掩码模块以及深度掩码模块中,同时将像素信息输出到所述后处理系统中的像素混合模块中。
23.可选地,该图形片段的后处理装置还包括:所述判断单元,还用于判断所述后处理系统的混合操作模块是否开启;输入单元,用于在所述混合操作模块开启的情况下,将所述像素信息输入到所述后处理系统中的像素混合模块中;所述处理单元,还用于在所述混合
操作模块未开启的情况下,将所述像素信息输出到所述后处理系统的像素掩码模块中,并判断所述后处理系统的逻辑操作模块是否开启;所述输入单元,还用于在所述逻辑操作模块开启的情况下,将所述像素信息输入到所述后处理系统的像素逻辑模块。
24.根据本发明实施例的另外一个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序被处理器运行时控制所述计算机存储介质所在设备执行上述中任一项所述的图形片段的后处理方法。
25.根据本发明实施例的另外一个方面,还提供了一种处理器,所述处理器用于运行计算机程序,其中,所述计算机程序运行时执行上述中任一项所述的图形片段的后处理方法。
26.在本发明实施例中,获取对源片段进行后处理的处理消息,其中,源片段为需要进行后处理的图形片段;基于处理消息判断后处理系统是否开启裁剪测试模块,其中,后处理系统为用于对源片段进行后处理的系统;在后处理系统未开启裁剪测试模块时,将源片段同时输入到透明度测试模块、模板测试模块以及深度测试模块,并基于透明度测试模块、模板测试模块以及深度测试模块的开启状态对源片段并行执行透明度测试、模板测试以及深度测试。通过本发明实施例提供的图形片段的后处理方法,实现了通过合理划分渲染片段大小和执行测试方式合理地降低片段后处理的时间,以及有效降低图形片段后处理的功耗的目的,提高了图形片段后处理的片段处理能力,进而解决了相关技术中对图形片段的后处理效率较低使得gpu的像素输出率较低的技术问题。
附图说明
27.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
28.图1是根据现有技术中的图形片段处理顺序执行测试的流程图;
29.图2是根据本发明实施例的图形片段的后处理方法的流程图;
30.图3是根据本发明实施例的图形片段后处理基于quad执行方式的示意图;
31.图4是根据本发明实施例的图形片段的后处理方法的示意图;
32.图5是根据本发明实施例的图形片段后处理并行掩码执行测试的流程图;
33.图6是根据本发明实施例的经过掩码测试后的混合操作的示意图;
34.图7是根据本发明实施例的经过掩码测试后的逻辑操作的示意图;
35.图8是根据本发明实施例的并行掩码控制的状态机的示意图;
36.图9是根据本发明实施例的图形片段的后处理装置的示意图。
具体实施方式
37.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
38.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第
二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
39.为了便于描述,下面对本发明实施例中出现的部分名词或术语进行说明。
40.多重采样反走样(multisample anti aliasing,简称msaa):是实时渲染中解决抗锯齿问题的常用方式。
41.相关技术中,针对块渲染模式下,对块大小的划分有很多种方式,通常基于图形管线的测试工作都是顺序执行,比如先执行透明度测试,然后执行模板测试,最后才执行深度测试,并且在没有完成上一个测试任务之前,下一个测试任务是不能进行的。图1是根据现有技术中的图形片段处理顺序执行测试的流程图,如图1所示,这在硬件实现上都是串行操作的,在硬件执行上效率不高,并且由于透明度测试、模板测试和深度测试的使能问题,可以不执行所有的测试任务,而执行逻辑和混合任务。
42.因此,在本发明实施例中采用了2*2的quad方案,通过添加测试掩码mask的方式,实现测试之间的并行操作,提高测试阶段的效率,不影响测试流程的顺序执行,只是在透明度测试和深度测试阶段,分别生成不同的掩码信息,并在深度测试阶段,通过不同的掩码信息,对透明度对应的位置信息和相关属性数据,采取是否剔除和保留,对深度对应的模板值是否进行修改和如何修改,由于测试任务是动态可变的,在只有一个测试开启的条件下,数据完成bypass运算,不需要通过中间缓冲,减少数据的流入和流出。
43.基于执行掩码的并行装置,可以最大化地实现透明度测试、模板测试的并行执行,在输出的深度测试中完成透明度执行掩码操作,并在不同时开启测试的情况下,直接由深度测试输出模板、深度和像素信息。
44.下面结合具体实施例对本发明实施例提供的图形的后处理装置及装置进行说明。
45.实施例1
46.根据本发明实施例,提供了一种图形片段的后处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
47.图2是根据本发明实施例的图形片段的后处理方法的流程图,如图2所示,该装置包括如下步骤:
48.步骤s202,获取对源片段进行后处理的处理消息,其中,源片段为需要进行后处理的图形片段。
49.可选的,上述处理消息可以是基于后处理系统中状态寄存器和控制状态机来确定的。
50.在一种可选的实施例中,在获取对源片段进行后处理的处理消息之前,该图形片段的后处理方法还包括:生成源片段,其中,源片段以quad为基本处理模块;按照预定存储方式将源片段存储至先进先出fifo存储器。
51.例如,在本发明实施例中,可以将包括掩码在内的源片段缓存至fifo存储器,深度可以为16,单个深度可以缓存quad大小的r、g、b、a、模板和深度,按照x、y、d、s、r、g、b、a的特殊顺序存储,采用单精度浮点格式进行片段后处理的所有运算,充分保证精度的有效性。
52.可选的,上述掩码可以为msaa掩码。
53.步骤s204,基于处理消息判断后处理系统是否开启裁剪测试模块,其中,后处理系统为用于对源片段进行后处理的系统。
54.在该实施例中,可以判断后处理系统的裁剪测试模块是否开启,若开启,可以执行裁剪盒内的裁剪操作;如果没有开启裁剪操作,则直接分别输入到透明度测试模块、模板测试模块以及深度测试模块。
55.步骤s206,在后处理系统未开启裁剪测试模块时,将源片段同时输入到透明度测试模块、模板测试模块以及深度测试模块,并基于透明度测试模块、模板测试模块以及深度测试模块的开启状态对源片段并行执行透明度测试、模板测试以及深度测试。
56.由上可知,在本发明实施例中,可以获取对源片段进行后处理的处理消息,基于该处理消息判断后处理系统是否开启裁剪测试模块,在后处理系统未开启裁剪测试模块时,将源片段同时输入到透明度测试模块、模板测试模块以及深度测试模块,并基于透明度测试模块、模板测试模块以及深度测试模块的开启状态对源片段并行执行透明度测试、模板测试以及深度测试,实现了有效降低图形片段后处理的功耗的目的,提高了图形片段后处理的片段处理能力。
57.因此,通过本发明实施例提供的图形片段的后处理方法,解决了相关技术中对图形片段的后处理效率较低使得gpu的像素输出率较低的技术问题。
58.需要说明的是,在本发明实施例中,在执行测试阶段,需要获取写入渲染buffer后的源片段作为目标片段,从而通过测试函数执行源片段和目标片段的比较,经测试后的结果输入到混合逻辑运算单元,并在执行混合和逻辑运算后,将保留的源片段输入到渲染的buffer中共,当再次获取时被作为目标片段。
59.作为一种可选的实施例中,基于处理消息判断后处理系统是否开启裁剪测试模块,包括:获取控制状态机发送的剪裁使能状态信息;基于剪裁使能状态信息判断后处理系统是否开启裁剪测试模块。
60.在该实施例中,可以基于控制状态机发送的剪裁使能状态信息来确定裁剪盒是否处于裁剪使能状态,以确定后处理系统的裁剪测试模块是否开启。
61.作为一种可选的实施例,基于透明度测试模块、模板测试模块以及深度测试模块的开启状态对源片段并行执行透明度测试、模板测试以及深度测试,包括:确定后处理系统同时开启透明度测试模块、模板测试模块以及深度测试模块;将源片段同时输入至透明度测试模块、模板测试模块以及深度测试模块中;分别在透明度测试模块、模板测试模块以及深度测试模块中对源片段执行透明度测试、模板测试以及深度测试。
62.具体地,分别在透明度测试模块、模板测试模块以及深度测试模块中对源片段执行透明度测试、模板测试以及深度测试,包括:在透明度测试模块中生成用于进行透明度测试的透明度执行掩码,并在模板测试模块中生成用于进行模板测试的模板执行掩码;将透明度执行掩码和模板执行掩码传递到深度测试模块中,以对源片段执行深度测试。
63.在该实施例中,如果后处理系统同时开启了透明度测试、模板测试和深度测试,则
需要在透明度测试中生成透明度测试的透明度执行掩码;在模板测试中生成模板测试掩码,并将透明度执行掩码和模板执行掩码传递到深度测试中,进行深度测试,深度测试的目的深度值,需要通过x、y坐标下的quad的深度信息,通过请求模板、深度cache获得,其中,如果将quad的坐标xy编码为00,则其余3个地址的偏移量,分别可以表示为01、10和11。
64.例如,如果将每一个quad的第一个位置坐标设为xy,并标记为00、则其余的位置坐标分别为01、10、11,然后通过相同的xy坐标进行quad索引,并基于坐标索引00的基础上,添加偏移量进行其它位置的索引,其中quad的划分,如图3所示(图3是根据本发明实施例的图形片段后处理基于quad执行方式的示意图)。
65.作为一种可选的实施例,基于透明度测试模块、模板测试模块以及深度测试模块的开启状态对源片段并行执行透明度测试、模板测试以及深度测试,包括:确定后处理系统未同时开启透明度测试模块、模板测试模块以及深度测试模块;将源片段同时输入至透明度测试模块、模板测试模块以及深度测试模块中;将从深度测试模块中输出的源片段输入到混合模块中,同时将源片段的深度信息以及模板信息分别输出到深度掩码模块和模板掩码模块。
66.在该实施例中,如果没有开启透明度测试、模板测试和深度测试,则直接输出深度测试模块中的像素到混合模块,并将深度信息和模板信息分别输出到深度掩码模块和模板掩码模块进行后期的掩码操作。
67.作为一种可选的实施例,基于透明度测试模块、模板测试模块以及深度测试模块的开启状态对源片段并行执行透明度测试、模板测试以及深度测试,包括:确定后处理系统仅开启透明度测试模块或模板测试模块中的任意一个,并开启深度测试模块;在透明度测试模块中生成用于进行透明度测试的透明度执行掩码,或在模板测试模块中生成用于进行模板测试的模板执行掩码;将透明度执行掩码以及模板执行掩码传递到深度测试模块中执行掩码操作,得到执行掩码标识;在深度测试模块中按照执行掩码的标识,对透明度测试模块和模板测试模块进行像素剔除以及模板更新。
68.在该实施例中,如果开启了透明度测试、模板测试中的任何一个和深度测试,则需要进行将透明度测试的执行掩码或者模板测试的执行掩码传递到深度测试中进行掩码操作,其中,执行掩码表示,如果测试通过即标识为1,如果测试失败,则标识为0,在深度测试模块中按照执行掩码的标识,对透明度和模板进行像素的剔除和模板的更新。
69.作为一种可选的实施例,基于透明度测试模块、模板测试模块以及深度测试模块的开启状态对源片段并行执行透明度测试、模板测试以及深度测试,包括:确定后处理系统中透明度测试模块、模板测试模块以及深度测试模块均未开启;将模板测试模块的模板信息以及深度测试模块的深度信息分别输出到后处理系统中的模板掩码模块以及深度掩码模块中,同时将像素信息输出到后处理系统中的像素混合模块中。
70.在该实施例中,如果透明度测试、模板测试和深度测试均没有开启,则直接将模板和深度信息分别输出到模板掩码和深度掩码模块,将像素信息输出到像素混合模块
71.作为一种可选的实施例,该图形片段的后处理方法还包括:判断后处理系统的混合操作模块是否开启;在混合操作模块开启的情况下,将像素信息输入到后处理系统中的像素混合模块中;在混合操作模块未开启的情况下,将像素信息输出到后处理系统的像素掩码模块中,并判断后处理系统的逻辑操作模块是否开启;在逻辑操作模块开启的情况下,
将像素信息输入到后处理系统的像素逻辑模块。
72.在该实施例中,如果没有开启混合操作和逻辑操作,则将像素输入到像素掩码模块,如果开启了逻辑操作,需要将输入基于quad的像素输出到像素逻辑模块,其中需要将基于msaa多重采样的掩码传递到混合和逻辑模块中。
73.另外,在该实施例中,像素混合模块,如果开启了混合操作,则首先通过状态寄存器中获取混合操作的混合函数和混合参数,然后获取位置xy坐标下的颜色属性,读取像素cache中获取quad大小的目的像素,存入目的像素fifo存储器中,完成对输入的源像素和目的像素的混合操作,其所有操作均基于quad大小,并分别执行r、g、b、a的混合,如果没有开启混合操作,则将源像素输出到逻辑操作模块,如果开启了msaa多重采样,则需要执行多重采样下的混合操作。
74.像素逻辑模块,如果开启了逻辑操作,则首先通过xy坐标索引像素cache中的quad大小的像素,并存入目的像素fifo存储器中,与输入像素执行逻辑操作,如果开启了msaa多重采样,则需要执行多重采样下的逻辑操作。
75.此外,可分别采用像素cache和模板深度cache,可以分别完成像素操作和逻辑运算,并保证模板和深度信息可以得到更新,并同时保证基于xy坐标下的一致性。
76.在本发明实施例中,如果开启了模板掩码操作,则将执行完成后的模板写入到模板深度cache中,如果开启了深度掩码,需要更新深度信息到模板深度cache,如果开启了像素掩码,则需要在执行完成像素掩码后,输出到像素cache。
77.在本发明实施例中,通过状态机控制和状态控制寄存的方式使得片段后处理的硬件设计中的状态更加容易切换,控制状态和数据分离的方式不影响处理的最终结果。
78.由上可知,在本发明实施例中采用了基于执行并行掩码的并行方法,可以最大化地实现透明度测试、模板测试的并指执行,在输出的深度测试中完成透明度执行掩码操作和模板执行掩码操作,并在不同时开启测试的情况下,直接由深度测试输出模板、深度和像素信息,提高了对图形片段的后处理效率。下面结合附图对本发明一个优选实施例进行说明。
79.图4是根据本发明实施例的图形片段的后处理方法的示意图,如图4所示,首先,在源片段缓存fifo中缓存16个深度的基于quad为单位的属性数据,包括对应的坐标以及颜色属性数据。如x0、y0、z0、d0、r0、g0、b0、a0、x1、y1、z1、d1、r1、g1、b1、a1、x2、y2、z2、d2、r2、g2、b2、a2、x3、y3、z3、d3、r3、g3、b3、a3,如果将每一个quad的第一个位置坐标设为xy,并标记为00、则其余的位置坐标分别为01、10、11,然后通过相同的xy坐标进行quad索引,并基于坐标索引00的基础上,添加偏移量进行其它位置的索引,其中quad的划分,如图3所示。
80.然后通过检测状态寄存器中,是否开启了裁剪测试,如果开启了裁剪测试,在通过裁剪模块完成关于裁剪盒内的裁剪任务;如果检测到透明度测试任务开启,则在通过透明度测试模块完成关于透明度任务下的像素剔除任务,并生成透明度执行掩码,输出到深度测试模块中,如果检测到模板测试任务开启,则通过模板测试模块中完成关于模板的测试的任务,并生成模板测试执行掩码,最后如果开启了深度测试任务,则首先通过透明度执行掩码和模板执行掩码执行透明度下的像素更新任务和模板更新任务,最后在通过比较源深度和目的深度,更新深度值以及对应的像素,如下图5所示(图5是根据本发明实施例的图形片段后处理并行掩码执行测试的流程图)。
81.在执行完测试后,如果状态机中使能了混合操作,则通过检测混合函数寄存器和混合函数参数寄存器,执行混合操作,如图6所示(图6是根据本发明实施例的经过掩码测试后的混合操作的示意图),分别对r、g、b和a分别执行混合函数操作,如果启用了msaa多重采样操作,则执行多重采样下的混合操作,完成后将执行结果更新到逻辑模块中,如果状态机中使能了逻辑操作,则需要重新读取像素cache中基于quad的数据到目的像素fifo中,然后通过检测状态寄存器中关于逻辑操作的函数,对源像素和目的像素执行逻辑运算,并将像素执行的结果更新到像素掩码模块,如图7所示(图7是根据本发明实施例的经过掩码测试后的逻辑操作的示意图),当启用了msaa功能时,进行msaa的coverage覆盖计算,并执行像素的掩码操作,通过读取状态寄存器中关于像素掩码参数,计算出r、g、b、a后输出到更新到像素cache中,像素cache通过写回策略执行cache的写操作。
82.在深度测试完成后,被更新后的深度以及模板值被写入到模板掩码模块和深度掩码模块,通过检测状态寄存器中关于模板掩码和深度掩码中的掩码参数,执行对模板和深度的掩码操作,并将最终的模板值和深度值写入到模板和深度cache中,并通过写回策略执行模板和深度cache的写操作。
83.需要说明的是,在本发明实施例中,采用了配置状态寄存器和控制状态机分离的方式执行基于quad大小的片段后处理测试和后处理逻辑,在硬件实现上容易实现,如图8所示(图8是根据本发明实施例的并行掩码控制的状态机的示意图)。由于测试模块中的透明度测试和模板测试可以并行计算,所以在执行测试效率上得到了提升。
84.此外,需要说明的是,本发明实施例中,提供的图形片段的后处理方法的硬件加速试验的后处理系统主要包括:片段后处理状态控制单元、片段后处理状态寄存单元、源片断缓存fifo、裁剪测试单元、透明度测试单元、模板测试单元、后深度测试单元、像素混合单元、像素逻辑单元、深度掩码单元、模板掩码单元、像素掩码单元、像素cache、模板、深度cache单元等。在不确定是否同时开启多种测试的条件下,最大化并行处理透明度测试、模板测试和深度测试,减少混合和逻辑运算时间,基于块渲染管线基础上,采用quad作为基本处理单元,可以最大程度上优化memory的访存时间,对msaa多重采样更加友好,该发明可以有效降低片段后处理的功耗,提高片段后处理的片段处理能力。
85.实施例2
86.根据本发明实施例的另外一个方面,还提供了一种图形片段的后处理装置,图9是根据本发明实施例的图形片段的后处理装置的示意图,如图9所示,该图形片段的后处理装置可以包括:获取单元91、判断单元93以及处理单元95。下面对该图形片段的后处理装置进行说明。
87.获取单元91,用于获取对源片段进行后处理的处理消息,其中,源片段为需要进行后处理的图形片段。
88.判断单元93,用于基于处理消息判断后处理系统是否开启裁剪测试模块,其中,后处理系统为用于对源片段进行后处理的系统。
89.处理单元95,用于在后处理系统未开启裁剪测试模块时,将源片段同时输入到透明度测试模块、模板测试模块以及深度测试模块,并基于透明度测试模块、模板测试模块以及深度测试模块的开启状态对源片段并行执行透明度测试、模板测试以及深度测试。
90.此处需要说明的是,上述获取单元91、判断单元93以及处理单元95对应于实施例1
中的步骤s202至s206,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以在诸如一组计算机可执行指令的计算机系统中执行。
91.由上可知,在本发明实施例中,可以利用获取单元获取对源片段进行后处理的处理消息,其中,源片段为需要进行后处理的图形片段;然后利用判断单元基于处理消息判断后处理系统是否开启裁剪测试模块,其中,后处理系统为用于对源片段进行后处理的系统;接着利用处理单元在后处理系统未开启裁剪测试模块时,将源片段同时输入到透明度测试模块、模板测试模块以及深度测试模块,并基于透明度测试模块、模板测试模块以及深度测试模块的开启状态对源片段并行执行透明度测试、模板测试以及深度测试。通过本发明实施例提供的图形片段的后处理装置,实现了有效降低图形片段后处理的功耗的目的,提高了图形片段后处理的片段处理能力,解决了相关技术中对图形片段的后处理效率较低使得gpu的像素输出率较低的技术问题。
92.可选地,该图形片段的后处理装置还包括:生成单元,用于在获取对源片段进行后处理的处理消息之前,生成源片段,其中,源片段以quad为基本处理模块;存储单元,用于按照预定存储方式将源片段存储至先进先出fifo存储器。
93.可选地,判断单元,包括:第一获取模块,用于获取控制状态机发送的剪裁使能状态信息;第一判断模块,用于基于剪裁使能状态信息判断后处理系统是否开启裁剪测试模块。
94.可选地,处理单元,包括:第一确定模块,用于确定后处理系统同时开启透明度测试模块、模板测试模块以及深度测试模块;第一输入模块,用于将源片段同时输入至透明度测试模块、模板测试模块以及深度测试模块中;第一处理模块,用于分别在透明度测试模块、模板测试模块以及深度测试模块中对源片段执行透明度测试、模板测试以及深度测试。
95.可选地,第一处理模块,包括:生成子模块,用于在透明度测试模块中生成用于进行透明度测试的透明度执行掩码,并在模板测试模块中生成用于进行模板测试的模板执行掩码;传递子模块,用于将透明度执行掩码和模板执行掩码传递到深度测试模块中,以对源片段执行深度测试。
96.可选地,处理单元,包括:第二确定模块,用于确定后处理系统未同时开启透明度测试模块、模板测试模块以及深度测试模块;第二输入模块,用于将源片段同时输入至透明度测试模块、模板测试模块以及深度测试模块中;第三输入模块,用于将从深度测试模块中输出的源片段输入到混合模块中,同时将源片段的深度信息以及模板信息分别输出到深度掩码模块和模板掩码模块。
97.可选地,处理单元,包括:第三确定模块,用于确定后处理系统仅开启透明度测试模块或模板测试模块中的任意一个,并开启深度测试模块;生成模块,用于在透明度测试模块中生成用于进行透明度测试的透明度执行掩码,或在模板测试模块中生成用于进行模板测试的模板执行掩码;执行模块,用于将透明度执行掩码以及模板执行掩码传递到深度测试模块中执行掩码操作,得到执行掩码标识;第二处理模块,用于在深度测试模块中按照执行掩码的标识,对透明度测试模块和模板测试模块进行像素剔除以及模板更新。
98.可选地,处理单元,包括:第四确定模块,用于确定后处理系统中透明度测试模块、模板测试模块以及深度测试模块均未开启;第四输入模块,用于将模板测试模块的模板信
息以及深度测试模块的深度信息分别输出到后处理系统中的模板掩码模块以及深度掩码模块中,同时将像素信息输出到后处理系统中的像素混合模块中。
99.可选地,该图形片段的后处理装置还包括:判断单元,还用于判断后处理系统的混合操作模块是否开启;输入单元,用于在混合操作模块开启的情况下,将像素信息输入到后处理系统中的像素混合模块中;处理单元,还用于在混合操作模块未开启的情况下,将像素信息输出到后处理系统的像素掩码模块中,并判断后处理系统的逻辑操作模块是否开启;输入单元,还用于在逻辑操作模块开启的情况下,将像素信息输入到后处理系统的像素逻辑模块。
100.实施例3
101.根据本发明实施例的另外一个方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的计算机程序,其中,在计算机程序被处理器运行时控制计算机存储介质所在设备执行上述中任一项的图形片段的后处理方法。
102.实施例4
103.根据本发明实施例的另外一个方面,还提供了一种处理器,处理器用于运行计算机程序,其中,计算机程序运行时执行上述中任一项的图形片段的后处理方法。
104.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
105.在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
106.在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
107.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
108.另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
109.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
110.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人
员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1