LINUX.ORG.RU

Общее рабочее пространство для двух видеокарт.

 , , ,


0

1

Привет ЛОР!

Есть комп с возможностью включать одновременно интегрированный интел и дискретный радеон. Собственно так я и сделал. Подцепил с каждой карте по монитору.

После загрузки всё пошло нормально, kscreen подцепил оба монитора.

Но на мониторе с radeon hd4650 возникли проблемы с отрисовкой. Решаются они добавлением

Option "EXAPixmaps" "off"
в Device секцию xorg.conf.

Но после того, как я это сделал, началась порнография с автоопередлением настроек. Перепробовал много разных вариантов, но сделать так же, как определяется автоматом так и не смог.

Если оставить только описание device (неважно, одно или оба), то запускается только одна видеокарта. Если добавить секции Screen для каждого монитора, то оба активны, но на каждом из них запускается своя копия плазмы и, вообще, они все из себя отдельные.

xrandr -q видит только монитор текущей видеокарты, а не оба. Сейчас xorg.conf.d со следующим содержимым:

Section "Device"
        Identifier      "Intel"
        Driver          "intel"
        BusID           "PCI:0:2:0"
        Option          "monitor-VGA-0" "LG"
EndSection

Section "Device"
        Identifier      "Radeon"
        Driver          "radeon"
        Option          "EXAPixmaps"    "off"
        BusID           "PCI:1:0:0"
        Option          "monitor-VGA-1" "AOC"
EndSection
Section "Monitor"
        Identifier      "LG"
        Option          "primary"
EndSection

Section "Monitor"
        Identifier      "AOC"
        Option          "LeftOf"        "LG"
EndSection
Section "Screen"
        Identifier "Intel"
        Device     "Intel"
        Monitor    "LG"
EndSection

Section "Screen"
        Identifier "Radeon"
        Device     "Radeon"
        Monitor    "AOC"
EndSection
Section "ServerLayout"
        Identifier      "Layout"
        Screen          0               "Intel"
        Screen          1               "Radeon"
EndSection

Что надо сделать, чтобы оба монитора были логически одним экраном?

Или можно ли задать EXAPixmaps off не через xorg.conf?

★★★★★

А что если Option "EXAPixmaps" "off" заменить на Option "MigrationHeuristic" "greedy", убрать все секции, кроме Device и закомментировать опции «monitor-VGA...»?

А у тебя точно EXA, а не GLAMOR?

Zubok ★★★★★ ()

Через AMD Cataclysm Control Center настраивать не пробовал? У меня двойной Radeon и так отлично настраивается. Насчёт Radeon + Intel не знаю.

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

Странная ситуация получилась.

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

Section "Device"
        Identifier      "Intel"
        Driver          "intel"
        BusID           "PCI:0:2:0"
EndSection

Section "Device"
        Identifier      "Radeon"
        Driver          "radeon"
        Option	        "MigrationHeuristic" "greedy"
        BusID           "PCI:1:0:0"
EndSection

Про EXA уверен. Glamor тоже работает нормально (по-крайней мере сходу не заметил). Проблема в том, что добавляя секцию device я теряю правильное определение мониторов.

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

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

У тебя в xorg.conf[.d] что-нибудь есть про Device? Если есть, можешь выложить конфиг?

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

А лог можно глянуть? Надо только решить, с каким конфигом. то есть. Лучше снять два лога: один с автоконфигурацией (пустым xorg.conf и без xorg.conf.d/*), а другой с каким-нибудт простым конфигом вроде последнего. Выложить на pastebin.com оба.

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

http://pastebin.com/38K26QdG

~$ cat /etc/X11/xorg.conf.d/*
# Read and parsed by systemd-localed. It's probably wise not to edit this file
# manually too freely.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru"
        Option "XkbVariant" ","
        Option "XkbOptions" "grp:alt_shift_toggle,grp:caps_toggle"
EndSection
Section "Device"
        Identifier      "Intel"
        Driver          "intel"
        BusID           "PCI:0:2:0"
EndSection

Section "Device"
        Identifier      "Radeon"
        Driver          "radeon"
        Option          "MigrationHeuristic" "greedy"
        BusID           "PCI:1:0:0"
EndSection
# trackpoint users want wheel emulation

Section "InputClass"
        Identifier      "trackpoint catchall"
        MatchIsPointer  "true"
        MatchProduct    "TrackPoint|DualPoint Stick"
        MatchDevicePath "/dev/input/event*"
        Option  "Emulate3Buttons"       "true"
        Option  "EmulateWheel"  "true"
        Option  "EmulateWheelButton"    "2"
        Option  "XAxisMapping"  "6 7"
        Option  "YAxisMapping"  "4 5"
EndSection
Ivan_qrt ★★★★★ ()
Ответ на: комментарий от Ivan_qrt

Хм, странно. В случае с конфигом вообще radeon не грузит. Даже не пытается. А что будет, если убрать секцию intel, оставив только radeon?

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

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

Без конфигурации:

[ 77896.795] (**) |-->Screen "Default Screen Section" (0)
[ 77896.795] (**) |   |-->Monitor "<default monitor>"
[ 77896.795] (==) No monitor specified for screen "Default Screen Section".
        Using a default monitor configuration.
[ 77896.795] (==) Automatically adding devices

А с двумя или одной секцией Device следующее:

[ 76444.430] (==) No screen section available. Using defaults.
[ 76444.430] (**) |-->Screen "Default Screen Section" (0)
[ 76444.430] (**) |   |-->Monitor "<default monitor>"
[ 76444.430] (==) No device specified for screen "Default Screen Section".
        Using the first device section listed.
[ 76444.430] (**) |   |-->Device "Intel"
[ 76444.430] (==) No monitor specified for screen "Default Screen Section".
        Using a default monitor configuration.
[ 76444.431] (==) Automatically adding devices

То есть грузит ту секцию Device, которая первая, а вторую не грузит. Когда конфиг пустой, то No device specified for screen «Default Screen Section» не пишет, а только про то, что не указан монитор (No monitor specified for screen «Default Screen Section»). Надо подумать.

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

Если добавить секции Screen для каждого монитора, то оба активны, но на каждом из них запускается своя копия плазмы и, вообще, они все из себя отдельные.

Вот это, кстати, вылечится, если включить Xinerama. В самый первый свой конфиг в топике добавь в секцию «ServerLayout» Option "Xinerama" "on". Должен появиться общий экран на две головы.

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

С включённой Xinerama иксы падают при запуске лисы. И артефакты в хромиуме.

RandR настроить у меня пока так и не получилось. Никак не хочет объединять всё в один экран.

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

А что будет, если в ServerLayout указать следующее (без номеров экранов):

Section "ServerLayout"
        Identifier      "Layout"
        Screen          "Intel"
        Screen          "Radeon" LeftOf "Intel"
EndSection

И попробовать без мониторных секций, и с ними.

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

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

xrandr -q на каждом экране видит только свои выходы.

Ivan_qrt ★★★★★ ()

Если добавить секции Screen для каждого монитора, то оба активны, но на каждом из них запускается своя копия плазмы и, вообще, они все из себя отдельные.

Так, а эти копии клонированы или независимы? Интересно, плазма теперь такая умная, что автоматом на двух скринах запускается сама? Попробуй еще в секции ServerFlags к первому конфигу указать Option «Clone» «off»

Zubok ★★★★★ ()

И еще одну тему попробовать. В конфигурации из топика (первой) вместо двух экранов в секции ServerLayout создать только один Screen, который с Primary. Может, вторая карта тоже подхватится автоматом? Попробовать primary делать либо intel, либо radeon.

Только тут для надежности добавить «on» или «true» к этому:

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

И еще вот нашел. Раньше что-то я никогда не встречал использование этой опции, но вдруг оможет. Она в секции ServerLayout должна быть:

       Option "SingleCard"  "boolean"
              As  IsolateDevice, except that the bus ID of the first device in
              the layout is used.

Может, сделав ее явно false, что-то взлетит?

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

При двух плазмах они независимые.

primary пробовал, во многих разных вариантах, не помогло. Если явно не указывать screen в serverlayout, то соответствующая видеокарта не стартует.

singlecard в false попробую, но уже завтра.

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

Что-то вы стали шаманством заниматься. Единого SCREEN на разных видеокартах без Xinerama не будет. Так что надо включать Xinerama и устранять проблемы, если получится.

А радеон не имеет второго выхода? Может проще целиком на него перейти?

Ну можно ещё через xdmx попробовать, если очень надо.

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

Что-то вы стали шаманством заниматься. Единого SCREEN на разных видеокартах без Xinerama не будет.

Если убрать все секции Device, Monitor, Screen и ServerLayout, то именно так и происходит. RandR по дефолту цепляет обе видеокарты и образует из них единый «screen», на котором запускается одна plasma и все работает. Проблема в том, что радеону нужно передать либо «EXAPixpmaps» «off», либо «AccelMethod» «glamor». Без этого он работает с артефактами. А добавляя в xorg.conf секцию Device, приходится начинать шаманить. И как через RandR воспроизвести его дефолтное поведение непонятно.

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

Потому что это делается через RandR. Это показывает xradnr, Xorg.0.log, kscreen и т.п. Xinerama - уже давно устаревшая. Ну и xinerama у меня падает.

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

Zubok

Спасибо всем поучаствовавшим. Проблема наконец-то решена.

Во-первых. Если в xorg.conf оставить только секцию Device без указания BusID, то указанные там параметры применяются, при этом обе видеокарты подключаются, и всё конфигурируется автоматом как надо.

Мой текущий xorg.conf:

$ cat /etc/X11/xorg.conf.d/*
# Read and parsed by systemd-localed. It's probably wise not to edit this file
# manually too freely.
Section "InputClass"
        Identifier "system-keyboard"
        MatchIsKeyboard "on"
        Option "XkbLayout" "us,ru"
        Option "XkbVariant" ","
        Option "XkbOptions" "grp:alt_shift_toggle,grp:caps_toggle"
EndSection
Section "Device"
        Identifier      "default"
        Option          "AccelMethod"   "glamor"
EndSection
# trackpoint users want wheel emulation

Section "InputClass"
        Identifier      "trackpoint catchall"
        MatchIsPointer  "true"
        MatchProduct    "TrackPoint|DualPoint Stick"
        MatchDevicePath "/dev/input/event*"
        Option  "Emulate3Buttons"       "true"
        Option  "EmulateWheel"  "true"
        Option  "EmulateWheelButton"    "2"
        Option  "XAxisMapping"  "6 7"
        Option  "YAxisMapping"  "4 5"
EndSection

Правда, меня не покидает ощущение, что я так уже пробовал, но видимо, я пробовал что-то не так. Возможно секции monitor присутствовали.

Во-вторых, EXAPixmaps «off», так же как и «AccelMethod» «glamor» не помог. Радеон по-прежнему артефактил. Видимо это проблемы при работе с RandR. Надо бы зарепортить баг, но для этого надо обновиться (сейчас на 20 федоре), а я пока к этому не готов.

Проблему я решил, выставив в биосе основным дисплеем радеон, а не интел. При этом радеон стал определятся первым, перестал артефактить, а интел работает нормально.

Кому интересно, вот текущий Xorg.0.log

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

Раз с EXA артефакты и с GLAMOR артефакты, то они, скорее всего на более высоком уровне возникают. А что использует эта плазма: OpenGL или RENDER?

проблемы при работе с RandR.

RandR вроде как в графических операциях не участвует.

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

С пустым конфигом (была EXA) пробовал все варианты, xrender + системная; opengl (1.2, 2.0, 3.1) + растровая. Отключал композитинг. Артефакты неизменны.

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

Сейчас opengl 3.1 + растровая, все ок. По ссылке http://www.phoronix.com/forums/forum/linux-graphics-x-org-drivers/x-org-drm/3... упоминается о баге радеона при нескольких видеокартах и включённом гламоре. Возможно это он. Надо проверять на свежих иксах, а мне пока не как.

Судя по всему радеон глючит, когда основным дисплеем выступает интел. После смены карт в биосе основным стал радеон

[    82.460] (II) RADEON(0): Allocate new frame buffer 3840x1088 stride 3840
и глюки ушли. Как-то так.

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

RandR вроде как в графических операциях не участвует.

Возможно проблемы(артефакты) проявляются при использовании второй видеокарты как видеовыхода для отрендерённого первой картой изображения.

Radeon->Intel->дисплей работает нормально,а

Intel->Radeon->дисплей барахлит, поскольку редко используется и не отлажен, хотя и работает как-то.

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