Введение
Интегрированная схема для быстрой синхронизации данных.
Блиттер – это схема, иногда в виде сопроцессора или логического блока на микропроцессоре, предназначенная для быстрого перемещения и модификации данных в памяти компьютера. Блиттер может копировать большие объемы данных из одной области памяти в другую относительно быстро и параллельно с центральным процессором, освобождая его более сложные возможности для других операций. Типичным применением блиттера является перемещение растрового изображения, например, окон и значков в графическом пользовательском интерфейсе или изображений и фонов в 2D видеоигре. Название происходит от операции "bit blit" (побитового переноса) в компьютере Xerox Alto 1973 года. Операция "блит" – это не просто копирование памяти, поскольку она может включать данные, не выровненные по байтам (отсюда и "bit" в "bit blit"), обработку прозрачных пикселей (пикселей, которые не должны перезаписывать целевую область) и различные способы комбинирования исходных и целевых данных. Блиттеры в значительной степени уступили место программируемым графическим процессорам.
История
На компьютерах без аппаратного ускорения растровой графики, к которым относятся большинство домашних компьютеров 1970-х и 1980-х годов, а также IBM PC и совместимые с ними вплоть до середины 1990-х, буфер кадров обычно хранится в памяти, доступной для процессора. Рисование выполняется путем обновления буфера кадров посредством программного обеспечения. Для простых графических операций, таких как наложение меньшего изображения на большее (например, в видеоигре) или отрисовка заполненного прямоугольника, требуется обработка больших объемов памяти, и значительное количество тактов уходит на выборку и декодирование коротких циклов инструкций загрузки/сохранения. Для процессоров без кэша требования к шине для инструкций столь же важны, как и для данных. Чтобы уменьшить размер буфера кадров, один байт может не соответствовать одному пикселю, а содержать 8 однобитных пикселей, 4 двухбитных пикселя или пару 4-битных пикселей. Работа с упакованными пикселями требует дополнительных операций сдвига и маскирования со стороны процессора. Блиттеры были разработаны для разгрузки процессора от повторяющихся задач копирования данных или заполнения блоков памяти, выполняя их быстрее, чем это мог бы сделать процессор. Это может выполняться параллельно с работой процессора, а также обрабатывать специальные случаи, которые были бы значительно медленнее при ручном кодировании, например, пропускать пиксели, отмеченные как прозрачные, или обрабатывать данные, не выровненные по границе байта.
Другие подходы
Аппаратные спрайты — это небольшие растровые изображения, которые могут быть позиционированы независимо друг от друга и объединяются с фоном непосредственно видеочипом в процессе отображения. Буфер кадра при этом не изменяется. Недостатком спрайтов является ограничение на количество движущихся графических объектов на строку развертки, которое может варьироваться от трех (Atari 2600) до восьми (Commodore 64 и 8-битные компьютеры Atari) и быть значительно выше для 16-битных консолей и аркадных систем (например, Neo Geo может отображать 96 спрайтов на строку), а также невозможность обновления постоянного растрового изображения (что делает их неэффективными для общего ускорения графического интерфейса пользователя на настольных компьютерах).