本发明涉及计算机图形扫描技术领域,具体涉及一种面向gpu的三角形光栅化扫描结构。
背景技术:
随着图形化应用的不断增加,早期单靠cpu(中央处理器,centralprocessingunit)进行图形绘制的解决方案已经难以满足技术增长的图形处理需求,因而图形处理器(graphicprocessingunit,gpu)应运而生。从1999年nvidia发布第一款gpu产品至今,gpu技术的发展主要经历了固定功能流水线阶段、分离染色器架构阶段和统一染色器架构阶段,其图形处理能力不断提升,应用领域也从最初的图形绘制逐步扩展到通用计算领域。gpu具有流水线高速、并行的特征和灵活的可编程能力,为图形处理和通用并行计算提供了良好的运行平台。
目前,我国gpu芯片研制能力薄弱,各领域显示控制系统中大量采用国外进口的商用gpu芯片。尤其是在军用领域中,国外进口商用gpu芯片存在安全性、可靠性、保障性等方面的隐患,无法满足军用环境的需求;而且,出于政治、军事、经济等原因,国外对我国实行技术“封锁”和产品“垄断”,难以获得gpu芯片的底层技术资料,如寄存器资料、详细内部微架构、核心软件源码等,导致gpu功能、性能无法充分发挥,且移植性较差;上述问题严重制约了我国显示系统的独立研制和自主发展,突破图形处理器关键技术、研制图形处理器芯片迫在眉睫。
但是,gpu芯片硬件的逻辑规模巨大,从系统架构文档到rtl(registertransferlevel,寄存器转换级电路)的实现成为了研制gpu芯片的巨大阻碍。
技术实现要素:
为了解决现有技术中存在的上述问题,本发明提供了一种面向gpu的三角形光栅化扫描结构。
本发明的一个实施例提供了一种面向gpu的三角形光栅化扫描结构,包括:
初始化单元,连接所述数据获取单元,用于接收三角形数据信息,并根据所述三角形数据信息获取x轴起始坐标、y轴检测范围;
y轴步进单元,连接所述初始化单元,用于对x轴进行使能标识,并根据所述y轴检测范围控制检测元素沿第一方向的步进;
若干x轴扫描单元,分别连接所述y轴步进单元,用于根据所述使能标识和所述x轴起始坐标控制所述检测元素沿x轴的扫描。
在本发明的一个实施例中,第二方向扫描单元,通过与门连接所述y轴步进单元,用于根据所述使能标识和所述x轴起始坐标控制检测元素沿第二方向的扫描;
第三方向扫描单元,通过与门连接所述y轴步进单元,用于根据所述使能标识和所述x轴起始坐标控制检测元素沿第三方向的扫描。
在本发明的一个实施例中,所述第二方向扫描单元还用于通过与门向所述y轴步进单元提供所述检测元素的第一完成标记。
在本发明的一个实施例中,所述第三方向扫描单元还用于通过与门向所述y轴步进单元提供所述检测元素的第二完成标记。
在本发明的一个实施例中,所述第二方向为x轴正向,所述第三方向为x轴负向。
在本发明的一个实施例中,所述y轴步进单元为fsm。
在本发明的一个实施例中,数据获取单元,连接所述初始化单元,用于获取所述三角形数据信息。
在本发明的一个实施例中,所述数据获取单元为fifo。
在本发明的一个实施例中,所述x轴扫描单元还用于提供有效坐标数据。
在本发明的一个实施例中,数据接收单元,连接所述x轴扫描单元,用于光栅化所述有效坐标数据。
与现有技术相比,本发明的有益效果:
本发明提供的面向gpu的三角形光栅化扫描结构,集成有初始化单元、y轴步进单元和x轴扫描单元,实现了gpu的三角形光栅化扫描,从而实现了从系统架构文档到rtl(registertransferlevel,寄存器转换级电路)的转换。
附图说明
图1为本发明实施例提供的一种面向gpu的三角形光栅化扫描结构的示意图;
图2为本发明实施例提供的另一种面向gpu的三角形光栅化扫描结构的示意图;
图3为本发明实施例提供的一种三角形的结构示意图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
实施例一
请参见图1和图2,图1为本发明实施例提供的一种面向gpu的三角形光栅化扫描结构的示意图,图2为本发明实施例提供的另一种面向gpu的三角形光栅化扫描结构的示意图。本发明实施例提供的一种面向gpu的三角形光栅化扫描结构,该结构包括:
数据获取单元,用于获取三角形数据信息,并为初始化单元提供所述三角形数据信息。
请参见图3,具体地,三角形数据信息为三角形三个点的坐标,可以分别记为v0(x0,y0)、v1(x1,y1)和v2(x2,y2),其中,用于光栅化扫描的三角形可以为锐角三角形、直角三角形和钝角三角形。
优选地,数据获取单元为fifo(firstinputfirstoutput,先进先出存储器),fifo可以实现对三角形数据信息进行缓存,并且能够对三角形数据信息进行写数据和读数据操作,从而将三角形数据信息传输至初始化单元。
初始化单元(initialization单元),连接数据获取单元,用于接收三角形数据信息,并根据三角形数据信息获取x轴起始坐标、y轴检测范围;
具体地,初始化单元用于读取三角形数据信息中的有效数据,并对读取的有效数据进行数据初始化操作,从而确定x轴起始坐标和y轴检测范围;
进一步地,将三角形y轴的最小坐标记为ymin,则ymin=(y0,y1,y2),即ymin为y0、y1和y2中的最小值,三角形y轴的最大坐标为ymax,则ymax=(y0,y1,y2),即ymax为y0、y1和y2中的最大值,则y轴检测范围记为[ymin,ymax]。
进一步地,x轴起始坐标(将x轴起始坐标记为x_scan_start)是用于对三角形的x轴进行扫描时的起始坐标,确定三角形光栅化的x轴起始坐标分为以下情况:
情况1,当y0≠y1≠y2,此时若ymin=y0,则x_scan_start=x0,若ymin=y1,则x_scan_start=x1,ymin=y2,则x_scan_start=x2;
情况2,当y0=y1≠y2,此时若ymin=y0=y1,则需要判断x0与x1的大小,若x1>x0,则x_scan_start=x0,若x1<x0,则x_scan_start=x1,若ymin=y2,则x_scan_start=x2;
情况3,当y0≠y1=y2,此时若ymin=y1=y2,则需要判断x1与x2的大小,若x2>x1,则x_scan_start=x1,若x2<x1,则x_scan_start=x2,若ymin=y0,则x_scan_start=x0;
情况4,当y0=y2≠y1,此时若ymin=y0=y2,则需要判断x0与x2的大小,若x2>x0,则x_scan_start=x0,若x2<x0,则x_scan_start=x2,若ymin=y1,则x_scan_start=x1。
x轴起始坐标为检测元素每次在y轴沿第一方向按设定距离步进后,沿x轴扫描的起始坐标开始对三角形进行扫描。
y轴步进单元,连接初始化单元,用于对x轴进行使能标识,并根据y轴检测范围控制检测元素沿第一方向的步进;
其中,检测元素为像素。
具体地,y轴步进单元能够控制检测元素在y轴检测范围沿第一方向进行步进,y轴步进单元还用于接收x轴扫描单元在y轴检测范围内的某个y坐标下,x轴扫描单元沿x轴的扫描结束时所输出的完成标记信号,当y轴步进单元接收到该完成标记信号后,便会控制检测元素沿第一方向步进设定距离,以对下一个y坐标所对应的x轴进行扫描,直至超出y轴检测范围,则扫描结束。y轴步进单元根据所接收的完成标记信号共同控制若干x轴扫描单元,以使所有的x轴扫描单元能够实现并行执行。y轴步进单元内部设置有寄存器,该寄存器用于标识每一行x轴扫描的使能位(enable),使能位用于判断每一行x轴是否使能,若使能,则x轴扫描单元开始对本行进行扫描,若不使能,则y轴步进单元控制检测元素沿第一方向继续步进。其中,若某一行的x轴的坐标包含有三角形的坐标数据,则说明该x轴使能,若未包含有三角形的坐标数据,则说明该x轴不使能。
进一步地,完成标记信号包括第一完成标记和第二完成标记。
优选地,y轴步进的起始坐标设置为ymin,第一方向为y轴正向,即y轴步进单元控制检测元素从ymin开始沿第一方向步进,直至其超出ymax。
优选地,y轴步进单元为y-axisfsm(finitestatemachine,有限状态机)单元,fsm由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。
若干x轴扫描单元(x-axisscanningprocess单元),每个x轴扫描单元均分别连接y轴步进单元,用于根据x轴的使能标识和x轴起始坐标控制检测元素沿x轴的扫描。其中,y轴步进单元用于向x轴扫描单元传输x轴的使能标识和x轴起始坐标。
每个x轴扫描单元均包括一个第二方向扫描单元和一个第三方向扫描单元,每个第二方向扫描单元均通过与门连接y轴步进单元,第二方向扫描单元用于根据对x轴的使能标识和x轴起始坐标控制检测元素沿第二方向的扫描;每个第三方向扫描单元均通过与门连接所述y轴步进单元,用于根据对x轴的使能标识和x轴起始坐标控制检测元素沿第三方向的扫描。第二方向扫描单元和一个第三方向扫描单元可以并行执行。在每次沿y轴步进后,x轴扫描单元首先会检测每个x轴是否使能,若使能,则第二方向扫描单元和第三方向扫描单元开始进行扫描,直至扫描结束后,第二方向扫描单元会输出一个第一完成标记至y轴步进单元,第一完成标记表示第二方向扫描单元对应的x轴沿第二方向的扫描结束,第三方向扫描单元会输出一个第二完成标记至y轴步进单元,第二完成标记表示第三方向扫描单元对应的x轴沿第三方向的扫描结束,从而使得y轴步进单元获取每一行x轴扫描的情况。y轴步进单元根据第一完成标记和第二完成标记更新使能位,并重新分配资源至x轴扫描单元,使其继续x轴的扫描,直到y轴步进跳出y轴检测范围,至此三角形光栅化扫描结束。
在每一行的x轴扫描数据后,第二方向扫描单元和第三方向扫描单元会输出有效坐标数据,以便于对扫描到的坐标进行存储和记录。其中,有效坐标数据为检测元素部分位于三角形中或全部位于初始化后的三角形所对应的坐标,这种坐标数据即为有效坐标数据。
进一步地,通过y轴步进单元对每个x轴扫描单元分配的硬件资源,可以实现检测元素在不同y坐标下沿x轴的扫描,如坐标y1~yn均属于[ymin,ymax],则根据y轴步进单元的控制可以实现坐标y1~yn所对应的x轴的扫描同时进行。
优选地,第二方向为x轴正向,所述第三方向为x轴负向。
例如,x轴扫描单元的数量为4个。
数据接收单元(ragmentrasterizingprocess),连接x轴扫描单元,用于获取x轴扫描单元输出的有效坐标数据,并对有效坐标数据进行光栅化,数据接收单元对每个x轴扫描单元的执行顺序没有要求。
本发明实施例提供的面向gpu的三角形光栅化扫描结构,集成有初始化单元、y轴步进单元和x轴扫描单元,实现了gpu的三角形光栅化扫描,从而实现了从系统架构文档到rtl的转换。
y轴步进单元实现了gpu的三角形的光栅化步进,同时能够为x轴扫描单元分配资源,用于第二方向扫描单元和第三方向扫描单元控制检测元素沿x轴的扫描,满足了gpu三角形光栅化扫描的要求,同时提高了gpu三角形光栅化扫描的性能,加快了三角形光栅化扫描的速度。
需要说明的是,本实施例将第一方向设置为y轴正向,同样的按照本实施例的结构将第一方向设置为y轴负向,也可以实现gpu三角形光栅化扫描结构,再次不在赘述,熟悉本领域技术的人员显然可以容易地想到将第一方向设置为y轴负向,从而实现gpu三角形光栅化扫描结构,而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,不脱离本发明范畴所做出的改进和修改都应该在本发明的保护范围之内。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。