Как компьютер рисует экран? - PullRequest
11 голосов
/ 17 сентября 2011

Как компьютер рисует что-либо на экране на самом низком уровне (ничего о внешних библиотеках, таких как X11)?Должны ли быть команды сборки, которые делают это?Как именно процессор управляет тем, что появляется на экране?

Ответы [ 3 ]

9 голосов
/ 18 сентября 2011

В основном так же, как он читает с жесткого диска или воспроизводит звуковой эффект.

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

Процессор действительно отчасти изолирован от остальной системы. Все, что он действительно знает, это шина памяти. Он может читать и записывать данные на этой шине, и это все. Некоторые из этих операций чтения / записи отправляются в память, а другие могут быть сопоставлены с управляющими регистрами различного оборудования или с памятью устройства, если таковое существует, что позволяет ЦПУ обмениваться данными с другими устройствами.

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

5 голосов
/ 18 сентября 2011

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

Вы можете рассматривать буфер кадров как 2D-массив, где каждый бит представляет пиксель на экране.Для представления цветов используются разные уровни буфера.Сегодня общий буфер кадров имеет 24 уровня (по 8 для каждого компонента цвета RGB) и позволяет определять 2 ^ 24 возможных цветов.

В настоящее время обычно доступ к буферу кадров осуществляется через графический процессор для устранения проблем с перфорацией:если процессор может выполнить эту задачу, это довольно дорого.

3 голосов
/ 18 сентября 2011

Где-то есть память, которая посвящена видеоэкрану.Каждый пиксель на экране имеет определенный объем памяти.Избегая исторических решений, таких как палитры и черно-белые, обычно есть определенное количество бит для красного, некоторые биты для синего и некоторые для зеленого.Когда эти цвета добавлены, вы можете получить все, включая белый (я знаю, что они не являются основными цветами, используемыми с краской, например, не волнуйтесь, это работает).Как правило, вы найдете 24-битный цвет, потому что легко управлять 8 битами, байтом красного, байтом зеленого и синим байтом, а также подключать память и т. Д.

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

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

Видеопамять обычно отображается как системная память, процессор, скорее всего, будет использовать те же инструкции, которые он использует для доступа к не-видео, системе, памяти.Конечно, GPU может, но процессор обычно не имеет специфических для периферийных устройств инструкций, UART, GPIO, видео, USB, хранилища и т. Д. Периферийные устройства обычно отображаются как определенные адреса в области памяти процессора, и используются обычные инструкции чтения / записи памяти,

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

...