LINUX.ORG.RU

Framebuffer


0

0

Подскажите, как настроить framebuffer.

Поставил Fedora Core 4. В устройствах /dev/fb0 отсутствует. Собрал ядро 2.6.15.4 с kernel.org, с поддержкой framebuffer (она была, кстати, уже включена в конфиге) и драйвера fb для своей видеокарты (ATI Rage 128). Новое ядро работает хорошо, но /dev/fb0 по прежнему нет. Создавал mknod /dev/fb0 c 29 0. Создается /dev/fb0, но он какой-то пустой:

$ fbset open /dev/fb0: No such device $ ls /dev/fb0 /dev/fb0 $ cat /dev/fb0 cat: /dev/fb0: No such device

После перезагрузки /dev/fb0 опять нет. Читал framebuffer.txt, много всяких ФАКов. Добавлял в grub.conf:

kernel /bzImage-2.6.15.4 ro root=LABEL=/ rhgb quiet video=aty128fb:xres:800,yres:600,pixclock:17761,left_margin:152,right_margin:32, upper_margin:27,lower_margin:1,hsync_len:64,vsync_len:3,bits_per_pixel:32

Эффекта ровно никакого. X (Xorg.conf) устанавливает свои 1024x768@100 (которым я долго пылался его научить раньше :)

modprobe aty128fb заполняет экран каким-то серым мусором и вешает систему намертво.

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

anonymous

Re: Framebuffer

Хорошая мысля приходит опосля. :)

Запуск modprobe aty128fb из текстовой консоли включает фреймбуффер и все становится розово и пушисто (только что 640x480x8bpp).

Собственно, вопрос теперь такой: как настроить grub.conf, чтобы загружался модуль aty128fb с нужными настройками (1024x768-32@100)? Как это делается в LILO, я уже прочел в сотне мест. Но у меня GRUB. Добавление video=aty128fb:... в строку параметров кернела не помогает

anonymous ()
Ответ на: Re: Framebuffer от Maclaud

Re: Framebuffer

vga=791 помогло. Но режим фреймбуффера 1024x768-16bpp@60Hz, а в иксах 1024x768-32bpp@100Hz.

Похоже, что параметр video=aty128fb:1024x768-32@100 ни на что не влияет, хотя в документации (aty128fb.txt) упомянут именно такой способ переключения в нужный режим.

Есть ли способ настроить фреймбуффер таким образом, чтобы глубина цвета была 32bpp (и желательно refresh rate 100Hz)? Можно ли задавать параметры фреймбуффера с помощью fbset (я не обнаружил как)?

Может кто знает, какие опции принимает модуль aty128fb (для прописания в modprobe.conf)? В исходниках aty128fb.c этого не видно.

anonymous ()
Ответ на: Re: Framebuffer от Demetrio

Re: Framebuffer

Лично у меня на 16 битах вылезают артефакты в svga игрушках пускаемых через dosemu.

RatMann ★★ ()
Ответ на: Re: Framebuffer от Demetrio

Re: Framebuffer

Ну, насчет 32 бита я погорячился =) Нужно 24 на самом деле. vga=792 устанавливает 1024x768-24bpp@60Hz Иксы работают в 1024x768-24@100. Но получается такая фигня: программа, рисующая в фреймбуффер красный квадрат, рисует правильно, когда запущена из текстовой консоли, и неправильно, когда из консоли-окошка в Иксах (квадрат размножается на четыре по горизонтали и вовсе не красный, а какой-то серый сеточкой). Параметры фреймбуффера определяются программой правильно: 1024x768-24bpp.

Почему так просходит, если режимы fb и экрана в X одинаковые?

Кстати, похоже, что вот этот самый vga=792 включает фреймбуффер не через aty128fb и вообще они друг друга не знают. Атишный модуль потом не хочет работать (modprobe aty128fb: cannot reserve framebuffer memory). А если не включать vga=792, то aty128fb грузится (только руками в консоли через modprobe; параметр кернела video=aty128fb:.. игнорируется), и в своем дефолтном режиме 640x480-8bpp@60Hz. А поменять режим я уже убился, но не нашел как. Из доки aty128fb.txt:

* * * How to use it? ==============

Switching modes is done using the video=aty128fb:<resolution>... modedb boot parameter or using `fbset' program. * * *

Из modedb.txt:

* * * When a frame buffer device receives a video= option it doesn't know, it should consider that to be a video mode option. If no frame buffer device is specified in a video= option, fbmem considers that to be a global video mode option.

Valid mode specifiers (mode_option argument):

<xres>x<yres>[M][R][-<bpp>][@<refresh>][i][m] <name>[-<bpp>][@<refresh>] * * *

добавление кернелу аргумента video=aty128fb:1040x768-24@100 не помогает. Фреймбуффер не инициализируется. А aty128fb, насколько я понял, понимает только такие аргументы (aty128fb.txt):

* * * You can pass kernel command line options to vesafb with `video=aty128fb:option1,option2:value2,option3' (multiple options should be separated by comma, values are separated from options by `:'). Accepted options:

noaccel - do not use acceleration engine. It is default. accel - use acceleration engine. Not finished. vmode:x - chooses PowerMacintosh video mode <x>. Depreciated. cmode:x - chooses PowerMacintosh colour mode <x>. Depreciated. <XxX@X> - selects startup videomode. See modedb.txt for detailed explanation. Default is 640x480x8bpp. * * *

Причем последний (1024x768@24, 1024x768-24@100, 1024x768 -- пробовал разные варианты) -- монописсуально отторгает.

Как загрузить модуль aty128fb в нужном режиме? Кто знает, подскажите!

Или как еще можно использовать fullscreen в программе, запущенной из-под Иксов (КДЕ)? XLib не устраивает -- система client--server, мягко говоря, не ориентирована на скорость.

anonymous ()
Ответ на: Re: Framebuffer от anonymous

Re: Framebuffer

Сорри за нечитабельность (какой-то кошмар с переводами строки при перенесении из KWrite)

anonymous ()
Ответ на: Re: Framebuffer от anonymous

Re: Framebuffer

Выяснил. Проблема всё-таки в том, что в иксах глубина цвета не 24 bpp, а 32. Хотя в xorg.conf DefaultDepth 24. Как настроить 24bpp для рабочего стола в X (KDE)?

xorg.conf:

Section "Screen" Identifier "Screen0" Device "Videocard0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Viewport 0 0 Depth 24 Modes "1024x768" "800x600" "640x480" EndSubSection EndSection

Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "CTX5374" DisplaySize 330 250 HorizSync 30.0 - 97.0 VertRefresh 50.0 - 160.0 Modeline "1024x768_100.00" 113.31 1024 1096 1208 1392 768 769 772 814 -HSync +Vsync Option "dpms" EndSection

anonymous ()
Ответ на: Re: Framebuffer от Demetrio

Re: Framebuffer

Тем не менее, при записи в память фреймбуффера для смещения на пиксел вправо надо инкрементировать адрес на 4 байта. Это при зпауске программы из-под иксов. А при запуске из консоли только на 3. В обоих случаях параметры fb определяются как 1024x768-24bpp.

Разобрался с проблемой инициализации fb в загрузчике. Есть два взаимоисключающих варианта: a) aty128fb встроен в ядро b) aty128fb скомпилирован модулем

В первом случае нужно вписать параметр кернела в загрузчике video=aty128fb:...

Во втором нужно загружать модуль modprobe aty128fb и устанавливать необходимый режим с помощью fbset в каком-нибудь скрипте, выполняющемся при старте.

А опция vga=... это отдельная приблуда ядра под названием "Console Display Driver Support->Video Mode Selection Support", которая тоже опционально включается при сборке ядра и никакого отношения к драйверу fb моей видеокарты не имеющая. =)

Нашел в мане Xorg инфу, что X сервер поддерживает фреймбуффер самостоятельно с помощью fbdev. И это был бы самый приемлемый вариант, т. к. fb коррелировал бы с режимом рабочего стола. Но настроить его мне не удалось. При добавлении в xorg.conf строчек

Section "Device" Identifier "Videocard0" Driver "r128" Option "fbdev" "/dev/fb0" # <<<< Option "UseFBDev" "On" # <<<< VendorName "Videocard vendor" BoardName "ATI Rage 128 Pro Ultra" EndSection

X Server вообще не грузится, при этом калечит текстовую консоль так, что невозможно залогиниться (экран моргает, консоль появляется на долю секунды и затем исчезает на секунду; ввод с клавиатуры почти не пробивается). Пришлось грузить knoppix чтобы вернуть жизнеспособный xorg.conf.

anonymous ()
Ответ на: Re: Framebuffer от anonymous

Re: Framebuffer

Читать так:

При добавлении в xorg.conf строчек

Section "Device" Identifier "Videocard0" Driver "r128" Option "fbdev" "/dev/fb0" # <<<< Option "UseFBDev" "On" # <<<< VendorName "Videocard vendor" BoardName "ATI Rage 128 Pro Ultra" EndSection

anonymous ()
Ответ на: Re: Framebuffer от anonymous

Re: Framebuffer

Ясно, это злобный Tex paragraphs сделал

Читать так:

При добавлении в xorg.conf строчек

Section "Device"
Identifier "Videocard0"
Driver "r128"
Option "fbdev" "/dev/fb0" # <<<<
Option "UseFBDev" "On" # <<<<
VendorName "Videocard vendor"
BoardName "ATI Rage 128 Pro Ultra"
EndSection

anonymous ()
Ответ на: Re: Framebuffer от anonymous

Re: Framebuffer

> Пришлось грузить knoppix чтобы вернуть жизнеспособный xorg.conf.

Можно было при загрузке в строку параметров ядра просто ввести init 3

;-)

Demetrio ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.