В реальном графическом процессоре вместо нескольких ядер, пытающихся считывать / записывать одну и ту же область буфера глубины и пытаться синхронизироваться между ними, буфер глубины делится на фрагменты (например, 16 × 16 или 32 × 32), и каждое плитка назначается одному ядру. Затем это ядро отвечает за всю растеризацию в этой плитке: любые треугольники, которые касаются этой плитки, будут растеризованы (внутри этой плитки) ядром-владельцем. Тогда нет помех между ядрами, и им не нужно синхронизироваться при доступе к своей части кадрового буфера.
Это означает, что треугольники, которые касаются нескольких плиток, должны быть растеризованы несколькими ядрами. Итак, существует шаг перераспределения работы между обработкой геометрии (операции над вершинами и треугольниками) и обработкой пикселей.
На этапе геометрии каждое ядро может обрабатывать кусок входных примитивов; затем для каждого примитива он может быстро определить, к каким плиткам прикоснется примитив (это называется «грубая растеризация»), и добавить примитив в очередь для каждого ядра, которому принадлежит одна из затронутых плиток.
Затем на этапе пикселей каждое ядро может считывать список примитивов в своей очереди, вычислять покрытие пикселей для тайлов, которыми владеет ядро, и приступать к тестированию глубины, затенению пикселей и обновлению кадрового буфера без необходимости какой-либо дальнейшей координации с другими ядрами.