一种OpenGL显示列表调用电路的制作方法

文档序号:14837194发布日期:2018-06-30 12:55阅读:191来源:国知局

本发明属于计算机图形领域,涉及一种对OpenGL的显示列表调用命令处理电路的实现。



背景技术:

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



技术实现要素:

本发明的目的是:

本发明提供一种OpenGL显示列表调用电路,用于从DDR中读取数据,从而对存储在DDR中的显示列表数据进行调用。

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

一种OpenGL显示列表调用电路,包括:预译码读接口1、读缓冲FIFO2、AXI逻辑接口3;

预译码读接口1,对于预译码单元4发送的读请求信号进行检测,如该读请求信号有效,则设置OpenGL显示列表调用电路中读列表状态为有效,从预译码单元4获取列表在DDR中的存储地址及列表字节大小信息,并由此列表字节大小信息确定读DDR时的burst长度;

读缓冲FIFO2,在读列表状态有效时,若pempty指示信号有效,则发送读DDR请求给AXI逻辑接口3;读缓冲FIFO2非空时,预译码读接口1从读缓冲FIFO2中读取缓存的列表数据;

AXI逻辑接口3,按标准AXI接口对DDR进行读访问操作,产生列表数据,和与列表数据相应的字使能,并将字使能和列表数据一同写入到读缓冲FIFO2。

读缓冲FIFO2中FIFO深度为32b,数据宽度为264b,pempty设置为16;数据高8b作为低256b的字使能。

AXI逻辑接口3的读访问操作信息包括1b的读地址有效信号、4b读通道ID、30b读地址、4b的读burst长度;对所述读访问操作信息的读响应则包括1b读通道就绪信号、4b读通道ID、256b的列表数据、1b的数据有效信号和1b的rlast信号。

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

读burst长度的产生方式如下:当读地址的低7位为0时,表明读地址为512字节对齐,此时list_arlen只与列表的长度clist_size有关;若读地址的低7位不为0,则需先读取一段长度为size_burst的数据,将读地址的低7位凑成为0;比较size_burst与clist_size的大小,若读列表的长度大于size_burst,此时list_arlen由size_burst产生;否则仍采用clist_size来产生。

本发明的优点是:本发明提供了一种用于DDR读数据及缓冲的电路实现,用于实现预译码单元4快速高效的从DDR5中读取显示列表数据。

附图说明

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

具体实施方式

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

下面结合附图和具体实施例对本发明的技术方案做进一步详细描述。

一种OpenGL显示列表调用电路,包括:预译码读接口1、读缓冲FIFO2、AXI逻辑接口3;

预译码读接口1,对于预译码单元4发送的读请求信号进行检测,如该读请求信号有效,则设置OpenGL显示列表调用电路中读列表状态为有效,从预译码单元4获取列表在DDR5中的存储地址及列表字节大小信息,并由此列表字节大小信息确定读DDR5时的burst长度;

读缓冲FIFO2,在读列表状态有效时,若pempty指示信号有效,则发送读DDR5请求给AXI逻辑接口3;读缓冲FIFO2非空时,预译码读接口1从读缓冲FIFO2中读取缓存的列表数据;

AXI逻辑接口3,按标准AXI接口对DDR5进行读访问操作,产生列表数据,和与列表数据相应的字使能,并将字使能和列表数据一同写入到读缓冲FIFO2。

读缓冲FIFO2中FIFO深度为32b,数据宽度为264b,pempty设置为16;数据高8b作为低256b的字使能。

AXI逻辑接口3的读访问操作信息包括1b的读地址有效信号、4b读通道ID、30b读地址、4b的读burst长度;对所述读访问操作信息的读响应则包括1b读通道就绪信号、4b读通道ID、256b的列表数据、1b的数据有效信号和1b的rlast信号。

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

读burst长度的产生方式如下:当读地址的低7位为0时,表明读地址为512字节对齐,此时list_arlen只与列表的长度clist_size有关;若读地址的低7位不为0,则需先读取一段长度为size_burst的数据,将读地址的低7位凑成为0;比较size_burst与clist_size的大小,若读列表的长度大于size_burst,此时list_arlen由size_burst产生;否则仍采用clist_size来产生。

实施例

如图1所示,一种用于读取DDR5中显示列表命令数据的电路实现,拥有预译码读接口1、读缓冲FIFO2、AXI逻辑接口3等部分组成。

a)预译码读接口1:收到预译码单元4发出的读请求时,设置读列表状态指示信号有效,此时若读缓冲FIFO2非空,则读缓冲FIFO2中的数据输出到预译码单元4;如果读列表状态有效时接收到读请求,可知预译码单元4中出现了列表嵌套,需产生读FIFO复位信号将读缓冲FIFO2复位;

b)读缓冲FIFO2:读列表状态指示信号有效时,若pempty有效,则向DDR5发起读操作;如果FIFO复位信号有效,则清空读缓冲FIFO2;当读缓冲FIFO2非空时,可以由预译码单元4读出列表数据;

c)根据预译码单元4提供的地址偏移以及列表size的大小clist_size,确定出读地址和读burst长度;从DDR5读得的数据有效时,根据size及写入读缓冲FIFO2的个数,确定出与每个数据相对应的字使能,并将字使能和数据拼接后的264b写入读缓冲FIFO2;

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

读burst长度的产生方式如下:为避免跨DDR5地址边界的问题,读取burst的长度需根据当前的读地址来协助确定。当读地址的低7位为0时,表明读地址为512字节对齐,此时list_arlen只与列表的长度clist_size有关;若读地址的低7位不为0,则需先读取一段长度为size_burst的数据,将读地址的低7位凑成为0;比较size_burst与clist_size的大小,若读列表的长度大于size_burst,此时list_arlen由size_burst产生;否则仍采用clist_size来产生。

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

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