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

В этой статье всё как вы любите — подробная предыстория, анализ зацепок, изучение исходного кода и ответ на вопрос: что-же общего между коммуникатором из 2007'ого, смартфоном 2009'ого, ноутбуком 2012'ого и Xbox 360?

❯ Предыстория

Всё началось в середине 80-х годов, когда небольшая «красная» компания решила выпустить свою первую видеокарту, получившую название Wonder. Нет, нет, это была ещё не AMD, а компания ATI — которую AMD купят только в 2006'ом году. Линейка видеокарт Wonder была известна широкой поддержкой видеостандартов ПК тех лет (EGA/VGA/Hercules), а также относительно высокой степенью интеграции — в Wonder'ах конца 80-х годов можно было найти ТВ-выход, порт для геймпада/мыши, и даже интеграцию с звуковой картой Sound Blaster!

Однако это всё ещё был обычный видеоадаптер без какого-либо ускорения графики: всё что он делал — лишь брал картинку из фреймбуфера, которую предварительно подготовил процессор, и выводил её на монитор. Но уже в 1990'ом году, ATI представила свою новую видеокарту на архитектуре Mach8 — которая впервые позволяла ускорять 2D-графику на ПК за счёт аппаратного блиттера и являлась так называемым GUI-акселлератором. С программной точки зрения, она была клоном ранней видеокарты IBM под названием 8514A, как и многие другие GUI-акселлераторы тех лет.

Немного про GUI-акселлераторы

Изначально GUI-акселлераторы разрабатывались для ускорения графических оболочек в ОС типа Windows, а не для игр, причем концепцию скорее всего почерпнули из компьютеров Amiga, где графическая подсистема с самого начала была очень развитой. Чипсет OCS поддерживал и целых 8 аппаратных спрайтов, и палитры, и даже имел встроенный блиттер!

Тем не менее, один аппаратный спрайт в GUI-акселлераторах все же был — это курсор :)

Видеокарта на базе ATI Mach8. Фото с сайта VGAMuseum.
Видеокарта на базе ATI Mach8. Фото с сайта VGAMuseum.

Вплоть до ~1996 года, большинство 3D-софта и игр на ПК полагались на программный рендеринг на процессоре. С очень жесткими оптимизациями на Pentium 1 вполне можно было получить полноценную трехмерную картинку в 320x200 с приемлемым FPS — при этом оставалось немного процессорного времени и для просчета геймплея/физики/ИИ соперников. Ближе к 1996 году, пользуясь опытом первой PlayStation и игровых автоматов, производители видеокарт поняли, что за 3D-играми на ПК будущее, а значит в видеокарты нужно добавлять растеризаторы треугольников, которые разгрузят процессор от самого тяжелого этапа рендеринга.

Скрытый текст

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

Всем остальным до 1999 года занимался процессор — а это анимация моделей (чаще всего морфинг), отсечение невидимой геометрии, преобразование мировых координат в экранные, клиппинг, и конечно перспективное деление. В основном именно из-за появления T&L в GeForce 2 резко возрасла полигональность в играх.

Скриншот с сайта PlayGround.ru. Обратите внимание на цветовую гамму и отражения — последние реализовывались хитрым и очень быстрым трюком под названием Spherical environment mapping.
Скриншот с сайта PlayGround.ru. Обратите внимание на цветовую гамму и отражения — последние реализовывались хитрым и очень быстрым трюком под названием Spherical environment mapping.

В 1996 году, ATI представила свой первый видеочип с 3D-ускорением — 3D Rage (I). Он был построен на базе оригинальной 2D-архитектуры Mach64: ATI добавила растеризатор треугольников с сэмплером текстур, а также декодер MPEG. По производительности видеокарта сильно уступала той-же 3dfx Voodoo (но обгоняла S3 Virge) и толком не поддерживала OpenGL, но тем не менее, успех на рынке она всё же получила.

Фото с сайта TechPowerUp.
Фото с сайта TechPowerUp.

Однако всего через год, Nvidia представила свою первую успешную видеокарту, которая была заметно мощнее, чем Rage Pro — Riva 128. В последующие три года, талантливые инженеры из NV умудрились значительно повысить уровень графики на ПК и выдавить практических всех конкурентов — включая S3, Intel, SiS и даже 3dfx. В сегменте десктопной графики из конкурентов у Nvidia оставалась только ATI и Matrox, но последняя скоропостижно выбыла из гонки из-за кривых драйверов.

За счёт чего NV выдавили других производителей?

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

В Nvidia пошли другим путем и перенесли расчет геометрии и света на видеочип в GeForce 256, заметно разгрузив процессор, а также добавили аппаратную поддержку кубмап (позволяло создавать отражения в реальном времени), компрессии текстур (можно было «бесплатно» повысить разрешение текстур в два раза), и, в 2000 году, бамп-маппинга. Кроме того, только у NV были нормальные драйвера для OpenGL, что было важно для Quake-подобных игр.

Riva 128. Фото из Википедии, у меня до сих пор такой нет, хотя очень хочется :(
Riva 128. Фото из Википедии, у меня до сих пор такой нет, хотя очень хочется :(

В 2000 году, ATI наконец смогла нагнать Nvidia со своей новой линейкой Radeon и видеочипом R100. Красные умудрились реализовать полноценную поддержку T&L, сделали очень раннее подобие пиксельных шейдеров (ближе к комбайнерам), а также добавили в чип аппаратный бамп-маппинг и некоторые другие эффекты. При этом к шейдерам полноценного доступа из софта не было — только через комбайнеры. В последующие годы, ATI развивала архитектуру и в R200 добавились полноценные вершинные и пиксельные шейдеры на модели SM1.1, в R300 уже сделали поддержку DirectX 9 и SM 2.0 (помните Radeon 9500/9600? Вот это все они!), а ближе к 2005 году, компания занялась новым семейством R400 под кодовым названием Crayola...

...и вот на R400 стоит остановиться. Дело в том, что чипы серий R100-R400 (речь про другой R400, тот что Radeon X800) были построены на примерно одной и той же архитектуре, характерной для всех видеокарт начала 2000-х: отдельный блок вершинных шейдеров, отдельный блок пиксельных, а в случае R100 еще и FFP-конвейер. Однако в 2005 году, ATI работала над «другим» R400 под кодовым названием Crayola, который полностью перерабатывал архитектуру старого Radeon: вводил концепцию унифицированных шейдеров, переводил их внутреннюю архитектуру на VLIW5-модель, добавлял поддержку Shader Model 3.0 и в целом закладывал фундамент для поддержки D3D10/D3D11. И хотя сам по себе R400 на ПК в виде Crayola так и не появился, а новые видеокарты X1800 вышли на базе чипа R500 (по сути, продолжение старой микроархитектуры R350 с поддержкой SM3.0), именно Crayola стала основой видеочипа Xbox360 — Xenos. Дальше — интереснее...

ATI Xenos. Это доработанный R400 в паре с eDRAM.
ATI Xenos. Это доработанный R400 в паре с eDRAM.

❯ ATI Crayola

Конечно исключительно десктопными видеочипами бизнес ATI не ограничивался. У компании было мобильное подразделение под названием Imageon, которое разрабатывало графические ускорители для коммуникаторов, КПК и мобильных телефонов. Их функционал несколько отличался от привычных нам GPU: чаще всего там было 2D-ускорение, контроллер дисплея, контроллер камеры и аппаратный декодер видео. Найти видеочипы Imagoen можно в телефонах Motorola (E398, E1, а в Razr V3 стоял чип от Nvidia), КПК HTC (HP iPaq HX4700, HTC X7500) и еще некоторых других устройствах.

В 2004 году, ATI Imageon представила свой первый мобильный видеочип с поддержкой 3D-графики — 2300. Какое там было ядро досконально сказать сложно, но GPU точно поддерживал трансформацию геометрии, мультитекстурирование, комбайнеры и соответствовал уровню возможностей Rage 128 Pro/GF256. Nvidia не оставалась в стороне и в том же году представила GeForce 4500 — где вместо T&L с комбайнерами были полноценные программируемые вершинные и пиксельные шейдеры. В 2004'ом-то году, даже в топовой для тех лет PSP до сих пор был FFP GPU с функционалом уровня GF256/PS2!

Gizmondo единственной устройство с GoForce 4500. Моя мечта и просто крутая консоль, фото из Википедии.
Gizmondo единственной устройство с GoForce 4500. Моя мечта и просто крутая консоль, фото из Википедии.

И вот тут то Imageon пошла во все тяжкие. Мы же с вами помним про то, что основное подразделение ATI разрабатывало новую микроархитектуру R400 с унифицированными шейдерами и именно она легла в основу GPU Xenos в Xbox 360? Так вот: в задачах ATI была унификация этой микроархитектуры под все устройства: смартфоны, коммуникаторы, домашние консоли, ПК — везде были наследники Crayola. Именно Crayola легла в основу микроархитектуры TeraScale, которая использовалась с 2007 вплоть по 2014 год, пока AMD не заменила все десктопные и интегрированные GPU на GCN.

Иллюстрация работы унифицированных шейдеров в TeraScale. Скриншот с Реддита.
Иллюстрация работы унифицированных шейдеров в TeraScale. Скриншот с Реддита.

И если с ПК и Xbox 360 всё ясно, то с телефонами ситуация ещё интереснее: в начале нулевых, Qualcomm решила сделать ставку на поддержку 3D-ускорения в обычных кнопочных телефонах. В те годы, большинство кнопочников поддерживало либо Java, либо платформу Mophun, либо вообще ничего. У Qualcomm же была собственная платформа BREW, которая позволяла запускать нативные приложения, написанные на C++. В 2002-2003 году, компания представила чипсет MSM6250, который среди прочего имел свой собственный GPU под названием Stargate3D.

Ниже порт NFS U2 на BREW, использующий возможности Stargate3D:

Примерно в 2005 году, Qualcomm решила выйти на рынок чипсетов для коммуникаторов и выпустила MSM7200, где помимо встроенного в один чип модема, мощного ARM11-ядра и крутых мультимедийных функций, использовался видеоускоритель новой линейки — Adreno 130. MSM7200, 7200A и 7201A использовались в достаточно большом количестве устройств тех лет: тут тебе и первый Android-смартфон от Samsung - i7500 Galaxy, и первый Android-смартфон в мире - HTC Dream, и легендарные коммуникаторы HTC Touch Dual/TyTN II/Touch Diamond 2/Touch Diamond Pro, и ещё много-много разных устройств. И фишка в том, что Adreno 130 уже была разработкой ATI и скорее всего имеет прямые корни от Imageon 2300/2380.

Небольшая история с драйверами на Adreno

В 2007 году вышло несколько устройств HTC на базе Windows Mobile с MSM7200 на борту. И всё в них было хорошо, вот только интерфейс тормозил, да и 3D-ускорения не было. А всё потому что HTC не положили драйвер для D3DM и OpenGL ES с дистрибутивом системы и забили на обновления.

Поддержку 3D-ускорения потом всё таки сделали путём выдергивания драйверов из более поздних коммуникаторов с MSM7200A. С HTC Dream история та же — драйверов из коробки нет, но их чуть позже взяли от какого-то другого аппарата с 7201A, скорее всего Galaxy.

Об этом говорит Vendor String и поддержка ATI'шных расширений. Также здесь есть поддержка вершинных шейдеров, но нет пиксельных, что говорит о родстве с 2300, где был T&L (а скорее всего и полноценный вершинный конвейер).
Об этом говорит Vendor String и поддержка ATI'шных расширений. Также здесь есть поддержка вершинных шейдеров, но нет пиксельных, что говорит о родстве с 2300, где был T&L (а скорее всего и полноценный вершинный конвейер).

После выхода TeraScale, в 2008 году Imageon представила новый 3D-ускоритель — Z430, который поддерживал OpenGL ES 2.0/Direct3D 9.0c, имел унифицированную шейдерную архитектуру с 8-ю шейдерными ядрами, мог рендерить до 22млн треугольников в секунду, и по возможностям примерно приближался к карточкам уровня GeForce FX5200. Уже догадались на какой микроархитектуре он построен? :) Да, да — его даже в народе прозвали мини Xenos'ом, поскольку Z430 является урезанным GPU из Xbox 360.

В отличии от прошлых Imageon'ов, Z430 уже лицензировался как IP-ядро другим производителям чипсетов и мне лично известны три SoC с Z430: Qualcomm MSM72xx и QSD82xx, а также Freescale i.MX8. Но уже через год, в 2009 году, AMD зачем-то продала Imageon компании Qualcomm, которые в свою очередь переименовали Z430 в Adreno 200/205 и продолжали использовать в бюджетных (и не очень) смартфонах вплоть до 2013'го — в год, когда вышла последняя ревизия Xbox 360, а AMD активно начала заменять TeraScale GPU на базе архитектуры GCN. Символично.

Все эти смартфоны используют GPU Adreno 200/205, который архитектурно очень близок к Xbox 360. И это далеко не весь список моделей — их сотни! Думали ли вы раньше, что они имеют в себе частичку вашей мощной видеокарты от AMD в ПК или Xbox 360? Узнали хоть один? :)
Все эти смартфоны используют GPU Adreno 200/205, который архитектурно очень близок к Xbox 360. И это далеко не весь список моделей — их сотни! Думали ли вы раньше, что они имеют в себе частичку вашей мощной видеокарты от AMD в ПК или Xbox 360? Узнали хоть один? :)

В процессе изучения материала, я исследовал исходный код эмулятора Xenia и драйвера Freedreno, а также реверсил драйвер GLES Adreno для Android. И у Adreno, и у Xenon используется схожий набор регистров и даже идентичные номера опкодов:

С TeraScale у них схожий набор команд, однако число и количество опкодов отличается — немудрено, ведь TeraScale это эволюция Crayola:

❯ Заключение

Ну а в последующие годы Qualcomm решила не использовать наработки Radeon, и Adreno 3xx уже был GPU собственной разработки с суперскалярной архитектурой и TBDR. В 2013 году, история ATI Crayola окончательно закончилась... но AMD с мобильного рынка полностью не ушла и в 2022 году, GPU RDNA интегрировали в Exynos 2200, ознаменовав возвращение красных на рынок мобильных видеоускорителей! А смартфоны с частичкой Xbox 360 все равно останутся в наших сердцах!

К слову, мне было бы интересно пощупать что‑то ещё из семейства Nvidia ION/Radeon Xpress Graphics/VIA Chrome9 HC/Trident Blade, а в будущем возможно написать 3D-демку под GPU. Если у кого‑то есть всякие интересные тонкие клиенты или ноутбуки на прикольном железе, или что‑то AMD'шное времен 939/462 — пишите в ЛС, обязательно сделаю контент!

Ну а я надеюсь, что вам было интересно. Подписывайтесь на блог, чтобы не пропускать новые статьи каждую неделю! А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет — подписывайтесь на мой Telegram‑канал ‭«Клуб фанатов балдежа‭„, куда я выкладываю бэкстейджи статей, ссылки на новые статьи и видео, а также иногда выкладываю полезные посты. А ролики (не всегда дублирующие статьи) можно найти на моём YouTube канале.“»

А если вы хотите что‑нибудь подарить из железа и увидеть о нём статью — пишите мне в Telegram. Меня очень интересуют самые разные гаджеты: начиная от игровых консолей и любых связанных с геймингом устройств, телефонов, смартфонов, КПК, заканчивая ретро‑компьютерами и ноутбуками. Кто знает, может героем следующей подобной статьи окажется ноутбук из 90-х?:‑)

Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник
Особенно сильно я люблю ковыряться в ноутбуках из начала 90-х. Источник

После обзоров устройства не продаются, а остаются в моей коллекции. Когда‑нибудь я хочу сделать музей, где к каждому устройству можно будет приложить QR и почитать мою статью. Кто знает, вдруг на следующей неделе я также подробно расскажу про девайс из вашей юности?:)

Фото Nokia 9300 с сайта mobile-review.com
Фото Nokia 9300 с сайта mobile‑review.com

Кстати, у меня есть GameBoy Advance SP, под который я очень хочу написать игру. Однако мой экземпляр был залит водой и кофе. Может у кого‑то есть донор с дохлой платой, откуда я смог бы взять контроллер питания? У меня AGS-101.

Перейти

Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram‑канале ↩

Комментарии (2)


  1. monobogdan Автор
    03.10.2026 14:12

    На превьюшке не хватает пятого смартфона :)


  1. TigerClaw
    03.10.2026 14:12

    А что сказать то хотел? Про то что Z430 дальний родственник графики иксбокс 360? Это уже тут было. Историческая честь до r100 скомкана не точно и для людей, которые не в теме скорее породит мифы и легенды. С поддержкой Sound Blaster 1.5 была карта VGA Stereo F/X. Это по сути VGA Wonder XL + звук. А вообще серия древняя и там были разные карты.
    S3 Virge все что угодно обгоняло. Она в 3D даже на своём API работала на скорости как в софте. Десцент первый или второй есть под её API. Там 20-25 FPS в 640. Естественно, что в софте играли и в 640. Даже на Пентиуме 100. В принципе свои 20 FPS мы получали. Но тогда это было нормально. Так проходили первый и второй квейк, HL, Unreal.