LINUX.ORG.RU

nvidia dualhead


0

0

Если у кого-нибудь получалось настроить два экрана на одной карте от nVidia - поделитесь конфигом. Интересует _не_ TwinView, а два отдельных экрана (Screen) в рамках одного ServerLayout-а на одной карте.

Appendix P из README я читал - не получается, поднимается только Screen 0. Второй монитор говорит "нет сигнала", да и в логах не видно, чтобы его пытались запускать.

система - debian testing на x86-32, xorg 7.0

anonymous

На почившем atmsk.ru была чудесная статья. Поскольку проект умер, а выложено-ли где не в курсе - привожу здесь, прошу прощения за форматирование.

Вывод изображения отдельно взятых программ на TV (nvidia).PrintE-mail
Алексей Любимов
Вывод изображения отдельно взятых программ на TV (nvidia).


Одно из решений -настроить сразу два экрана в XFree86.
При этом один экран (:0.0), это рабочий монитор. На нем отображается десктоп, панели и все остальное, а второй экран (:0.1), это телевизор.
Изображение на телевизоре при загрузке остается пустым, но на нем в любой момент можно запускать программы с указанием выводить изображение на телевизор (например, mplayer).


Вся настройка ограничивается изменениями в файле конфигурации /etc/X11/XFree86-4.


Добавляем секцию-описание монитора-телефизора (теперь будет две секции - телевизор и основной монитор)

Добавляем описание видеокарты с выходом на tv (теперь при одной видеокарте будет две секции, описывающие ее способности вывода изображения на tv и crt)
Добавляем описание экрана (здесь тоже теперь будет будет две секции с описанием нужных разрешений для монитора и телевизора)
Изменяем общую раскладку сервера, где указываем все новые секции.
1) Секции-описания мониторов.


Section "Monitor"
Identifier "crt"
VendorName "Nec"
ModelName "FE991"
HorizSync 31.5-96.0
VertRefresh 40-160
EndSection

Section "Monitor"
Identifier "tv"
VendorName "Panasonic"
ModelName "tx21-ps70t"
HorizSync 30 - 50
VertRefresh 60 - 60
Option "dpms"
EndSection




Как видно, первая секция содержит настройки обычного монитора, а вторая - телевизора.
Естественно, эти секции можно дополнять опциями, например, своими строчками с modeline.


2) Секции-описания видеокарты.


Видеокарта у нас одна, но описывается в данном варианте она дважды. В первом случае, как устроуство с выходом на монитор, а во втором - на телевизор.
Естественно, карточка должна быть реально "двухголовой", то есть поддерживать независимый вывод разных изображений на tv и монитор. Целый ряд карточек geforce-2 и все карты geforce-4 удовлетворяют этому условию.
Section "Device"
Identifier "nvidia-crt"
VendorName "Unknown"
BoardName "Unknown"
Driver "nvidia"
BusID "PCI:1:0:0"

Option "AGPMode" "4"
Option "DPMS" "on"
Option "NoLogo" "on"

Option "ConnectedMonitor" "crt"
Screen 0

EndSection

Section "Device"
Identifier "nvidia-tv"
VendorName "Unknown"
BoardName "Unknown"
Driver "nvidia"
BusID "PCI:1:0:0"

Option "AGPMode" "4"
Option "DPMS" "on"
Option "NoLogo" "on"

Option "TVStandard" "PAL-I"
Option "TVOutFormat" "COMPOSITE"

Option "ConnectedMonitor" "tv"
Screen 1
EndSection



Как видно, опции, общие для этих секций, так и дублируются в каждой секции.
Внимание! необходимо указывать BusID карточки. Без этого драйвер будет думать, что карточек и в самом деле две.
Подсмотреть busid карточки можно в файле /proc/pci (у абсолютного большинства пользователей так и будет, как в примере - Bus 1, device 0, function 0:)
3) Секции, описания экранов.
Section "Screen"
Identifier "Monitor"
Device "nvidia-crt"
Monitor "crt"
DefaultColorDepth 24

Subsection "Display"
Depth 24
Modes "1280x1024" "1152x864" "800x600" "640x480"
ViewPort 0 0
EndSubsection
EndSection

Section "Screen"
Identifier "TV"
Device "nvidia-tv"
Monitor "tv"
DefaultColorDepth 24
Subsection "Display"
Depth 24
Modes "1024x768" "800x600" "640x480"
ViewPort 0 0
EndSubsection
EndSection




Здесь вроде все просто. Для монитора и телевизора стандартным образом задаются списки разрешений для разных вариантов глубины цвета и значения по умолчанию.
В примере выброшены неиспользуемые подсекции для 8, 15, 16 и 32 битной глубины цвета.
4) Раскладка сервера.
Section "ServerLayout"
Identifier "layout1"
Screen 0 "Monitor"
Screen 1 "TV" RightOf "Monitor"

InputDevice "Mouse1" "CorePointer"
InputDevice "Keyboard1" "CoreKeyboard"

EndSection



Здесь мы сообщаем, что жедаем видеть два экрана (телевизор будет справа от монитора, но можно указать слева, сверху или снизу) с общими мышью и клавиатурой.

Теперь, перезапустив иксы (ctrl-alt-backspace), приложения можно запускать на телевизоре, установив переменную среды DISPLAY в значение:0.1 (DISPLAY=:0.1 mplayer).


Последний штришок - в ~/.bashrc указать псевдонимы для программ, которые будут выводится на телевизор.
Примерно так:
$ cat ~/.bashrc

# User specific aliases and functions

alias mplayer='DISPLAY=:0.1 mplayer'
alias tv='DISPLAY=:0.1'




PS Спасибо AS за наводку на этот вариант.

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

Спаисбо за ответ - он 100% верный (предлагается добавить в фак, кстати, если кому не лень). Правда, все это я уже знал (собственно, это изложение на русском того самого Appendix P).

Я, собственно, так и делал - только опечатался и не мог никак найти ошибку. Теперь попробовал еще раз - заметил лишнюю закоментаренную строку, поправил - завелось.

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

> добавить в фак

Где-то здесь живет хозяин этого текста.

(и, кстати, пусть ему будет стыдно:)

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