一种OpenGL新建显示列表电路的制作方法

文档序号:14266539阅读:334来源:国知局
一种OpenGL新建显示列表电路的制作方法

本发明属于计算机图形领域,涉及一种对opengl的新建显示列表命令数据存储电路的实现。



背景技术:

在计算机图形领域中,显示列表是为了解决不必要的重复渲染问题,从命令缓冲区中取出一块预先计算好的数据,它们负责执行一些重复性的任务,例如绘制圆环面,这块数据以后可以随时复制回命令缓冲区,从而节省创建这块数据所需的大量函数调用和编译开销。在新建显示列表时,因为预译码单元处理图形命令是顺序执行,只能一条一条进行,为了避免对ddr总线进行频繁的读访问,在预译码和ddr访问仲裁之间增加了这个新建显示列表电路。



技术实现要素:

本发明的目的是:

本发明提供一种opengl新建显示列表电路,用于将列表命令数据写入到ddr中的电路,从而实现新建列表这一操作过程。

本发明的技术解决方案是:

一种opengl新建显示列表电路,包括:预译码写接口1、写数据拼接2、写缓冲fifo3、axi逻辑接口4;

预译码写接口1,对于预译码单元5发送的新建列表使能信号进行检测,当检测到新建列表使能信号有效时,设置opengl新建显示列表电路中新建列表状态有效;从预译码单元5获取新建列表在ddr6中的列表数据以及字使能信息,将列表数据以及字使能信息发送给写数据拼接2;

写数据拼接2,将接收到的列表数据以及字使能信息组装为264b的fifo写数据,当264b数据组装完毕或者预译码单元5译码到结束列表的命令,则将组装的数据写入到写缓冲fifo3;

写缓冲fifo3,在新建列表状态有效时,若pfull指示信号有效或者预译码单元5译码到结束列表的命令,则将写缓冲fifo3中的缓冲数据发送给axi逻辑接口4;

axi逻辑接口4,将来自写缓冲fifo3的缓冲数据按照axi标准接口写入到ddr6中。

写缓冲fifo3的fifo深度为32b,数据宽度为264b,pfull的大小设置为16;数据的高8b作为低256b的字使能。

axi逻辑接口4将组装的数据写入ddr6中的过程包括:

首先axi逻辑接口向ddr6发送1b的写地址有效信号、4b的写通道id、30b的写地址信息、4b的写burst长度,等待收到ddr6回复的1b写通道就绪信号响应后,即可发起一个burst长度的数据传输,将1b的写有效信号、8b的写数据字使能、256b的列表数据以及1b的写末尾信号发送给ddr6,ddr6接收后回复1b的写就绪信号,完成一次传输。

写地址信息产生的方法如下:首个读地址由“基地址”+“预译码单元发送的地址偏移”产生,其后的地址根据上一次写入ddr6的burst长度进行更新。

写burst长度的产生方式如下:如果是pfull发起的写ddr请求,则burst长度为4'b1111;如果发送到显示列表的末尾,则burst长度为写缓冲fifo3中余下的数据个数。

将接收到的128b数据以及对应的4b字使能组装为264b的fifo写数据的方法如下:当收到的nlist_wr_wden有效时,将其依次放在wr_data_tmp的空字段上,并同时设置相应的wr_data_wden为1;当8个字的使能全为1,或者当前命令为列表中的最后一条命令时,将字使能和数据一同写入写缓冲fifo3。

本发明的优点是:本发明提供了一种用于ddr写数据及缓冲的电路实现,用于实现预译码单元快速高效的将显示列表数据写入到ddr中。

附图说明

图1为本发明的方法模块图。

图2为本发明写数据拼接的示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实例,对本发明作进一步详细说明。应当理解,此处所描述的具体实例仅仅用以解释本发明,并不用于限定本发明。

一种opengl新建显示列表电路,包括:预译码写接口1、写数据拼接2、写缓冲fifo3、axi逻辑接口4;

预译码写接口1,对于预译码单元5发送的新建列表使能信号进行检测,当检测到新建列表使能信号有效时,设置opengl新建显示列表电路中新建列表状态有效;从预译码单元5获取新建列表在ddr6中的列表数据以及字使能信息,将列表数据以及字使能信息发送给写数据拼接2;

写数据拼接2,将接收到的列表数据以及字使能信息组装为264b的fifo写数据,当264b数据组装完毕或者预译码单元5译码到结束列表的命令,则将组装的数据写入到写缓冲fifo3;

写缓冲fifo3,在新建列表状态有效时,若pfull指示信号有效或者预译码单元5译码到结束列表的命令,则将写缓冲fifo3中的缓冲数据发送给axi逻辑接口4;

axi逻辑接口4,将来自写缓冲fifo3的缓冲数据按照axi标准接口写入到ddr6中。

写缓冲fifo3的fifo深度为32b,数据宽度为264b,pfull的大小设置为16;数据的高8b作为低256b的字使能。

axi逻辑接口4将组装的数据写入ddr6中的过程包括:

首先axi逻辑接口向ddr6发送1b的写地址有效信号、4b的写通道id、30b的写地址信息、4b的写burst长度,等待收到ddr6回复的1b写通道就绪信号响应后,即可发起一个burst长度的数据传输,将1b的写有效信号、8b的写数据字使能、256b的列表数据以及1b的写末尾信号发送给ddr6,ddr6接收后回复1b的写就绪信号,完成一次传输。

写地址信息产生的方法如下:首个读地址由“基地址”+“预译码单元发送的地址偏移”产生,其后的地址根据上一次写入ddr6的burst长度进行更新。

写burst长度的产生方式如下:如果是pfull发起的写ddr请求,则burst长度为4'b1111;如果发送到显示列表的末尾,则burst长度为写缓冲fifo3中余下的数据个数。

将接收到的128b数据以及对应的4b字使能组装为264b的fifo写数据的方法如下:当收到的nlist_wr_wden有效时,将其依次放在wr_data_tmp的空字段上,并同时设置相应的wr_data_wden为1;当8个字的使能全为1,或者当前命令为列表中的最后一条命令时,将字使能和数据一同写入写缓冲fifo3。

实施例

如图1所示,一种用于新建显示列表命令写入ddr6中的电路实现,拥有预译码写接口1、写数据拼接2、写缓冲fifo3、axi逻辑接口4等部分组成。

a)预译码写接口1:检测到预译码单元的新建列表使能时,设置写列表状态指示信号有效,并在数据有效指示data_valid为0时,将写列表数据更新到nlist_data;

b)写数据拼接2:因为预译码中处理的数据位宽是128b,而axi总线ddr写接口数据位宽为256b,所以要将位宽匹配需要增加一个数据拼接的过程,不仅可以将128b数据拼接成256b,同时还可以去除无效的字段。数据拼接按照紧密排列的原则依次进行,拼接完成后即写入到写缓冲fifo;

c)写缓冲fifo3:写列表状态指示信号有效时,若pfull有效,则向ddr6发起写操作,或者写列表状态无效且写缓冲fifo3非空,也需发起写操作将写缓冲fifo3中数据写入到ddr6中;

d)axi逻辑接口4:发起的写请求获得ddr6响应后,即可发起一个burst长度的数据传输,将写缓冲fifo3中数据以256b的data和8b的strb形式存入到ddr6。

写地址产生的方法如下:首个读地址由“基地址”+“预译码单元发送的地址偏移”产生,其后的地址根据每次写入的size长度进行更新;

写burst长度的产生方式如下:为避免跨ddr地址边界的问题,已经对写地址做了512字节对齐的规定,所以写burst长度只需根据数据的个数来确定即可。如果是pfull发起的写ddr请求,则burst长度为4'b1111;如果发送到显示列表的末尾,则burst长度由缓冲fifo中余下的数据个数确定。

写数据拼接的方法如下:命令拼接的过程如下图2所示,当收到的nlist_wr_wden有效时,将其依次放在wr_data_tmp的空字段上,并同时设置相应的wr_data_wden为1;当8个字的使能全为1,或者当前命令为列表中的最后一条命令时,将字使能和数据一同写入fifo_wr。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细地说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1