CN111354049A - Astc内插 - Google Patents

Astc内插 Download PDF

Info

Publication number
CN111354049A
CN111354049A CN201911321670.2A CN201911321670A CN111354049A CN 111354049 A CN111354049 A CN 111354049A CN 201911321670 A CN201911321670 A CN 201911321670A CN 111354049 A CN111354049 A CN 111354049A
Authority
CN
China
Prior art keywords
interpolation
value
interpolation result
result
color
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.)
Granted
Application number
CN201911321670.2A
Other languages
English (en)
Other versions
CN111354049B (zh
Inventor
肯尼斯·罗韦尔斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of CN111354049A publication Critical patent/CN111354049A/zh
Application granted granted Critical
Publication of CN111354049B publication Critical patent/CN111354049B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Graphics (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)
  • Color Image Communication Systems (AREA)
  • Image Generation (AREA)
  • Color Television Image Signal Generators (AREA)
  • Facsimile Image Signal Circuits (AREA)

Abstract

本发明涉及自适应可缩放纹理压缩(ASTC)内插。一种用于使用加权索引i在两个端点值E0和E1之间执行内插计算以生成内插结果P的二进制逻辑电路,值E0和E1分别由ASTC颜色端点值C0和C1形成,颜色端点值C0和C1是低动态范围(LDR)或高动态范围(HDR)值,电路包括:内插单元,其被配置成使用加权索引i在颜色端点值C0和C1之间执行内插以生成第一中间内插结果C2;组合逻辑电路***,其被配置成接收内插结果C2并执行一个或多个逻辑处理操作以根据以下方程式计算内插结果P:(1)当内插结果不与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure DDA0002326001020000011
(2)当内插结果与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure DDA0002326001020000012
Figure DDA0002326001020000013
以及(3)当颜色端点值是HDR值时为P=(C2+2)>>2。

Description

ASTC内插
技术领域
本发明涉及执行根据自适应可缩放纹理压缩(ASTC)格式指定的端点值的内插。
背景技术
纹理大量地用于图形处理的领域内。纹理可以用于表示表面性质、照明(例如在正被成像的场景的环境内)或将表面细节应用于正被渲染的对象。纹理可能需要相对大量的存储器存储,并且纹理存取可以贡献相当大比例的图形装置存储器带宽。因而,常常需要将纹理数据压缩。
一种纹理压缩格式被称为自适应可缩放纹理压缩(ASTC)。
在ASTC中,将被压缩图像或纹理细分成多个数据块,其中每个数据块表示形成纹理的纹素块的纹理数据。每个数据块具有128位的固定存储器覆盖区(即,具有固定大小)。然而,数据块能够表示不同数目的纹素的纹理数据。由单个数据块表示的纹素的数目可被称为块覆盖区。对于给定纹理,块覆盖区可以是固定的。块覆盖区的高度和宽度(以纹素为单位)通常是可从多个预定义大小中选择的。覆盖区可以为矩形,并且在一些情况下,块的覆盖区可以为正方形。对于2-D纹理,块覆盖区的示例包含4×4个纹素、6×6个纹素、8×8个纹素和12×12个纹素(在分别给出8位每像素(bpp)、3.56bpp、2bpp和0.89bpp的压缩速率的情况下)。
块内的每个纹素的颜色被定义为一对颜色之间的线性梯度上的点。这对颜色被称为一对“颜色端点”。每个颜色端点定义一种颜色。每个颜色端点包含一个或多个分量。颜色端点可以包含一个、两个、三个或四个分量(通常分别对应于R、RG、RGB和RGBA纹理)。
当对纹素解码时,从数据块对颜色值解码,并且然后将那些值转换成颜色端点。将颜色值转换成颜色端点的方式由被称为颜色端点模式的参数定义。在数据块内对关于纹素的颜色端点模式的信息编码。ASTC规范定义了16种可能颜色端点模式,所述颜色端点模式在由单个颜色值计算颜色端点到由四个颜色值计算颜色端点之间变化。
在常规实施方案中,通过在从颜色端点对生成的一对端点之间进行内插来计算每个纹素的颜色。用于内插的端点由16位端点分量形成,并是从由8位分量(对于使用低动态范围(LDR)编码的纹理)或12位分量(对于使用高动态范围(HDR)编码的纹理)形成的相应颜色端点生成的。如果端点由多个分量形成,那么一对端点之间的内插涉及在所述一对端点的每个相应分量之间进行内插。可以使用插值权重来指定两个端点的加权平均值,这对应于指定颜色端点之间的线性梯度上的位置,由此定义所述纹素的颜色。
图1A中展示内插的示意图,图1A展示在被表示为102的红-蓝(RB)颜色空间中的一对颜色端点A(被表示为104)和B(被表示为106)。在此示例中,每个纹素可以具有五个权重中的一个:0/4(对应于颜色A);1/4;2/4;3/4;或4/4(对应于颜色B)。图1B中展示4乘4块的每个纹素的纹素权重的示例。尽管针对RB颜色空间的简单示例进行展示,但当在例如RGB或RGBA的不同颜色空间中工作时应用相同方法。
插值权重可以以权重网格的形式被存储,权重网格是对应于数据块中表示的纹素块的权重值的2-D网格。在某些编码中,可以针对数据块中的每个纹素存储插值权重(即,权重网格的尺寸对应于块覆盖区的尺寸)。然而,对于表示较大数目的纹素(例如12×12个纹素)的纹理数据的数据块,在块内可能不存在足够数据来存储每个纹素的插值权重。在这种情况下,可以存储较稀疏的权重网格,其含有少于每个数据块内的纹素数目的权重。然后可以根据此较稀疏的权重网格的内插来计算数据块中的每个纹素的权重。
为此,首先将块内的纹素的坐标缩放为权重网格的尺寸。坐标是按将权重网格的尺寸缩放为块覆盖区的尺寸的缩放因子缩放的。然后使用纹素相对于权重网格的重新缩放位置来选择权重网格的权重子集,并对那些权重进行内插以计算纹素的权重。例如,可以选择来自纹素周围的相邻权重网格点的块的四个权重,并对其进行内插以计算纹素的权重。
在某些情况下,可以使用单对颜色端点来计算数据块内的每个纹素的颜色。然而,在其它情况下,块可以表示具有不同颜色的混合物的纹素,所述混合物无法合理地通过在单对颜色端点之间进行内插被表示。为解决这个问题,可以将数据块中的每个纹素分配到至多四个分区中的一个,其中每个分区与其自己的颜色端点对相关联。为确定块内的纹素的颜色,确定纹素所属的分区并且从用于所述纹素的插值权重和与所述分区相关联的颜色端点对计算颜色。可以独立于颜色端点对(即,独立于纹素所属的分区)而在数据块内存储插值权重并对其编码。
这在图2A和2B中被示意性地示出。图2A展示在RB颜色空间206内由端点颜色A和B形成的第一颜色端点对202以及由端点颜色C和D形成的第二颜色端点对204。第一端点对属于第一分区,并且第二端点对属于第二分区。因此,在此示例中,存在两个分区。可以用五个权重在每个颜色端点对之间进行内插。图2B展示由纹理数据块表示的纹素208的块。分区掩码被展示为覆盖在纹素块上,其指示每个纹素属于哪个分区。分区掩码是值的网格,其中每个值指示纹素属于哪个分区。每个值可以因而被称为分区索引。具体来说,值1指示纹素属于第一分区(与颜色端点对202相关联);并且值2指示纹素属于第二分区(与颜色端点对204相关联)。还展示了每个纹素的权重。为确定纹素的颜色,使用分区索引来标识颜色端点对,并且使用权重来在所述对之间进行内插。例如,纹素210具有为1的分区索引和为3/4的权重,并因此具有由RB颜色空间中的位置212定义的颜色。纹素214具有为2的分区索引和为1/4的权重,并因此具有由RB颜色空间中的位置216定义的颜色。
虽然ASTC可以提供将纹理数据压缩的有效方式,但用于对根据ASTC压缩的纹理数据解码的解码硬件就硬件资源和硅面积来说常常可能是昂贵的。
发明内容
根据本发明,提供一种用于使用加权索引i在两个端点值E0和E1之间执行内插计算以生成内插结果P的二进制逻辑电路,值E0和E1分别由自适应可缩放纹理压缩(ASTC)颜色端点值C0和C1形成,颜色端点值C0和C1是低动态范围(LDR)或高动态范围(HDR)值,所述电路包括:
内插单元,其被配置成使用加权索引i在颜色端点值C0和C1之间执行内插以生成第一中间内插结果C2
组合逻辑电路***,其被配置成接收内插结果C2并执行一个或多个逻辑处理操作以根据以下方程式计算内插结果P:(1)当内插结果不与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure BDA0002325994000000031
Figure BDA0002325994000000032
(2)当内插结果与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure BDA0002325994000000033
以及(3)当颜色端点值是HDR值时为P=(C2+2)>>2。
使用加权索引i在两个端点值E0和E1之间进行的内插计算可以是根据方程式
Figure BDA0002325994000000041
指定的,其中p等于内插结果。
内插单元可以包括内插器,内插器被配置成使用加权索引i在颜色端点值C0和C1之间执行内插以针对i的非异常值根据方程式C2=C0.(64-i)+C1.i生成内插结果C2
内插单元可以进一步包括异常处置电路***,异常处置电路***被配置成针对i的异常值生成内插结果C2
异常处置电路***可以被配置成针对i的异常值根据方程式C2=C1.i生成内插结果C2
加权索引可以包括7位,并且内插器被配置成使用加权索引的6个最低有效位在颜色端点值C0和C1之间执行内插。
组合逻辑电路***可以包括:
格式化电路***,其被配置成取决于内插结果是否与sRGB颜色空间兼容而从值C0、C1和C2的集合生成第二中间内插结果;
第一电路分支,其被配置成根据以下方程式从第二中间内插结果计算LDR内插结果:当内插结果不与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure BDA0002325994000000042
以及当内插结果与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure BDA0002325994000000043
Figure BDA0002325994000000044
第二电路分支,其被配置成根据以下方程式从中间结果计算HDR内插结果:当颜色端点值是HDR值时为P=(C2+2)>>2,中间结果在颜色端点值是HDR值时具有等于C2的值;以及
选择单元,其被配置成取决于颜色端点值C0和C1是LDR值还是HDR值而在LDR内插结果和HDR内插结果之间进行选择以作为内插结果P。
第一电路分支可以包括:
第一逻辑单元,其被配置成将第二中间内插结果向左移位等于颜色端点值C0和C1中的每一个的位数目的位数目并将移位结果与第一数值常量相加以生成第三中间内插结果;
第二逻辑单元,其被配置成在内插结果与sRGB颜色空间兼容时将第二中间内插结果与第三内插结果相加;以及
右移位器,其被配置成将第二逻辑单元的输出向右移位第一指定位数目以生成LDR内插结果。
第一指定位数目可以等于6。
第一数值常量可以为32。
格式化电路***可以被配置成将第二中间内插结果生成为:(i)当内插结果不与sRGB颜色空间兼容时为第一中间内插结果C2;(ii)当内插结果与sRGB颜色空间兼容时为第一中间内插结果C2与数值常量的总和。
格式化电路***可以被配置成将第二中间内插结果生成为:(i)当内插结果不与sRGB颜色空间兼容并且加权索引的值不等于异常值时为从内插器输出的内插结果C2;(ii)当内插结果与sRGB颜色空间兼容并且加权值的值不等于异常值时为从内插器输出的内插结果C2与数值常量的总和;(iii)当内插结果不与sRGB颜色空间兼容并且加权索引的值等于异常值时为从异常处置电路***输出的内插结果C2;以及iv)当内插结果与sRGB颜色空间兼容并且加权值的值等于异常值时为从异常处置电路***输出的内插结果C2与数值常量的总和。
格式化电路***可以包括:
选择单元,其被配置成取决于加权索引的值是否等于异常值而在以下之间进行选择:(i)取决于从异常处置电路***输出的内插结果C2的第一输入;以及(ii)取决于从内插器输出的内插结果C2的第二输入,第二中间内插结果是从选择单元的输出生成的。
第二电路分支可以包括:
第三逻辑单元,其被配置成将第二数值常量与所述中间结果相加以形成输出,所述中间结果在颜色端点值是HDR值时具有等于C2的值;以及
右移位器,其被配置成将第三逻辑单元的输出向右移位第二指定位数目以生成HDR内插结果。
第二数值常量可以等于2。
第二指定位数目可以是2。
根据本公开的第二方面,提供一种使用二进制逻辑电路来使用加权索引i在两个端点值E0和E1之间执行内插计算以生成内插结果P的方法,值E0和E1分别由自适应可缩放纹理压缩(ASTC)颜色端点值C0和C1形成,颜色端点值0和C1是低动态范围(LDR)或高动态范围(HDR)值,所述方法包括:
在二进制逻辑电路的内插单元处使用加权索引i在颜色端点值C0和C1之间执行内插以生成第一中间内插结果C2
在二进制逻辑电路的组合逻辑电路***处接收内插结果C2,并执行一个或多个逻辑处理操作以根据以下方程式计算内插结果P:(1)当内插结果不与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure BDA0002325994000000061
Figure BDA0002325994000000062
(2)当内插结果与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure BDA0002325994000000063
Figure BDA0002325994000000064
以及(3)当颜色端点值是HDR值时为P=(C2+2)>>2。
使用加权索引i在两个端点值E0和E1之间进行的内插计算可以是根据方程式p=(E0.(64-i)+E1.i+32)/64指定的,其中p等于内插结果。
在内插单元处执行内插的步骤可以包括使用加权索引i来针对i的非异常值根据方程式C2=C0.(64-i)+C1.i使用内插器生成内插结果C2
在内插单元处执行内插的步骤可以进一步包括针对i的异常值在异常处置电路***处生成内插结果C2
针对i的异常值的内插结果可以根据方程式C2=C1.i被生成。
加权索引可以包括7位,并且使用加权索引i来针对i的非异常值生成内插结果C2的步骤包括使用加权索引i的6个最低有效位。
执行一个或多个逻辑处理操作的步骤可以包括:
取决于内插结果是否与sRGB颜色空间兼容而在格式化电路***处从值C0、C1和C2的集合生成第二中间内插结果;
使用第一电路分支根据以下方程式从第二中间内插结果计算LDR内插结果:当内插结果不与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure BDA0002325994000000065
以及当内插结果与sRGB颜色空间兼容并且颜色端点值是LDR值时为
Figure BDA0002325994000000066
Figure BDA0002325994000000067
使用第二电路分支根据以下方程式从中间结果计算HDR内插结果:当颜色端点值是HDR值时为P=(C2+2)>>2,中间结果在颜色端点值是HDR值时具有等于C2的值;以及
取决于颜色端点值C0和C1是LDR值还是HDR值而在LDR内插结果和HDR内插结果之间进行选择以作为内插结果P。
使用第一电路分支计算LDR内插结果的步骤可以包括:
使用第一逻辑单元将第二中间内插结果向左移位等于颜色端点值C0和C1中的每一个的位数目的位数目并将移位结果与第一数值常量相加以生成第三中间内插结果;
使用第二逻辑单元在内插结果与sRGB颜色空间兼容时将第二中间内插结果与第三内插结果相加;以及
将第二逻辑单元的输出向右移位第一指定位数目以生成LDR内插结果。
第二中间内插结果可以被生成为:(i)当内插结果不与sRGB颜色空间兼容时为第一中间内插结果C2;(ii)当内插结果与sRGB颜色空间兼容时为第一中间内插结果C2与数值常量的总和。
第二中间内插结果可以被生成为:(i)当内插结果不与sRGB颜色空间兼容并且加权索引的值不等于异常值时为从内插器输出的内插结果C2;(ii)当内插结果与sRGB颜色空间兼容并且加权值的值不等于异常值时为从内插器输出的第一内插结果C2与数值常量的总和;(iii)当内插结果不与sRGB颜色空间兼容并且加权索引的值等于异常值时为从异常处置电路***输出的内插结果C2;以及iv)当内插结果与sRGB颜色空间兼容并且加权值的值等于异常值时为从异常处置电路***输出的内插结果C2与数值常量的总和。
使用第二电路分支生成HDR结果的步骤可以包括:
在第三逻辑单元处,将第二数值常量与所述中间结果相加以形成输出,所述中间结果在颜色端点值是HDR值时具有等于C2的值;以及
将第三逻辑单元的输出向右移位第二指定位数目以生成HDR内插结果,其中特定位数目是2。
根据本文中的示例的二进制逻辑电路可以在集成电路上以硬件体现。
可以提供一种集成电路定义数据集,其在集成电路制造***中被处理时将集成电路制造***配置成制造根据本文中的任一个示例的二进制逻辑电路。
可以提供一种集成电路制造***,其被配置成制造根据本文中的任一个示例的二进制逻辑电路。
可以提供一种使用集成电路制造***制造根据本文中的任一个示例的二进制逻辑电路。
可以提供一种使用集成电路制造***制造根据本文中的任一个示例的二进制逻辑电路的方法,所述方法包括:
使用布局处理***处理图形处理***的计算机可读描述,以便生成体现二进制逻辑电路的集成电路的电路布局描述;以及
使用集成电路生成***根据电路布局描述来制造二进制逻辑电路。
可以提供用于执行根据本文中的任一个示例的方法的计算机程序代码。
可以提供一种非暂时性计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令在计算机***处执行时使计算机***执行根据本文中的任一个示例的方法。
可以提供一种非暂时性计算机可读存储介质,其上存储有根据本文中的任一个示例的二进制逻辑电路的计算机可读描述,计算机可读描述在集成电路制造***中被处理时使集成电路制造***制造体现二进制逻辑电路的集成电路。
可以提供一种计算机可读存储介质,其上存储有根据本文中的任一个示例的二进制逻辑电路的计算机可读描述,计算机可读描述在集成电路制造***中被处理时使集成电路制造***进行以下操作:
使用布局处理***处理二进制逻辑电路的计算机可读描述,以便生成体现二进制逻辑电路的集成电路的电路布局描述;以及
使用集成电路生成***根据电路布局描述来制造二进制逻辑电路。
可以提供一种集成电路制造***,其包括:
非暂时性计算机可读存储介质,其上存储有根据本文中的任一个示例的二进制逻辑电路的计算机可读描述;
布局处理***,其被配置成处理计算机可读描述,以便生成体现二进制逻辑电路的集成电路的电路布局描述;以及
集成电路生成***,其被配置成根据电路布局描述来制造二进制逻辑电路。
附图说明
现在将参考附图借助于示例来描述本发明。在附图中:
图1A展示位于RB颜色空间内的颜色端点对。
图1B展示4乘4纹素块,以及指示用于在颜色端点对之间进行内插的每个纹素的权重的权重网格。
图2A展示位于RB颜色空间内的两个颜色端点对。
图2B展示4乘4纹素块与指示每个纹素的分区索引的分区掩码,以及指示每个纹素的权重的权重网格。
图3展示用于从根据ASTC规范压缩的数据块对多个纹素解码的多输出解码器。
图4展示纹理数据块和要从所述块解码的纹素子块的块覆盖区。
图5展示形成图3所展示的解码器的部分的参数解码单元的示例结构。
图6展示形成图3所展示的解码器的部分的颜色解码单元的示例结构。
图7展示形成图3所展示的解码器的部分的权重解码单元的示例结构。
图8展示可以如何将块内的纹素的坐标重新缩放为权重网格的尺寸的图示。
图9展示形成图3所展示的解码器的部分的支持LDR输入的内插单元的示例。
图10展示形成图3所展示的解码器的部分的支持LDR输入的内插单元的替代示例。
图11展示形成图3所展示的解码器的部分的支持LDR和HDR输入的内插单元的示例。
图12展示形成图3所展示的解码器的部分的支持LDR和HDR输入的内插单元的替代示例。
图13展示示例集成电路制造***。
具体实施方式
本公开涉及用于在根据自适应可缩放纹理压缩(ASTC)格式指定的一对端点之间进行内插的内插单元。内插单元可以在一对端点之间进行内插以计算根据ASTC格式编码的纹素的颜色值。描述了被优化为仅支持使用低动态范围(LDR)编码的纹素的端点的内插的示例内插单元。还描述了被优化为支持使用低动态范围(LDR)或高动态范围(HDR)编码的纹素的端点的内插的示例内插单元。
如上文所描述,每个端点对中的端点可以包括一个或多个(例如至多四个)端点分量。常规地,根据ASTC格式在两个端点分量E0和E1之间进行的内插是根据以下方程式被计算:
Figure BDA0002325994000000091
其中P是所计算的内插结果并且i是加权索引。
端点分量E0和E1各自为16位无正负号的归一化整数(即,16位UNORM值)。每个端点分量E0和E1分别由颜色端点分量C0和C1形成。每个颜色端点分量可以是8位UNORM值(针对LDR端点)或12位UNORM值(针对HDR端点)。使用加权索引i在16位端点分量E0和E1之间进行内插的常规ASTC内插器单元因此通常需要能够在两个16位值之间进行内插的内插器。
然而,已了解到,可以通过改为使用加权索引i在较低位颜色端点分量C0和C1之间进行内插以生成中间内插结果并然后对所述中间结果执行逻辑处理操作以计算结果P来计算内插结果P。本文中所描述的内插单元包含用于在分量C0和C1之间进行内插以生成中间结果的内插器,以及用于将所述中间结果转换成内插结果P的附加组合逻辑电路***。通过在较低位颜色端点分量C0和C1而非16位值E0和E1之间执行内插,可以降低内插器的大小和执行内插所花费的时间。尽管执行附加逻辑处理操作以将中间内插结果转换成内插结果P,但已发现,这些附加逻辑处理操作可以由相对便宜的(就大小和附加处理时间来说)逻辑组件执行,这意味着本文中所描述的内插单元与常规内插单元相比可以受益于电路***大小和处理时间的节省。下文将更详细地阐释此情形。
如本文中所使用,相同参考数字表示相同组件。
图3展示用于从根据ASTC格式编码的纹理数据块对纹素解码的解码器单元300的示意图。
解码器包括参数解码单元302、颜色解码单元304、权重解码单元306和至少一个内插单元308。参数解码单元耦合到颜色解码单元和权重解码单元。具体来说,参数解码单元的输出耦合到权重解码单元和颜色解码单元的输入。颜色解码单元和权重解码单元中的每一个耦合到至少一个内插单元。更具体地说,权重解码单元和颜色解码单元的输出耦合到(多个)内插单元的输入。
解码器300被配置成接收以310展示的ASTC编码纹理数据块以作为输入。如上文所提及,所述块具有128位的大小或存储器覆盖区。纹理数据块310对n乘m纹素块的纹素颜色编码。所述n乘m纹素块可以形成被压缩图像或纹理的部分。所述纹理可以由多个此类纹理块构成,其中那些块中的每一个在相应128位数据块中被编码。由纹理数据块表示的纹素的数目被称为块覆盖区。块的尺寸(即,n和m的值)是可从由ASTC标准指定的许多固定替代方案中选择的。
解码器用以从纹理块310对纹素解码。解码器可以用以根据解码过程对纹素解码。所述解码过程可以包括一系列解码步骤或操作。所经历的用于对特定纹素解码的一系列步骤可以被称为解码管道。因此,解码器300可以用以从块310对纹素解码,其中每个纹素是根据解码管道被解码。
在以下示例中,出于说明的目的,纹理数据块310表示12乘12纹素块(在图4中以402示出)。出于说明的目的,以404展示要解码的纹素。
参数解码单元302接收数据块310。参数解码单元用以对块310的配置数据解码。配置数据可以是指定纹理数据的参数和其在块310内的编码的数据。配置数据可以包含例如:权重网格的大小和/或权重值的范围;分区计数(即,数据块310的分区的数目)和颜色端点模式(包含端点模式是LDR还是HDR的指示)。
图5中更详细地展示了参数解码单元302的示例。如所展示,参数解码单元302包括块模式单元502、颜色端点单元504和分区索引单元506。
块模式单元502被配置成对配置数据的部分解码,所述配置数据包含权重网格大小(其高度和宽度,即,其尺寸)以及可以由权重网格的权重占据的权重值的范围。
分区索引单元506被配置成计算要从数据块310解码的纹素的分区索引。分区索引标识纹素属于哪个分区,并是配置参数的示例。
每个纹素的分区索引是从种子、分区计数以及纹素块402内的纹素的坐标计算的。种子、分区计数和纹素坐标可以被称为中间配置数据,因为它们是用于对配置参数(分区索引)解码的数据的示例,但它们自身不是配置参数。分区计数是由形成分区索引单元506的部分的分区计数单元510从数据块310解码的。种子是由种子计算块508根据从数据块310解码的分区模式索引计算的。纹素的坐标是由纹素坐标单元(TCU)512计算的。TCU 212可以包括用于计算正被解码的纹素404的坐标的硬件。分区索引单元包括用于从种子、分区计数和纹素坐标计算分区索引的索引计算器514。索引计算器计算正被解码的纹素404的分区索引。
颜色端点单元504被配置成从数据块310对颜色端点模式解码。在纹理数据的分区计数大于1(即,存在多个分区)的情况下,颜色端点单元可以针对每个分区对颜色端点模式解码。如上文所描述,颜色端点模式指定从块310解码的颜色值将被如何转换成颜色端点。一般来说,ASTC规范指定了16种可能颜色端点模式,其中所述模式需要不同数目的颜色值来形成颜色端点。具体地说,所述模式中的四种由单个颜色值(例如亮度)形成单个颜色端点,并因此针对每个颜色端点对需要两个颜色值;所述模式中的四种由两个颜色值形成单个颜色端点,并因此针对每个颜色端点对需要四个颜色值;所述模式中的四种需要三个颜色值来形成每个颜色端点,并因此针对每个颜色端点对需要6个颜色值;并且所述模式中的四种需要四个颜色值来形成单个颜色端点(例如RGBA),并因此针对每个颜色端点对需要8个颜色值。
颜色解码单元304使用从数据块310解码的配置数据对正从数据块310解码的纹素404的颜色端点数据解码。颜色端点数据包含正被解码的纹素404的颜色端点对。如果数据块310具有为1的分区计数,那么要解码的每个纹素都与同一个颜色端点对相关联。颜色端点数据可以包含至多八个颜色端点,其形成四个颜色端点对(针对为4的分区计数-即,每分区一个颜色端点对)。所述颜色端点对中的一个或多个可以与要从数据块310解码的纹素群组中的多个纹素相关联;即,要解码的纹素中的一些可以共享共同的颜色端点对。
图6中展示了颜色解码单元304的示例结构。所述颜色解码单元包括颜色数据选择器单元(CDSU)602、序列解码器单元608、颜色去量化单元604和颜色端点计算单元606。
CDSU 602被配置成确定数据块310内的颜色数据的大小,即,用于表示颜色端点的块310内的数据的大小。在ASTC中,在数据块内将颜色数据编码为可变长度位串。根据有界整数序列编码(BISE)方案对颜色数据编码。可以从分区计数(由分区计数单元510解码)和由块模式单元502解码的块模式数据确定颜色数据的大小。CDSU 602还可对颜色数据在数据块310内的位置解码。可以再次从分区计数和块模式数据确定此信息。
序列解码器单元608被配置成执行颜色数据的整数序列解码。如上文所提及,根据二进制整数序列编码(BISE)方案在数据块内对颜色数据编码。使用BISE方案会使能够以很少数目的位对颜色值编码。可以使用三进制数位(以3为基数的表示)或五进制数位(以5为基数的表示)来表示一系列值。还可以使用其它基数表示。
颜色去量化单元604被配置成从被解码的颜色数据提取颜色值并将那些颜色值去量化。
端点计算单元606被配置成将由去量化单元604解码的被去量化的颜色值转换成颜色端点集合。端点计算单元606可以使用针对每个给定纹素的分区索引和关联颜色端点模式计算所述纹素的一对颜色端点。
端点计算单元606可以输出正从块310解码的纹素的一对颜色端点。为此,端点计算单元606可以使用针对正被解码的纹素的分区索引从颜色端点集合中选择端点对。替代地,它可以输出针对每个分区的颜色端点和针对纹素的分区索引。
权重解码单元306使用由参数解码单元302.纹理解码的配置数据对正从块310解码的纹素的内插权重数据解码。因此,权重解码单元可以对正从块310解码的每个纹素的权重解码。这些权重值由(多个)内插单元308接收。给定纹素的权重值在本文中被表示为i,并也可被称为权重索引。ASTC中的权重值的范围原则上可以变化,但通常限于0到64。权重索引可以因此由任何指定数目的位形成,但通常限于七位(表示值64所需的最小位数目)。
图7展示权重解码单元306的示例内部结构。此处,权重解码单元包括缩放单元702、权重数据选择器单元(WDSU)704、序列解码器单元718、权重去量化单元706和权重内插单元708。缩放单元702耦合到WDSU 704;WDSU耦合到去量化单元706,并且去量化单元耦合到权重内插单元708。
缩放单元702被配置成标识权重网格的将在内插中使用以便生成正被解码的纹素404的权重索引i的权重。缩放单元702可以针对正被解码的纹素从权重网格标识权重集合。然后可以由单元708对每个权重集合进行内插以生成纹素的最终权重索引i。
如上文所描述,取决于块覆盖区的大小,对于由数据块310表示的每个纹素可能不会明确地存储权重。对于较大块覆盖区(例如12乘12纹素),权重网格具有比块尺寸稀疏的分辨率。在此类情况下,为导出每个纹素的权重,将纹素的坐标缩放为权重网格的尺寸,并且然后针对每个纹素执行权重内插,以便计算那些纹素的最终权重。
缩放单元702包括缩放因子单元710和权重选择器单元712。缩放因子单元710从数据块310对将权重网格的大小缩放为块覆盖区的大小的缩放因子解码。权重选择器单元712使用缩放因子来将正被解码的纹素404的坐标缩放为权重网格,并选择权重网格的将在内插中使用以计算所述纹素的最终权重索引i的权重。由缩放因子单元710计算的相同缩放因子由权重选择器单元712用于缩放纹素404的坐标。
图8中示意性地示出了此过程。纹素的6乘6块覆盖区由‘十字’标记展示(整体上以802表示),并且5乘5权重网格由‘点’标记展示并整体上以804表示。权重网格因此具有比块覆盖区的尺寸低的分辨率。出于说明的目的,块覆盖区和权重网格被展示为彼此重叠。然后将缩放因子应用于纹素的坐标以将块覆盖区重新缩放为权重网格的尺寸。应用此缩放因子的结果整体上以806展示。在此示例中,出于说明的目的,缩放因子已应用于块覆盖区中的所有纹素(而非仅仅为正被解码的选定纹素)。然后使用重新缩放的纹素坐标来选择权重网格的要进行内插的权重集合,以便计算每个纹素的最终权重索引。例如,将某一纹素A(被图出以供标识)的坐标从位置808重新缩放到位置810。然后选择权重812、814、816和818的集合以进行内插,以使用纹素A相对于权重网格的重新缩放的位置而为所述纹素生成最终权重索引。
权重数据选择器单元704确定将在针对正被解码的纹素的权重内插中所使用的块内的权重数据的大小和用于权重网格的选定权重的数据的位置。
WDSU包括权重数据大小单元714和权重***单元716。数据大小单元714被配置成确定块310内的权重数据的大小。数据大小单元714基于由块模式单元502解码的权重值范围和权重网格大小确定权重数据的大小。
权重***单元716被配置成定位将在针对正被解码的纹素404的权重内插中所使用的块310内的用于每个权重集合的权重数据。
类似于颜色数据,权重数据也可以被BISE编码。序列解码器单元718被配置成执行权重数据的二进制整数序列解码。
权重去量化单元706被配置成将纹素404的被解码的权重集合去量化(即,使每个权重从其编码范围返回到其原始范围)。
权重内插单元708被配置成对正被解码的纹素404的权重集合进行内插以针对所述纹素计算最终内插权重索引i(例如针对所述纹素的每平面最终内插权重)。
然后从权重解码单元306输出正被解码的纹素404的最终权重索引i。
(多个)内插单元308使用由单元306计算的用于正被解码的纹素404的颜色端点数据和由单元304计算的用于所述纹素的权重索引i计算所述纹素的颜色值。
现在将描述内插单元308的示例。所述示例被大致分类为两个群组:仅支持LDR操作模式的第一群组,以及支持LDR和HDR操作模式的第二群组。将首先描述仅支持LDR操作模式的示例内插单元。
仅LDR模式
图9展示内插单元900的示例结构。内插单元900仅支持LDR操作模式,即,其被配置成仅对LDR输入进行操作。
内插单元呈对二进制输入进行操作的二进制逻辑电路的形式。二进制逻辑电路包括内插920和组合逻辑电路***904。内插单元920包括内插器902和异常处置电路***918。组合逻辑电路***904包括格式化电路***906、移位器和加法器逻辑单元908、附加逻辑单元910和移位器912。二进制逻辑电路900被配置成使用从权重解码单元306输出的加权索引i计算端点分量E0和E1之间的内插以形成内插结果P。P的值如上文由方程式(1)所指定而在此处被重复以供参考:
Figure BDA0002325994000000151
分量E0和E1中的每一个是相应端点的形成端点对的分量。在此示例的背景中,所述端点对是正被解码的纹素404的端点对。权重索引i是用于纹素404的权重索引。内插结果可以是或更一般来说可以指示用于纹素404的颜色分量值。
对于由颜色解码单元304确定的纹素404,端点分量E0和E1分别由LDR颜色端点分量C0和C1形成。具体来说,端点分量E0由颜色端点分量C0的扩展形成,并且端点分量E1由颜色端点分量C1的扩展形成。如上文所提及,端点分量E0、E1表示16位UNORM值,并且LDR颜色端点分量C0、C1表示8位UNORM值。因此,要阐明的是,应注意,值E0、E1、C0、C1和i是无正负号的二进制整数。
内插单元920被配置成接收纹素404的颜色端点分量C0和C1、纹素的权重索引i和任选地为值imax-i以作为输入,其中imax是由指定范围准许的权重索引的最大值。如上文所描述,所述最大值通常为64。在替代布置中,内插器可以从接收到的索引i和关于值imax的知识计算imax-i的值。
与常规ASTC解码器对比,内插单元920并不使用扩展的16位端点分量E0和E1执行内插,而是使用加权索引i在8位值C0和C1之间执行内插以形成中间内插结果。此内插是使用内插器902针对加权索引i的非异常值执行的,并由异常处置电路***918针对i的异常值执行的。组合逻辑电路***904用以从此中间结果生成最终内插结果P。现在将更详细地阐释此情形。
ASTC标准规定,对于LDR输入,内插结果(例如纹素的颜色值)可以与sRGB颜色空间兼容或与sRGB颜色空间不兼容。与sRGB颜色空间兼容可以意味着内插结果可以被转换到sRGB颜色空间,并且与sRGB颜色空间不兼容可以意味着内插结果无法被正确地转换到sRGB颜色空间。内插结果与sRGB颜色空间的兼容性可以等效地表达为到sRGB颜色空间的转换被启用;并且与sRGB颜色空间的不兼容性可以等效地表达为到sRGB颜色空间的转换未被启用(即,被禁用)。ASTC标准规定,当被解码颜色值到sRGB颜色空间的转换被禁用时,颜色端点分量C0和C1分别通过位复制而扩展为E0和E1,即,
Figure BDA0002325994000000161
Figure BDA0002325994000000162
在方程式(2)和(3)中,<<表示向左移位并且
Figure BDA0002325994000000163
表示级联。换句话说,端点分量E0由C0与其自身的级联形成,并且端点分量E1由C1与其自身的级联形成。
与此对比,当被解码颜色值到sRGB颜色空间的转换被启用时,颜色端点分量C0和C1分别通过与表示值128的8位二进制串级联而扩展为E0和E1,即,
Figure BDA0002325994000000164
Figure BDA0002325994000000165
通过将方程式(2)和(3)代入方程式(1),可以看出,用于计算内插结果P的替代表达(对于到sRGB颜色空间的转换被禁用的情况)由下式给出:
Figure BDA0002325994000000171
其中
C2=C0.(64-i)+C1.i (7)
类似地,通过将方程式(3)和(4)代入方程式(1),可以看出,用于计算内插结果P的替代表达(对于到sRGB颜色空间的转换被启用的情况)由下式给出:
Figure BDA0002325994000000172
其中同样C2=C0.(64-i)+C1.i.
权重索引i的值的范围限于0到64,这使i=64的情况被视为异常情况。
从方程式(7)可以看出,当i<64时(非异常情况):
Figure BDA0002325994000000173
并且当i=64时(异常情况):
Figure BDA0002325994000000174
内插器902用以使用权重索引i在输入C0和C1之间进行内插以通过实施方程式(9)计算中间内插结果
Figure BDA0002325994000000175
因此,方便地,内插器902对8位分量C0和C1进行操作,而非如在常规内插器中那样对16位端点分量E0和E1进行操作,这意味着与常规内插器相比,内插器902的大小可以降低。
二进制逻辑电路可以被配置成使得内插器902仅接收权重索引i的六个最低有效位(这使内插器能够对权重索引i在0到63的范围内的非异常值执行内插)。换句话说,如果i<64,那么内插器902可以根据方程式(9)使用权重索引i的六个最低有效位执行内插以生成中间结果
Figure BDA0002325994000000181
当i=64时,内插器902的结果将是任意的。
异常情况(i=64)由异常处置电路***918处置。异常处置电路***918被配置成在i=64时根据方程式(10)生成中间结果
Figure BDA0002325994000000182
异常处置电路***918接收值C1以作为输入并从此输入生成中间结果
Figure BDA0002325994000000183
电路***918采取移位器的形式,所述移位器被配置成在i=64时将输入C1向左移位六位(相当于将输入C1乘以64)以生成中间结果
Figure BDA0002325994000000184
中间内插结果
Figure BDA0002325994000000185
Figure BDA0002325994000000186
被输入到组合逻辑电路***904中,组合逻辑电路***904用以取决于到sRGB颜色空间的转换被启用还是禁用而根据方程式(6)或(8)生成最终内插结果P。换句话说,组合逻辑电路***904通过实施方程式(6)或(8)生成最终内插结果P。更详细地说,中间内插结果
Figure BDA0002325994000000187
Figure BDA0002325994000000188
由格式化电路***906接收。格式化电路***906用以取决于颜色数据到sRGB的转换是否被启用而生成另外的中间结果
Figure BDA0002325994000000189
和C2′。它获得结果C2″的方式取决于加权索引i是否具有异常值64。
格式化电路***906包括逻辑单元914和选择单元916。逻辑单元914被配置成接收中间结果
Figure BDA00023259940000001810
Figure BDA00023259940000001811
以及指示到sRGB颜色空间的转换被启用还是禁用的信号(其可以被称为sRGB信号)以作为输入。所述信号可以例如是二进制标志,其中所述标志的第一值指示到sRGB的转换被启用,并且所述标志的第二值指示到sRGB的转换未被启用。逻辑单元914被配置成在sRGB信号指示到sRGB的转换未被启用时生成等于中间内插结果
Figure BDA00023259940000001812
的输出结果
Figure BDA00023259940000001817
并在sRGB信号指示到sRGB的转换被启用时生成等于
Figure BDA00023259940000001813
的输出结果。逻辑单元914进一步在sRGB信号指示到sRGB的转换未被启用时生成等于中间内插结果
Figure BDA00023259940000001814
的输出结果C2′,并在sRGB信号指示到sRGB的转换被启用时生成等于
Figure BDA00023259940000001815
的输出结果。
换句话说,逻辑单元914被配置成生成输出中间结果:
Figure BDA00023259940000001816
Figure BDA0002325994000000191
在方程式(11)中,表示法‘sRGB’意味着到sRGB的转换被启用,并且
Figure BDA0002325994000000192
意味着到sRGB的转换未被启用。
所生成的中间结果被输入到选择单元916中。选择单元916用以生成另外的中间结果(被表示为C2″),其中中间结果C2″取决于索引i等于异常值64还是小于64。选择单元916接收以下各项以作为输入:(i)由逻辑单元914生成的中间结果C′2
Figure BDA0002325994000000193
以及(ii)加权索引i。选择单元916被配置成取决于加权索引i而生成等于中间结果C′2
Figure BDA0002325994000000194
中的一个的输出C2″。换句话说,选择单元916通过在i<64时输出
Figure BDA0002325994000000195
开在i=64时输出异常结果C′2来处置异常情况,如下:
Figure BDA0002325994000000196
Figure BDA0002325994000000197
因此,选择单元916可以是MUX。
方程式(12)中的两个异常值都是使用常量左移位器918和逻辑单元914仅从输入C1获得的。选择单元916将基于输入i在非异常值
Figure BDA0002325994000000198
和异常值C′2之间适当地选择。
因此,格式化电路***906的逻辑单元914、移位器单元918和选择单元916的组合用以将中间内插结果C2″生成为:(i)当颜色数据到sRGB颜色空间的转换未被启用时为C2;(ii)当颜色数据到sRGB颜色空间的转换被启用时为结果C2与数值常量(在此实施方案中为32)的总和。
在数学上:
Figure BDA0002325994000000199
从格式化电路***906输出的中间内插结果C2″被输入到移位器和加法器逻辑单元908中。
单元908被配置成将中间结果C2″向左移位等于每个颜色端点分量C0、C1的位数目的位数目(即,在此示例中为8位)以生成移位结果,并将移位结果与数值常量(在此示例中为32)相加以生成另外的中间内插结果C2″′。
在数学上,单元908通过执行以下操作而生成中间结果C2″′:
C″′2=(C″2<<8)+32 (15)
以由方程式(14)给出的C2″的值代入,可以看出,取决于到sRGB的转换是否被启用,由单元908计算的C2″′的值等于两个值中的一个:
Figure BDA0002325994000000201
应注意,213=128.64,并且因此:
Figure BDA0002325994000000202
中间结果C2″′被输出到逻辑单元910。逻辑单元910被配置成输出另外的中间结果C2 iv。逻辑单元910接收由格式化电路***906输出的中间信号C2″以作为输入。单元910还接收sRGB信号以作为输入。逻辑单元910被配置成取决于到sRGB的转换是否被启用而有条件地将中间结果C2″与中间结果C2″′相加。具体来说,逻辑单元910被配置成在sRGB转换未被启用时将中间结果C2″与接收到的中间结果C2″′相加以形成中间结果C2 iv,并在sRGB转换被启用时输出等于C2″′的中间结果C2 iv
在数学上表达,逻辑单元910被配置成输出中间结果C2 iv,被计算为:
Figure BDA0002325994000000203
中间结果C2 iv被输入到移位器912中。移位器912被配置成将输入C2 iv向右移位以生成最终内插结果P。在此示例中,移位器912被配置成将输入C2 iv向右移位6位,这相当于将输入除以数值64并将商舍入为小于或等于所述商的最大整数。因此,由组合逻辑电路***输出的P值等于:
Figure BDA0002325994000000211
方程式(19)与方程式(6)和(8)的比较表明,对于所有非负整数加权索引i≤64,二进制逻辑电路900已针对到sRGB的转换被启用的情况和到sRGB的转换未被启用的情况都正确地计算了最终内插结果P。
图10展示仅支持LDR操作模式的内插单元1000的替代结构。内插单元1000同样呈二进制逻辑电路的形式。
二进制逻辑电路包括内插单元920和组合逻辑电路***1004。组合逻辑电路***1004包括格式化电路***1006、移位器和加法器逻辑单元908、附加逻辑单元910和移位器912。二进制逻辑电路900和1000之间的差异在于格式化电路***,现在将更详细地阐释所述格式化电路***。
内插单元920输出中间内插结果C2。具体来说,内插器902如上文所描述而在i<64时根据方程式(9)输出中间内插结果
Figure BDA0002325994000000212
并且异常处置电路***918如上文所描述而在i=64时根据方程式(10)生成中间结果
Figure BDA0002325994000000213
组合逻辑电路***1004接收中间结果
Figure BDA0002325994000000214
Figure BDA0002325994000000215
并根据方程式(6)和(8),例如通过实施方程式(6)和(8),来执行逻辑处理操作集合以生成最终内插结果P。
格式化电路***1004接收中间结果
Figure BDA0002325994000000216
Figure BDA0002325994000000217
并用以取决于颜色数据到sRGB的转换是否被启用而从这些输入生成另外的中间结果C2″。它获得结果C2″的方式取决于加权索引i是否具有等于异常值的值。
格式化电路***1006包括选择单元1008和逻辑单元1010。选择单元1008用以生成另外的中间结果C2′,其中中间结果C2′取决于索引i等于异常值(i=64)还是不等于异常值(即,i<64)而选自内插器902或异常情况移位器918的输出。换句话说,选择单元1008通过取决于加权索引是否等于异常值或加权索引是否不等于异常值而输出由不同硬件分支计算的中间结果C2′来处置异常情况。具体地说,选择单元接收以下各项以作为输入:(i)分别由内插器902和电路***918生成的中间结果
Figure BDA0002325994000000221
Figure BDA0002325994000000222
以及(ii)加权索引i。选择单元916被配置成取决于加权索引i而生成等于中间结果C′2
Figure BDA0002325994000000223
中的一个的输出C2″。换句话说,选择单元916通过在i<64时输出非异常值
Figure BDA0002325994000000224
并在i=64时输出异常结果C′2来处置异常情况,如下:
Figure BDA0002325994000000225
因此,选择单元916可以是MUX。
另外的中间结果C2被输入到逻辑单元1010中。逻辑单元1010进一步接收sRGB信号以作为输入。逻辑单元1010被配置成在sRGB信号指示到sRGB的转换未被启用时生成等于接收到的中间结果C2′的另外的中间结果C2″,并在sRGB信号指示到sRGB的转换被启用时生成输出结果C2″=C2′+32。换句话说,逻辑单元1010被配置成生成输出结果C2″,其中:
Figure BDA0002325994000000226
逻辑单元1010用以将中间内插结果C2″生成为:(i)当颜色数据到sRGB颜色空间的转换未被启用时为C2;(ii)当颜色数据到sRGB颜色空间的转换被启用时为结果C2与数值常量(在此实施方案中为32)的总和。
格式化电路***1006与格式化电路***906的不同之处在于,与电路***906相比,电路***1006中的选择单元和逻辑单元的顺序颠倒。然而,方程式(21)和(14)的比较表明,两种类型的电路***都接收相同的中间结果
Figure BDA0002325994000000227
Figure BDA0002325994000000228
并输出相同的另外的中间结果C2″。
电路1000的剩余组件908到912等效于电路900中的那些组件,并且因此此处将不重复这些组件的描述。
现在将描述支持LDR和HDR操作模式的示例内插单元。
LDR和HDR模式
图11展示内插单元1100的示例结构。内插单元1100支持LDR操作模式和HDR操作模式,即,它被配置成对LDR和HDR输入进行操作。
内插单元1100呈对二进制输入进行操作的二进制逻辑电路的形式。二进制逻辑电路包括内插单元1120和组合逻辑电路***1104。内插单元1120包括内插器1102和异常处置电路***918。组合逻辑电路***1104包括格式化电路***906、第一电路分支1106和第二电路分支1108。第一电路分支1106包括移位器和加法器逻辑单元908、附加逻辑单元910和移位器912。二进制逻辑电路900被配置成使用从权重解码单元306输出的加权索引i在端点分量E0和E1之间执行内插计算以形成内插结果P。端点E0和E1可以是LDR输入或HDR输入。P的值如上文由方程式(1)所指定而在此处再次被重复以供参考:
Figure BDA0002325994000000231
端点E0和E1同样为16位UNORM值。E0由颜色端点分量C0的扩展形成,并且E1由颜色端点分量C1的扩展形成。
当颜色端点分量C0和C1是8位LDR输入时,由以上方程式(2)和(3)给出分别到Eo和E1的扩展。
当颜色端点分量0、C1改为是HDR输入时,它们是UNORM12位值。ASTC标准规定,当C0和C1是HDR输入时,通过补零法执行分别到16位值E0和E1的扩展,即,
Figure BDA0002325994000000232
Figure BDA0002325994000000233
换句话说,端点分量E0是通过将颜色端点分量C0向左移位四位形成的,并且E1是通过将颜色端点分量C1向左移位四位形成的。应注意,对于HDR操作模式,到sRGB的转换未被启用,并且方程式(18)和(19)表示将12位HDR输入扩展为由ASTC规范强制要求的16位值的单种方式。
通过将方程式(22)和(23)代入方程式(1),可以看出,用于计算HDR输入的内插结果P的替代表达由下式给出:
Figure BDA0002325994000000241
其中同样C2=C0.(64-i)+C1.i。
内插单元1120的内插器1102用以使用权重索引i在输入C0和C1之间进行内插,以在i<64时根据方程式(9),例如通过实施方程式(9),来计算中间内插结果
Figure BDA0002325994000000242
异常情况(i=64)由内插单元1120的异常处置电路***918处置。异常处置电路***918被配置成在i=64时根据方程式(10)生成中间结果
Figure BDA0002325994000000243
异常处置电路***918接收值C1以作为输入并从此输入生成中间结果
Figure BDA0002325994000000244
电路***918采取移位器的形式,所述移位器被配置成在i=64时将输入C1向左移位六位(相当于将输入C1乘以64)以生成中间结果
Figure BDA0002325994000000245
中间结果
Figure BDA0002325994000000246
Figure BDA0002325994000000247
由执行一个或多个逻辑处理操作以计算内插结果P的组合逻辑电路***1104接收。对于LDR输入,组合逻辑电路***1104取决于到sRGB的转换被启用还是禁用而根据以上方程式(6)或(8),例如通过实施以上方程式(6)或(8),来计算内插结果P。对于HDR输入,组合逻辑电路***1104根据方程式(24)计算内插结果P。
应注意,对于LDR和HDR输入,在端点分量C0和C1之间执行等效数学内插以计算中间内插结果
Figure BDA0002325994000000248
其中端点分量在LDR时是8位值并在HDR时是12位值。因此,对于LDR和HDR输入,内插器1102可以被配置成在i<64时使用权重索引i在输入C0和C1之间进行内插以计算中间内插结果
Figure BDA0002325994000000249
为使内插器1102能够对LDR和HDR输入进行操作,内插器1102被配置成对较大大小的12位HDR输入进行操作。应注意,8位LDR颜色端点分量C0和C1可以因此在输入到内插器1102之前被格式化,以将四个零位预置为最高有效位。即,8位LDR端点C0和C1可以用四个零填补以生成用于输入到内插器1102的12位值。这会生成用于内插器1102的12位输入,而不会改变8位端点分量的数值。此格式化可以由图11中未展示的格式化电路***(例如执行与恒定信号的级联的电路***)执行。
通过优化内插器1102以使用权重索引i的六个最低有效位执行内插并将i=64的情况视为异常结果(如上文参考图9所描述),内插器1102可以被实施为12×6位内插器。因此,与大小可以是16×6位的常规ASTC内插器相比,内插器1102可以支持LDR和HDR输入并仍呈现硬件大小和处理时间的降低。
分别由内插器1102和电路***918计算的中间内插结果
Figure BDA0002325994000000251
Figure BDA0002325994000000252
被输入到格式化电路***906中。格式化电路***906生成另外的中间内插结果C2″,其生成方式与上文参考图9所描述的方式相同。C2″的值由方程式(14)给出。
中间结果C2″然后被输入到第一电路分支1106中。第一电路分支包括以与上文参考图9所描述的方式相同的方式操作的移位器908、逻辑单元910和右移位器912。第一电路分支1106输出内插结果C2 v,对于LDR颜色端点分量C0和C1,所述内插结果等于由方程式(19)指定的P值。即,对于LDR范围输入,第一电路分支1106生成由下式给出的内插结果C2 v
Figure BDA0002325994000000253
在此示例中,中间结果C2″还被输入到第二电路分支1108中。第二电路分支包括逻辑单元1110和右移位器1112。因为此分支仅涉及对HDR输入的格式化,其仅在sRGB转换被禁用时才正确地工作,所以不会对sRGB逻辑进行连接或预配。换句话说,第二电路分支1108并不接收sRGB信号以作为输入。逻辑单元1110用以将固定数值常量与接收到的输入C2″相加以生成另外的中间结果C2 vi。在此示例中,所述数值常量为‘2’。因此,逻辑单元1110可以是加法器单元。
因此,逻辑单元1110从中间结果C2″生成由下式给出的输出中间结果C2 vi
Figure BDA0002325994000000254
中间结果C2 vi然后被输入到移位器1112中,移位器1112用以将输入向右移位两位以生成由下式给出的内插结果C2 vii
Figure BDA0002325994000000262
因此,对于HDR输入,从(21)可以看出,第二电路分支输出由下式给出的内插结果C2 vii
Figure BDA0002325994000000261
方程式(28)与方程式(24)以及方程式(25)与方程式(19)的比较验证:第一电路分支1106在颜色端点分量C0和C1是LDR时输出正确的LDR内插结果,并且第二电路分支1108在颜色端点分量C0和C1是HDR且sRGB转换被禁用时输出正确的HDR内插结果。因为可能不会在HDR模式下执行sRGB转换,所以当sRGB转换被启用时来自分支1108的输出在ASTC规范的背景中是不相关的。
从第一电路分支1106输出的LDR内插结果C2 v和从第二电路分支1108输出的HDR内插结果C2 vii被输入到选择单元1114中。选择单元1114还接收指示输入到二进制逻辑电路1100的颜色端点分量C0和C1是LDR输入还是HDR输入的信号以作为输入。此信号可以被称为动态范围(DR)指示信号。所述信号可以是二进制标志,其中所述标志的一个值指示颜色端点分量是LDR输入,并且所述标志的另一个值指示颜色端点分量是HDR输入。选择单元1114被配置成取决于接收到的DR指示信号而输出接收到的LDR内插结果C2 v 1106、HDR内插结果C2 vii中的一个以作为最终内插结果P。具体地说,选择单元1114被配置成在DR信号指示颜色端点分量是HDR时输出HDR内插结果C2 vii以作为内插结果P,并在DR信号指示端点分量是LDR时输出LDR内插结果C2 v以作为内插结果P。
图12展示支持LDR和HDR操作模式的替代二进制逻辑电路1200。电路1200是图10所展示的电路1000的修改版本,其包含分别用于计算LDR内插结果C2 V和HDR内插结果C2 vii的第一电路分支1106和第二电路分支1108。
电路1200包含生成中间结果C2的内插单元1120。具体来说,内插器1102如上文所描述而在i<64时根据方程式(9)生成结果
Figure BDA0002325994000000271
并且异常处置电路***918如上文所描述而在i=64时根据方程式(10)生成中间结果
Figure BDA0002325994000000272
组合逻辑电路***1204通过执行一个或多个逻辑处理操作来生成最终内插结果P。组合逻辑电路***1204包括格式化电路***1006、第一电路分支1106和第二电路分支1108。格式化电路***1006以上文参考图10所描述的相同方式生成另外的中间结果C2″。中间结果C2″被输入到电路分支1106和1108中。电路分支1106和1108用以以上文参考图11所描述的相同方式分别生成LDR内插结果C2 v和HDR内插结果C2 vii。选择单元1114然后如上文参考图11所描述而取决于动态范围(DR)信号而输出所述内插结果中的一个。因此,此处将不再次描述这些组件的描述。
在图12所展示的示例中,第二电路分支1108接收中间结果C2″以作为其输入。在替代示例中,第二电路分支可以接收从选择单元1008输出的中间结果C2′以作为其输入。这仍将会使电路分支1108能够针对HDR输入计算正确的内插结果,因为在那种情况下,到sRGB的转换被禁用并且因此C2′=C2″。一般来说,第二分支单元可以接收任何中间内插结果以作为其输入,对于HDR输入,所述中间内插结果具有等于C2的值。
上文参考图9到12所描述的内插单元用以通过使用8位或12位颜色端点分量Co和C1执行内插而计算16位端点分量E0和E1之间的内插结果。这与使用16位端点分量执行内插的常规内插单元相比,会使执行内插所需的内插器大小和处理时间能够降低。本发明人所获得的合成结果已发现,结合仅支持LDR模式的16×7位内插器的内插单元可以具备460μm2的电路面积和0.44ns的处理时间,并且结合支持LDR和HDR模式的16×7位内插器的内插单元可以具备503μm2的电路面积和0.44ns的处理时间。然而,已发现,根据本文中所描述的示例的仅支持LDR模式的二进制逻辑电路可以具备288μm2的电路面积和0.28ns的处理时间,表示37%的面积改进和36%的时间改进。根据本文中所描述的示例的支持LDR和HDR模式的二进制逻辑电路可以具备367μm2的电路面积和0.22ns的处理时间,表示27%的面积改进和49%的时间改进。
应了解,可以对本文中所描述的二进制逻辑电路进行修改。例如,可以提供组合逻辑电路***的各种示例以从由方程式(19)和(24)指定的由内插器计算的中间结果C2生成内插结果P。
尽管上述示例描述了内插器仅对权重索引的六个最低有效位进行操作的优化,但在其它示例中,内插器可以使用权重索引i的七个位执行内插。在这种情况下,不将值i=64视为异常结果,并且可以修正格式化电路***906以移除选择单元916,在此情况下,逻辑单元914的输出被视为输入到逻辑单元908中的中间结果C2″。换句话说,在这些示例中,取决于到sRGB的转换是否被启用,但不取决于权重索引的值,格式化电路***从接收到的输入值C2生成中间结果C2″。
图9到12的内插单元被展示为包括许多功能块。这仅是示意性的,且并不希望限定此类实体的不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式提供。应理解,在本文中被描述为由单元形成的中间值不需要由所述单元在任何时间点物理地生成,并且可以仅仅表示方便地描述由所述单元在其输入和输出之间执行的处理的逻辑值。
本文中所描述的内插单元可以在集成电路上以硬件体现。本文中所描述的内插单元可以被配置成执行本文中所描述的任一种方法。通常,上文所描述的功能、方法、技术或组件中的任一个可以实施于软件、固件、硬件(例如固定逻辑电路***)或其任何组合中。本文中可以使用术语“模块”、“功能性”、“组件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或其任何组合。在软件实施方案的情况下,模块、功能性、组件、元件、单元、块或逻辑表示程序代码,所述程序代码在处理器上执行时执行指定任务。本文中所描述的算法和方法可以由执行代码的一个或多个处理器执行,所述代码使所述(多个)处理器执行所述算法/方法。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其它技术来存储指令或其它数据并可以由机器存取的其它存储器装置。
如本文中所使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、定义集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL等编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其它软件环境中被适当地执行、处理、解释、编译、运行时,所述软件、固件、脚本、模块或库使支持可执行代码的计算机***的处理器执行由所述代码指定的任务。
处理器、计算机或计算机***可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、芯片上***、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机***可以包括一个或多个处理器。
本发明还意图涵盖限定如本文中所描述的硬件配置的软件,例如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可以提供一种计算机可读存储介质,在其上对呈集成电路定义数据集形式的计算机可读程序代码编码,所述计算机可读程序代码在集成电路制造***中被处理时将***配置成制造被配置成执行本文中所描述的任一种方法的内插单元,或制造包括本文中所描述的任何设备的内插器。集成电路定义数据集可以是例如集成电路描述。
可以提供一种在集成电路制造***处制造如本文中所描述的内插单元的方法。可以提供一种集成电路定义数据集,其在集成电路制造***中被处理时使制造内插单元的方法被执行。
集成电路定义数据集可呈计算机代码形式,例如作为网表、用于配置可编程芯片的代码,作为在任何层级定义集成电路的硬件描述语言,包含作为寄存器传送级(RTL)代码、作为例如Verilog或VHDL等高级电路表示,以及作为例如OASIS(RTM)和GDSII等低级电路表示。在逻辑上定义集成电路的更高级表示(例如RTL)可以在被配置成在软件环境的背景中生成集成电路的制造定义的计算机***处处理,所述软件环境包括电路元件的定义和用于组合那些元件以便生成由所述表示如此定义的集成电路的制造定义的规则。如通常软件在计算机***处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机***配置成生成集成电路的制造定义,以执行定义集成电路以便生成所述集成电路的制造定义的代码。
现在将关于图13描述在集成电路制造***处处理集成电路定义数据集以便将***配置成制造内插单元的示例。
图13展示被配置成制造如本文中的任一个示例中所描述的内插单元的集成电路(IC)制造***1302的示例。具体地说,IC制造***1302包括布局处理***1304和集成电路生成***1306。IC制造***1302被配置成接收IC定义数据集(例如定义如本文中的任一个示例中所描述的内插单元),处理IC定义数据集,并根据IC定义数据集生成IC(例如其体现如本文中的任一个示例中所描述的内插单元)。IC定义数据集的处理将IC制造***1302配置成制造体现如本文中的任一个示例中所描述的内插单元的集成电路。
布局处理***1304被配置成接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可以涉及合成RTL代码以确定要生成的电路的门级表示,例如就逻辑组件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)来说。通过确定逻辑组件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理***1304已确定电路布局时,它可以将电路布局定义输出到IC生成***1306。电路布局定义可以是例如电路布局描述。
如本领域中已知的,IC生成***1306根据电路布局定义来生成IC。例如,IC生成***1306可以实施生成IC的半导体装置制造过程,其可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩码的形式,其可以在光刻过程中用于根据电路定义来生成IC。替代地,提供给IC生成***1306的电路布局定义可以呈计算机可读代码的形式,IC生成***1306可以使用所述计算机可读代码来形成用于生成IC的合适掩码。
由IC制造***1302执行的不同过程可以全部在一个位置实施,例如由一方实施。替代地,IC制造***1302可以是分布式***,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成要生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩码;以及(iv)使用掩码来制造集成电路。
在其它示例中,在集成电路制造***处对集成电路定义数据集的处理可以将所述***配置成在不处理IC定义数据集以确定电路布局的情况下制造内插单元。例如,集成电路定义数据集可以定义可重新配置的处理器(例如FPGA)的配置,并且对所述数据集的处理可以将IC制造***配置成生成具有所述所定义配置的可重新配置的处理器(例如通过将配置数据加载到FPGA)。
在一些实施例中,集成电路制造定义数据集在集成电路制造***中被处理时可以使集成电路制造***生成如本文中所描述的装置。例如,由集成电路制造定义数据集以上文关于图13所描述的方式对集成电路制造***进行的配置可以制造如本文中所描述的装置。
在一些示例中,集成电路定义数据集可以包含在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图13所示的示例中,IC生成***可以由集成电路定义数据集进一步配置成在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到所述集成电路上,或者以其它方式向集成电路提供与集成电路一起使用的程序代码。
本文中所描述的图形处理***和/或内插单元可以在集成电路上以硬件体现。本文中所描述的图形处理***可以被配置成执行本文中所描述的任何方法。
在与已知的实施方案相比时,在本申请中阐述的概念在装置、设备、模块和/或***中(以及在本文中实施的方法中)的实施可以引起性能改进。性能改进可以包含计算性能提高、延迟缩短、吞吐量增大和/或功率消耗降低中的一个或多个。在制造此类装置、设备、模块和***(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方案的性能,但使用更少的硅。例如,这可以通过以串行方式再使用功能块或在装置、设备、模块和/或***的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和***的物理实施方案的改进(例如硅面积减小)的概念可以针对改进的性能进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。
在与已知的实施方案相比时,在本申请中阐述的概念在装置、设备、模块和/或***中(以及在本文中实施的方法中)的实施可以引起性能改进。性能改进可以包含计算性能提高、延迟缩短、吞吐量增大和/或功率消耗降低中的一个或多个。在制造此类装置、设备、模块和***(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方案的性能,但使用更少的硅。例如,这可以通过以串行方式再使用功能块或在装置、设备、模块和/或***的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和***的物理实施方案的改进(例如硅面积减小)的概念可以针对改进的性能进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个实例来完成。
申请人据此独立地公开了本文中所描述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来执行,而不管此类特征或特征的组合是否解决本文中所公开的任何问题,并且无需对权利要求书的范围进行限制。申请人指出本发明的各方面可以由任何此类单独的特征或特征组合组成。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

Claims (20)

1.一种用于使用加权索引i在两个端点值E0和E1之间执行内插计算以生成内插结果P的二进制逻辑电路,所述值E0和E1分别由自适应可缩放纹理压缩(ASTC)颜色端点值C0和C1形成,所述颜色端点值C0和C1是低动态范围(LDR)或高动态范围(HDR)值,所述电路包括:
内插单元,其被配置成使用所述加权索引i在所述颜色端点值C0和C1之间执行内插以生成第一中间内插结果C2
组合逻辑电路***,其被配置成接收所述内插结果C2并执行一个或多个逻辑处理操作以根据以下方程式计算所述内插结果P:(1)当所述内插结果不与sRGB颜色空间兼容并且所述颜色端点值是LDR值时为
Figure FDA0002325993990000011
(2)当所述内插结果与sRGB颜色空间兼容并且所述颜色端点值是LDR值时为
Figure FDA0002325993990000012
Figure FDA0002325993990000013
以及(3)当所述颜色端点值是HDR值时为P=(C2+2)>>2。
2.根据权利要求1所述的二进制逻辑电路,其中使用所述加权索引i在所述两个端点值E0和E1之间进行的所述内插计算是根据方程式p=(E0.(64-i)+E1.i+32)/64指定的,其中p等于所述内插结果。
3.根据权利要求1或2所述的二进制逻辑电路,其中所述内插单元包括内插器,所述内插器被配置成使用所述加权索引i在所述颜色端点值C0和C1之间执行所述内插以针对i的非异常值根据方程式C2=C0.(64-i)+C1.i生成所述内插结果C2
4.根据权利要求3所述的二进制逻辑电路,其中所述内插单元进一步包括异常处置电路***,所述异常处置电路***被配置成针对i的异常值生成所述内插结果C2
5.根据权利要求4所述的二进制逻辑电路,其中所述异常处置电路***被配置成针对i的异常值根据方程式C2=C1.i生成所述内插结果C2
6.根据权利要求3所述的二进制逻辑电路,其中所述加权索引包括7位,并且所述内插器被配置成使用所述加权索引的6个最低有效位在所述颜色端点值C0和C1之间执行所述内插。
7.根据权利要求1或权利要求2所述的二进制逻辑电路,其中所述组合逻辑电路***包括:
格式化电路***,其被配置成取决于所述内插结果是否与sRGB颜色空间兼容而从值C0、C1和C2的集合生成第二中间内插结果;
第一电路分支,其被配置成根据以下方程式从所述第二中间内插结果计算LDR内插结果:当所述内插结果不与sRGB颜色空间兼容并且所述颜色端点值是LDR值时为
Figure FDA0002325993990000021
以及当所述内插结果与sRGB颜色空间兼容并且所述颜色端点值是LDR值时为
Figure FDA0002325993990000022
第二电路分支,其被配置成根据以下方程式从中间结果计算HDR内插结果:当所述颜色端点值是HDR值时为P=(C2+2)>>2,所述中间结果在所述颜色端点值是HDR值时具有等于C2的值;以及
选择单元,其被配置成取决于所述颜色端点值C0和C1是LDR值还是HDR值而在所述LDR内插结果和所述HDR内插结果之间进行选择以作为所述内插结果P。
8.根据权利要求7所述的二进制逻辑电路,其中所述第一电路分支包括:
第一逻辑单元,其被配置成将所述第二中间内插结果向左移位等于所述颜色端点值C0和C1中的每一个的位数目的位数目并将移位结果与第一数值常量相加以生成第三中间内插结果;
第二逻辑单元,其被配置成在所述内插结果与sRGB颜色空间兼容时将所述第二中间内插结果与所述第三内插结果相加;以及
右移位器,其被配置成将所述第二逻辑单元的输出向右移位第一指定位数目以生成LDR内插结果。
9.根据权利要求8所述的二进制逻辑电路,其中所述第一指定位数目等于6。
10.根据权利要求8所述的二进制逻辑电路,其中所述第一数值常量是32。
11.根据权利要求7所述的二进制逻辑电路,其中所述格式化电路***被配置成将所述第二中间内插结果生成为:(i)当所述内插结果不与sRGB颜色空间兼容时为所述第一中间内插结果C2;(ii)当所述内插结果与sRGB颜色空间兼容时为所述第一中间内插结果C2与数值常量的总和。
12.根据权利要求7所述的二进制逻辑电路,当依附于权利要求4时,其中所述格式化电路***被配置成将所述第二中间内插结果生成为:(i)当所述内插结果不与sRGB颜色空间兼容并且所述加权索引的值不等于异常值时为从所述内插器输出的所述内插结果C2;(ii)当所述内插结果与sRGB颜色空间兼容并且加权值的值不等于异常值时为从所述内插器输出的所述内插结果C2与数值常量的总和;(iii)当所述内插结果不与sRGB颜色空间兼容并且所述加权索引的值等于异常值时为从所述异常处置电路***输出的所述内插结果C2;以及iv)当所述内插结果与sRGB颜色空间兼容并且所述加权值的值等于异常值时为从所述异常处置电路***输出的所述内插结果C2与数值常量的总和。
13.根据权利要求7所述的二进制逻辑电路,当依附于权利要求4时,其中所述格式化电路***包括:
选择单元,其被配置成取决于所述加权索引的值是否等于异常值而在以下之间进行选择:(i)取决于从所述异常处置电路***输出的所述内插结果C2的第一输入;以及(ii)取决于从所述内插器输出的所述内插结果C2的第二输入,所述第二中间内插结果是从所述选择单元的输出生成的。
14.根据权利要求4所述的二进制逻辑电路,其中所述第二电路分支包括:
第三逻辑单元,其被配置成将第二数值常量与所述中间结果相加以形成输出,所述中间结果在所述颜色端点值是HDR值时具有等于C2的值;以及
右移位器,其被配置成将所述第三逻辑单元的输出向右移位第二指定位数目以生成HDR内插结果。
15.根据权利要求14所述的二进制逻辑电路,其中所述第二数值常量等于2。
16.根据权利要求14所述的二进制逻辑电路,其中所述第二指定位数目是2。
17.一种使用二进制逻辑电路来使用加权索引i在两个端点值E0和E1之间执行内插计算以生成内插结果P的方法,所述值E0和E1分别由自适应可缩放纹理压缩(ASTC)颜色端点值C0和C1形成,所述颜色端点值0和C1是低动态范围(LDR)或高动态范围(HDR)值,所述方法包括:
在所述二进制逻辑电路的内插单元处使用所述加权索引i在所述颜色端点值C0和C1之间执行内插以生成第一中间内插结果C2
在所述二进制逻辑电路的组合逻辑电路***处接收所述内插结果C2,并执行一个或多个逻辑处理操作以根据以下方程式计算所述内插结果P:(1)当所述内插结果不与sRGB颜色空间兼容并且所述颜色端点值是LDR值时为
Figure FDA0002325993990000041
(2)当所述内插结果与sRGB颜色空间兼容并且所述颜色端点值是LDR值时为
Figure FDA0002325993990000042
Figure FDA0002325993990000043
以及(3)当所述颜色端点值是HDR值时为P=(C2+2)>>2。
18.根据权利要求17所述的方法,其中使用所述加权索引i在所述两个端点值E0和E1之间进行的所述内插计算是根据方程式p=(E0.(64-i)+E1.i+32)/64指定的,其中p等于所述内插结果。
19.根据权利要求17或18所述的方法,其中在所述内插单元处执行所述内插的步骤包括使用所述加权索引i来针对i的非异常值根据方程式C2=C0.(64-i)+C1.i使用内插器生成所述内插结果C2
20.一种计算机可读存储介质,其上存储有二进制逻辑电路的计算机可读描述,所述二进制逻辑电路用于使用加权索引i在两个端点值E0和E1之间执行内插计算以生成内插结果P,所述值E0和E1分别由自适应可缩放纹理压缩(ASTC)颜色端点值C0和C1形成,所述颜色端点值C0和C1是低动态范围(LDR)或高动态范围(HDR)值,所述电路包括:
内插单元,其被配置成使用所述加权索引i在所述颜色端点值C0和C1之间执行内插以生成第一中间内插结果C2;
组合逻辑电路***,其被配置成接收所述内插结果C2并执行一个或多个逻辑处理操作以根据以下方程式计算所述内插结果P:(1)当所述内插结果不与sRGB颜色空间兼容并且所述颜色端点值是LDR值时为
Figure FDA0002325993990000044
(2)当所述内插结果与sRGB颜色空间兼容并且所述颜色端点值是LDR值时为
Figure FDA0002325993990000045
以及(3)当所述颜色端点值是HDR值时为P=(C_2+2)>>2。
CN201911321670.2A 2018-12-20 2019-12-19 Astc内插 Active CN111354049B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1820837.1 2018-12-20
GB1820837.1A GB2575135B (en) 2018-12-20 2018-12-20 ASTC interpolation

Publications (2)

Publication Number Publication Date
CN111354049A true CN111354049A (zh) 2020-06-30
CN111354049B CN111354049B (zh) 2022-05-24

Family

ID=65364528

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911321670.2A Active CN111354049B (zh) 2018-12-20 2019-12-19 Astc内插

Country Status (4)

Country Link
US (3) US11113786B2 (zh)
EP (1) EP3672246B1 (zh)
CN (1) CN111354049B (zh)
GB (1) GB2575135B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112489146A (zh) * 2020-12-10 2021-03-12 苏州速显微电子科技有限公司 一种基于图像分布的定长纹理压缩数据存储***
CN112489147A (zh) * 2020-12-10 2021-03-12 苏州速显微电子科技有限公司 一种基于图像分布的纹理压缩***

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108007A (en) * 1997-10-09 2000-08-22 Silicon Graphics, Inc. Method, system, and computer program product for increasing interpolation precision using multi-channel texture mapping
CN103533364A (zh) * 2012-07-04 2014-01-22 Arm有限公司 进行数据编码和解码的方法和设备
CN104995903A (zh) * 2013-02-21 2015-10-21 皇家飞利浦有限公司 改进的hdr图像编码和解码方法及设备
CN106464892A (zh) * 2014-05-28 2017-02-22 皇家飞利浦有限公司 用于对hdr图像进行编码的方法和装置以及用于使用这样的编码图像的方法和装置
CN107203974A (zh) * 2016-03-16 2017-09-26 汤姆逊许可公司 扩展的高动态范围hdr到hdr色调映射的方法、装置和***
CN107633538A (zh) * 2016-07-18 2018-01-26 想象技术有限公司 Mip映射压缩

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2562041B (en) * 2017-04-28 2020-11-25 Imagination Tech Ltd Multi-output decoder for texture decompression

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108007A (en) * 1997-10-09 2000-08-22 Silicon Graphics, Inc. Method, system, and computer program product for increasing interpolation precision using multi-channel texture mapping
CN103533364A (zh) * 2012-07-04 2014-01-22 Arm有限公司 进行数据编码和解码的方法和设备
CN104995903A (zh) * 2013-02-21 2015-10-21 皇家飞利浦有限公司 改进的hdr图像编码和解码方法及设备
CN106464892A (zh) * 2014-05-28 2017-02-22 皇家飞利浦有限公司 用于对hdr图像进行编码的方法和装置以及用于使用这样的编码图像的方法和装置
CN107203974A (zh) * 2016-03-16 2017-09-26 汤姆逊许可公司 扩展的高动态范围hdr到hdr色调映射的方法、装置和***
CN107633538A (zh) * 2016-07-18 2018-01-26 想象技术有限公司 Mip映射压缩

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112489146A (zh) * 2020-12-10 2021-03-12 苏州速显微电子科技有限公司 一种基于图像分布的定长纹理压缩数据存储***
CN112489147A (zh) * 2020-12-10 2021-03-12 苏州速显微电子科技有限公司 一种基于图像分布的纹理压缩***

Also Published As

Publication number Publication date
CN111354049B (zh) 2022-05-24
EP3672246B1 (en) 2021-07-14
GB2575135A (en) 2020-01-01
US20230394626A1 (en) 2023-12-07
GB201820837D0 (en) 2019-02-06
US11734794B2 (en) 2023-08-22
GB2575135B (en) 2021-03-24
US20210358080A1 (en) 2021-11-18
US11113786B2 (en) 2021-09-07
US20200202489A1 (en) 2020-06-25
EP3672246A1 (en) 2020-06-24

Similar Documents

Publication Publication Date Title
US11836830B2 (en) Multi-output decoder for texture decompression
JP2022058660A (ja) 畳み込みニューラルネットワークハードウエア構成
US20230394626A1 (en) ASTC Interpolation
CN112422981B (zh) 图像数据压缩
US11544892B2 (en) Decoder unit for texture decompression
CN115393493A (zh) 具有动态调度的纹理过滤
CN111355862B (zh) 自适应可缩放纹理压缩插值的电路、方法以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant