Каковы шаги, необходимые для создания драйвера графического процессора, отображающего пиксели на дисплее? В основном просто самый простой пример "привет мир" для создания драйвера графического процессора, например, поворот экрана красным или просто отображение одного пикселя. С чего начать?
Я хотел бы напрямую взломать графический процессор без какой-либо абстракции C или OpenGL или любого из них. Я использую Mac OSX, и я думаю, что у меня есть графическая карта Intel HD i7, поэтому эти документы выглядели как подходящие:
- Том 1 Часть 1: Графический процессор
- Том 1 Часть 2: Графическое ядро - MMIO, медиарегистры и среда программирования
- Том 1 Часть 3: Графическое ядро - Интерфейс и команды памяти Render Engine
- Том 1 Часть 4: Графическое ядро - Видеокодек
- Том 1 Часть 5: Графическое ядро - Blitter Engine
- Том 2 Часть 1: 3D/Медиа-3D-трубопровод
- Том 2 Часть 2: 3D/Медиа-медиа
- Том 3 Часть 1: Дисплеи регистров - Регистры VGA
- Том 3 Часть 2: Дисплеи регистров - Регистры CPU
- Том 3 Часть 3: Регистры отображения PCH
- Том 4 Часть 1: Подсистема и ядра - общие функции
- Том 4 Часть 2: Подсистема и ядра - шлюз сообщений, URB, видеоролик и IS
В проекте Mesa3D говорится, что есть несколько графических драйверов с открытым исходным кодом, и в Википедии говорится, что Intel выпускает эти документы, чтобы вы могли писать драйвер с открытым исходным кодом, если хотите, но не объясняете, как это сделать.
Я также натолкнулся на "Черная книга с графическим программированием Майкла Абраша" , что объясняет многое.
Однако это немного, чтобы откусить всех сразу. И, похоже, нет никакой информации о том, как начать взломать драйвер GPU, проект "привет мир".
Например:
- Чтобы изучить сборку, вы можете просто
brew install nasm
, написать сборку, скомпилировать и запустить ее для печати "hello world". - Чтобы узнать Arduino, вы можете подключить плату Arduino к компьютеру через USB-кабель, установить программное обеспечение и загрузить код C непосредственно на плату и запустить его, чтобы показать мигающий светодиод.
Как вы делаете то же самое для видеокарты?
Символ hello world не обязательно должен работать (хотя это было бы здорово, если бы оно было!); даже просто изложение того, что потребуется для более высокого уровня/практического смысла, было бы полезно. Если это невозможно на Mac или даже на Linux, это было бы хорошо знать. Но даже тогда вопрос остается, где вы начинаете писать графический драйвер?