存储地址偏移量计算装置、方法、电子组件及电子设备与流程

未命名 07-19 阅读:94 评论:0


1.本公开涉及数据处理技术领域,尤其涉及一种存储地址偏移量计算装置、方法、电子组件及电子设备。


背景技术:

2.纹理图像在被图形处理单元(例如图形处理器gpu)执行渲染处理之前,或者在被显示设备显示之前,通常需要由线性存储格式转换成扭序(英文名称为twiddle)存储格式,以提升渲染性能或显示效率。以渲染场景为例,纹理图像在主机内存中通常为线性存储格式,当图形处理单元加载纹理图像时,主机端需要先通过软件的方式,将线性存储格式的纹理图像转换成扭序存储格式,然后将扭序存储格式的纹理图像搬运至显存(例如gddr,英文全称为graphics double data rate),接着图形处理单元从显存中加载扭序存储格式的纹理图像。
3.从线性存储格式到扭序存储格式的转换,会改变纹理像素的排列顺序,因此需要计算纹理像素在扭序存储格式下的偏移量,从而将纹理像素写到目的存储空间的对应地址处,完成扭序存储。现有技术中通常采用软件的方式计算偏移量,但是软件方式的效率偏低,特别是对大数据量的纹理图像进行处理时,会大量消耗处理器资源。而如果采用一般的硬件方案,则需要使用大量的多路选择器,会存在很大的组合逻辑云,不利于时序收敛。


技术实现要素:

4.本公开的目的是提供一种存储地址偏移量计算装置、方法、电子组件及电子设备,通过一种新的存储地址偏移量计算硬件,提升偏移量计算效率。
5.根据本公开的一个方面,提供一种存储地址偏移量计算装置,所述装置包括坐标间插模块和多个坐标更新模块;每个所述坐标更新模块分别用于:在每个周期对目标像素的一个坐标分量执行右移操作,并更新该坐标分量的有效位信息,以及在当前周期结束后将新的坐标分量和有效位信息输出给所述坐标间插模块;其中,坐标分量的有效位信息用于表示该坐标分量的有效位个数;所述坐标间插模块用于:在每个周期根据每个坐标更新模块当前输出的坐标分量和有效位信息,按照目标间插方式对坐标分量的低数据位进行间插,并将间插结果拼接至已存储的坐标间插结果;其中,所述目标间插方式是与每个坐标更新模块当前输出的有效位信息对应的一种间插方式,所述目标间插方式设定了每个坐标分量参与本次间插的低数据位个数;所述坐标间插模块还用于:在每个坐标分量的有效位个数均为0时,根据所述坐标间插结果,计算所述目标像素的存储地址偏移量。
6.本公开一种可行的实现方式中,坐标分量和有效位信息均是二进制数,有效位信息中等于1的数据位表示坐标分量中的相同数据位是有效的;每个坐标更新模块在更新有
效位信息时,具体用于:对有效位信息执行右移操作;其中,对有效位信息执行右移操作时的右移位数等于对坐标分量执行右移操作时的右移位数。
7.本公开一种可行的实现方式中,每个坐标更新模块还用于在当前周期结束后将最新的有效位信息输出给其他坐标更新模块;每个坐标更新模块在对坐标分量执行右移操作时,具体用于:根据每个坐标更新模块的所述有效位信息,按照目标右移方式对坐标分量执行右移操作;其中,所述目标右移方式是与每个坐标更新模块的所述有效位信息对应的一种右移方式,所述目标右移方式设定了本次右移操作的右移位数。
8.本公开一种可行的实现方式中,所述坐标间插模块还用于:按照多个第一判断条件的预设顺序,依次针对每个所述第一判断条件,判断每个坐标更新模块当前输出的有效位信息是否满足该第一判断条件,如果满足,则将该第一判断条件对应的间插方式确定为所述目标间插方式;每个所述坐标更新模块还用于:按照多个第二判断条件的预设顺序,依次针对每个所述第二判断条件,判断每个坐标更新模块的所述有效位信息是否满足该第二判断条件,如果满足,则将该第二判断条件对应的右移方式确定为所述目标右移方式。
9.本公开一种可行的实现方式中,所述坐标间插模块的数量为两个,分别为第一坐标间插模块和第二坐标间插模块;所述坐标更新模块的数量为三个,分别为第一坐标更新模块、第二坐标更新模块和第三坐标更新模块;所述第一坐标间插模块接收所述第一坐标更新模块和所述第二坐标更新模块的坐标分量和有效位信息,用于为二维纹理图像中的目标像素执行坐标分量间插操作;所述第二坐标间插模块接收所述第一坐标更新模块、所述第二坐标更新模块及所述第三坐标更新模块的坐标分量和有效位信息,用于为三维纹理图像中的目标像素执行坐标分量间插操作。
10.本公开一种可行的实现方式中,所述装置还包括多路选择器,所述多路选择器与所述第一坐标间插模块和所述第二坐标间插模块连接,用于根据选择信号,输出所述第一坐标间插模块或所述第二坐标间插模块计算出的存储地址偏移量。
11.本公开一种可行的实现方式中,所述存储地址偏移量是所述目标像素在扭序存储格式下的偏移量;所述扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中最小的扭转单位的宽度和高度均等于2个纹理像素。
12.本公开一种可行的实现方式中,每个所述坐标更新模块还用于接收初始坐标分量和初始有效位信息;所述初始坐标分量的位宽等于n,,其中n是该坐标分量所在维度所包括的纹理像素个数。
13.本公开一种可行的实现方式中,所述纹理图像被划分为多个纹理块,所述目标像素是一个纹理块中的第一个纹理像素,所述存储地址偏移量是该纹理块在扭序存储格式下的偏移量;所述扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中至少有一种扭转单位的宽度和高度均等于2个纹理块。
14.本公开一种可行的实现方式中,纹理块的高度和宽度相等,纹理块的高度等于2的m次方个纹理像素,m是大于0的整数;每个所述坐标更新模块还用于接收初始坐标分量和初始有效位信息;所述初始坐标分量的位宽等于n,,其中n是该坐标分量所在维度所包括的纹理像素个数;所述初始坐标分量是目标像素的原始坐标分量的高n位,所述原始坐标分量的位宽等于,。
15.根据本公开的另一方面,还提供一种电子组件,该电子组件包括上述任一实施例中所述的存储地址偏移量计算装置。在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子组件的产品形式体现为cpu主板。
16.根据本公开的另一方面,还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、vr设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机等。
17.根据本公开的另一方面,还提供一种存储地址偏移量计算方法,所述方法包括:每个周期对目标像素的每个坐标分量执行右移操作,并更新每个坐标分量的有效位信息;其中,每个坐标分量的有效位信息用于表示该坐标分量的有效位个数;每个周期根据在上一周期更新后的每个坐标分量和每个坐标分量的有效位信息,按照目标间插方式对多个坐标分量的低数据位进行间插,并将间插结果拼接至已存储的坐标间插结果;其中,所述目标间插方式是与当前每个有效位信息对应的一种间插方式,所述目标间插方式设定了每个坐标分量参与本次间插操作的低数据位个数;在每个坐标分量的有效位个数均为0时,根据所述坐标间插结果,计算所述目标像素的存储地址偏移量。
18.本公开一种可行的实现方式中,坐标分量和有效位信息均是二进制数,有效位信息中等于1的数据位表示坐标分量中的相同数据位是有效的;所述更新每个坐标分量的有效位信息的步骤包括:对每个坐标分量的有效位信息执行右移操作;其中,对有效位信息执行右移操作时的右移位数等于对相应坐标分量执行右移操作时的右移位数。
19.本公开一种可行的实现方式中,所述每个周期对目标像素的每个坐标分量执行右移操作的步骤包括:针对目标像素的每个坐标分量,每个周期根据在上一周期更新后的每个有效位信息,按照该坐标分量对应的目标右移方式对该坐标分量执行右移操作;其中,每个坐标分量的目标右移方式是与当前每个有效位信息对应的一种右移方式,每个坐标分量的目标右移方式设定了该坐标分量在本次右移操作中的右移位数。
20.本公开一种可行的实现方式中,所述方法还包括:按照多个第一判断条件的预设顺序,依次针对每个所述第一判断条件,判断当前每个有效位信息是否满足该第一判断条件,如果满足,则将该第一判断条件对应的间插方式确定为所述目标间插方式;针对每个坐标分量,按照多个第二判断条件的预设顺序,依次针对每个所述第二判断条件,判断当前每个有效位信息是否满足该第二判断条件,如果满足,则将该第二判断条件对应的右移方式确定为该坐标分量的目标右移方式。
21.本公开一种可行的实现方式中,所述存储地址偏移量是所述目标像素在扭序存储
格式下的偏移量;所述扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中最小的扭转单位的宽度和高度均等于2个纹理像素。
22.本公开一种可行的实现方式中,所述方法还包括:接收每个初始坐标分量和每个初始坐标分量的初始有效位信息;每个初始坐标分量的位宽等于n,,其中n是该初始坐标分量所在维度所包括的纹理像素个数。
23.本公开一种可行的实现方式中,所述纹理图像被划分为多个纹理块,所述目标像素是一个纹理块中的第一个纹理像素,所述存储地址偏移量是该纹理块在扭序存储格式下的偏移量;所述扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中至少有一种扭转单位的宽度和高度均等于2个纹理块。
24.本公开一种可行的实现方式中,纹理块的高度和宽度相等,纹理块的高度等于2的m次方个纹理像素,m是大于0的整数;所述方法还包括:接收每个初始坐标分量和每个初始坐标分量的初始有效位信息;每个初始坐标分量的位宽等于n,,其中n是该初始坐标分量所在维度所包括的纹理像素个数;所述初始坐标分量是目标像素的原始坐标分量的高n位,所述原始坐标分量的位宽等于,。
附图说明
25.图1a是线性存储格式的纹理图像的示意图;图1b是第一种扭序存储格式的纹理数据示意图;图1c是第二种扭序存储格式的纹理数据示意图;图2是本公开一实施例提供的存储地址偏移量计算装置;图3是本公开另一实施例提供的存储地址偏移量计算装置;图4是本公开中一实施例提出的对坐标分量和有效位信息进行移位控制的流程示意图;图5是本公开中一实施例提出的对坐标分量进行间插控制的流程示意图;图6是本公开另一实施例提供的存储地址偏移量计算装置;图7是本公开中另一实施例提出的对坐标分量进行间插控制的流程示意图;图8是本公开一实施例提供的存储地址偏移量计算方法的流程示意图。
具体实施方式
26.在介绍本公开实施例之前,应当说明的是:本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
27.本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
28.本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
29.应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
30.为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
31.纹理图像在被图形处理单元(例如图形处理器gpu)执行渲染处理之前,或者在被显示设备显示之前,通常需要由线性存储格式转换成扭序存储格式,以提升渲染性能或显示效率。其中,扭序的英文名称为twiddle。为了便于理解线性存储格式和扭序存储格式,请参见图1a至图1c,图1a是线性存储格式的纹理图像的示意图,图1b和图1c是两种扭序存储格式的纹理图像的示意图。
32.以二维(即2d)的纹理图像为例,如图1a所示,在线性存储格式的纹理图像中,每个小方格表示一个纹理像素,多个小方格中的数字表示多个纹理像素在存储器中的存储顺序。例如,线性存储格式的纹理图像被存储在主机内存中,则多个小方格中的数字表示多个纹理像素在主机内存中的存储顺序。
33.如图1a所示,对于线性存储格式的纹理图像,每一行的多个纹理像素的存储顺序是连续的,且上一行的最后一个纹理像素与下一行的第一个纹理像素的存储顺序也是连续的。此外,如图1a所示,线性存储格式的纹理图像中的折线及其箭头,也能表示多个纹理像素的存储顺序。
34.同样地,如图1b和图1c所示,在扭序存储格式的纹理图像中,每个小方格表示一个纹理像素,多个小方格中的数字表示多个纹理像素在存储器中的存储顺序。例如,扭序存储格式的纹理图像被存储在显存中,则多个小方格中的数字表示多个纹理像素在显存中的存储顺序。
35.如图1b和图1c所示,对于扭序存储格式的纹理图像,纹理像素的存储顺序按照z字型方式排列。以图1b所示的第一种扭序存储格式的纹理图像为例,其第一行第一列的纹理像素(即数字0对应的纹理像素)是存储顺序中的第一个纹理像素,其第一行第二列的纹理像素(即数字1对应的纹理像素)是存储顺序中的第二个纹理像素,其第二行第一列的纹理像素(即数字2对应的纹理像素)是存储顺序中的第三个纹理像素,其第二行第二列的纹理像素(即数字3对应的纹理像素)是存储顺序中的第四个纹理像素。此外,如图1b所示,扭序存储格式的纹理图像中的折线及其箭头,也能表示多个纹理像素的存储顺序。
36.需要说明的是,图1b和图1c仅示例性地给出了几种扭序存储格式的纹理图像,在具体实施时,扭序存储格式的纹理图像的具体规格(即高度、宽度、高宽比、扭转方式等)并不局限于图1b和图1c所示的两种规格。此外,纹理图像还可以是三维(3d)、四维(4d)等更多维的。在具体实施时,并不局限于二维的纹理图像。
37.从线性存储格式到扭序存储格式的转换,会改变纹理像素的排列顺序,因此需要计算纹理像素在扭序存储格式下的偏移量,从而将纹理像素写到目的存储空间的对应地址
处,完成扭序存储。
38.现有技术中通常采用软件的方式计算偏移量,但是软件方式的效率偏低,特别是对大数据量的纹理图像进行处理时,会大量消耗处理器资源。而如果采用一般的硬件方案,则需要使用大量的多路选择器,会存在很大的组合逻辑云,不利于时序收敛。
39.针对上述问题,本公开通过以下实施例提出一种或多种存储地址偏移量计算装置、方法、电子组件及电子设备,通过一种新的存储地址偏移量计算硬件,提升偏移量计算效率。
40.参考图2,图2是本公开一实施例提供的存储地址偏移量计算装置,如图2所示,存储地址偏移量计算装置包括坐标间插模块和多个坐标更新模块。其中,坐标更新模块与纹理图像的维度数对应,如果纹理图像是二维的,分别为维度u和维度v,则需要2个纹理更新模块,2个纹理更新模块分别对应维度u和维度v。如果纹理图像是三维的,分别为维度u、维度v及维度s,则需要3个纹理更新模块,3个纹理更新模块分别对应维度u、维度v及维度s。
41.每个坐标更新模块分别用于:在每个周期对目标像素的一个坐标分量执行右移操作,并更新该坐标分量的有效位信息,以及在当前周期结束后将新的坐标分量和有效位信息输出给坐标间插模块。其中,坐标分量的有效位信息用于表示该坐标分量的有效位个数。
42.本公开中,对一个坐标分量的右移操作,实际上是对该坐标分量的有效位的消耗。比如将坐标分量u右移两位,则相当于消耗了坐标分量u的两个有效位。因此每个周期在对目标像素的一个坐标分量执行右移操作的同时(也可以是之前或之后),需要更新该坐标分量的有效位信息。
43.坐标间插模块用于:在每个周期根据每个坐标更新模块当前输出的坐标分量和有效位信息,按照目标间插方式对坐标分量的低数据位进行间插,并将间插结果拼接至已存储的坐标间插结果;其中,目标间插方式是与每个坐标更新模块当前输出的有效位信息对应的一种间插方式,目标间插方式设定了每个坐标分量参与本次间插的低数据位个数。
44.此外,坐标间插模块还用于:在每个坐标分量的有效位个数均为0时,根据坐标间插结果,计算目标像素的存储地址偏移量。
45.本公开中,通过存储地址偏移量计算装置的坐标更新模块和坐标间插模块,将目标像素的各个坐标分量的间插操作划分为多个周期执行。在每个周期中,坐标更新模块对坐标分量执行右移操作,并更新该坐标分量的有效位信息,坐标间插模块根据各个坐标更新模块的坐标分量和有效位信息,按照相应的间插方式对坐标分量的低数据位进行间插,最后当每个坐标分量的有效位个数均为0时,根据坐标间插结果,计算目标像素的存储地址偏移量。相较于采用软件的方式计算偏移量,本公开采用硬件方式实现偏移量计算,具有更高的效率,也不会大量消耗处理器资源。此外,相较于一般的硬件方案,本方案通过将坐标分量的间插操作划分为多个周期执行,便于时序收敛,减小逻辑资源,有利于提高系统时钟频率,从而提升系统性能。
46.本公开中,每个周期的长度可以是一个或多个时钟周期,为了便于说明,以下以每个周期的长度等于一个时钟周期为例进行说明。
47.在一些具体实施方式中,坐标分量和有效位信息均是二进制数,有效位信息中等于1的数据位表示坐标分量中的相同数据位是有效的。为便于理解,示例性地,目标像素位于纹理图像中的第53列且第77排,则目标像素的坐标(u,v)为(52,76),其中52是维度u的坐
标分量,76是维度v的坐标分量。将该坐标表示为二进制数后,该坐标为(0110100,1001100)。
48.在上述示例中,初始坐标分量u等于0110100,初始坐标分量v等于1001100。以坐标分量u为例,对于初始坐标分量u而言,其初始的有效位信息等于1111111,表示坐标分量u的7位全部有效。如果坐标分量u已经被右移了两位,则右移两位后的坐标分量u等于0001101,相应地,其有效位信息等于0011111,表示坐标分量u的低五位(即01101)是有效位。
49.每个坐标更新模块在更新有效位信息时,具体用于:对有效位信息执行右移操作;其中,对有效位信息执行右移操作时的右移位数等于对坐标分量执行右移操作时的右移位数。为便于理解,示例性地,假设当前周期中对坐标分量u右移了两位,则当前周期中也需要对坐标分量u的有效位信息右移两位。
50.在另一些具体实施方式中,有效位信息也可以是其它进制的数,比如有效位信息可以是十进制的数,有效位信息等于坐标分量的有效位个数。每次对坐标分量执行右移操作时,需要同时对有效位信息减去右移位数。为便于理解,示例性地,假设当前时钟周期内有效位信息等于6,则表示坐标分量中的有效位个数等于6,如果在当前时钟周期内对坐标分量右移一位,则当前时钟周期内需要对有效位信息减1,从而将有效位信息更新为5。
51.参考图3,图3是本公开另一实施例提供的存储地址偏移量计算装置,如图3所示,该装置包括第一坐标更新模块、第二坐标更新模块及坐标间插模块。其中,第一坐标更新模块中包括存储单元coord1、存储单元coord1_valid、移位控制逻辑单元。存储单元coord1用于存储坐标分量u,存储单元coord1_valid用于存储坐标分量u的有效位信息,移位控制逻辑单元用于控制坐标分量u及其有效位信息在每个时钟周期的移位。需要说明的是,coord1和coord1_valid分别作为两个存储单元在本公开中的名称,不具有其他特殊含义。
52.第二坐标更新模块中包括存储单元coord2、存储单元coord2_valid、移位控制逻辑单元。存储单元coord2用于存储坐标分量v,存储单元coord2_valid用于存储坐标分量v的有效位信息,移位控制逻辑单元用于控制坐标分量v及其有效位信息在每个时钟周期的移位。需要说明的是,coord2和coord2_valid分别作为两个存储单元在本公开中的名称,不具有其他特殊含义。
53.坐标间插模块中包括存储单元offset_2d、计数器shift_cnt、间插控制逻辑单元。存储单元offset_2d用于存储坐标间插结果,计数器shift_cnt用于对坐标间插的总位数进行计数,比如坐标分量u和坐标分量v已经累计间插了4位数,则计数器shift_cnt此时等于4。间插控制逻辑单元用于控制每个时钟周期的间插过程及最终计算存储地址偏移量。需要说明的是,offset_2d和shift_cnt分别作为存储单元和计数器在本公开中的名称,不具有其他特殊含义。
54.如图3所示,第一坐标更新模块接收初始坐标分量u和初始有效位信息,即坐标分量u的初始值及其有效位信息的初始值,第二坐标更新模块接收初始坐标分量v和初始有效位信息,即坐标分量v的初始值及其有效位信息的初始值。
55.第一坐标更新模块中的移位控制逻辑单元通过在当前时钟周期向存储单元coord1和存储单元coord1_valid发送移位控制信号

,从而控制存储单元coord1和存储单元coord1_valid中的坐标分量u和有效位信息在当前时钟周期执行右移操作。其中,存储单元coord1和存储单元coord1_valid的形式可以是寄存器,也就是选用两个寄存器分别作为
存储单元coord1和存储单元coord1_valid。在当前时钟周期结束后,两个寄存器分别通过信号



将新的坐标分量u和有效位信息输出给坐标间插模块。
56.同样地,第二坐标更新模块中的移位控制逻辑单元通过在当前时钟周期向存储单元coord2和存储单元coord2_valid发送移位控制信号

,从而控制存储单元coord2和存储单元coord2_valid中的坐标分量v和有效位信息在当前时钟周期执行右移操作。其中,存储单元coord2和存储单元coord2_valid的形式可以是寄存器,也就是选用两个寄存器分别作为存储单元coord2和存储单元coord2_valid。在当前时钟周期结束后,两个寄存器分别通过信号



将新的坐标分量v和有效位信息输出给坐标间插模块。
57.坐标间插模块中的间插控制逻辑单元根据信号







,向存储单元offset_2d和计数器shift_cnt发送间插控制信号

,从而使信号

和信号

的低数据位进行间插,并将间插结果拼接至存储单元offset_2d中已经存储的坐标间插结果,并使计数器shift_cnt更新。
58.在一些具体实施方式中,每个坐标更新模块还用于在当前周期结束后将最新的有效位信息输出给其他坐标更新模块。如图3所示,在当前时钟周期结束后,第一坐标更新模块的存储单元coord1_valid通过信号

将新的有效位信息输出给第二坐标更新模块。同样地,第二坐标更新模块的存储单元coord2_valid通过信号

将新的有效位信息输出给第一坐标更新模块。
59.每个坐标更新模块在对坐标分量执行右移操作时,具体用于:根据每个坐标更新模块的有效位信息,按照目标右移方式对坐标分量执行右移操作;其中,目标右移方式是与每个坐标更新模块的有效位信息对应的一种右移方式,目标右移方式设定了本次右移操作的右移位数。
60.为便于理解,示例性地,请参考图4,图4是本公开中一实施例提出的对坐标分量和有效位信息进行移位控制的流程示意图,第一坐标更新模块中的移位控制逻辑单元可以按照图4所示的流程进行移位控制。
61.图4中,coord1[w-1:0]是指坐标分量u的二进制形式,其中w等于坐标分量u的二进制位宽,比如w等于8,则坐标分量u的二进制形式为coord1[7:0];coord1_valid[w-1:0]是坐标分量u的有效位信息的二进制形式;coord1_valid[0]是指坐标分量u的有效位信息中的最低位;coord2_valid[0]是指坐标分量v的有效位信息中的最低位;coord1_valid[2:0]是指坐标分量u的有效位信息中最低的三位,例如坐标分量u的有效位信息为0000011,则coord1_valid[2:0]是指二进制数0000011中最右侧的三位数,即011;coord1_valid[1:0]是指坐标分量u的有效位信息中最低的两位。此外,图4中的》》是右移符号,右移符号右侧的数值是右移位数。
[0062]
如图4所示,移位控制逻辑单元针对坐标分量u和有效位信息,首先判断有效位信息coord1_valid[w-1:0]是否等于0,如果等于0,则说明有效位信息中的每个数据位均等于0,从而说明坐标分量coord1[w-1:0]的每一位均失效,也就是坐标分量coord1[w-1:0]中不存在有效位,因此本时钟周期的移位控制流程结束。作为一种替代方式,也可以判断coord1_valid[0]是否等于0,如果等于0,则说明坐标分量coord1[w-1:0]的最后一个数据位及其之前的所有数据位均失效,因此本时钟周期的移位控制流程结束;如果不等于0,则继续判断coord1_valid[0]和coord2_valid[0]是否均等于1;如
果均等于1,则将坐标分量u右移一位,即coord1[w-1:0]》》1,并将有效位信息也右移一位,即coord1_valid[w-1:0]》》1,然后结束本时钟周期的移位控制流程;如果不均等于1,则继续判断coord1_valid[2:0]中的每一位是否均等于1,也就是判断有效位信息中最低的三位是否均等于1;如果均等于1,则将坐标分量u右移三位,即coord1[w-1:0]》》3,并将有效位信息也右移三位,即coord1_valid[w-1:0]》》3,然后结束本时钟周期的移位控制流程;如果不均等于1,则继续判断coord1_valid[1:0]中的每一位是否均等于1,也就是判断有效位信息中最低的两位是否均等于1;如果均等于1,则将坐标分量u右移两位,即coord1[w-1:0]》》2,并将有效位信息也右移两位,即coord1_valid[w-1:0]》》2,然后结束本时钟周期的移位控制流程;如果不均等于1,则将坐标分量u右移一位,即coord1[w-1:0]》》1,并将有效位信息也右移一位,即coord1_valid[w-1:0]》》1,然后结束本时钟周期的移位控制流程。
[0063]
图4所示的流程中包括四个判断条件和五个分支,移位控制逻辑单元在每个时钟周期会执行一次图4所示的流程,但在每个时钟周期中,移位控制逻辑单元根据判断条件的满足情况,只会选择一个分支执行。比如在某个时钟周期中,第二个判断条件满足,则移位控制逻辑单元执行第二个分支;比如在另一个时钟周期中,第四个判断条件满足,则移位控制逻辑单元执行第四个分支;比如在又一个时钟周期中,第四个判断条件不满足,则移位控制逻辑单元执行第五个分支。
[0064]
需要说明的是,图4中的第二个分支、第三个分支、第四个分支及第五个分支也就是多种右移方式,而被移位控制逻辑单元选择的一个分支,也就是前述目标右移方式。
[0065]
本公开中,第一坐标更新模块中的移位控制逻辑单元可以按照图4所示的流程进行移位控制。对于第二坐标更新模块中的移位控制逻辑单元,可以按照类似的方式进行移位控制,为避免重复,此处不再针对第二坐标更新模块进行举例。
[0066]
示例性地,请参考图5,图5是本公开中一实施例提出的对坐标分量进行间插控制的流程示意图,坐标间插模块中的间插控制逻辑单元可以按照图5所示的流程进行间插控制。
[0067]
图5中,offset_2d[w+x-1:0]是坐标间插结果的二进制形式,其中w等于坐标分量u的二进制位宽,x是坐标分量v的二进制位宽,比如w等于8,x等于6,则坐标间插结果的二进制形式为offset_2d[13:0];shift_cnt是计数器;coord1_valid[w-1:0]是坐标分量u的有效位信息的二进制形式,coord2_valid[x-1:0]是坐标分量v的有效位信息的二进制形式;coord1_valid[0]是坐标分量u的有效位信息的最低位;coord2_valid[0]是坐标分量v的有效位信息的最低位;coord1_valid[2:0]是坐标分量u的有效位信息中最低的三位;coord2_valid[2:0]是坐标分量v的有效位信息中最低的三位;coord1_valid[1:0]是坐标分量u的有效位信息中最低的两位;coord2_valid[1:0]是坐标分量v的有效位信息中最低的两位;coord2[0]是坐标分量v的最低位;coord1[0]是坐标分量u的最低位;offset_2d[w+x-1:2]是坐标间插结果中除最低两位以外的其余数据位;coord1[2:0]是指坐标分量u中最低的三位,例如坐标分量u为0110100,则coord1[2:0]是指二进制数0110100中最右侧的三位数,即100;offset_2d[w+x-1:3]是坐标间插结果中除最低三位以外的其余数据位;coord2[2:0]是指坐标分量v中最低的三位;coord1[1:0]是指坐标分量u中最低的两位;coord2[1:0]是
指坐标分量v中最低的两位;offset_2d[w+x-1:1]是坐标间插结果中除最低位以外的其余数据位。
[0068]
如图5所示,间插控制逻辑单元首先判断坐标分量u和v各自的有效位信息coord1_valid[w-1:0]和coord2_valid[x-1:0]是否均等于0,如果均等于0,则说明两个有效位信息中的每个数据位均等于0,从而说明两个坐标分量coord1[w-1:0]和coord2[x-1:0]的每一位均失效,也就是坐标分量coord1[w-1:0]和coord2[x-1:0]中均不存在有效位,因此本时钟周期的间插控制流程结束;如果不均等于0,则继续判断coord1_valid[0]和coord2_valid[0]是否均等于1;如果均等于1,则对坐标分量u的最低位coord1[0]和坐标分量v的最低位coord2[0]进行间插,并将间插结果与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0] = {coord2[0],coord1[0],offset_2d[w+x-1:2]},并将计数器加2,即shift_cnt = shift_cnt + 2,然后结束本时钟周期的间插控制流程;其中,在将间插结果{coord2[0],coord1[0]}与原坐标间插结果offset_2d[w+x-1:0]进行拼接时,取原坐标间插结果高w+x-2位(即offset_2d[w+x-1:0]),作为新坐标间插结果的低位,并将间插结果{coord2[0],coord1[0]}作为新坐标间插结果的高位;如果不均等于1,则继续判断coord1_valid[2:0]中的每一位是否均等于1;如果均等于1,则将坐标分量u中最低的三位与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0]= {coord1[2:0],offset_2d[w+x-1:3]},并将计数器加3,即shift_cnt = shift_cnt + 3,然后结束本时钟周期的间插控制流程;如果不均等于1,则继续判断coord2_valid[2:0]中的每一位是否均等于1;如果均等于1,则将坐标分量v中最低的三位与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0]= {coord2[2:0],offset_2d[w+x-1:3]},并将计数器加3,即shift_cnt = shift_cnt + 3,然后结束本时钟周期的间插控制流程;如果不均等于1,则继续判断coord1_valid[1:0]中的每一位是否均等于1;如果均等于1,则将坐标分量u中最低的两位与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0]= {coord1[1:0],offset_2d[w+x-1:2]},并将计数器加2,即shift_cnt = shift_cnt + 2,然后结束本时钟周期的间插控制流程;如果不均等于1,则继续判断coord2_valid[1:0]中的每一位是否均等于1;如果均等于1,则将坐标分量v中最低的两位与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0]= {coord2[1:0],offset_2d[w+x-1:2]},并将计数器加2,即shift_cnt = shift_cnt + 2,然后结束本时钟周期的间插控制流程;如果不均等于1,则继续判断coord1_valid[0]是否等于1;如果等于1,则将坐标分量u中的最低位与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0]= {coord1[0],offset_2d[w+x-1:1]},并将计数器加1,即shift_cnt = shift_cnt + 1,然后结束本时钟周期的间插控制流程;如果不等于1,则将坐标分量v中的最低位与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0] = {coord2[0],offset_2d[w+x-1:1]},并将计数器加1,即shift_cnt = shift_cnt + 1,然后结束本时钟周期的间插控制流程。
[0069]
图5所示的流程中包括七个判断条件和八个分支,间插控制逻辑单元在每个时钟
周期会执行一次图5所示的流程,但在每个时钟周期中,间插控制逻辑单元根据判断条件的满足情况,只会选择一个分支执行。需要说明的是,图5中的第二个分支至第八个分支也就是多种间插方式,而被间插控制逻辑单元选择的一个分支,也就是前述目标间插方式。
[0070]
在一些具体实施方式中,如图5所示,坐标间插模块按照多个第一判断条件的预设顺序,依次针对每个所述第一判断条件,判断每个坐标更新模块当前输出的有效位信息是否满足该第一判断条件,如果满足,则将该第一判断条件对应的间插方式确定为目标间插方式。
[0071]
如图4所示,每个坐标更新模块按照多个第二判断条件的预设顺序,依次针对每个所述第二判断条件,判断每个坐标更新模块的有效位信息是否满足该第二判断条件,如果满足,则将该第二判断条件对应的右移方式确定为目标右移方式。
[0072]
除了图4所示的流程以外,在另一些具体实施方式中,坐标更新模块也可以按照其他流程执行移位控制,本公开对此不做限定。比如坐标移位模块的移位控制逻辑单元针对坐标分量和有效位信息,首先判断该有效位信息的最低位是否等于0;若是,则结束本时钟周期的移位控制流程;若否,则将该坐标分量右移一位,并将该有效位信息也右移一位,从而结束本时钟周期的右移控制流程。
[0073]
同样地,除了图5所示的流程以外,在另一些具体实施方式中,坐标间插模块也可以按照其他流程执行移位控制,本公开对此不做限定。比如坐标间插模块的间插控制逻辑单元可以首先判断坐标分量u的有效位信息的最低位(即coord1_valid[0])和坐标分量v的有效位信息的最低位(即coord2_valid[0])是否均等于0,如果均等于0,则结束本时钟周期的间插控制流程;如果不均等于0,则继续判断coord1_valid[0]和coord2_valid[0]是否均等于1;如果均等于1,则对坐标分量u的最低位coord1[0]和坐标分量v的最低位coord2[0]进行间插,并将间插结果与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0] = {coord2[0],coord1[0],offset_2d[w+x-1:2]},并将计数器加2,即shift_cnt = shift_cnt + 2,然后结束本时钟周期的间插控制流程;如果不均等于1,则继续判断coord1_valid[0]是否等于1;如果等于1,则将坐标分量u中的最低位与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0]= {coord1[0],offset_2d[w+x-1:1]},并将计数器加1,即shift_cnt = shift_cnt + 1,然后结束本时钟周期的间插控制流程;如果不等于1,则将坐标分量v中的最低位与已经存储的坐标间插结果拼接,即offset_2d[w+x-1:0]= {coord2[0],offset_2d[w+x-1:1]},并将计数器加1,即shift_cnt = shift_cnt + 1,然后结束本时钟周期的间插控制流程。
[0074]
参考图6,图6是本公开另一实施例提供的存储地址偏移量计算装置,如图6所示,坐标间插模块的数量为两个,分别为第一坐标间插模块和第二坐标间插模块;坐标更新模块的数量为三个,分别为第一坐标更新模块、第二坐标更新模块和第三坐标更新模块。
[0075]
第一坐标间插模块接收第一坐标更新模块和第二坐标更新模块的坐标分量和有效位信息,用于为二维纹理图像中的目标像素执行坐标分量间插操作。
[0076]
第二坐标间插模块接收第一坐标更新模块、第二坐标更新模块及第三坐标更新模块的坐标分量和有效位信息,用于为三维纹理图像中的目标像素执行坐标分量间插操作。
[0077]
其中,第一坐标更新模块对应坐标分量u,用于对坐标分量u及其有效位信息执行移位操作,第二坐标更新模块对应坐标分量v,用于对坐标分量v及其有效位信息执行移位操作,第三坐标更新模块对应坐标分量s,用于对坐标分量s及其有效位信息执行移位操作。三个坐标更新模块的移位控制过程可以参考图4所示的流程。
[0078]
此外,第一坐标间插模块可以按照图5所示的流程执行间插操作,第一间插坐标模块用于为二维纹理图像中的目标像素执行坐标分量间插操作。第二坐标间插模块可以按照图7所示的流程执行间插操作,图7是本公开中另一实施例提出的对坐标分量进行间插控制的流程示意图,第二间插坐标模块用于为三维纹理图像中的目标像素执行坐标分量间插操作。图7相较于图5,引入了坐标分量s。图7中,z等于坐标分量s的二进制位宽,coord3_valid[z-1:0]是坐标分量s的有效位信息的二进制形式。由于图7所示的控制逻辑与图5所示的控制逻辑相同,因此为了避免重复,此处不再对图7进行详细说明。对于图7的理解,可参考图5的相关说明。
[0079]
如图6所示,存储地址偏移量计算装置还包括多路选择器,多路选择器与第一坐标间插模块和第二坐标间插模块连接,用于根据选择信号,输出第一坐标间插模块或第二坐标间插模块计算出的存储地址偏移量。
[0080]
本公开中,选择信号包括第一信号和第二信号,当采用本公开的存储地址偏移量计算装置为二维纹理图像中的目标像素计算偏移量时,输入给多路选择器的选择信号为第一信号,第一信号用于控制多路选择器输出第一坐标间插模块计算出的偏移量。当采用本公开的存储地址偏移量计算装置为三维纹理图像中的目标像素计算偏移量时,输入给多路选择器的选择信号为第二信号,第二信号用于控制多路选择器输出第二坐标间插模块计算出的偏移量。
[0081]
在一些具体实施方式中,存储地址偏移量是目标像素在扭序存储格式下的偏移量。扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中最小的扭转单位的宽度和高度均等于2个纹理像素。
[0082]
如图1b所示,扭转单位是指:按照纹理像素的扭转顺序对纹理像素进行一定程度的分组。为了便于理解,如图1b所示,在第一种扭序存储格式的纹理图像中,对应数字0、1、2、3的四个纹理像素可以视为一个扭转单位,对应数字4、5、6、7的四个纹理像素可以视为一个扭转单位,对应数字8、9、10、11的四个纹理像素可以视为一个扭转单位...对应数字252、253、254、255的四个纹理像素可以视为一个扭转单位。或者,在第一种扭序存储格式的纹理图像中,对应数字0-15的十六个纹理像素可以视为一个扭转单位,对应数字16-31的十六个纹理像素可以视为一个扭转单位...对应数字240-255的十六个纹理像素可以视为一个扭转单位。或者,在第一种扭序存储格式的纹理图像中,对应数字0-63的六十四个纹理像素可以视为一个扭转单位...对应数字192-255的六十四个纹理像素可以视为一个扭转单位。
[0083]
可见,扭序存储格式可以具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内。例如,在第一种扭序格式的纹理图像中,对应数字0、1、2、3的四个纹理像素所组成的扭转单位,被包含在对应数字0-15的十六个纹理像素所组成的扭转单位之内。在第一种扭序存储格式的纹理图像中,由四个纹理像素组成的扭转单位是最小的扭转单位。
[0084]
本公开中的扭序存储格式可以是图1b所示的扭序存储格式,该扭序存储格式中,
最小的扭转单位的宽度和高度均等于2个纹理像素。
[0085]
如图3和图6所示,坐标更新模块还用于接收初始坐标分量和初始有效位信息;初始坐标分量的位宽等于n,,其中n是该坐标分量所在维度所包括的纹理像素个数,也就是首先计算,然后对计算结果进行向上取整,从而得到位宽n。为便于理解,示例性的,目标像素的坐标分量u为52,且坐标分量u所在维度(即纹理图像的宽度)总共有120个纹理像素,则等于7,因此坐标分量u的二进制形式为0110100。
[0086]
在上述具体实施方式中,第一坐标间插模块可以按照以下方式计算偏移量:address_offset=坐标间插结果
×
z,其中z是每个纹理像素的位宽(即每个纹理像素包括的字节数),address_offset是计算出的偏移量。
[0087]
在另一些具体实施方式中,纹理图像被划分为多个纹理块,目标像素是一个纹理块中的第一个纹理像素,存储地址偏移量是该纹理块在扭序存储格式下的偏移量;扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中至少有一种扭转单位的宽度和高度均等于2个纹理块。
[0088]
为便于理解,如图1c所示,4
×
4的16个纹理像素作为一个纹理块。图1c中,对应数字0-15的十六个纹理像素可以视为一个纹理块,对应数字16-31的十六个纹理像素可以视为一个纹理块...目标像素是纹理块的第一个纹理像素,也就是左上角的一个纹理像素。图1c中,第一纹理块、第二纹理块、第三纹理块及第四纹理块是一个扭转单位,且是最小的扭转单位,该扭转单位的宽度和高度均等于2个纹理块。需要补充说明的是,图1b中扭转单位中的最小元素是纹理像素,而图1c中扭转单位中的最小元素是纹理块。
[0089]
本公开中的扭序存储格式可以是图1c所示的扭序存储格式,该扭序存储格式中,最小的扭转单位的宽度和高度均等于2个纹理块。其中,纹理块的高度和宽度相等,纹理块的高度等于2的m次方个纹理像素,m是大于0的整数。比如,纹理块的高度和宽度均等于2的2次方个纹理像素,即纹理块的高度和宽度均等于4个纹理像素。
[0090]
如图3和图6所示,坐标更新模块还用于接收初始坐标分量和初始有效位信息;初始坐标分量的位宽等于n,,其中n是该坐标分量所在维度所包括的纹理像素个数;初始坐标分量是目标像素的原始坐标分量的高n位,原始坐标分量的位宽等于,。
[0091]
为便于理解,示例性的,m等于2(也就是纹理块的高度和宽度均等于4个纹理像素),目标像素的坐标分量u为52,且坐标分量u所在维度(即纹理图像的宽度)总共有120个纹理像素;则等于7,因此原始坐标分量u的二进制形式为0110100;而初始坐标分量u的位宽等于5,且初始坐标分量是原始坐标分量0110100的高5位,即01101。
[0092]
在上述具体实施方式中,对于二维纹理图像,第一坐标间插模块可以按照以下方式计算偏移量:address_offset=坐标间插结果
×
16
×
z,其中z是每个纹理像素的位宽(即每个纹理像素包括的字节数),address_offset是计算出的偏移量。对于三维纹理图像,第一坐标间插模块可以按照以下方式计算偏移量:address_offset=坐标间插结果
×
64
×
z,其中z是每个纹理像素的位宽(即每个纹理像素包括的字节数),address_offset是计算出的偏移量。
[0093]
为便于理解本方案,示例性地,以针对二维纹理图像中的目标像素计算存储地址偏移量为例进行说明。该二维纹理图像为128
×
128纹理像素的纹理图像,其中每个纹理像素的位宽是4字节,纹理块tile的单位是4
×
4纹理像素,目标像素的坐标分量(u,v)等于(52,76)。将坐标分量u和v表示为二进制后,原始坐标分量u等于0110100,原始坐标分量v等于1001100。又由于纹理块tile的单位是4
×
4纹理像素,因此初始坐标分量u等于01101,初始坐标分量v等于10011。对目标像素计算存储地址偏移量的具体过程如下:向存储地址偏移量计算装置输入初始坐标分量u、u的有效位信息、初始坐标分量v、v的有效位信息;其中,初始坐标分量u等于01101,u的有效位信息等于11111,初始坐标分量v等于10011,v的有效位信息等于11111;在第一个时钟周期结束后,offset_2d[9:0]={1,1,offset_2d[9:2]},shift_cnt=2;在第二个时钟周期结束后,offset_2d[9:0]={1,0,1,1,offset_2d[9:4]},shift_cnt=4;在第三个时钟周期结束后,offset_2d[9:0]={0,1,1,0,1,1,offset_2d[9:6]},shift_cnt=6;在第四个时钟周期结束后,offset_2d[9:0]={0,1,0,1,1,0,1,1,offset_2d[9:8]},shift_cnt=8;在第五个时钟周期结束后,offset_2d[9:0]={1,0,0,1,0,1,1,0,1,1},shift_cnt=10;因此,最终的坐标间插结果等于1001011011,然后将坐标间插结果乘以16(相当于在坐标间插结果的末尾补4个0),并再乘以4(即每个纹理像素的位宽),从而得到目标像素的存储地址偏离量。
[0094]
本公开实施例还提供一种电子组件,该电子组件包括上述任一实施例中所述的存储地址偏移量计算装置。在一些使用场景下,该电子组件的产品形式体现为显卡;在另一些使用场景下,该电子组件的产品形式体现为cpu主板。
[0095]
本公开实施例还提供一种电子设备,该电子设备包括上述的电子组件。在一些使用场景下,该电子设备的产品形式是便携式电子设备,例如智能手机、平板电脑、vr设备等;在一些使用场景下,该电子设备的产品形式是个人电脑、游戏主机、工作站、服务器等。
[0096]
本公开实施例还提供一种存储地址偏移量计算方法,该方法与前述存储地址偏移量计算装置属于同一发明构思,为避免重复,以下对该方法做简要说明。对于存储地址偏移量计算方法的详细说明,可参见前述针对存储地址偏移量计算装置的详细说明。
[0097]
参见图8,图8是本公开一实施例提供的存储地址偏移量计算方法的流程示意图。如图8所示,存储地址偏移量计算方法包括以下步骤:s810:每个周期对目标像素的每个坐标分量执行右移操作,并更新每个坐标分量的有效位信息;其中,每个坐标分量的有效位信息用于表示该坐标分量的有效位个数;s820:每个周期根据在上一周期更新后的每个坐标分量和每个坐标分量的有效位信息,按照目标间插方式对多个坐标分量的低数据位进行间插,并将间插结果拼接至已存储的坐标间插结果;其中,目标间插方式是与当前每个有效位信息对应的一种间插方式,目标间插方式设定了每个坐标分量参与本次间插操作的低数据位个数;
s830:在每个坐标分量的有效位个数均为0时,根据坐标间插结果,计算目标像素的存储地址偏移量。
[0098]
本公开中,通过将目标像素的各个坐标分量的间插操作划分为多个周期执行。在每个周期中对坐标分量执行右移操作,并更新该坐标分量的有效位信息,以及根据各个坐标分量和有效位信息,按照相应的间插方式对坐标分量的低数据位进行间插,最后当每个坐标分量的有效位个数均为0时,根据坐标间插结果,计算目标像素的存储地址偏移量。相较于采用软件的方式计算偏移量,本公开具有更高的效率,也不会大量消耗处理器资源。此外,相较于一般的硬件方案,本方案通过将坐标分量的间插操作划分为多个周期执行,便于时序收敛,减小逻辑资源,有利于提高系统时钟频率,从而提升系统性能。
[0099]
在一些具体实施方式中,坐标分量和有效位信息均是二进制数,有效位信息中等于1的数据位表示坐标分量中的相同数据位是有效的。在更新每个坐标分量的有效位信息时,具体的更新方式可以是:对每个坐标分量的有效位信息执行右移操作;其中,对有效位信息执行右移操作时的右移位数等于对相应坐标分量执行右移操作时的右移位数。
[0100]
在一些具体实施方式中,在每个周期对目标像素的每个坐标分量执行右移操作时,具体的右移方式可以是:针对目标像素的每个坐标分量,每个周期根据在上一周期更新后的每个有效位信息,按照该坐标分量对应的目标右移方式对该坐标分量执行右移操作;其中,每个坐标分量的目标右移方式是与当前每个有效位信息对应的一种右移方式,每个坐标分量的目标右移方式设定了该坐标分量在本次右移操作中的右移位数。
[0101]
在一些具体实施方式中,该方法还包括:按照多个第一判断条件的预设顺序,依次针对每个第一判断条件,判断当前每个有效位信息是否满足该第一判断条件,如果满足,则将该第一判断条件对应的间插方式确定为所述目标间插方式;针对每个坐标分量,按照多个第二判断条件的预设顺序,依次针对每个第二判断条件,判断当前每个有效位信息是否满足该第二判断条件,如果满足,则将该第二判断条件对应的右移方式确定为该坐标分量的目标右移方式。
[0102]
在一些具体实施方式中,存储地址偏移量是目标像素在扭序存储格式下的偏移量;扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中最小的扭转单位的宽度和高度均等于2个纹理像素。
[0103]
在一些具体实施方式中,该方法还包括:接收每个初始坐标分量和每个初始坐标分量的初始有效位信息;每个初始坐标分量的位宽等于n,,其中n是该初始坐标分量所在维度所包括的纹理像素个数。
[0104]
在一些具体实施方式中,纹理图像被划分为多个纹理块,目标像素是一个纹理块中的第一个纹理像素,存储地址偏移量是该纹理块在扭序存储格式下的偏移量;扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中至少有一种扭转单位的宽度和高度均等于2个纹理块。
[0105]
在一些具体实施方式中,纹理块的高度和宽度相等,纹理块的高度等于2的m次方个纹理像素,m是大于0的整数;该方法还包括:接收每个初始坐标分量和每个初始坐标分量的初始有效位信息;每个初始坐标分量的位宽等于n,,其中n是该初始坐标分量所在维度所包括的纹理像素个数;初始坐标分量是目标像素的原始坐标分量的高
n位,原始坐标分量的位宽等于,。
[0106]
尽管已描述了本公开的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本公开范围的所有变更和修改。
[0107]
显然,本领域的技术人员可以对本公开进行各种改动和变型而不脱离本公开的精神和范围。这样,倘若本公开的这些修改和变型属于本公开权利要求及其等同技术的范围之内,则本公开也意图包含这些改动和变型在内。

技术特征:
1.一种存储地址偏移量计算装置,所述装置包括坐标间插模块和多个坐标更新模块;每个所述坐标更新模块分别用于:在每个周期对目标像素的一个坐标分量执行右移操作,并更新该坐标分量的有效位信息,以及在当前周期结束后将新的坐标分量和有效位信息输出给所述坐标间插模块;其中,坐标分量的有效位信息用于表示该坐标分量的有效位个数;所述坐标间插模块用于:在每个周期根据每个坐标更新模块当前输出的坐标分量和有效位信息,按照目标间插方式对坐标分量的低数据位进行间插,并将间插结果拼接至已存储的坐标间插结果;其中,所述目标间插方式是与每个坐标更新模块当前输出的有效位信息对应的一种间插方式,所述目标间插方式设定了每个坐标分量参与本次间插的低数据位个数;所述坐标间插模块还用于:在每个坐标分量的有效位个数均为0时,根据所述坐标间插结果,计算所述目标像素的存储地址偏移量。2.根据权利要求1所述的装置,坐标分量和有效位信息均是二进制数,有效位信息中等于1的数据位表示坐标分量中的相同数据位是有效的;每个坐标更新模块在更新有效位信息时,具体用于:对有效位信息执行右移操作;其中,对有效位信息执行右移操作时的右移位数等于对坐标分量执行右移操作时的右移位数。3.根据权利要求1所述的装置,每个坐标更新模块还用于在当前周期结束后将最新的有效位信息输出给其他坐标更新模块;每个坐标更新模块在对坐标分量执行右移操作时,具体用于:根据每个坐标更新模块的所述有效位信息,按照目标右移方式对坐标分量执行右移操作;其中,所述目标右移方式是与每个坐标更新模块的所述有效位信息对应的一种右移方式,所述目标右移方式设定了本次右移操作的右移位数。4.根据权利要求3所述的装置,所述坐标间插模块还用于:按照多个第一判断条件的预设顺序,依次针对每个所述第一判断条件,判断每个坐标更新模块当前输出的有效位信息是否满足该第一判断条件,如果满足,则将该第一判断条件对应的间插方式确定为所述目标间插方式;每个所述坐标更新模块还用于:按照多个第二判断条件的预设顺序,依次针对每个所述第二判断条件,判断每个坐标更新模块的所述有效位信息是否满足该第二判断条件,如果满足,则将该第二判断条件对应的右移方式确定为所述目标右移方式。5.根据权利要求1所述的装置,所述坐标间插模块的数量为两个,分别为第一坐标间插模块和第二坐标间插模块;所述坐标更新模块的数量为三个,分别为第一坐标更新模块、第二坐标更新模块和第三坐标更新模块;所述第一坐标间插模块接收所述第一坐标更新模块和所述第二坐标更新模块的坐标分量和有效位信息,用于为二维纹理图像中的目标像素执行坐标分量间插操作;所述第二坐标间插模块接收所述第一坐标更新模块、所述第二坐标更新模块及所述第三坐标更新模块的坐标分量和有效位信息,用于为三维纹理图像中的目标像素执行坐标分量间插操作。6.根据权利要求5所述的装置,所述装置还包括多路选择器,所述多路选择器与所述第
一坐标间插模块和所述第二坐标间插模块连接,用于根据选择信号,输出所述第一坐标间插模块或所述第二坐标间插模块计算出的存储地址偏移量。7.根据权利要求1所述的装置,所述存储地址偏移量是所述目标像素在扭序存储格式下的偏移量;所述扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中最小的扭转单位的宽度和高度均等于2个纹理像素。8.根据权利要求7所述的装置,每个所述坐标更新模块还用于接收初始坐标分量和初始有效位信息;所述初始坐标分量的位宽等于n,,其中n是该坐标分量所在维度所包括的纹理像素个数。9.根据权利要求1所述的装置,纹理图像被划分为多个纹理块,所述目标像素是一个纹理块中的第一个纹理像素,所述存储地址偏移量是该纹理块在扭序存储格式下的偏移量;所述扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中至少有一种扭转单位的宽度和高度均等于2个纹理块。10.根据权利要求9所述的装置,纹理块的高度和宽度相等,纹理块的高度等于2的m次方个纹理像素,m是大于0的整数;每个所述坐标更新模块还用于接收初始坐标分量和初始有效位信息;所述初始坐标分量的位宽等于n,,其中n是该坐标分量所在维度所包括的纹理像素个数;所述初始坐标分量是目标像素的原始坐标分量的高n位,所述原始坐标分量的位宽等于,。11.一种电子组件,包括权利要求1-10任一项所述的装置。12.一种电子设备,包括权利要求11所述的电子组件。13.一种存储地址偏移量计算方法,所述方法包括:每个周期对目标像素的每个坐标分量执行右移操作,并更新每个坐标分量的有效位信息;其中,每个坐标分量的有效位信息用于表示该坐标分量的有效位个数;每个周期根据在上一周期更新后的每个坐标分量和每个坐标分量的有效位信息,按照目标间插方式对多个坐标分量的低数据位进行间插,并将间插结果拼接至已存储的坐标间插结果;其中,所述目标间插方式是与当前每个有效位信息对应的一种间插方式,所述目标间插方式设定了每个坐标分量参与本次间插操作的低数据位个数;在每个坐标分量的有效位个数均为0时,根据所述坐标间插结果,计算所述目标像素的存储地址偏移量。14.根据权利要求13所述的方法,坐标分量和有效位信息均是二进制数,有效位信息中等于1的数据位表示坐标分量中的相同数据位是有效的;所述更新每个坐标分量的有效位信息的步骤包括:对每个坐标分量的有效位信息执行右移操作;其中,对有效位信息执行右移操作时的右移位数等于对相应坐标分量执行右移操作时的右移位数。15.根据权利要求13所述的方法,所述每个周期对目标像素的每个坐标分量执行右移操作的步骤包括:针对目标像素的每个坐标分量,每个周期根据在上一周期更新后的每个有效位信息,按照该坐标分量对应的目标右移方式对该坐标分量执行右移操作;其中,每个坐标分量的
目标右移方式是与当前每个有效位信息对应的一种右移方式,每个坐标分量的目标右移方式设定了该坐标分量在本次右移操作中的右移位数。16.根据权利要求15所述的方法,所述方法还包括:按照多个第一判断条件的预设顺序,依次针对每个所述第一判断条件,判断当前每个有效位信息是否满足该第一判断条件,如果满足,则将该第一判断条件对应的间插方式确定为所述目标间插方式;针对每个坐标分量,按照多个第二判断条件的预设顺序,依次针对每个所述第二判断条件,判断当前每个有效位信息是否满足该第二判断条件,如果满足,则将该第二判断条件对应的右移方式确定为该坐标分量的目标右移方式。17.根据权利要求13所述的方法,所述存储地址偏移量是所述目标像素在扭序存储格式下的偏移量;所述扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中最小的扭转单位的宽度和高度均等于2个纹理像素。18.根据权利要求17所述的方法,所述方法还包括:接收每个初始坐标分量和每个初始坐标分量的初始有效位信息;每个初始坐标分量的位宽等于n,,其中n是该初始坐标分量所在维度所包括的纹理像素个数。19.根据权利要求13所述的方法,纹理图像被划分为多个纹理块,所述目标像素是一个纹理块中的第一个纹理像素,所述存储地址偏移量是该纹理块在扭序存储格式下的偏移量;所述扭序存储格式具有多种扭转单位,多种扭转单位具有不同的大小,小的扭转单位被包含在大的扭转单位之内,其中至少有一种扭转单位的宽度和高度均等于2个纹理块。20.根据权利要求19所述的方法,纹理块的高度和宽度相等,纹理块的高度等于2的m次方个纹理像素,m是大于0的整数;所述方法还包括:接收每个初始坐标分量和每个初始坐标分量的初始有效位信息;每个初始坐标分量的位宽等于n,,其中n是该初始坐标分量所在维度所包括的纹理像素个数;所述初始坐标分量是目标像素的原始坐标分量的高n位,所述原始坐标分量的位宽等于,。

技术总结
本公开提供一种存储地址偏移量计算装置、方法、电子组件及电子设备,旨在提升偏移量计算效率。该装置包括坐标间插模块和多个坐标更新模块,每个坐标更新模块分别用于在每个周期对目标像素的一个坐标分量进行右移操作,并更新该坐标分量的有效位信息。坐标间插模块用于在每个周期根据每个坐标更新模块的坐标分量和有效位信息,按照目标间插方式对坐标分量的低数据位进行间插,并将间插结果拼接至已存储的坐标间插结果;其中,目标间插方式是与每个坐标更新模块当前的有效位信息对应的一种间插方式;在每个坐标分量的有效位个数均为0时,根据坐标间插结果,计算目标像素的存储地址偏移量。移量。移量。


技术研发人员:王科 李雨励
受保护的技术使用者:北京象帝先计算技术有限公司
技术研发日:2023.06.14
技术公布日:2023/7/18
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐