Ответ 1
- Шаг 1. Понимайте конкретный GPU, на который вы нацеливаетесь (информация о архитектуре, регистре и потоке). Я боюсь, что многие из GPU эти данные могут быть проприетарными, и вы не можете их получить. (Но, как вы упомянули, в вашем случае доступны спецификации)
- Шаг 2. Добавьте несколько вызовов в свой драйвер, которые могут запрашивать регистры/данные из драйвера.
- Шаг 3: добавьте несколько вызовов в ваш драйвер, чтобы изменить регистры. (Режим изменения и т.д.)
- Шаг 4. Вы можете проверить, как рисовать треугольник/квадрат на вашем графическом процессоре с постоянным цветом. Попробуйте реализовать прозрачность экрана (функциональность подобно glClear), рисуя большой квадрат или 2 треугольника или 1 треугольник размерности double экрана или отправку некоторого ясного команда. (какой бы способ не поддерживался GPU) Если вы рисуя треугольник или квадроцикл, используйте NDC (нормализованная координата устройства) системы и предпочитают работать в Raw windowing system или NWS (Null оконная система). Система отображения отвечает за отображение ваш выходной фрейм-буфер после компоновки или некоторая пост-обработка. От Raw или NWS, я имею в виду отображение framebuffer непосредственно на экран.
- Шаг 5 (большинство из них необязательно): выполните сложный чертеж. Это может включать поддержку других режимов рисования, таких как пиксель, линия, треугольная полоса, треугольный вентилятор и т.д. и поддержка текстуры, освещение, трансформация, взаимодействие с другими системами окон. Для этого нужно научиться сборке. Но заметьте, это не x86 или arm (CPU), скорее это сборка графического процессора, которая специализируется на обработке SIMD.
- Шаг 6: реализовать функцию трафарета. Подготовьте трафарет приветствия в вашей программе. Очистка экрана цветом 1. Примените трафарет и снова очистить экран цветом 2. Теперь у вас есть привет мир, написанный цветом 2 с цветом 1 в качестве фона.
Мотивация сделать все это: вы хотите это сделать. И это будет круто.
Демотивация для этого: Возможная недоступность спецификаций GPU, кривая обучения для сборки GPU, сложность графики.
Моя рекомендация. Если вам доступны спецификации графического процессора (вместе с сборкой), я бы предложил реализовать подмножество любого доступного набора API (например, открыть vg и открыть GLES 1.1). Чтобы узнать больше об этих наборах API, посетите веб-сайт khronos.