LINUX.ORG.RU

Тем, у кого видео карта от nVidia посвящается....


0

0

Тем, у кого видео карта от nVidia посвящается....



Для всех у кого на компе стоит Linux а внутри видео карта на чипсете Nvidia,
думаю, будет интересен мой небольшой рассказ...

Не знаю как вы, но я большую часть своего времени провожу в консоли а не в иксах.
По-моему удобне залогониться на нескольких терминалах, запустить 2-3 Midnight'a,
mpg321, top и ещё там, что-нибудь, чем открывать десятки окошек. В иксах я
играюсь, смотрю фильмы, лазию по нету, но основная работа - это в консоли.

Только вот стандартный VGA видеорежим 80x25 символов при частоте обновления
в 70Гц меня обсалютно не радовал, поэтому я стал искать варианты его повысить.
Наиболее простым и быстрым способом оказось использование frame buffer'а.
Он включается в ядре и потому не требует ни какого дополнительного софта.

- Как это сделать?
- Просто!

# cd /usr/src/linux
# make menuconfig

заходим в разделы

= Console driver
==> Frame-buffer support

и помечаем

[*] Support for frame buffer devise
[*] nVidia Riva support

выходим сохраняя настройки и компиляем ядро
(если не знаете как - читайте книжки, мой рассказ не про это :)

В результате я получил консоль с гадким видео режимом 640x480 8bit 60Гц.
Я долго бился пытаясь его сменить, скармливаю ядру, посредством lolo,
разные строчки с append="всякая_херня", но всё было бесполезно.
Потом я додумался посмотреть исходники исходники это frame buffera и ...
О Боги !!! =) Я нашёл !!! Выглядело это примерно так:

# vi /usr/src/linux/driver/video/riva/fbdev.c

...

static struct fb_var_screeninfo rivafb_default_var = {
xres: 1024,
yres: 768,
xres_virtual: 1024,
yres_virtual: 768,
xoffset: 0,
yoffset: 0,
bits_per_pixel: 8,
grayscale: 0,
red: {0, 6, 0},
green: {0, 6, 0},
blue: {0, 6, 0},
transp: {0, 0, 0},
nonstd: 0,
activate: 0,
height: -1,
width: -1,
accel_flags: 0,
pixclock: 10111,
left_margin: 192,
right_margin: 32,
upper_margin: 34,
lower_margin: 14,
hsync_len: 160,
vsync_len: 6,
sync: 0,
vmode: FB_VMODE_NONINTERLACED
};

...

Этот кусок, что вы сейчас видите, задаёт dafault'ный видео режим.
Раньше тут было прописано то гадкое разрешение 640x480 60Гц,
теперь же - 1024x686 85Гц.

Если вы аккуратно подредактируете этот файл, перекопмайлите ядро,
перезагрузитесь, то ... получите 128x48 символов вместо 80x25 ранее,
или 6144 символа против 2000, т.е вы на экране вы увидите в 3.072 раза
больше символов чем у вас было! Запустите Midnight и полюбуйтесь!

Наверное у вас появился вопрос откуда я взял эти значения для
pixclock, left_margin и т.д. - долго писать, может быть в следующий раз.
НЕ ставьте их от балды - ПЛОХО будет.

Вот ещё несколько значений для других режимов,
всё поочереди начиная с pixclock:

800x600-75 = 20203 160 16 21 1 80 3
800x600-100 = 14815 216 0 14 7 64 4
1024x768-100 = 9091 280 0 16 0 88 8
1280x1024-75 = 7408 248 16 38 1 144 3
1600x1200-76 = 5051 304 40 42 3 136 5

А теперь ложка дёгтя в бочку мёда!
Именно этот frame buffer КОНФЛИКТУЕТ с видео драйвером под иксы
от INVIDIA, не с тем который идёт с иксами и называется "nv",
а с тем, который выкладывается на www.nvidia.com и называется "nvidia"
Запустите иксы, выйдите из них и посмотрите во что превратился курсор....

Итоги:

От драйвера nvidia в иксах я отказываться НЕ ХОЧУ, потому, что
quake3 (пропатченый под linux) идет у меня БЫСТРЕЕ чем в винде,
а лишать себя удовольствия лишний раз обломать фанов винды ;)
я НЕ МОГУ

От консоли с 1024x768x32bit (!) (bit_per_pixel=24) я тоже отказаться
не могу! Уже привык смотреть видео НЕ загружаая (!) иксы посредством
mplayer'a (MPlayer RULEZ!!!)

Пришлось сделать два ядра:
1. обычное - если планирую пользоваться иксами
2. с frame buffer'ом - для всего остального
и перезагружають теперь от одного к другому... :(

Контрольный вопрос:

Может кто-нибудь нашёл способ это исправить?
Или ломанул nvidia и слил их исходники дров, поделись?
Или переписал сам frame buffer чтобы он дружил с nvidia'вскими дровами?
Или ... просто хочет проделиться впечатлениями, пишите сюда
или мне на мыло iddqd@xakep.ru


А как насчет того чтоб, драйвер rivafb скомпилить как модуль, и подгружать\выгружать когда надо

З.Ы. видеорежим fbset замечательно настраивается если как модуль, или при загрузке через лило если в ядре

anonymous
()

Кажется, у всех так: во-первых, использование rivafb вместе с X приводит к падению последних, если ставить драйвер с www.nvidia.com(это уже давно и остается до сих пор такая ситуация); во-вторых, лучше загружать rivafb как модуль (modprobe rivafb); и в-третьих, может кто-нибудь все же скажет, как заставить выйти на заданное разрешение в кернеле-2.5? Именно, если загружать как модуль. Если встроено в ядро - работает строчка append="video......, но не по-русски (приходится в каждой консоли загружать шрифты), если как модуль - упорно на 640х480-60Гц, но по-русски:) Сколько уж не спрашивал, чего только не делал. Или это пока в принципе невозможно? fbset не работает. Спасибо всем.

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