stringtranslate.com

Кадровый буфер

Фреймбуфер Sun TGX

Буфер кадра ( буфер кадров или иногда хранилище кадров ) — это часть оперативной памяти (ОЗУ) [1] , содержащая растровое изображение , которое управляет отображением видео. Это буфер памяти , содержащий данные, представляющие все пиксели полного видеокадра . [2] Современные видеокарты содержат в своих ядрах схему кадрового буфера. Эта схема преобразует растровое изображение в памяти в видеосигнал , который можно отобразить на мониторе компьютера.

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

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

История

Образец памяти на ЭЛТ с трубкой SWAC Williams в 1951 году.

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

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

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

В 1974 году компания Evans & Sutherland выпустила первый коммерческий фреймбуфер Picture System [12] стоимостью около 15 000 долларов. Он был способен обеспечивать разрешение до 512 на 512 пикселей в 8-битной градации серого и стал настоящим благом для исследователей графики, у которых не было ресурсов для создания собственного фреймбуфера. Позже Нью -Йоркский технологический институт создал первую 24-битную систему цвета, используя три кадровых буфера Evans & Sutherland. [13] Каждый кадровый буфер был подключен к цветовому выходу 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 выпустили кадровые буферы для своих рабочих станций. Эти кадровые буферы обычно были гораздо более высокого качества, чем те, которые можно было найти в большинстве домашних компьютеров, и регулярно использовались на телевидении, в печати, компьютерном моделировании и 3D-графике. Кадровые буферы также использовались Sega для своих высококлассных игровых плат , которые также были более высокого качества, чем на домашних компьютерах.

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

Фреймбуфер Sun cgsix

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

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

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

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

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

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

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

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

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

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

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

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

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

ЦП отправляет обновления изображения на видеокарту. Видеопроцессор на карте формирует картинку экранного изображения и сохраняет ее в кадровом буфере в виде большого растрового изображения в оперативной памяти. Растровое изображение в оперативной памяти используется картой для постоянного обновления изображения на экране. [15]

Виртуальные фреймбуферы

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

Перелистывание страниц

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

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

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

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

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

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

Сравнения

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

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

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

Смотрите также

Рекомендации

  1. ^ «Что такое кадровый буфер? Определение в вебпедии» . webopedia.com . Июнь 1998 года.
  2. ^ «Часто задаваемые вопросы о кадровом буфере» . Проверено 14 мая 2014 г.
  3. ^ Мюллер, Дж. (2002). Решения .NET Framework: в поисках утраченного Win32 API. Уайли. п. 160. ИСБН 9780782141344. Проверено 21 апреля 2015 г.
  4. ^ «Запись в словаре интеллектуальных вычислений - видеобуфер» . Архивировано из оригинала 24 марта 2012 г. Проверено 21 апреля 2015 г.
  5. ^ Аб Габури, Дж. (01 марта 2018 г.). «Изображение произвольного доступа: Память и история экрана компьютера». Серая комната . 70 (70): 24–53. дои : 10.1162/GREY_a_00233. hdl : 21.11116/0000-0001-FA73-4 . ISSN  1526-3819. S2CID  57565564.
  6. ^ Уильямс, ФК; Килберн, Т. (март 1949 г.). «Система хранения для использования с двоично-цифровыми вычислительными машинами». Труды IEE - Часть III: Радиотехника и техника связи . 96 (40): 81–. дои : 10.1049/пи-3.1949.0018.
  7. ^ "Примечания к обложке отчета Килберна за 1947 год (Digital 60)" . curation.cs.manchester.ac.uk . Проверено 26 апреля 2019 г.
  8. ^ Д. Офир; С. Ранковиц; Би Джей Шеперд; Р. Дж. Спинрад (июнь 1968 г.), «БРЭД: Растровый дисплей Брукхейва», Communications of the ACM , vol. 11, нет. 6, стр. 415–416, doi : 10.1145/363347.363385 , S2CID  11160780
  9. ^ Нолл, А. Майкл (март 1971 г.). «Сканированная компьютерная графика». Коммуникации АКМ . 14 (3): 145–150. дои : 10.1145/362566.362567 . S2CID  2210619.
  10. ^ аб Ричард Шуп (2001). «SuperPaint: ранняя графическая система с кадровым буфером» (PDF) . Анналы истории вычислительной техники . IEEE. Архивировано из оригинала (PDF) 12 июня 2004 г.
  11. ^ Гольдвассер, С.М. (июнь 1983 г.). Компьютерная архитектура для интерактивного отображения сегментированных изображений. Компьютерные архитектуры для пространственно распределенных данных. Springer Science & Business Media . стр. 75–94 (81). ISBN 9783642821509.
  12. ^ Система изображений (PDF) , Evans & Sutherland , получено 31 декабря 2017 г.
  13. ^ «История графической лаборатории Нью-Йоркского технологического института» . Проверено 31 августа 2007 г.
  14. ^ http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html HOWTO по синхронизации видео XFree86: перегрузка вашего монитора
  15. ^ «Иллюстрированное руководство по видеокартам». karbosguide.com .

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