由于绘图渲染命令可以修饰状态,所以执行的顺序就显得至关重要。GPU在执行这些命令是非常有序的,这样做有利于命名按序开始、按序结束。当某个渲染命令平行操作时超过了输入数据,那么输出就必须按序向后进行。几何着色的数据输出流是可变的,所以几何着色需要特别大的FIFO ,以维持数据执行顺序以及最小化数据堵塞。
Larrabee支持多PrimSet前端处理时是平行执行。根据RTset表中的属性,某个控制处理器可以决定在某个时间点、哪个PrimSet应该被渲染,并且把这些PrimSet单元放入活跃名单。Larrabee核心正是从这份活跃名单中调用PrimSet单元执行前端工作的。Larrabee每个核心在各自的PrimSet单元中工作。当核心的工作完成之后,Larrabee核心将会再次从活跃名单中调用PrimSet。每颗核心使用各自bin内的子集,这样就可以消除与其他前端核心之间的冲突。PrimSet的连续ID号被写入bin内,以便渲染过程在后端处理是自动恢复数据的处理顺序。
下图描述的是某个单前端核心的处理阶段。第一步是识别每个primitive单元内的vertices单元。这个过程可能有点复杂,因为index buffer允许vertex buffer中的vertices随意映射到primitive单元,比如说有效存储网状物数据。然后,必要的vertices会随着在这些vertices单元上运行vertex shader而被改变。改变之后的vertices将会涌入主要的存储单元。然后,为了避免有价值的数据被污染,这些数据将会主动被驱逐出L2缓存,因为这些有用数据到后端处理时才会再次被利用。最后,几何着色将会开始执行,之后依次是frustum、back-face、culling,最后是clipping。
这是一种可以在前端处理时执行数据处理的运算法制,而且可以把这些数据存储到bin里。这样就可以确保一个不错的加载平衡,即便这个bin很小,而且还存储了大量的三角形图像,也是如此。光栅化可以在前端处理时进行,当然也可以在后端处理时进行,因为Larrabee采用的是软件光栅化。