LINUX.ORG.RU

Непосредственное обращение к видеопамяти

 , ,


0

1

Во времена DOS можно было непосредственно обратиться к A000:0000 и рисовать спокойно на экране.

А как это происходит под Linux? Знаю про DirectFB, но он не везде есть, и, насколько мне известно, заброшен. Как обращаться напрямую к видеопамяти? В современных картах стоят сотни мегабайт - и к ним можно получить доступ?

Во времена DOS можно было непосредственно обратиться к A000:0000 и рисовать спокойно на экране.
А как это происходит под Linux?

open(«/dev/mem»)

Только медленно все это будет, сейчас же все рисуется с помощью OpenGL/Vulkan а ты тут с софтверным рендером хочешь... Зачем?

insw ()
Последнее исправление: insw (всего исправлений: 1)
Ответ на: комментарий от Zubok

Однако, после выполнения команды экран не переливается радугой ГПСЧ, только после нажатия Ctrl+C видно, что что-то происходило. Как сделать так, чтобы было видно, что экран переливается?

gedisdone ★★★ ()
Ответ на: комментарий от anonymous

Чё-т с первого раза не заметил, да. Привык с здешним оптимизаторам с их прохладными историями про -O3, экзотические планировщики ядра и быстроту арчлинукса.

anonymous ()
Ответ на: комментарий от Stremitelnyj

Ну как бы права смотри. Когда появляется «Отказано в доступе», то у даже начинающего линуксоида не должно быть вопросов, почему отказано. :)

$ ls -l /dev/fb0

В Debian, например, по умолчанию права на доступ read/write есть у root и у группы video. В других дистрибутивах может быть по-другому. Достаточно добавить себя в группу video и перезайти — будет доступ.

Zubok ★★★★★ ()
Ответ на: комментарий от Stremitelnyj

Вторая строка запуск как раз из под root.

А это так и должно быть. Размер фреймбуфера ограничен. Можешь сам посчитать. Поэтому как только он начал туда лишнее гнать, то выскочила такая ошибка и запись остановилась. Можно загнать столько байтов, сколько нужно. Скажем, 1280x1024 в режиме 32-битного цвета - это 1280*1024*4=5242880 байт. Вот ровно столько скопируешь (например, при помощи dd), то не будет этой ошибки.

Zubok ★★★★★ ()
Последнее исправление: Zubok (всего исправлений: 1)