纹理处理器的制作方法

文档序号:6438286阅读:153来源:国知局
专利名称:纹理处理器的制作方法
技术领域
本发明涉及在计算机图形图像领域和其它领域中使用的用来进行双线性过滤的纹理处理器。
背景技术
在最近几年,许多游戏机和汽车导航系统使用纹理绘图,借助于该纹理绘图对物体绘制图案,以得到真实图像。在纹理绘图中,计算与构成物体的每个象素的(X,Y)坐标相对应的纹理坐标(U,V),从而根据纹理坐标(U,V)由在两维栅格上的纹理取出和再现纹理数据。
纹理坐标(U,V)具有小数,并因而该坐标不会总是与在纹理的两维栅格上的坐标重合。用来获得纹理数据的方法的例子包括点抽样,其中纹理坐标(U,V)被四舍五入成整数,并且取出在两维栅格上的纹理数据;及双线性过滤,其中使用纹理坐标(U,V)的小数计算在四个相邻点处的纹理数据的平均值。即使纹理坐标(U,V)不能被四舍五入成整数,双线性过滤也允许纹理数据的内插。因而,即使在改变物体形状或旋转物体的情况下,双线性过滤通常也比点抽样提供更高的图像质量。
图19表示双线性过滤的概念。在图19中,T是由纹理坐标(U,V)指示的位置,p是U的小数,q是V的小数,0≤p<1及0≤q<1。T0,T1,T2和T3是在两维栅格上与T最近的各自四个点处的纹理数据。假定T的整数部分是(u,v),T0的坐标是(u,v),T1的坐标是(u+1,v),T2的坐标是(u,v+1),及T3的坐标是(u+1,v+1)。
双线性过滤使用如下公式T=(1-p)×(1-q)×T0+p×(1-q)×T1+(1-p)×q×T2+p×q×T3使用该公式计算T0、T1、T2及T3的RGB值。
如上所述,双线性过滤需要四个点处的纹理数据,以便创建一个纹理。为了用LSI进行纹理绘图,纹理一次被存储在一个内部存储器中,并且然后被参考。在双线性过滤的情况下,为了创建一个纹理必须参考内部存储器四次。因此,处理速度很慢。
为了以高速进行双线性过滤,提出了一种技术,其中一个纹理被划分成在两维栅格上分别具有坐标(2m,2n)、(2m+1,2n)、(2m,2n+1)及(2m+1,2n+1)的数据组(其中m和n是整数),并且所划分的纹理数据组被存储在各自四个存储器中,从而在双线性过滤期间同时从四个存储器读出这些纹理数据组(例如日本未审查专利出版物(Kokai)No.11-154237)。

发明内容
在上述常规技术中,必须把纹理数据划分成四个数据组,从而这些所划分的数据组被分别存储在相关存储器中。因此,在其中纹理数据的多个象素能同时经一条数据总线被传输到存储器的情况下,例如出现不能以最大速度进行传输的问题。
例如,如果一个纹理绘图装置处理16位(/象素)纹理数据和32位(/象素)纹理数据,则在内部存储器中的每个地址中存储的构成数据的位数通常是32。如果用来把纹理数据传输到内部存储器的数据总线是用于32位,则一次传输16位纹理数据的两个象素。然而,在常规技术中,纹理数据的这两个象素需要存储在不同的存储器中。因此,读/修改/写处理也被包括在存储器中。结果,纹理数据不能以最大速度传输,并且数据总线的传输速度很低。
另外,由于在常规技术中在双线性过滤期间总是从四个存储器读出纹理数据,所以在存储器部分中出现高功率消耗的另一个问题。
因此本发明的一个目的在于,能够实现纹理数据到纹理存储器的高速传输,从而在用来进行双线性过滤的纹理处理器中以高速进行双线性过滤。
为了解决上述问题,根据本发明,一种纹理处理器包括第一、第二、第三及第四纹理存储器,用来存储纹理数据;一个存储器写部分,用来控制在第一至第四纹理存储器中的供给纹理数据的写;一个存储器读部分,用来控制从第一至第四纹理存储器靠近纹理坐标的四个点处的纹理数据的读;及一个双线性过滤计算部分,用来使用由存储器读部分从第一至第四纹理存储器读出的四个点处的纹理数据,进行双线性过滤计算。在本纹理处理器中,在单次写操作中,存储器写部分按能够一次传输且能写在一个地址中的数量,把纹理数据共同写在第一至第四纹理存储器之一中,并且如果要写的纹理数据的V坐标是偶数,则纹理数据顺序写在第一、第二、第三及第四纹理存储器中,而如果V坐标是奇数,则纹理数据顺序写在第三、第四、第一及第二纹理存储器中。
在本处理器中,能够一次传输且能写在一个地址中的数量的纹理数据被写在第一至第四纹理存储器之一中。因而,消除了在纹理数据传输期间的不必要处理,并且以通过利用数据总线的传输能力实现的速度写数据。另外,如果纹理数据的V坐标是偶数,则纹理数据顺序写在第一、第二、第三及第四纹理存储器中,而如果V坐标是奇数,则纹理数据顺序写在第三、第四、第一及第二纹理存储器中。因而,其U坐标相同而其V坐标彼此相差“1”的纹理数据组总是被存储在不同的纹理存储器中。这允许在双线性过滤期间一次读出在四个点处的必要纹理数据。
在纹理处理器中,在读数据时,存储器读部分能够关于对其访问是不必要的第一至第四纹理存储器的至少一个,可以使芯片赋能无效。可选择地,对于对其访问是不必要的第一至第四纹理存储器的至少一个,存储器读部分可以停止时钟的输入。于是,降低纹理处理器的功率消耗。
在纹理处理器中,存储器写部分最好接收指示供给的纹理数据的首部V坐标是偶数还是奇数的V线模式,并且按照V线模式确定纹理数据的V坐标是偶数还是奇数。
在纹理处理器中,存储器写部分可以被配置成这样,从而用于数据写的开始地址是可设置的。可选择地,存储器写部分可以把供给的纹理数据移动一个规定的移动值,并且把移动的纹理数据写在第一至第四纹理存储器中。
根据本发明的纹理处理器最好还包括一个存储器数据移动控制部分,用来把第一纹理数据组的、具有最大V坐标的纹理数据移动到一个位置,在该位置第二纹理数据组的、具有最小V坐标的纹理数据被存储在第一至第四纹理存储器中,当第二纹理数据组写在其中存储第一纹理数据组的第一至第四纹理存储器中时,紧跟在第一纹理数据组之后将使用第二纹理数据组。
在纹理处理器中,存储器写部分最好把除第二纹理数据组的、具有最小V坐标的纹理数据之外的纹理数据写在第一纹理数据组的、具有最大V坐标的纹理数据的随后位置,当第二纹理数据组写在其中存储第一纹理数据组的第一至第四纹理存储器中时,紧跟在第一纹理数据组之后将使用第二纹理数据组,并且存储器读部分参照其中存储第一纹理数据组的、具有最大V坐标的纹理数据的位置,读第二纹理数据组的纹理数据。
在纹理处理器中,如果纹理数据由每象素16位组成,则最好传输两个纹理数据,而如果纹理数据由每象素32位组成,则最好传输一个纹理数据。
根据本发明,在其中纹理数据的多个象素经一根数据总线一次传输的情况下,以利用数据总线的传输能力得到的速度把纹理数据写在纹理存储器中。在双线性过滤期间,从纹理存储器一次读出四个必需的纹理数据。结果,以高速传输纹理数据并且也以高速进行双线性过滤。


图1是方块图,表示根据本发明第一和第二实施例的纹理处理器的配置。
图2是表示在图1中表示的存储器写部分的内部配置的图。
图3是用来解释在图2中表示的存储器写部分的操作的表格,并且表示用来确定要写在存储器中的纹理数据的V坐标是偶数还是奇数的要求。
图4是用来解释在图2中表示的存储器写部分的操作的表格,并且表示用来确定写使能的要求。
图5是表示存储器写操作的定时图。
图6是表示在图1中表示的存储器读部分的内部配置的图。
图7是用来解释在图1中表示的存储器读部分的操作的表格,并且表示由一个T0地址发生器产生的存储器地址。
图8是用来解释在图1中表示的存储器读部分的操作的表格,并且表示选择信号。
图9是用来解释在图1中表示的存储器读部分的操作的表格,并且表示芯片赋能。
图10是用来解释纹理选择器的操作的表格,并且表示纹理数据T0至T3。
图11A和11B是表示在第一实施例中纹理数据的写和读操作的概念的表格。
图12是方块图,表示根据本发明第二实施例的存储器写部分的配置。
图13是用来解释图12中表示的存储器写部分的操作的表格,并且表示用来确定在纹理数据组的V坐标以奇数开始的情况下要写在存储器中的纹理数据的V坐标是偶数还是奇数的要求。
图14是方块图,表示根据本发明第三实施例的纹理处理器的配置。
图15表示在划分和传输纹理数据时数据划分例子的概念。
图16是定时图,表示在纹理存储器中数据移动的例子。
图17是方块图,表示根据本发明第四实施例的纹理处理器的配置。
图18A至18C表示其中所划分的纹理数据组按顺序存储在纹理存储器中的状态。
图19表示双线性过滤的概念。
具体实施例方式
以下,将参照附图描述本发明的实施例。
实施例1图1是方块图,表示根据本发明第一实施例的纹理处理器的配置。在图1中,第一、第二、第三及第四纹理存储器1a、1b、1c及1d是用来存储纹理数据的存储器。在该实施例中,存储器的每一个由32位×256字构成。纹理处理器被配置成允许一次传输32位数据。纹理存储器1a至1d在时钟的上升沿接收写使能、地址或数据。
存储器写部分2控制从外部存储装置等装载在纹理存储器1a至1d中的纹理数据的写,并且输出写数据DI、写地址WADa、WADb、WADc及WADd和写使能NWEa、NWEb、NWEc及NWEd。在这个实施例中,供给的纹理数据和写数据DI的每一个由32位组成,并且写地址WADa至WADd的每一个由8位组成。对于写使能NWEa至NWEd,“0”指示写状态,而“1”指示读状态。
一个存储器读部分3根据供给的纹理坐标(已经四舍五入成整数)控制从纹理存储器1a至1d读双线性过滤所必需的纹理数据,并且输出读地址RADa、RADb、RADc及RADd和芯片赋能NCEa、NCEb、NCEc、及NCEd。在这个实施例中,读地址RADa至RADd的每一个由8位组成。对于芯片赋能NCEa至NCEd,“0”指示使存储器1a至1d进入操作,而“1”指示暂停存储器1a至1d。当存储器1a至1d被暂停时,功率消耗降低。
提供与各自纹理存储器1a至1d相关的选择器4a、4b、4c及4d。在纹理数据写在纹理存储器1a至1d中的时段内,选择器4a至4d选择从存储器写部分2输出的写地址WADa至WADd。在一个双线性过滤计算时段内,选择器4a至4d选择从存储器读部分3输出的读地址RADa至RADd,并且分别输出所选择的地址RADa至RADd作为存储器地址ADa、ADb、ADc及ADd。
一个纹理选择器5从自纹理存储器1a至1d读出的数据DOa、DOb、DOc及DOd中,选择和输出在图19中表示的双线性过滤计算所必需的四个点处的纹理数据T0至T3。一个双线性过滤计算部分6使用从纹理选择器5输出的在四个点处的选择纹理数据T0至T3,进行双线性过滤计算,并且输出双线性过滤数据。这种双线性过滤数据被写在未示出的帧存储器的与描绘坐标(X,Y)相对应的一个区域中。在帧存储器中的目标数据用诸如显示监视器之类的显示装置显示。
以下,将具体描述存储器写部分2的配置和操作。
图2是表示在图1中表示的存储器写部分2的内部配置的图。在图2中,一个控制计数器7产生一个写计数值wcnt,并且由一个加法器8、一个选择器9及一个寄存器10构成。加法器8把“1”加到寄存器10的值上。选择器9在开始信号是“0”时选择加法器8的结果,而当开始信号是“1”时选择“0”。寄存器10是一个用来存储来自选择器9的输出的10位触发器。寄存器10的值用作写计数值wcnt。
在这个实施例中,在数据的名称之后的“[]”,例如“wcnt[9:0]”,指示数据的位置。具体地说,[i:j]代表从第i位到第j位的连续(i-j+1)位。例如,wcnt[9:0]代表从数据wcnt的第9位到第0位的连续10位。同样,[i]代表数据的第i位的一位。例如,wcnt
代表数据wcnt的第0位,而wcnt[1]代表数据wcnt的第一位。
一个逻辑电路19a得到wcnt
和wcnt[1]的逻辑和,并且输出得到的逻辑和作为数据nwcnt00。仅当wcnt[1:0]=00(二进制数)时,数据nwcnt00是“0”。同样,一个逻辑电路19b得到wcnt
的逻辑非与wcnt[1]的逻辑和,并且输出得到的逻辑和作为数据nwcnt01。仅当wcnt[1:0]=01(二进制数)时,数据nwcnt01是“0”。一个逻辑电路19c得到wcnt
与wcnt[1]的逻辑非的逻辑和,并且输出得到的逻辑和作为数据nwcnt10。仅当wcnt[1:0]=10(二进制数)时,数据nwcnt10是“0”。一个逻辑电路19d得到wcnt
和wcnt[1]的逻辑与的逻辑非,并且输出得到的逻辑非作为数据nwcnt11。仅当wcnt[1:0]=11(二进制数)时,数据nwcnt11是“0”。
一个写使能发生器11根据纹理数据的位数(每象素)和宽度及写计数值wcnt[9:0],把数据nwcnt00、nwcnt01、nwcnt10及nwcnt11的一个分别选作写使能NWEa、NWEb、NWEc或NWEd。图3和4表示用来选择写使能NWEa至NWEd的要求的例子。从写使能发生器11输出的写使能NWEa至NWEd存储在各自寄存器12至15中,并且被确定。
写使能NWEa至NWEd这样产生,从而当要写的纹理数据的V坐标是偶数时,按纹理存储器1a→1b→1c→1d→1a...的顺序进行写,而当V坐标是奇数时,按1c→1d→1a→1b→1c...的顺序进行写。
就是说,根据图3中表示的要求确定要写的纹理数据的V坐标是偶数还是奇数。例如,如果纹理的位数是16(位/象素)并且宽度是8(象素),则能传输32位数据。因而,通过进行存储器写操作一次而写纹理数据的两个象素。为了把纹理数据的八个象素存储在一个存储器中,写操作需要进行四次。具体地说,每当进行总共进行四次的写操作时,在偶数与奇数之间切换V坐标,从而当wcnt[2]=0时,V坐标是偶数,而当wcnt[2]=1时,V坐标是奇数。
然后,如图4中所示,依据V坐标是偶数还是奇数,切换写使能NWEa至NWEd。
寄存器16是一个8位触发器,并且存储wcnt[9:2],即写计数值的八个最高有效位。寄存器16的值用作由写地址WADa至WADd共享的数据。写地址WADa至WADd使用wcnt[9:2]的值,并因而每当进行总共进行四次的存储器写操作时增加“1”。寄存器17是一个32位触发器,并且存储供给的纹理数据。寄存器17的值被作为写数据DI输出。一个写终止确定部分18监视写计数值wcnt[9:0],并且当存储器写操作的数量达到处理所必需的给定数量时,存储器写操作终止。
图5是表示存储器写操作的定时图。在图5中表示的例子中,纹理数据的位数是16(位/象素),并且宽度是8(象素)。如图5中所示,在其期间写地址WADa至WADd是“0”的时段中,要写的纹理数据的V坐标是偶数,并且按NWEa→NWEb→NWEc→NWEd的顺序维持写使能NWEa至NWEd。因而,按第一纹理存储器1a→第二纹理存储器1b→第三纹理存储器1c→第四纹理存储器1d的顺序进行在第一至第四纹理存储器1a至1d中的写操作。另一方面,在其期间写地址WADa至WADd是“1”的时段中,要写的纹理数据的V坐标是奇数,并且按NWEc→NWEd→NWEa→NWEb的顺序维持写使能NWEa至NWEd。因而,按第三纹理存储器1c→第四纹理存储器1d→第一纹理存储器1a→第二纹理存储器1b的顺序进行在第一至第四纹理存储器1a至1d中的写操作。
以这种方式,通过单次写操作把一次能传输的一个或多个纹理数据写在第一至第四纹理存储器1a至1d之一中,从而纹理数据能在连续周期中以高速写在存储器中。
现在将具体描述存储器读部分3的配置和操作。
图6是表示在图1中表示的存储器读部分3的内部配置的图。在图6中,加法器19和20分别把“1”加到供给的U和V坐标上。一个T0地址发生器21产生并输出与坐标(U,V)相对应的纹理数据的存储器地址radr0。同样,一个T1地址发生器22产生并输出与坐标(U+1,V)相对应的纹理数据的存储器地址radr1。一个T2地址发生器23产生并输出与坐标(U,V+1)相对应的纹理数据的存储器地址radr2。一个T3地址发生器24产生并输出与坐标(U+1,V+1)相对应的纹理数据的存储器地址radr3。存储器地址radr0至r adr3的每一个由八位组成。
图7表示由T0地址发生器21产生的存储器地址。在图7中,例如{V[5:0],U[4:3]}代表通过把坐标值V的从第五位到第0位连续六位和坐标值U的从第四位到第三位连续两位连接起来得到的八位的值。T1地址发生器22、T2地址发生器23及T3地址发生器24也以相同方式产生存储器地址。
一个选择器25按照一个2位选择信号SELa选择存储器地址radr0至radr3之一。同样,选择器26、27和28的每一个分别按照一个2位选择信号SELb、SELc或SELd选择存储器地址radr0至radr3之一。选择器25至28在选择信号SELa至SELd是“00”(二进制数)时,选择radr0,在信号是“01”(二进制数)时,选择radr1,在信号是“10”(二进制数)时,选择radr2,及在信号是“11”(二进制数)时,选择radr3。寄存器29至32分别存储由选择器25至28选择的地址,并且分别输出存储的地址作为读出地址RADa至RADd。
一个存储器读控制部分33根据坐标(U,V)产生选择信号SELa至SELd,并且也产生到纹理存储器1a至1d的芯片赋能NCEa至NCEd。图8表示由存储器读控制部分33产生的选择信号SELa至SELd。在图8中,V
、U[2:0]、SELa至SELd由二进制数表示。在图8中,阴影部分与在读数据时不需访问的存储器相对应。这些部分在图8中表示为“00”(二进制数),但可以由任何值表示。
在读数据时,最好对于不需访问的纹理存储器使芯片赋能无效。图9表示由存储器读控制部分33产生的芯片赋能NCEa至NCEd。在图9中,阴影部分是在与图8中那些相同的条件下。在这种情况下,这些部分指示不必访问存储器,并因而到该存储器的芯片赋能被设置为“1”以便被无效。这停止存储器操作,并且降低功率消耗。代替使芯片赋能无效或除此之外,可以停止对不必访问的纹理存储器的时钟输入。
纹理选择器5按照在图10中表示的关系,从自纹理存储器1a至1d读出的数据DOa至DOd中,选择在双线性过滤计算所必需的四个点处的纹理数据T0至T3。在其中纹理数据的位数是16(位/象素)的情况下,选择32位数据DOa至DOd中的16位,但以这样一种方式输出纹理数据T0至T3,从而增加用于R、G及B的每个值的位数,以便允许由双线性过滤计算部分6进行双线性过滤计算。
图11A和11B表示在本实施例中纹理数据的写和读操作的概念。图11A是对于其中位数是16的情形。图11b是对于其中位数是32的情形。在图11A和11B中,符号a至d分别指示在第一至第四纹理存储器1a至1d中写入纹理数据。如图11A中所示,在其中纹理数据由16位组成的情形下,纹理数据按一次能传输的两个单元写在纹理存储器1a至1d的每一个中。也就是说,纹理数据以高速传输。如由虚线矩形A、B及C指示的那样,四个必需的纹理数据在相同周期内从多个纹理存储器读出。例如,在矩形A的情形下,数据只需从第一和第三纹理存储器1a和1c读出,而对第二和第四纹理存储器1b和1d的访问是不必要的。因而,如上所述,使芯片赋能NCEb和NCEd无效。
如上所述,在本实施例中,为了把纹理数据传输到纹理存储器,总是在连续周期中进行写,从而以高速传输纹理数据。另外,在双线性过滤所必需的四个点处的纹理数据在相同周期内读出,从而以高速进行过滤。在读数据中,通过使芯片赋能无效并停止对于不需访问的纹理存储器的时钟输入,降低处理器的功率消耗。
在本实施例中,32位数据能写入纹理存储器的每一个地址中,32位数据能一次传输,并且使用两种类型的纹理数据,即16位纹理数据和32位纹理数据。然而,本发明不限于本实施例,并且不脱离本发明的精神和范围可以进行各种变更。例如,在配置成能一次传输64位数据的处理器中,如果纹理数据由16位组成,则每次可以传输四个纹理数据并且该数据的两个可以同时被写入例如第一和第二纹理存储器中;而如果纹理数据由32位组成,则同时两个纹理数据可以分别传输并写在第一和第二纹理存储器中。也就是说,能够一次传输和写在一个地址中的数量的纹理数据共同写在一个纹理存储器中,导致以利用数据总线的传输能力得到的速度写数据。
实施例2根据本发明第二实施例的纹理处理器的配置基本与在图1中表示的相同,但与第一实施例的不同之处在于一个存储器写部分2A的配置。图12是方块图,表示第二实施例的存储器写部分2A的配置。在图12中,参照图2在第一实施例中已经描述的元件由相同的标号指示,并且这里将省略其详细描述。
一个写使能发生器34除接收写计数值wcnt和数据nwcnt00、nwcnt01、nwcnt10及nwcnt11之外,还接收一个V线模式VM。写使能发生器34根据纹理数据的位数和宽度、写计数值wcnt[9:0]及V线模式VM,把数据nwcnt00、nwcnt01、nwcnt10及nwcnt11的一个分别选作写使能NWEa、NWEb、NWEc或NWEd。
V线模式VM是一个指示供给纹理数据的首部V坐标是偶数还是奇数的信号。如果V线模式VM是“0”,则首部V坐标是偶数,而如果V线模式VM是“1”,则首部V坐标是奇数。
如果V线模式VM是“0”,即要写的纹理数据的V坐标从偶数开始,则与对于第一实施例在图3中表示的那些相同的要求用来确定纹理数据的V坐标是偶数还是奇数。另一方面,如果V线模式VM是“1”,即要写的纹理数据的V坐标从奇数开始,则用来确定纹理数据的V坐标是偶数还是奇数的要求表示在图13中。然后,如图4中所示,以与第一实施例中相同的方式,依据V坐标是偶数还是奇数切换写使能NWEa至NWEd。
一个寄存器39是一个用来对开始信号施加一周期延迟的触发器。一个写地址发生器40产生写地址WADa至WADd,并且由一个加法器41、选择器42和43及一个寄存器44构成。加法器41把“1”加到寄存器44的值上。选择器42在开始信号和寄存器39的值的逻辑和的信号是“0”时选择加法器41的结果,而在该信号是“1”时选择开始地址。这个开始地址可从纹理处理器的外部设置。选择器43在数据nwcnt00是“0”时选择选择器42的输出,而当该数据是“1”时选择寄存器44的值。寄存器44是一个用来存储选择器43的输出的8-位触发器。
寄存器44的值,即wadr[7:0],对于写地址WADa至WADd是共用的。数据nwcnt00在四个周期中是“0”一次,从而寄存器44的值在四个周期中被更新一次。就是说,每在存储器写的第四次时,写地址WADa至WADd的每一个增加“1”。
一个寄存器45是一个32位触发器,并且把纹理数据负载[31:0]保持为数据负载1[31:0]。一个左移位器46按照规定的移动值,把通过使在寄存器45中保持的数据负载1[31:0]和供给的纹理数据负载[31:0]连接起来得到的64位数据向左移位。该移动值能从纹理处理器的外部供给。一个寄存器47是一个32位触发器,并且存储左移位器46的输出的32个最高有效位。寄存器47的值用作写数据DI。
在这个实施例中,按照V线模式VM确定纹理数据的V坐标是偶数还是奇数。因而,不管供给的纹理数据的首部V坐标是偶数还是奇数,都如在第一实施例中那样进行数据写。另外,数据写的开始地址是可设置的,从而供给的纹理数据写在纹理存储器的任意地址中。例如,要传输的纹理数据的横向线每次能写在纹理存储器的任意地址中。因而,这个实施例能够实现例如其中切出与在外部存储装置中的大纹理数据中的矩形区域相对应的区域并且传输到纹理存储器的操作,而第一实施例具有要传输的纹理数据总是存储在外部存储装置中的连续地址中的限制。
另外,有可能移动正在传输的纹理数据。因而,纹理数据的开始位置不必位于字接口上,从而纹理数据被更灵活地传输。
实施例3图14是方块图,表示根据本发明第三实施例的纹理处理器的配置。在图14中,已经表示在图1中的元件由相同标号指示,并且这里将省略其详细描述。纹理存储器1a至1d、存储器读部分3、纹理选择器5及双线性过滤计算部分6与在第一实施例中描述的那些相同,并且存储器写部分2A与在第二实施例中描述的相同。
一个存储器数据移动控制部分48,具有将以前双线性过滤期间在第一至第四纹理存储器1a至1d中存储的纹理数据组中的具有最大V坐标的纹理数据移动到一个区域的功能,在该区域中,用在下次双线性过滤中的纹理数据组中的具有最小V坐标(在这种情况下为零)的纹理数据存储在第一至第四纹理存储器1a至1d中。
图15表示在通过划分在外部存储装置中的纹理数据和把划分的纹理数据组传输到内部纹理存储器而进行双线性过滤的情况下数据划分的一个例子的一种概念。图15表示作为例子其中纹理划分成每个8象素×5象素组成的区域的情形。在图15中,第一纹理数据组和第二纹理数据组在区域AR中彼此重叠。具体地说,用于双线性过滤的纹理数据的划分这样进行,从而纹理数据组在其边界处的一行中彼此重叠。这是因为在纹理数据组之间的边界上进行的双线性过滤需要相应纹理数据组的相邻纹理数据部分。
鉴于这点,在其中第一纹理存储器组存储在纹理存储器1a至1d中并且经受双线性过滤而然后第二纹理存储器组存储在纹理存储器1a至1d中的情况下,在重叠区域AR中的纹理数据一般写入在纹理存储器1a至1d中两次。
另一方面,在这个实施例中,提供存储器数据移动控制部分48,以防止在重叠区域AR中的写进行两次,并因而减少从外部存储装置传输的纹理数据的量。具体地说,在对第一纹理存储器组进行双线性过滤终止之后,存储器数据移动控制部分48在一个存储器数据移动时段内移动在纹理存储器1a至1d每一个内在重叠区域AR中的纹理数据。
存储器数据移动控制部分48输出一个存储器地址MAD和一个用于数据移动的写使能NMWE,并且控制一个选择器49、选择器50a至50d及选择器52a至52d。
选择器49在数据移动时段期间选择写使能NMWE,而否则选择写使能NWEa至NWEd。选择器49输出这些被选择的写使能作为写使能NWEa’至NWEd’。
选择器50a至50d在其中纹理数据写在纹理存储器1a至1d中的时段期间分别选择写地址WADa至WADd,在双线性过滤计算时段期间分别选择读地址RADa至RADd,及在数据移动时段期间选择地址MAD。选择器50a至50d分别输出选择的地址,作为存储器地址ADa至ADd。
寄存器51a至51d是32位触发器,并且分别存储已经从纹理存储器1a至1d读出的数据DOa至DOd。选择器52a至52d在数据移动时段期间选择来自相应寄存器51a至51d的输出,而否则选择写数据DI。选择器52a至52d分别输出选择的数据,作为写数据DIa至DId。
图16是定时图,表示在纹理存储器1a至1d中数据移动的例子。同时对四个纹理存储器1a至1d进行数据移动。图16表示作为一个例子其中具有最大V坐标的纹理数据,即在重叠区域中的纹理数据,呈现在两个地址a和b中的情形。
如图16中所示,存储器数据移动控制部分48在两个周期中输出“地址a”作为地址MAD。同时,存储数据移动控制部分48也在存储器读状态(NMWE=“1”)下在两个周期中输出写使能NMWE,从而在地址a中的数据被从纹理存储器1a至1d中读出,并且被存储在相应寄存器51a至51d中。
在下个周期中,存储器数据移动控制部分48在一个周期中输出“0”作为地址MAD。同时,存储器数据移动控制部分48也在存储器写状态(NMWE=“0”)下在一个周期中输出写使能NMWE,从而将在寄存器51a至51d每一个中存储的数据写在纹理存储器1a至1d每一个中与地址0相对应的区域中。此后,在“地址b”中的数据以相同方式读出,并且被存储在纹理存储器1a至1d每一个中与地址1相对应的区域中。
借助于以上操作,在每个纹理存储器中,在纹理数据组的重叠区域中的纹理数据从其中V坐标处于最大的区域移动到其中V坐标是零的区域。在图16中,其中具有最大V坐标的纹理数据呈现在两个地址中的情形作为例子表示。可选择地,具有最大V坐标的纹理数据可以呈现在一个地址、或者三个或更多个地址中。
在重叠区域中的纹理数据已经在纹理存储器1a至1d每一个中移动之后,下个纹理数据组写在纹理存储器1a至1d中。在这时,足以把其在重叠区域中的部分已经被除去的纹理数据从在该移动的纹理数据随后的地址起写在纹理存储器1a至1d中。
如上所述,在本实施例中,在通过划分在外部存储装置中的纹理数据并且把划分的纹理数据组传输到内部纹理存储器而进行双线性过滤时,在重叠区域中的纹理数据预先在纹理存储器的每一个中被移动。因而,减小了要传输的下个纹理数据组的量,导致纹理数据的高速传输。
实施例4图17是方块图,表示根据本发明第四实施例的纹理处理器的配置。在图17中,已经表示在图1中的元件由相同标号指示,并且这里将省略其详细描述。纹理存储器1a至1d、存储器读部分3、选择器4a至4d、纹理选择器5及双线性过滤计算部分6与在第一实施例中描述的那些相同,并且存储器写部分2A与在第二实施例中描述的相同。
在本实施例中,为了通过划分在外部存储装置中的纹理数据和把划分的纹理数据组传输到纹理存储器1a至1d而进行双线性过滤,存储器写部分2 A设置用来存储在纹理存储器1a至1d中存储的纹理数据中的具有最大V坐标的纹理数据的地址之后的写开始地址,并且然后将通过从下个纹理数据组除去在重叠区域中的纹理数据而得到的纹理数据写在纹理存储器1a至1d中。
在从开始地址起按顺序把纹理数据写在纹理存储器中时,如果写地址超过纹理存储器的最大地址,则写地址被复位到零,并且然后按顺序写以后的纹理数据。在这种情况下,在写地址发生器40中的寄存器44是一个8位触发器,并且具有允许存储器地址产生的最少功能。因此,当写地址超过最大地址时,写地址自动复位到零。
在这种情况下,一个如CPU的、未表示的外部控制部分以如下方式操作。外部控制部分保持写地址,并且把该写地址随后的地址设置为写开始地址。这允许识别具有最大V坐标的纹理数据的地址。另外,外部控制部分从重叠区域随后的地址传输下个纹理数据组。因而从下个纹理数据组除去在重叠区域中的纹理数据。
图18A至18C显示所划分的纹理数据组如何按顺序存储在纹理存储器中。在图18A至18C中,作为例子显示一种情况,其中32位纹理数据被分成每个由128象素宽×8象素高组成的纹理数据组,并且以统一的方式表示了在四个纹理存储器1a至1d中的存储区域。
图18A表示其中第一纹理数据组存储在纹理存储器中并且Va是第一纹理数据组的V坐标的状态。图18B表示其中第二纹理数据组存储在纹理存储器中并且Vb是第二纹理数据组的V坐标的状态。一个其中Va=7、作为其中第二纹理数据组重叠第一纹理数据组的重叠区域的区域,用作其中Vb=0而没有变化的区域。具有Vb=1至7的纹理数据存储在其中Vb=0的区域随后的相应区域中。由于其中Vb=0的区域是在最大存储器地址处,所以具有Vb=1的纹理数据存储在地址0处的区域中,并且随后的纹理数据按顺序存储在随后地址处的相应区域中。
图18C表示其中存储第三纹理数据组并且Vc是第三纹理数据组的V坐标的状态。一个其中Vb=7、作为其中第三纹理数据组重叠第二纹理数据组的重叠区域的区域,用作其中Vc=0而没有变化的区域。具有Vc=1至7的纹理数据存储在其中Vc=0的区域随后的相应区域中。由于其中Vc=1的区域是在最大存储器地址处,所以具有Vc=2的纹理数据存储在地址0处的区域中,并且随后的纹理数据按顺序存储在随后地址处的相应区域中。
一个纹理坐标转换部分53把纹理坐标(U,V)转换成(U’,V’),并且输出转换的坐标,从而存储器读部分3正确地读以在图18A至18C中表示的方式存储的纹理数据。具体地说,纹理坐标转换部分53输出坐标值U作为坐标值U’而没有变化。按照其中在纹理存储器1a至1d中存储的纹理数据的V坐标是零的区域的位置,将坐标值V转换成坐标值V’。这是因为根据其中V坐标是零的区域呈现在存储器地址0处的假定,存储器读部分3读纹理数据。其中V坐标是零的位置存储在以上描述的诸如CPU的外部控制部分中。其中V坐标是零的区域的位置从外部设置在纹理坐标转换部分53中。
坐标值V按如下方式转换成V’如果V<VM,则V’=V+VS如果V≥VM,则V’=V-VM其中VS是其中在纹理存储器1a至1d中存储的纹理数据的V坐标是零的区域的位置,TH是在纹理数据组的高度方向上的象素长度,及TM是TH-VS。在图18C中表示的情况下,VS=6,TH=8及VM=TH-VS=8-6=2。如果V=1,V<VM,并因而V’=V+VS=1+6=7。如果V=4,V≥VM,并因而V’=V-VM=4-2=2。以这种方式转换纹理坐标,从而正确地读出纹理数据。
如上所述,在本实施例中,在通过划分纹理数据并把所划分的纹理数据组传输到纹理存储器而进行双线性过滤时,不必如在第三实施例中那样在纹理存储器中预先移动在重叠区域中的纹理数据。因而,减少在移动数据时使用的电路,并且省略在纹理存储器内移动数据的过程。结果,以更高的速度传输纹理数据。
根据本发明,纹理数据以高速传输到纹理存储器并以高速进行双线性过滤。结果,例如在游戏机或汽车导航系统中以更高速度进行纹理绘图。
权利要求
1.一种纹理处理器,包括第一、第二、第三及第四纹理存储器,用来存储纹理数据;存储器写部分,用来控制供给的纹理数据写入所述第一至第四纹理存储器中;存储器读部分,用来控制从所述第一至第四纹理存储器读出在靠近纹理坐标的四个点处的纹理数据;及双线性过滤计算部分,用来使用由所述存储器读部分从所述第一至第四纹理存储器读出的四个点处的所述纹理数据,进行双线性过滤计算,其中在单次写操作中,所述存储器写部分将能够一次传输且能写在一个地址中的数量的纹理数据,共同写在所述第一至第四纹理存储器之一中,并且如果要写的纹理数据的V坐标是偶数,则所述纹理数据顺序写在所述第一、第二、第三及第四纹理存储器中,而如果所述V坐标是奇数,则所述纹理数据顺序写在所述第三、第四、第一及第二纹理存储器中。
2.根据权利要求1所述的纹理处理器,其中,在读数据中,所述存储器读部分对于对其访问是不必要的所述第一至第四纹理存储器的至少一个,使芯片赋能无效。
3.根据权利要求1所述的纹理处理器,其中,在读数据中,所述存储器读部分停止对于对其访问是不必要的所述第一至第四纹理存储器的至少一个的时钟输入。
4.根据权利要求1所述的纹理处理器,其中,所述存储器写部分接收指示供给的纹理数据的首部V坐标是偶数还是奇数的V线模式,并且按照所述V线模式确定所述纹理数据的所述V坐标是偶数还是奇数。
5.根据权利要求4所述的纹理处理器,其中,所述存储器写部分被配置成这样,从而用于数据写的开始地址是可设置的。
6.根据权利要求4所述的纹理处理器,其中,所述存储器写部分把供给的纹理数据移动规定的移动值,并且把所述移动的纹理数据写在所述第一至第四纹理存储器中。
7.根据权利要求1所述的纹理处理器,还包括存储器数据移动控制部分,用来在所述第一至第四纹理存储器中把第一纹理数据组的、具有最大V坐标的纹理数据移动到其中存储第二纹理数据组的、具有最小V坐标的纹理数据的位置,当所述第二纹理数据组写入其中存储所述第一纹理数据组的所述第一至第四纹理存储器中时,所述第二纹理数据组紧邻所述第一纹理数据组使用。
8.根据权利要求1所述的纹理处理器,其中,所述存储器写部分把除第二纹理数据组的、具有最小V坐标的纹理数据之外的纹理数据写在第一纹理数据组的、具有最大V坐标的纹理数据的随后位置处,当所述第二纹理数据组写入其中存储所述第一纹理数据组的所述第一至第四纹理存储器中时,所述第二纹理数据组紧邻所述第一纹理数据组使用,并且所述存储器读部分参照其中存储所述第一纹理数据组的、具有所述最大V坐标的所述纹理数据的位置,读所述第二纹理数据组的所述纹理数据。
9.根据权利要求1所述的纹理处理器,其中,如果纹理数据由每象素16位组成,则传输两个纹理数据,而如果纹理数据由每象素32位组成,则传输一个纹理数据。
全文摘要
一个存储器写部分2通过单次写操作将能够一次传输并写在一个地址中的数量的纹理数据,共同写在第一至第四纹理存储器1a至1d之一中。如果要写的纹理数据的V坐标是偶数,则纹理数据顺序写在第一、第二、第三及第四纹理存储器1a、1b、1c及1d中。如果V坐标是奇数,则数据顺序写在第三、第四、第一及第二纹理存储器1c、1d、1a及1b中。
文档编号G06T15/04GK1619590SQ20041009108
公开日2005年5月25日 申请日期2004年11月16日 优先权日2003年11月17日
发明者重永哲资 申请人:松下电器产业株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1