Буфер кадра

редактировать
Буфер кадра Sun TGX

A буфер кадра (буфер кадра или иногда хранилище кадров ) - это часть памяти с произвольным доступом (RAM), содержащая битовую карту, которая управляет отображением видео. Это буфер памяти, содержащий данные, представляющие все пиксели в полном видеокадре. Современные видеокарты содержат в своих ядрах схемы фреймбуфера. Эта схема преобразует растровое изображение в памяти в видеосигнал , который может отображаться на мониторе компьютера.

В вычислениях, экранный буфер является частью компьютерной памяти, используемой компьютерным приложением для представления отображаемого контента. на экране компьютера . Экранный буфер также может называться видеобуфер, буфер регенерации или для краткости буфер регенерации . Буферы экрана следует отличать от видеопамяти. С этой целью также используется термин буфер вне экрана .

Информация в буфере обычно состоит из значений цвета для каждого пикселя, отображаемого на дисплее. Значения цвета обычно хранятся в 1-битном двоичном (монохромном), 4-битном палитрах, 8-битных палитрах, 16-битных высоких цветах и 24- бит форматы True Color. Дополнительный альфа-канал иногда используется для хранения информации о прозрачности пикселей. Общий объем памяти, необходимый для буфера кадра, зависит от разрешения выходного сигнала и от глубины цвета или размера палитры.

Содержание

  • 1 История
  • 2 Режимы отображения
  • 3 Цветовая палитра
  • 4 Доступ к памяти
  • 5 RAM на видеокарте
  • 6 Виртуальные буферы кадра
  • 7 Перелистывание страниц
  • 8 Графические ускорители
  • 9 Сравнения
  • 10 См. Также
  • 11 Ссылки
  • 12 Внешние ссылки

История

Образец памяти на SWAC ЭЛТ на лампе Вильямса в 1951 г.

Компьютерные исследователи долго обсуждали теоретические преимущества фреймбуфера, но не смогли создать машину с достаточным объемом памяти по экономически приемлемой цене. В 1947 году компьютер Manchester Baby использовал трубку Вильямса, позже трубку Вильямса-Килбурна, для хранения 1024 битов на электронно-лучевой трубке (ЭЛТ) памяти и отображается на втором ЭЛТ. Другие исследовательские лаборатории изучали эти методы: Лаборатория Линкольна Массачусетского технологического института достигла 4096 дисплеев в 1950 году.

Цветное сканированное изображение было реализовано в конце 1960-х годов, названное Brookhaven RAster Display (BRAD), который использовал барабанную память и телевизионный монитор. В 1969 году А. Майкл Нолл из Bell Labs реализовал сканированный дисплей с кадровым буфером, используя память на магнитном сердечнике. Позже система Bell Labs была расширена для отображения изображения с глубиной цвета в три бита на стандартном цветном ТВ-мониторе.

В начале 1970-х годов разработка МОП-памяти (металл-оксид-полупроводниковая память) интегральных схем микросхем, в частности микросхемы с высокой плотностью DRAM (динамическая память с произвольным доступом ) с объемом памяти не менее 1 кб, что сделало практичным создание первых время, система цифровой памяти с фреймбуферами, способными хранить стандартное видеоизображение. Это привело к разработке системы SuperPaint Ричардом Шоупом в Xerox PARC в 1972 году. Шуп смог использовать кадровый буфер SuperPaint для создания первых цифровых видео. -система захвата. Синхронизируя выходной сигнал с входным, Shoup смог перезаписать каждый пиксель данных по мере его сдвига. Shoup также экспериментировал с изменением выходного сигнала, используя таблицы цветов. Эти таблицы цветов позволили системе SuperPaint воспроизводить широкий спектр цветов за пределами ограниченных 8-битных данных, которые она содержала. Эта схема позже станет обычным явлением в кадровых буферах компьютеров.

В 1974 году Evans Sutherland выпустили первый коммерческий кадровый буфер Picture System стоимостью около 15 000 долларов. Он был способен обеспечивать разрешение до 512 на 512 пикселей в 8-битном градациях серого и стал благом для исследователей графики, у которых не было ресурсов для создания собственного фреймбуфера. Нью-Йоркский технологический институт позже создаст первую 24-битную цветовую систему с использованием трех кадровых буферов Evans Sutherland. Каждый кадровый буфер был подключен к цветному выходу RGB (один для красного, один для зеленого и один для синего) с помощью миникомпьютера Digital Equipment Corporation PDP 11/04 , управляющего тремя устройствами как один.

В 1975 году британская компания Quantel выпустила первый коммерческий полноцветный вещательный фреймбуфер Quantel DFS 3000. Впервые он был использован в телевизионных трансляциях Олимпийских игр 1976 года в Монреале для создания вставки «картинка в картинке» олимпийского пылающего факела, в то время как остальная часть изображения изображает бегуна, входящего на стадион.

Быстрое совершенствование технологии интегральных схем сделало возможным для многих домашних компьютеров конца 1970-х годов содержать буферы кадра с низкой глубиной цвета. Сегодня почти все компьютеры с графическими возможностями используют кадровый буфер для генерации видеосигнала. Компьютеры Amiga, созданные в 1980-х годах, отличались особым вниманием к дизайну и графической производительности и включали уникальный кадровый буфер Hold-And-Modify, способный отображать 4096 цветов.

Фреймбуфер также стал популярным в высокопроизводительных рабочих станциях и игровых платах в течение 1980-х годов. SGI, Sun Microsystems, HP, DEC и IBM выпустили фреймбуферы для своих компьютеров рабочих станций в этот период. Эти кадровые буферы обычно были гораздо более высокого качества, чем можно было найти в большинстве домашних компьютеров, и регулярно использовались на телевидении, печати, компьютерном моделировании и трехмерной графике. Кадровые буферы также использовались Sega для своих высококачественных аркадных плат , которые также были более высокого качества, чем на домашних компьютерах.

Режимы отображения

Буфер кадра Sun cgsix

Буфер кадра, используемый в персональных и домашних вычислениях, часто имеет наборы определенных режимов, в которых может работать буфер кадра. Эти режимы изменяют конфигурацию оборудования для вывода различных разрешений, глубины цвета, разметки памяти и частоты обновления таймингов.

В мире машин и операционных систем Unix от таких удобств обычно отказывались в пользу прямого управления настройками оборудования. Эта манипуляция была гораздо более гибкой в ​​том смысле, что можно было получить любое разрешение, глубину цвета и частоту обновления - ограничиваясь только памятью, доступной для фреймбуфера.

К сожалению, побочным эффектом этого метода было то, что устройство отображения могло выходить за пределы своих возможностей. В некоторых случаях это приводило к повреждению оборудования дисплея. Чаще всего это просто искаженное и непригодное для использования изображение. Современные ЭЛТ-мониторы решают эту проблему за счет внедрения схемы защиты. При изменении режима отображения монитор пытается получить блокировку сигнала на новой частоте обновления. Если монитор не может получить блокировку сигнала или если сигнал выходит за пределы диапазона его конструктивных ограничений, монитор проигнорирует сигнал буфера кадра и, возможно, представит пользователю сообщение об ошибке.

ЖК-мониторы, как правило, содержат похожие схемы защиты, но по разным причинам. Поскольку ЖК-экран должен выполнять цифровую выборку сигнала дисплея (тем самым имитируя электронный луч), любой сигнал, выходящий за пределы диапазона, не может быть физически отображен на мониторе.

Цветовая палитра

Буфер кадра традиционно поддерживает большое количество цветовых режимов. Из-за высокой стоимости памяти в большинстве ранних буферов кадра использовалась 1-битная (2-цветная), 2-битная (4-цветная), 4-битная (16-цветная) или 8-битная (256-цветная) глубины цвета. Проблема с такой маленькой глубиной цвета заключается в том, что невозможно воспроизвести полный диапазон цветов. Решением этой проблемы был индексированный цвет, который добавляет таблицу поиска в буфер кадра. Каждый цвет, хранящийся в памяти фреймбуфера, действует как индекс цвета. Таблица поиска представляет собой палитру с ограниченным количеством различных цветов.

Вот типичное индексированное 256-цветное изображение и его собственная палитра (показанная в виде прямоугольника образцов):

Пример адаптивной 8-битной палитры image.png Адаптивная 8-битная палитра.png

В некоторых проектах также можно было записывать данные в LUT (или переключаться между существующими палитрами) на ходу, что позволяет разделить изображение на горизонтальные полосы с собственной палитрой и, таким образом, визуализировать изображение с гораздо более широкой палитрой. Например, при просмотре фотографии, снятой на открытом воздухе, изображение можно разделить на четыре полосы: верхняя с акцентом на тона неба, следующая с оттенками листвы, следующая с тонами кожи и одежды и нижняя с основными цветами. Это требовало, чтобы каждая палитра имела перекрывающиеся цвета, но тщательно выполненная, обеспечивала большую гибкость.

Доступ к памяти

Хотя доступ к кадровым буферам обычно осуществляется через отображение памяти непосредственно в пространство памяти ЦП, это не единственный метод, с помощью которого к ним можно получить доступ. Фреймбуферы широко различаются по методам доступа к памяти. Вот некоторые из наиболее распространенных:

  • Отображение всего буфера кадра в заданный диапазон памяти.
  • Команды порта для установки каждого пикселя, диапазона пикселей или элемента палитры.
  • Отображение диапазона памяти меньше, чем память буфера кадра, тогда переключение банка по мере необходимости.

Организация буфера кадра может быть упакованным пикселем или планарной. Буфер кадра может быть адресуемым для всех точек или иметь ограничения на то, как он может обновляться.

ОЗУ на видеокарте

Видеокарты всегда имеют определенный объем ОЗУ. В этой ОЗУ растровое изображение данных изображения «буферизуется» для отображения. Таким образом, термин буфер кадра часто используется взаимозаменяемо при обращении к этому ОЗУ.

ЦП отправляет обновления изображения на видеокарту. Видеопроцессор на карте формирует изображение изображения на экране и сохраняет его в буфере кадров в виде большого растрового изображения в ОЗУ. Битовая карта в ОЗУ используется картой для постоянного обновления изображения на экране.

Виртуальные буферы кадра

Многие системы пытаются эмулировать функцию устройства буфера кадра, часто по причинам совместимости. Два наиболее распространенных виртуальных фреймбуфера - это устройство Linux framebuffer (fbdev) и виртуальный фреймбуфер X (Xvfb ). Xvfb был добавлен в дистрибутив X Window System, чтобы предоставить метод для запуска X без графического буфера кадра. Устройство фреймбуфера Linux было разработано для абстрагирования физического метода доступа к нижележащему фреймбуферу в гарантированную карту памяти, к которой легко получить доступ программам. Это увеличивает переносимость, так как программы не требуются для работы с системами, которые имеют несвязанные карты памяти или требуют переключения банков.

переворачивания страниц

Буфер кадра может быть разработан с достаточным объемом памяти для хранения двух кадров. видеоданных. В методе, известном обычно как двойная буферизация или, более конкретно, как переворачивание страницы, буфер кадра использует половину своей памяти для отображения текущего кадра. Пока отображается эта память, другая половина памяти заполняется данными для следующего кадра. Как только вторичный буфер заполнен, фреймбуфер получает указание вместо этого отображать вторичный буфер. Первичный буфер становится вторичным буфером, а вторичный буфер становится первичным. Это переключение часто выполняется после интервала вертикального гашения, чтобы избежать разрывов экрана, когда половина старого кадра и половина нового кадра отображаются вместе.

Переворот страниц стал стандартной техникой, используемой компьютерными программистами игровыми программистами.

Графическими ускорителями

По мере роста спроса на более качественную графику производители оборудования создали способ уменьшить количество CPU время, необходимое для заполнения буфера кадра. Это обычно называется ускорением графики. Общие команды рисования графики (многие из них геометрические) отправляются в графический ускоритель в необработанном виде. Затем ускоритель растрирует результаты команды в буфер кадра. Этот метод освобождает ЦП для выполнения другой работы.

Ранние ускорители были сосредоточены на улучшении производительности 2D-систем GUI. Сохраняя эти 2D-возможности, большинство современных ускорителей сосредоточены на создании 3D-изображений в реальном времени. Обычный дизайн использует графическую библиотеку , такую ​​как OpenGL или Direct3D, которая взаимодействует с графическим драйвером для преобразования полученных команд в инструкции для обработки графики ускорителя. блок (GPU). Графический процессор использует эти инструкции для вычисления растеризованных результатов, и результаты передаются в буфер кадра бит. Затем сигнал фреймбуфера создается в сочетании со встроенными устройствами наложения видео (обычно используемыми для создания курсора мыши без изменения данных фреймбуфера) и любыми окончательными специальными эффектами, которые производятся путем изменения выходного сигнала. Примером таких финальных спецэффектов был метод пространственного сглаживания, используемый картами 3dfx Voodoo. Эти карты добавляют небольшое размытие к выходному сигналу, что делает наложение растровой графики менее очевидным.

В свое время было много производителей графических ускорителей, в том числе: 3dfx Interactive ; ATI ; Геркулес ; Трезубец ; Nvidia ; Радиус ; S3 Graphics ; SiS и Silicon Graphics. По состоянию на 2015 год на рынке графических ускорителей для систем на базе x86 доминируют Nvidia (приобретенная 3dfx в 2002 году), AMD (которая приобрела ATI в 2006 году) и Intel (которая в настоящее время производит только встроенные графические процессоры, а не дискретные видеокарты).

Сравнения

С кадровым буфером электронный луч (если он используется в технологии отображения) получает команду на выполнение растрового сканирования, как телевизор отображает сигнал вещания. Информация о цвете для каждой точки, отображаемой таким образом на экране, извлекается непосредственно из кадрового буфера во время сканирования, создавая набор дискретных элементов изображения, то есть пикселей.

Буферы кадра значительно отличаются от векторных дисплеев , которые были распространены до появления растровой графики (и, следовательно, от концепции буфера кадра). При векторном отображении сохраняются только вершины графических примитивов. Электронный луч выходного дисплея затем получает команду двигаться от вершины к вершине, отслеживая линию через область между этими точками.

Точно так же буферы кадра отличаются от технологии, используемой в ранних текстовых режимах отображения, где буфер хранит коды для символов, а не отдельных пикселей. Устройство отображения видео выполняет то же растровое сканирование, что и с буфером кадра, но генерирует пиксели каждого символа в буфере по мере направления луча.

См. Также

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-20 13:19:05
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте