Answers:
在真实的GPU中,将深度缓冲区划分为图块(例如16×16或32×32),而不是让多个内核尝试读取/写入深度缓冲区的相同区域并尝试在它们之间进行同步,磁贴被分配给单个核心。然后,该核心负责该图块中的所有栅格化:所有与该图块接触的三角形都将被拥有的核心(在该图块内)栅格化。这样,内核之间就不会产生干扰,并且在访问帧缓冲区的一部分时也无需它们进行同步。
这意味着接触多个图块的三角形将需要由多个核心进行栅格化。因此,在几何处理(对顶点和三角形的操作)和像素处理之间存在工作重新分配步骤。
在几何阶段,每个核心可能会处理大量的输入图元。然后,对于每个图元,它可以快速确定图元触摸了哪些图块(这称为“粗光栅化”),并将图元添加到拥有一个受影响图块之一的每个核心的队列中。
然后,在像素阶段,每个内核都可以读出其队列中的图元列表,计算该内核拥有的图块的像素覆盖率,然后进行深度测试,像素着色和更新帧缓冲区,而无需任何进一步的协调与其他核心。