GPU是高度并行的,
并行的读,并行的写,整个管线阶段也是并行执行的,
当对一个三角形着色时,在写到片元时,无法预测他们的顺序,所以图形管线实际上是一个一系列并行的阶段。
tiled gpu在光栅化时,每个tiled相互独立
一个tile的片元可能比之前进入的要更早着色(乱序)
vertex cache miss时,vertex shaders可能重复执行,但是但是。。在到了混合阶段,写入到frame buffer时可以保证顺序是按照vertex读入顺序的。。
Linear memory对于纹理并不高效。。
加入按照光栅顺序存储纹理,如果绘制三角形应用纹理,那么采样可能要跨多行。。每行读一点。以及读cache不友好。
如果按照8*8 tile 的存储那么无论是cache还是采样,换行更少。。
这就是每个gpu由自己的不同的做法,即iamge layout里的最优布局,这也就是为什么image layout是最优布局的转换无法保留之前的数据。。。
通过barrier可以变换iamg