En una GPU real, en lugar de tener múltiples núcleos que intentan leer / escribir la misma región del búfer de profundidad e intentar sincronizar entre ellos, el búfer de profundidad se divide en mosaicos (como 16 × 16 o 32 × 32), y cada uno el mosaico se asigna a un solo núcleo. Ese núcleo es responsable de toda la rasterización en ese mosaico: cualquier triángulo que toque ese mosaico será rasterizado (dentro de ese mosaico) por el núcleo propietario. Entonces no hay interferencia entre los núcleos, y no es necesario que se sincronicen al acceder a su parte del framebuffer.
Esto implica que los triángulos que tocan múltiples mosaicos necesitarán ser rasterizados por múltiples núcleos. Entonces, hay un paso de redistribución de trabajo entre el procesamiento de geometría (operaciones en vértices y triángulos) y el procesamiento de píxeles.
En la etapa de geometría, cada núcleo puede procesar una porción de primitivas de entrada; luego, para cada primitivo, puede determinar rápidamente qué mosaicos toca el primitivo (esto se denomina "rasterización gruesa") y agregar el primitivo a una cola para cada núcleo que posee uno de los mosaicos afectados.
Luego, en la etapa de píxeles, cada núcleo puede leer la lista de primitivas en su cola, calcular la cobertura de píxeles para los mosaicos que posee el núcleo y proceder a las pruebas de profundidad, sombreado de píxeles y actualización del framebuffer, sin necesidad de ninguna coordinación adicional. con otros núcleos