一种纹理S3TC压缩解压单元结构的制作方法

文档序号:14250656阅读:200来源:国知局
一种纹理S3TC压缩解压单元结构的制作方法

本发明属于图形处理器设计领域,涉及一种纹理s3tc压缩解压单元结构。



背景技术:

图形处理器(gpu)是进行图形绘制、图像及视频处理和显示的关键部件,普遍存在于各类需对窗口系统、图形界面、游戏场景、图像应用和视频播放等进行加速的系统之中。纹理是计算机图形领域用于增加合成场景真实性的一项重要技术,在重现真实世界复杂的视觉效果方面具有举足轻重的作用。

真实、生动场景的实时模拟需要快速访问大量的高质量细节纹理,这对存储器容量、带宽提出了极高的要求,然而实际情况却是,因存储的限制,应用开发者不得不较少使用,且使用细节较少的纹理进行映射。为解决这一问题,研究人员提出了纹理压缩技术。纹理压缩允许纹理占用较少的存储,或在不额外增加存储的情况下,能够使用具有更多细节的高质量纹理进行渲染;此外,纹理压缩还可以降低带宽需求和总线带宽的占用。

s3tc(s3texturecompression)最初由s3公司开发,后纳入microsoftdirectx之中,以dxt为大家所熟知,该算法因极为高效而被应用到多种图形加速器中,如savage2000、voodoo5/6系列、atiragepro等。该算法的原理为:将纹理图像划分为4*4的纹素块(tile),每个tile被压缩为固定大小的块;编码时以4*4的tile内的每个点作为基色color0和color1进行编码遍历,选择方差最小的参考值的索引作为该纹素的编码,并对纹素和参考值的方差进行累积;并选择使整个tile的方差累积最小的基色作为最终基色,该基色下各纹素的编码作为tile中纹素的最终编码;压缩后的数据包括两部分:两个基色数据(color0和color1)、16个索引数据(每个索引2bit)。s3tc纹理压缩原理如图1所示。对于常用的24bits真彩图像,其压缩比可达到6:1;对于16bits的伪真彩图像,其压缩比可达到4:1。

目前,我国gpu研制能力薄弱,各领域图形加速大量采用国外进口商用芯片。出于国家安全、商业利益等原因,商用gpu的底层资料(如内部微架构、核心设计等)向来不曾公开,导致在使用时商用gpu的功能、性能无法充分发挥,可移植性较差;此外,在军用领域,国外商用gpu在安全性、可靠性、保障性等方面存在隐患,难以满足军事应用的自主保障需求。

上述问题严重制约了我国各种图形加速系统的独立研制和自主发展,研制具有自主知识产权的gpu芯片迫在眉睫,而纹理s3tc压缩解压单元作为gpu中纹理贴图单元和图像处理单元的关键部件,适合硬件实现的结构国内尚未见有公开报导,对其设计技术进行研究和突破已刻不容缓。



技术实现要素:

本发明的目的是:提供一种可用于图形处理器中进行s3tc纹理压缩解压的纹理s3tc压缩解压单元结构。

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

一种纹理s3tc压缩解压单元结构,包括一个纹理s3tc压缩单元601,还包括一个纹理s3tc解压单元602;所述纹理s3tc压缩单元601具有与外部的输入通路a,用于从外部接收按tile顺序排列的非压缩像素数据;所述纹理s3tc压缩单元601具有与外部的输出通路b,用于向外部输出按tile整体压缩后的像素数据;所述纹理s3tc解压单元602具有与外部的输入通路c,用于从外部接收按tile整体压缩的像素数据;所述纹理s3tc解压单元2具有与外部的输出通路d,用于向外部输出解压后按tile顺序排列的非压缩像素数据。

所述纹理s3tc压缩单元601包括一个tile缓存单元201、一个基色选取单元202、一个像素读取单元203、多个基色编码单元204、一个最优编码替换单元205组成;所述tile缓存单元201用于缓存从外部输入的tile顺序的非压缩像素数据;所述基色选取单元202用于依据tile缓存单元201中的像素选取一组基色,产生对应的参考值,并开始一轮基色编码;所述像素读取单元203用于每轮基色编码时,从tile缓存单元201读出依次读出多个像素数据,直到16个像素数据读完;基色编码单元204用于基于基色选取单元202产生的基色,对像素读取单元203送入的多个像素进行基色编码、计算各像素和参考值之间的方差的累加值,并记录当前基色、tile中各像素的编码;最优编码替换单元205用于对不同基色下的方差的总和delt值进行比较,依据比较结果记录最优的tile基色、和各像素编码,并在tile的压缩完成后向外部输出tile的压缩数据;

所述tile缓存单元201具有外部输入接口,用于从外部接收按tile顺序排列的非压缩像素数据;所述tile缓存单元201与所述基色选取单元202相连,用于基色选取单元202从tile缓存单元201中读取作为基色的像素数据;所述tile缓存单元201与所述像素读取单元203相连,用于像素读取单元203从tile缓存中读取进行编码的像素数据;所述基色选取单元202与多个所述基色编码单元204相连,用于为基色编码单元204提供各自的基色;所述像素读取单元203与多个所述基色编码单元204相连,用于为基色编码单元204提供待编码的多个像素;所述基色编码单元204具有到所述最优编码替换单元205之间的连接,用于传输基色编码单元204产生的方差累加和,以及产生的tile的当前基色和编码;最优编码替换单元205具有与外部的输出接口,用于向外部输出当前tile压缩完成后的像素数据;

所述纹理s3tc压缩单元601的工作流程为:从外部接收一个tile的非压缩数据,并写入所述tile缓存单元201;基色选取单元202依据tile缓存单元201中的数据选取一组基色;像素读取单元203从tile缓存单元201读取多个像素;基色编码单元204对所读取的像素进行基色编码;对该基色下16个像素均已编码进行判定:如果否,则像素读取单元203从tile缓存单元201读取多个像素,并继续进行基色编码;如果是,则由最优编码替换单元205对当前方差和delt小于最优delt进行判定:如果是,则由最优编码替换单元205将当前方差和delt作为最优delt,并将当前tile编码作为最优编码;如果否,最优编码替换单元205保持最优delt和最优编码保持不变;接着,由基色选取单元202对所有基色均已进行基色编码进行判定:如果否,则由基色选取单元202选取一组基色,并对tile中的像素继续进行基色编码;如果是,则由tile缓存单元201判定是否一副纹理中所有tile均已压缩:如果否,则由tile缓存单元201将下一个tile的非压缩数据写入缓存,并继续对该tile进行基色编码;如果是,则纹理图像的压缩过程结束。

本发明的有益效果是:

一、本发明提供的纹理s3tc压缩单元可完成s3tc纹理的压缩功能,代价较小;

二、本发明提供的纹理s3tc压缩单元实现简便、可扩展性强,用户可根据自己的需求在性能、代价之间进行折衷;

三、本发明提供的纹理s3tc解压单元可完成s3tc纹理的解压功能,实现简便,性能较好;

四、本发明提供的纹理s3tc压缩解压单元可完成s3tc纹理的压缩和解压功能;

五、本发明提供了一种纹理s3tc压缩解压单元的设计结构,可用于自主图形处理器芯片的研制。

附图说明

图1是s3tc纹理压缩原理示意图;

图2是纹理s3tc压缩单元的总体框图;

图3是基色编码单元的详细框图;

图4是像素编码单元的详细框图;

图5是纹理s3tc压缩单元的工作流程示意图;

图6是纹理s3tc压缩解压单元的总体框图;

图7是纹理s3tc解压单元的详细框图;

图8是纹理s3tc解压单元的工作流程示意图;

图9是纹理s3tc压缩单元的一个实施例结构图。

具体实施方式

下面结合附图和具体实施例,对本发明的技术方案进行清楚、完整地表述。显然,所表述的实施例仅是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提所获得的所有其他实施例,都属于本发明的保护范围。

参见图6,本发明一种纹理s3tc压缩解压单元结构,包括一个纹理s3tc压缩单元601,还包括一个纹理s3tc解压单元602;所述纹理s3tc压缩单元601具有与外部的输入通路a,用于从外部接收按tile顺序排列的非压缩像素数据;所述纹理s3tc压缩单元601具有与外部的输出通路b,用于向外部输出按tile整体压缩后的像素数据;所述纹理s3tc解压单元602具有与外部的输入通路c,用于从外部接收按tile整体压缩的像素数据;所述纹理s3tc解压单元2具有与外部的输出通路d,用于向外部输出解压后按tile顺序排列的非压缩像素数据。

参见图2,所述纹理s3tc压缩单元结构601,包括一个tile缓存单元201、一个基色选取单元202、一个像素读取单元203、多个基色编码单元204、一个最优编码替换单元205组成。

参见图3,所述基色编码单元204,由多个像素编码单元301、1个“当前基色、编码单元”302、1个累加单元303组成;所述像素编码单元301用于使用当前基色对1个像素进行编码,其数量最多可扩展到16个;所述“当前基色、编码单元”302用于记录tile当前的基色、tile中16个像素的编码;所述累加单元303用于对tile中各像素和参考值之间的方差进行累积。

所述像素编码单元301具有与外部基色选取单元202的输入通路,用于接收基色x的数据(包含4个参考值color00~color11);所述像素编码单元301具有与外部像素读取单元203的输入通路,用于接收像素数据,每个像素编码单元301接收1个像素数据,多个像素编码单元301从外部接收多个像素数据;每个所述像素编码单元301分别与所述累加单元303相连,用于向累加单元303输出像素值和参考值之间的方差;每个所述像素编码单元301分别与所述“当前基色、编码”单元302相连,用于向“当前基色、编码”单元302输出像素的编码;所述累加单元303具有与外部最优编码替换单元205的连接,用于输出tile中所有像素与基色之间的方差和;所述“当前基色、编码”单元302具有与外部最优编码替换单元205的连接,用于输出tile的基色和像素的编码。

参见图4,所述像素编码单元301由4个方差计算单元401和1个比较&编码单元402组成;所述方差计算单元401用于计算输入的像素值y和基色x的各参考值之间多个颜色分量方差的和;所述比较&编码单元402用于对输入的4个方差的值进行比较,选出方差最小的参考值,并将其编码作为当前像素的编码。

所述方差计算单元401具有与外部基色选取单元202的输入通路,用于接收基色x的参考值,4个方差计算单元401分别接收参考值color00、color01、color10、color11;所述方差计算单元401具有与外部像素读取单元203的输入通路,用于接收一个像素y,4个方差计算单元401均接收同一个像素y;4个所述方差计算单元401均具有到所述比较&编码单元402的连接,用于为比较&编码单元402输入像素值和参考值之间的方差;所述比较&编码单元402具有与外部所述累加单元303的连接,用于向累加单元303输出像素值和参考值之间的方差;所述比较&编码单元402具有与外部“当前基色、编码”单元302的连接,用于向“当前基色、编码”单元302输出像素的编码。

参见图5,所述纹理s3tc压缩单元601的工作流程为:从外部接收一个tile的非压缩数据,并写入所述tile缓存单元201;基色选取单元202依据tile缓存单元201中的数据选取一组基色;像素读取单元203从tile缓存单元201读取多个像素;基色编码单元204对所读取的像素进行基色编码;对该基色下16个像素均已编码进行判定:如果否,则像素读取单元203从tile缓存单元201读取多个像素,并继续进行基色编码;如果是,则由最优编码替换单元205对当前方差和delt小于最优delt进行判定:如果是,则由最优编码替换单元205将当前方差和delt作为最优delt,并将当前tile编码作为最优编码;如果否,最优编码替换单元205保持最优delt和最优编码保持不变;接着,由基色选取单元202对所有基色均已进行基色编码进行判定:如果否,则由基色选取单元202选取一组基色,并对tile中的像素继续进行基色编码;如果是,则由tile缓存单元201判定是否一副纹理中所有tile均已压缩:如果否,则由tile缓存单元201将下一个tile的非压缩数据写入缓存,并继续对该tile进行基色编码;如果是,则纹理图像的压缩过程结束。

参见图7,所述纹理s3tc解压单元602,由tile缓存单元701、“基色提取&产生”单元702、编码提取单元703、4:1选择单元704组成;所述tile缓存单元701用于缓存从外部接收的按tile整体压缩的像素数据;所述“基色提取&产生”单元702用于从tile缓存单元701缓存的tile压缩数据中提取该tile压缩数据的基色,并产生参考值color00~color11;编码提取单元703用于从tile缓存单元701缓存的tile压缩数据中依次提取该tile压缩数据的编码;4:1选择单元704用于依据参考值和提取出的压缩数据编码,恢复出非压缩的像素数据。

所述tile缓存单元701具有与外部的数据输入通路,用于从外部接收按tile整体压缩的像素数据;所述tile缓存单元701与所述“基色提取&产生”单元702相连,用于向“基色提取&产生”单元702传输基色数据;所述tile缓存单元701与所述编码提取单元703相连,用于向编码提取单元703传输压缩数据的编码;所述“基色提取&产生”单元702与所述4:1选择单元704相连,用于向4:1选择单元704提供参考值color00~color11;所述编码提取单元703与所述4:1选择单元704相连,用于向4:1选择单元704提供压缩像素的编码;4:1选择单元704具有与外部的数据输出通路,用于向外部输出解压后按tile顺序排列的非压缩像素数据。

参见图8,所述纹理s3tc解压单元602的工作流程为:从外部接收一个tile的压缩数据,并写入所述tile缓存单元701;基色提取&产生单元702从tile缓存单元701中提取该tile的压缩数据的基色,并产生对应的参考值;编码提取单元703从tile缓存单元201提取一个像素编码;4:1选择单元704依据所提取的像素编码对基色的参考值进行选择,并将选定的参考值作为像素解码结果进行输出;由编码提取单元703对该tile的16个编码均已解压进行判定:如果否,则编码提取单元703从tile缓存单元201提取一个像素编码,并继续进行像素编码解压;如果是,则由tile缓存单元701判定一副压缩纹理中所有tile是否均已解压:如果否,则由tile缓存单元701将下一个tile的压缩数据写入缓存,并继续对该tile进行像素编码解压;如果是,则压缩纹理的解压过程结束。

为提升纹理s3tc压缩单元601的编码性能,可在以下两个维度对具体实现进行扩展:

a)不同基色的扩展:修改基色选取单元202,使之每次能选取多种基色并产生该基色对应的参考值(假定每次可选取的基色数量为m);将基色编码单元204的数量扩展到m,每个基色编码单元204负责一种基色下的像素编码;修改最优编码替换单元205,使之每次能对m种基色的方差和和最优delt进行比较,并更新最优delt、“最优基色、编码”的值。该扩展方式下,基色编码单元204的数量最多可扩展到个;

b)同一基色下扩展像素编码单元301的数量:最多可扩到16个像素编码单元301。该种扩展较为方便,需对像素读取单元203进行修改,以使每次读取的像素数量与像素编码单元203的数量(假定为n)匹配;此外,需对累加单元303进行修改,以同时n个方差值进行累加;需对当前基色、编码单元302进行修改,以每次能记录n个像素编码单元203输入的像素编码;

c)上述两个维度的扩展可使用一个,也可两个同时进行。

本发明纹理s3tc压缩解压单元负责s3tc纹理数据的压缩、解压,纹理s3tc压缩解压单元由纹理s3tc压缩单元、纹理s3tc解压单元组成,如图6所示。下面分别详细介绍各单元的具体结构及功能:

a)纹理s3tc压缩单元的内部结构如图9所示,完成非压缩tile数据的压缩。其中:

——tile缓存单元用于缓存待编码的非压缩tile数据;

——基色选取单元用于在4*4的tile中选取2个像素的颜色bcolor0、bcolor1作为基色,并根据bcolor0、bcolor1产生4个参考值参考值color00~color11。其中,color00=bcolor0、color01=bcolor1、color10=(2/3)*bcolor0+(1/3)*bcolor1、color11=(1/3)*bcolor0+(2/3)*bcolor1。对于一个tile的压缩,共需进行次基色选取,每次基色选取,都需要在该基色及参考值下对tile中的非压缩数据进行编码;

——像素读取单元负责读取tile中的16个像素数据,每次读取4个像素的数据。对于一个tile的压缩,共需进行轮16个像素数据的读取;

——像素编码单元计算当前像素的颜色值与参考值的方差,并选取方差最小的参考值的索引作为该像素颜色的压缩编码,得到2位的索引值,并写入“当前基色、编码”单元。像素编码单元由4个方差计算单元和1个比较&编码单元组成。方差计算单元用于计算输入像素的颜色值和参考值之间各个颜色分量方差之和,4个方差计算单元分别计算当前像素和4个参考值的方差;比较&编码单元用于对输入的4个方差的值进行比较,选出方差最小的参考值,并将其编码作为当前像素的编码。

——累加单元负责对不同像素的最小方差进行累加,累加值在选取新的基色时清除,其他时间处于累加、保持状态;

——当前基色、编码单元负责记录当前的基色,以及当前基色下每个像素的编码,其记录值在选取新的基色时清除;

——最优编码替换单元用于存储最优的方差累加和delt,以及最优的基色和像素编码。最优编码替换单元将不同基色下的方差总和和最优的方差累加和delt进行比较,依据比较结果记录最优的累加和delt、tile基色、和各像素编码,并在tile的压缩完成后向外部输出tile的压缩数据。

b)解压单元的内部结构如图7所示,完成压缩tile数据的解压。其中:

——tile缓存单元用于缓存tile的压缩数据;

——基色提取&产生单元负责从tile的压缩数据中提取出基色bcolor0、bcolor1,并依据基色产生参考值color00~color11;

——编码提取单元负责从tile的编码数据中提取出每个像素的编码(2位索引值);

——4:1选择单元负责根据每个像素的编码选择对应的参考值进行输出;

关于非压缩数据的预处理,包括两方面:

——如果非压缩的图像的分辨率不是4的整数倍,则将其扩充到与其分辨率最接近的4的整数倍,例如将5*9的图像扩充到8*12进行压缩。扩充的无效像素使用掩码进行标记,且扩充像素的各颜色分量使用统一的特定值(在此规定为0);

——如果非压缩图像每个像素的分量少于4个,则需要将其补足成4个,但补的分量必须为一个统一的特定值(在此规定为0),不能为随机值,不然补的数据在基色选取时会影响方差的累计,最终影响基色的选取,从而影响到原有分量基色选取的准确性。

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

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