CN104361619A - 一种基于水平线填充的2d图形ip核实现方法 - Google Patents
一种基于水平线填充的2d图形ip核实现方法 Download PDFInfo
- Publication number
- CN104361619A CN104361619A CN201410585077.XA CN201410585077A CN104361619A CN 104361619 A CN104361619 A CN 104361619A CN 201410585077 A CN201410585077 A CN 201410585077A CN 104361619 A CN104361619 A CN 104361619A
- Authority
- CN
- China
- Prior art keywords
- horizontal line
- module
- pel
- fifo
- line
- 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.)
- Pending
Links
Landscapes
- Image Generation (AREA)
Abstract
本发明公开了一种基于水平线填充的2D图形IP核实现方法,应用于2D图形绘制的硬件加速。直线、三角形、椭圆是二维图形中的基本图元,所有复杂场景的二维图形均可由上述基本图元经过有限叠加来完成。只需向该部件的接口发送基本图元的坐标等属性信息,即可高效的完成整个系统的2D图形绘制与显示工作,基于水平线填充的方式能有效提高图形的生成速度。
Description
技术领域
本发明主要涉及图形芯片中2D图形绘制领域,特指一种基于水平线填充的2D图形IP核实现方法。
背景技术
图形加速技术是指利用专门的软件或硬件技术来加速图形在整个系统中的处理,提高整个系统的工作效率。软件加速方法,既包括图形处理算法的不断改进,也包括对软件代码的优化来提高图形系统中显示处理的效率。硬件加速方法,既是通过软件和硬件工作的重新划分,将图形绘制部分的工作交由专门的硬件单元进行实现。通过硬件单元实现图形绘制,将能极大释放系统中处理器的压力,提高图形的生成效率。
发明内容
本发明要解决的问题就在于:针对现有技术存在的技术问题,本发明提出一种结构相对简单、硬件资源消耗不大、执行效率比较高的基于水平线填充的2D图形绘制的实现。
与现有技术相比,本发明的优点就在于:1、逻辑简单:本发明提出的基于水平线填充的2D图形绘制架构简单,比较利于硬件的实现;2、性能优良:本发明提出的2D图形生成架构中,在图元预处理模块采用全流水的方式,因此可以保证图元生成的快速实现;3、使用方便:本发明提出的基于水平线填充的2D图形绘制策略的可重用性较好,满足OPENGL和WINDML规范的2D图形绘制,可以在嵌入式或通用图形芯片中很方便的移植。
附图说明
图1是本发明的2D图形处理IP核结构示意图;
图2 是本发明中顶点处理模块与命令解析模块、顶点FIFO的逻辑关系图。
具体实施方式
如图1所示,为本设计实现的基于水平线扫描方式的二维图形IP核实现结构。由软件经过编译处理后,将图形绘制的命令和图元的属性参数经由本地总线接口传入命令参数FIFO中。该命令参数FIFO为一个异步FIFO,数据输入工作在本地总线时钟下,数据输出工作在绘图时钟下,一边接收图形参数、命令信息,一边将接收的信息送入命令解析模块。命令解析模块依据信息解码的结果,分别配置好绘图参数寄存器,以及确认命令中绘制图元的类型,将各图元的顶点参数进行图形的预处理后,按顺序存入图元顶点FIFO中。各相应二维图形绘制模块从顶点FIFO中得到各自图元顶点信息,依据各图元的绘制算法对外产生图元的水平线信息,并存入绘图FIFO中。水平线填充模块根据获得的水平线信息,计算各条水平线相对于帧存的地址,进而将绘制图形的水平线经由高速缓存和DDR2控制器模块写入帧存。在二维图形的绘制模块中,线段绘制的反走样处理与位图处理则是直接经由高速缓存,将绘制的图形信息与帧存进行读写。
(1)本地总线接口模块
本地总线接口实现对模块内部的读写操作。模块内部实现读写绘图控制寄存器,实现中断申请信号,以及命令参数FIFO读写接口。绘图控制寄存器各状态位包括命令参数FIFO的状态和FIFO的剩余空间、二维IP各模块的忙状态、FIFO产生的中断标志位中断申请信号由两种状况产生。一种情况是,FIFO状态由超过半满到少于半满,或者由满到非满的状态切换产生。用于软件判断是否继续下发命令参数。在该种情况下,除了产生中断申请信号外,还需要置位绘图控制寄存器中相应的中断信号位,由软件读后清除该中断标志位。另一种情况是,由整个核内各子模块的忙闲状态的判断产生。用于软件绘图时,进行帧切换的处理。
(2)命令参数FIFO模块
负责缓存软件发送的命令参数。内部实现深度为1024个字,字宽为32位的双时钟异步FIFO,写接口工作在本地总线时钟,读接口工作在内部绘图时钟。写接口信号包括写时钟、写信号、写数据、满信号、半满信号,已使用字数信号。读接口信号包括读时钟、读信号、读数据、空信号。
(3)命令解析模块
绘图及控制命令按照命令数据包方式组织,命令数据包按照32位字宽的格式组织连续发送。命令数据包有配置参数设置命令和图形绘制命令两种格式。配置参数命令包,包含的数据有图形前景色、背景色、线宽、填充模式、填充图案和裁剪区域参数。绘图命令包,包含的是图元类型命令码、图元顶点以及顶点个数数据。
命令解析模块依据命令参数配置格式,解析出来的数据如果是配置参数命令包,则将相应参数信息统一配置到一个寄存器参数配置区域,相关参数寄存器与后续各相关模块关联;如果为绘图命令包,则根据图元类型的不同,将数据包中一个图元所包含的顶点数据进行组装,在一个时钟节拍内将图元顶点数据发送到顶点预处理模块。图元命令包,分别包括直线段数据包、三角形填充数据包、矩形填充数据包、椭圆填充数据包、椭圆绘制数据包,以及位图处理数据包。本模块处理忙的时候,无法读取命令参数FIFO中的数据。
(4)顶点处理模块及顶点FIFO
图元顶点预处理的目的,是确定所绘制图元是否为一个有效图元,以及根据不同图元绘图算法的需求,进行图元顶点位置调整。该模块划分为直线顶点预处理模块、三角形顶点预处理模块、矩形顶点预处理模块、椭圆绘制预处理模块、椭圆填充预处理模块,各图元的预处理模块采用流水设计,流水线长度已各基本图元中流水线最长的椭圆预处理为基准。顶点FIFO,在图元绘制模块与命令顶点预处理模块之间缓存图元顶点数据,如此在FIFO未满没有打断流水线的情况下,将提高整个绘图IP核的工作效率。顶点FIFO的深度设置为16行,每行代表一个图元数据,每个图元的位宽统一设置为164bits。在FIFO为满的条件下,将发出流水线中断信号,暂停命令解析模块、顶点预处理模块的工作。
(5)绘图模块
整个绘图模块由线段绘制、矩形填充、三角形填充、椭圆填充、椭圆绘制、位图处理几个单独的子模块构成。将顶点FIFO中获得的图元数据进行译码,确定当前需要工作的绘制模块,将图元顶点参数发送至该绘图模块中。当前工作的绘图模块依据绘制算法,生成图元的每条水平线并由绘图FIFO进行水平线的缓存。
(6)直线段绘制模块
依据给定直线的两端点坐标,进行直线的绘制。该模块有非反走样处理的直线段绘制,以及反走样处理的直线段绘制两种模式。对于没有反走样处理的直线段绘制,采用Bresenham算法绘制直线。Bresenham算法的基本思想是通过直线上的当前点以及直线的方位(不是精确的斜率)以步进的方式确定直线上下一点的位置,直到确定完当前扫描的水平线结束,才开始下一条水平线的继续生成。确定了当前水平线的起点和终点位置后,写入水平线FIFO中,并根据直线的宽度参数,进行水平线的扩展并发送至水平线FIFO中。
对于直线的反走样处理,采用多点采样的方式进行处理。该算法的思想,将把线条当作一个斜向矩形,计算该矩形在所经过的各个像素点上所占的面积比,将该面积比作为显示的alpha值,利用每个象素前景色与背景色的融合处理,淡化直线边沿的锯齿现象。按照多点采样的算法,扩展为一定宽度的矩形后,水平逐点扫描象素点,计算线段在该像素的面积占用比,由高速缓存从帧存中读出该象素对应位置的背景颜色,再经由高速缓存回传到直线绘制模块中的象素融合模块进行融合处理,融合结束后,重新写回高速缓存,由高速缓存写入帧存中。由于该算法中进行的矩形扩展和面积比计算需要进行小数的运算,如果采用浮点运算的方式处理,将需要占用大量的硬件资源,而进行的象素点扫描是水平直线的方式进行的,且均是对于整数坐标上的象素点进行采样,因此,本设计中对于反走样处理过程中的算术运算,采用的是16位精度定点数的运算,并且在扩展出矩形后,将顶点转化为了包含两位小数的定点数。这样的处理,在累积精度损失不大的情况下,减少了大量硬件资源的消耗。
(7)三角形填充模块
将输入的三个顶点的坐标按照屏幕坐标,从下到上的顺序进行重新排列,依次确定出一个主顶点和两个次顶点。以主顶点和两个次顶点为参照点,从下到上的顺序同时驱动两个线段Bresenham算法控制单元,以步进的方式进行水平线生成,确定三角形每条水平扫描线的起点、终点坐标。在绘制三角形内部水平扫描线时,出于邻接三角形相互衔接的需要,每一条扫描线的最右端一个点不能绘制。在软件的协助下,可以完成一般多边形的填充。
(8)矩形填充模块
由输入的左上、右下两个顶点坐标确定矩形四个顶点的坐标,以从下到上的顺序进行水平线扫描,得到每条水平线的起点和终点坐标。每生成完一条水平线后,既交由水平填充模块进行处理,直到整个矩形填充结束。该模块的加入,可以快速完成屏幕的清屏操作。
(9)椭圆绘制与椭圆填充模块
作为2D图形加速引擎的一个基本功能单元,椭圆硬件加速单元需要实现的功能有:绘制完整的椭圆、绘制椭圆弧、支持椭圆区域填充(包括实心填充、图样填充)、支持椭圆弧线宽及虚实线设置等功能。椭圆坐标参数有:矩形边界左上角、右下坐标及椭圆弧起始点、终止点坐标。产生的目标椭圆弧内切于矩形上下左右边界,并由起始点逆时针走向终止点,若起止点坐标相同则产生一个完整的椭圆;否则则为一段椭圆弧。
设计采用整数型中点椭圆生成算法,由状态机控制算法的硬件实现。该算法是在水平方向或垂直方向递进,产生的点组成一段段的水平线、对角线或者垂直线。对于对角线段和垂直线段可以看成长度为1的水平线段。
(10)位图处理模块
位图处理模块根据寄存器参数模块设置的位图处理参数,对帧存中相应的数据进行操作和更新,再写回到帧存中。本文设计的位图处理模块,提供了快速的带光栅操作和透明的块拷贝,图案填充,颜色扩展操作。操作流程为: 对从顶点FIFO中获得的图元数据解析,得到目的地址数据;经过DDR2控制器取得源数据;根据参数寄存器中配置的位图处理寄存器,进行相应的数据处理操作,如光栅操作、颜色扩展等;处理完毕的数据写回到目的地址上。整个位图处理引擎内部分为了接口单元、数据FIFO、地址产生单元、数据处理单元和字节对齐单元几个部分。
(11)绘图FIFO模块
为一个同步FIFO,缓存产生各图元的水平线,以便于绘图模块内水平线的产生以及后面的水平填充模块可以流水作业。依据绘图模块提供的输出水平线有效信号,接收2D各绘图功能模块计算生成的水平线起始、终止点坐标信息,同时加入在水平线中加入图元的颜色属性。依据FIFO内存储空间的信息,对水平填充模块产生读FIFO的请求信号,控制水平填充模块从绘图FIFO中获取水平线信息。在本FIFO模块即将满的情况下,产生FIFO满信号,提示绘图模块暂时中断水平线信息的传递。当前当FIFO满信号撤消时,绘图模块继续传递水平线信息。
(12)水平填充模块
本模块的功能是将绘图FIFO中得到的水平线数据与参数寄存器中的裁剪窗口参数进行比较,保留水平线中存在于裁剪区域内的象素点,根据水平线的起点、终点坐标计算起、止象素点在SDRAM帧存的物理地址,并将水平线上象素点的前景色参数写入到高速缓存中。高速缓存按突发传输的方式将数据写入帧存(突发传输数据的大小由高速缓存依据Cache Line的容量和实际写入这行的数据量来确定)。
(13)图形高速缓存
2D加速引擎与DDR控制器要进行频繁的、大量的数据交互,其中有些数据的长度较小。这种对DDR存储器少量而频繁的读/写操作效率要远远低于大长度的突发读/写操作的效率。此外,为了保证显示控制器以60Hz的屏幕刷新频率访问帧存的带宽需求,所以要尽力避免2D加速引擎对DDR的零碎访问而导致的存储器操作瓶颈。因此,在2D加速引擎和DDR之间插入高速的图形数据Cache模块。图形Cache控制系统为2D加速引擎提供了一个近似透明的DDR访问机制,并且将其对DDR的少量频繁的访问变为较大长度的突发操作,这样可以有效地提高访问效率及对DDR存储带宽的利用率。
图形高速缓存Cache采用读、写Cache分开设计的方法,读Cache负责缓存绘图模块所需要的位图、直线反走样所需颜色数据等相关信息;写Cache负责缓存各绘图子模块处理完成后要写到帧存的图形数据。通过Cache高速缓存,可以大大提高图形处理模块对DDR帧存的读写速度。读、写Cache容量均设置为64*64个像素大小,即16KB;每个Cache行设为64个像素大小,即256Byte,共64行。为了简化Cache与DDR控制器之间的操作,读、写Cache和DDR帧存之间采用直接映射的地址映射方式。
(14)DDR2控制器模块
DDR2控制模块负责控制帧存与Cache高速缓存之间的数据传输,及时将图形处理模块对帧存的更新信息写入帧存或者将图形处理模块所需要的数据写入高速缓存。本模块为一个支持双通道仲裁读写的DDR2控制器接口模块,分别为图形读入通道和图形输出通道。
Claims (2)
1.一种基于水平线填充的2D图形IP核实现方法,其特征在于:将直线、三角形、矩形、椭圆几个基本图元的生成由象素点绘制,转变为将各图元分解成每条水平线,由水平线的起点和终点信息完成水平线的填充;水平线填充的过程,采用全流水的形式,加快图元生成的效率:(1)、将图形绘制的命令和图元的属性参数经由本地总线接口传入异步逻辑的命令参数FIFO中;(2)、经命令解析模块解码,配置好绘图参数寄存器组(主要放置图元的裁剪窗口、线宽、虚实线、前景色、背景色、填充图案、帧存地址定位相关参数),确认绘制图元的类型,将各图元顶点进行图形绘制的预处理(预先确定所绘制图元是否为一个有效图元,提高绘图资源利用率,进行图元顶点位置调整),按顺序存入图元顶点FIFO中;(3)、图形绘制模块从顶点FIFO中得到各自图元顶点信息,依据各图元绘制算法对外产生图元的水平线;(4)、水平线填充模块根据获得的水平线信息,计算各条水平线在帧存中的地址,进而将绘制图形的水平线经由高速缓存和DDR2控制器模块写入帧存;(5)、直线段的反走样处理(多点采样算法实现)和位图处理,需要从帧存中获取数据进行像素处理,直接经由高速缓存,将绘制的图形信息与帧存进行数据交互。
2.在2D加速引擎和DDR之间插入高速的图形数据Cache模块,尽力避免2D加速引擎对DDR的零碎访问而导致的存储器操作瓶颈,图形Cache控制系统将2D加速引擎对DDR的少量频繁的访问变为较大长度的突发操作,有效提高访问效率及对DDR存储带宽的利用率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410585077.XA CN104361619A (zh) | 2014-10-28 | 2014-10-28 | 一种基于水平线填充的2d图形ip核实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410585077.XA CN104361619A (zh) | 2014-10-28 | 2014-10-28 | 一种基于水平线填充的2d图形ip核实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104361619A true CN104361619A (zh) | 2015-02-18 |
Family
ID=52528877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410585077.XA Pending CN104361619A (zh) | 2014-10-28 | 2014-10-28 | 一种基于水平线填充的2d图形ip核实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104361619A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107833227A (zh) * | 2017-10-31 | 2018-03-23 | 苏州乐米信息科技股份有限公司 | 一种圆形裁剪区域的绘制方法及其系统 |
CN108510565A (zh) * | 2018-03-27 | 2018-09-07 | 长沙景嘉微电子股份有限公司 | Gpu中一种实现线段转三角形绘制的装置与方法 |
CN111951349A (zh) * | 2019-05-17 | 2020-11-17 | 珠海金山办公软件有限公司 | 一种图形顶点类型的调整方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100045683A1 (en) * | 2008-04-21 | 2010-02-25 | Young Ouk Kim | Hardware type vector graphics accelerator |
CN101976432A (zh) * | 2010-11-22 | 2011-02-16 | 长沙景嘉微电子有限公司 | 图形芯片设计中分级裁剪策略的实现 |
CN102004832A (zh) * | 2010-11-22 | 2011-04-06 | 长沙景嘉微电子有限公司 | 基于水平线扫描的三角形光栅化的实现 |
-
2014
- 2014-10-28 CN CN201410585077.XA patent/CN104361619A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100045683A1 (en) * | 2008-04-21 | 2010-02-25 | Young Ouk Kim | Hardware type vector graphics accelerator |
CN101976432A (zh) * | 2010-11-22 | 2011-02-16 | 长沙景嘉微电子有限公司 | 图形芯片设计中分级裁剪策略的实现 |
CN102004832A (zh) * | 2010-11-22 | 2011-04-06 | 长沙景嘉微电子有限公司 | 基于水平线扫描的三角形光栅化的实现 |
Non-Patent Citations (1)
Title |
---|
周毅: "二维图形加速引擎设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107833227A (zh) * | 2017-10-31 | 2018-03-23 | 苏州乐米信息科技股份有限公司 | 一种圆形裁剪区域的绘制方法及其系统 |
CN108510565A (zh) * | 2018-03-27 | 2018-09-07 | 长沙景嘉微电子股份有限公司 | Gpu中一种实现线段转三角形绘制的装置与方法 |
CN111951349A (zh) * | 2019-05-17 | 2020-11-17 | 珠海金山办公软件有限公司 | 一种图形顶点类型的调整方法、装置及电子设备 |
CN111951349B (zh) * | 2019-05-17 | 2024-03-22 | 珠海金山办公软件有限公司 | 一种图形顶点类型的调整方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9916674B2 (en) | Baking path rendering objects into compact and efficient memory representations | |
CN105630441B (zh) | 一种基于统一染色技术的gpu系统 | |
CN111133475B (zh) | 用于渲染图形对象的装置和方法 | |
JP5303787B2 (ja) | 単一パステセレーション | |
US8339409B2 (en) | Tile-based graphics system and method of operation of such a system | |
CN110032395B (zh) | 用于提高资源利用率的统一寄存器文件 | |
CN107038742B (zh) | 屏幕空间管线中的多通道渲染 | |
US20170053375A1 (en) | Controlling multi-pass rendering sequences in a cache tiling architecture | |
CN103026402B (zh) | 显示压缩超级切片图像 | |
US9818170B2 (en) | Processing unaligned block transfer operations | |
TWI645371B (zh) | 在上游著色器內設定下游著色狀態 | |
US8542247B1 (en) | Cull before vertex attribute fetch and vertex lighting | |
CN110544290A (zh) | 数据渲染方法及装置 | |
US8395619B1 (en) | System and method for transferring pre-computed Z-values between GPUs | |
KR20150099781A (ko) | 그래픽 프로세싱 유닛 기반 메모리 전송 동작들을 수행하는 다중모드 메모리 액세스 기법들 | |
CN103886547A (zh) | 用于存储共享顶点的技术 | |
KR102278021B1 (ko) | 이미지 프로세서 런타임 효율성을 개선하기 위한 프로그램 코드 변환 | |
CN103886538A (zh) | 用于存储共享顶点的技术 | |
CN103871019A (zh) | 优化三角形拓扑用于路径渲染 | |
CN110084738B (zh) | 在扩展的图形处理管线中表示和处理几何形状的技术 | |
JPH08297737A (ja) | 任意図形クリッピング方法および装置 | |
CN104361619A (zh) | 一种基于水平线填充的2d图形ip核实现方法 | |
JP2006235839A (ja) | 画像処理装置および画像処理方法 | |
US11631212B2 (en) | Methods and apparatus for efficient multi-view rasterization | |
US7490208B1 (en) | Architecture for compact multi-ported register file |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150218 |