Сейчас трудно представить себе домашний компьютер без видеокарты — конечно, он без нее запустится, но будет представлять из себя шумящий черный ящик. Но если мы откатимся на 40 лет назад, в 70ые годы, то такой проблемы не было — по причине банального отсутствия отдельных видеокарт для ПК, их роль выполняли центральные процессоры.
Каменный век: видеоадаптеры MDA и CGA
Всего было представлено две видеокарты — MDA (Monochrome Display Adapter) и CGA (Color Graphics Adapter). Как нетрудно догадаться, первая умела работать только с текстом, вторая же имела цветной режим. Оба они строились на чипе Motorola 6845, но первый видеоадаптер имел 4 КБ памяти, а второй — 16. Поддерживаемая частота развертки была 50 Гц.
MDA работал очень хитро — для отображения каждого символа использовалась матрица 9х14 пикселов, при этом сам символ имел размеры 7х11 — остальное отводилось для отступов. При этом максимально можно было вывести 80 столбцов и 25 строк, что в теории давало разрешение 720х350. Однако на практике это было не совсем так — видеоадаптер не умел адресовать отдельные пикселы, он лишь умел поместить в каждое из знакомест по 9х14 пикселов один из 256 символов. Да, примитивно, но IBM PC разрабатывался все же для бизнес-пользователей, так что возможности работы с текстом им полностью хватало.
CGA же мало отличалась по своим возможностям от видеочипов в приставках: она могла выдавать до 16 цветов, а максимальное разрешение было 640х200 пикселов. Однако в цвете она могла работать с разрешением вдвое меньше, всего 320х200, да и то, только с 4 цветами за раз. А вот в текстовом режиме разрешение могло быть и максимальным, но все же в итоге с текстом CGA работал хуже MDA из-за того, что последний умел работать с нестандартной вертикальной и горизонтальной частотой развертки, поэтому зачастую текст на нем выглядел четче. Увы — это не единственная проблема сего видеоадаптера: он не поддерживал одновременное чтение и запись в видеопамять, из-за чего на экране временами можно было наблюдать «снег»: когда микропроцессор записывал данные в видеопамять в то время, когда ее пытался прочесть видеопроцессор — на экране выводились случайные пиксели. В итоге продажи CGA были невелики, но самое главное — направление пути было дано, дальше — только развитие цветных видеокарт.
Кстати, у IBM PC были интересная возможность — он мог работать с двумя CGA одновременно и выводить изображение сразу на 2 монитора. Да, до SLI и CrossFire далеко, но для 1981 года это было очень здорово.
Все еще каменный век: видеоадаптер EGA
Поняв, что рынок видеокарт для ПК пуст, IBM не остановилась на достигнутом и стала развивать видеокарты дальше. И ожидаемой эволюцией стал EGA (Enhanced Graphics Adapter) в 1984 году — название очень точно указывает на то, что по сути это был усовершенствованный CGA: тут было столько же памяти, 16 КБ, а видеочип был обратно совместим с Motorola 6845. Поддерживаемая частота развертки была уже привычные нам 60 Гц. При максимальном разрешении в 640х350 можно было выводить 16 из 64 цветов — зато в разрешении 320х200 можно было выводить или все 64, или 16 цветов, которые были в CGA. Как и MDA и CGA, видеокарта использовала шину ISA — спасибо IBM за совместимость. Однако для EGA были сделаны некоторые доработки — так, была удвоена разрядность данных, что повлекло за собой удвоение пропускной способности, так что в итоге скорость передачи данных составила аж 8 МБ/с — огромные цифры по меркам 1984 года.
Бронзовый век — видеоадаптер VGA
В 1987 году наконец-то появляется первый относительно современный видеоадаптер — VGA (Video Graphics Array). Самое основное нововведение — это переход от цифрового интерфейса для передачи данных (который позволял передавать всего 2 бита на цвет) к аналоговому (до 262144 цветов). С одной стороны, это выглядит как шаг назад, с другой — хороший задел на будущее: одноименный разъем был актуальным порядка 15 лет до прихода DVI: даже самые простые VGA-мониторы могли выдавать картинку в разрешении 800х600, что по тем временам было очень здорово.
Видеоадаптер имел 256 КБ памяти, и в максимальном разрешении 640х480 мог выдавать 16 цветов. К слову — это первый видеоадаптер, который работал с квадратными пикселами: раньше они были вытянуты по вертикали. Так что в итоге именно VGA заставил производителей делать мониторы с соотношением сторон 4:3 (так как 640 к 480 и есть 4 к 3). Также из-за нового аналогового разъема цвета в палитре была 18-битными вместо 6-битных: это позволяло реализовать такие эффекты как ночь, плохую погоду и мерцания одной палитрой.
Разумеется, не была забыта совместимость — так, VGA умел работать в 640х350, а также умел работать и в текстовых режимах с «разрешением» 80х25 символов — как MDA.
В те времена IBM не лицензировала свои видеоадаптеры, за что ей большое спасибо — и разъем, и сам видеоадаптер VGA стали клонировать другие компании, что в итоге привело к быстрому развитию стандарта — до сих пор на многих материнских платах и старых ноутбуках есть этот разъем, а разрешение 640х480 зачастую называют VGA.
Все еще бронзовый век: видеоадаптеры XGA и SVGA
После выхода VGA все стало понятно, что этот стандарт будет жить долго, поэтому вышедший в 1990 году XGA (eXtended Graphics Array) был всего лишь развитием VGA. Из основных изменений — XGA-видеоадаптеры теперь комплектовались не DRAM-память, а VRAM — прапрадедушкой GDDR, которая была существенно быстрее DRAM (из которой потом выросла привычная на DDR-память). Объем мог составлять или 512 КБ в версии за 1095 долларов, или 1 МБ в версии за 1445 долларов (чтобы было понятнее — с учетом инфляции за такие деньги сейчас можно собрать Triple-SLI из 1080 Ti).
XGA поддерживал два режима — или 640х480 и 64к цветов, или 1024х768 и 256 цветов. Забавно, но разрешение 800х600 он не поддерживал. Также исчезла поддержка текстового режима — в 1990 году он был уже не нужен. Основной упор был сделан на ускорение отрисовки: так, поддерживался алгоритм Брезенхэма (который определял, какие точки двумерного растра нужно закрасить, чтобы получить близкое приближение прямой линии между двумя заданными точками), функцию BitBlT (которая выполняет передачу битовых блоков данных о цвете, соответствующих прямоугольнику пикселей из заданного исходного контекста устройства в целевой контекст устройства), а также заливку прямоугольников и рисование объектов произвольной формы.
Основным недостатком XGA было то, что видеоадаптер использовал развертку с чередованием в высоком разрешении. Это приводило к тому, что на мониторе было заметно мерцание из-за снижения частоты регенерации.
В 1992 году IBM выпустила стандарт XGA-2, который в принципе ничего нового не привнес: теперь 1 МБ памяти был по умолчанию, VRAM стала еще быстрее. Наконец-то добавили разрешение 800х600, а в 1024х768 можно было работать с полным 16-битным цветом.
То, что IBM разрешала использовать свои стандарты всем, кто захочет, сыграло с ними злую шутку: после выхода VGA конкуренты поняли, что больше следовать канонам IBM смысла нет, и стали делать свои видеоадаптеры кто во что горазд. В итоге это привело к тому, что появилась целая куча несовместимых друг с другом видеоадаптеров, и, апофеоз — они временами даже нормально с VGA не работали! Понимая, что так дальше работать было нельзя, в 1989 году ассоциация производителей VESA (Video Electronic Standards Association) ввела единый программный интерфейс для всех видеоадаптеров SVGA, который решено было назвать VESA BIOS Extentions (VBE). Суть этого интерфейса заключалась в том, что в Video BIOS теперь прописывалось, с какими параметрами (разрешения, цвета, способы адресации, развёртка) мог работать конкретный видеоадаптер, и можно было их менять для согласования адаптера с конкретным монитором.
К слову — стандарт VESA предусматривал разрешения вплоть до 1280х1024 с 16 миллионами цветов (и это в 1989 году!) — мониторы с такими параметрами появились больше чем 10 лет спустя. Также новый стандарт подразумевал использование встроенного акселератора, который был нужен для обработки GUI операционных систем — к примеру, для развивающейся тогда Windows.
На этом мы заканчиваем историю «древних» 2D-видеокарт, и в следующей части статьи перейдем к более новым 3D-ускорителям 90ых годов.