Считывание данных с GPU (readback)
Копирование данных с GPU обратно на CPU — тривиально в написании и печально известно остановками конвейера.
CPU и GPU обычно работают асинхронно: CPU ставит команды в очередь и убегает вперёд, а GPU отстаёт на кадр и больше. Readback ломает эту схему: если CPU хочет прочитать отрисованный пиксель, результат вычислений или occlusion query, ему приходится ждать, пока GPU действительно закончит, и такая синхронизация может съесть весь запас времени кадра. Ранние вызовы glReadPixels славились именно этим.
Лекарство — никогда не читать текущий кадр. Данные копируют в staging-буфер и забирают результат через пару кадров, когда GPU всё равно уже прошёл нужную точку; стандартный приём — кольцо из нескольких staging-буферов. GPU-пикинг, скриншоты и автоэкспозиция по гистограмме опираются на отложенный readback.