linear,swizzle,tile

linear,swizzle,tile是有些类似的三个属性,其中linear和swizzle是关于贴图的,tile是关于内存的。

linear一般是默认的,也就是贴图的texel从左上到右下一行行的存储。

swizzle是指贴图的一种属性,一般采用2x2的小quad 按照Z字型顺序来存储4个象素,类似:

0     1    |    4     5
2     3    |    6     7

 这样,这样的优势就是相邻的几个texel在内存中也是比较相邻的,当然是很有局限性的,但是相比linear已经有很大提高。

tile: 最常用于对于render target的内存设置,宗旨是让相邻的象素在内存中也是相邻的,以便提高读写效率。

它的做法有:

在一个规定大小的block中linear存放,可以看作是一种“超级”swizzle。

在有硬件支持的情况下,把block可以分成多个bank,相邻的bank放到不同的memory partition中,这样就可以让内存访问并行化。

另外就是可以进行错位设置,让depth和color不在相同bank中,也可以提高memory access 并行化。

必要情况下还需要地址转换。

速度上,tile比非tile快很多,swizzle的sample texture比linear快。

你可能感兴趣的:(linear,swizzle,tile)