LINUX.ORG.RU

Как работает графика в Linux?

 


0

1

Где можно прочитать, как работает графическая подсистема linux?
т.е. в идеале это должна быть статья, в статье svg-картинка с компонентами, в картинке гиперссылки на документацию по компонентам.

Меня интересует поддержка нескольких GPU на одной видеокарте.

я тут сейчас букв понапишу, а вы поправьте, если что:

Ясно, что есть центральный процессор, есть видеокарта, между ними находится микросхема-мост (которая входит куда? в состав чипсета или в состав самого центрального процессора?). Эта микросхема мост с одной стороны соединяется с процессором через неясно-какую шину (данных и портов), а с другой стороны соединяется с видеокартой через шину PCIe
Для того, чтобы управлять шиной PCI через мост в ядре linux есть («menuconfig» -> bus options -> PCIe support) -
http://how-to.wikia.com/wiki/How_to_configure_the_Linux_kernel/drivers/pci/pcie

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

Поверх всего этого запускаются драйверы видеокарты из состава Xorg-сервера (одни нужны потому, что предоставляют общий API для разных карт, в то время как драйверы ядра предоставляют возможности специфичные для отдельных видеокарт? Или зачем вообще два комплекта драйверов?)
Поверх этих драйверов запускается Mir, поверх него XMir
последний предоставляет API X-сервера, которым пользуются прикладные программы (такие как XFCE, xfwm и xterm)

Мне ещё непонятно, чем xfce от xfwm отличается. И как именно xfwm управляет окнами? xfwm является композитным менеджером окон (или включает его в себя?).
Композитность очень важна для того, чтобы делать полупрозрачные окна (так ли это?).

Поверх всего этого запускается библиотека абстракций некоего фреймворка, типа питона или моно (как она в mono называется и где лежит?)
А в моно полупрозрачные окна нужны для того, чтобы работал дизайнер WinForms в Monodevelop.

The main stumble point is the lack of true Control transparency (WS_EX_TRANSPARENT), which is not yet supported by the MWF X11 backend, but is required for a proper Drag and Drop and other interaction (snap lines, etc) on the design service. There is WinForms bug in our bug tracker for this problem - http://bugzilla.novell.com/show_bug.cgi?id=323819.

В общем, как-то слишком много надо всего прочитать перед тем как просто взять и получить работающую программу в работающей операционке... И никак это в одном месте не сведено. Не ставят авторы интернета достаточного количества гиперссылок, чтобы всё было пролинковано...

Как работает графика в Linux?

Ясно, что есть центральный процессор, есть видеокарта, между ними находится микросхема-мост (которая входит куда? в состав чипсета или в состав самого центрального процессора?)

Причём здсь linux?

Для того, чтобы управлять шиной PCI через мост в ядре linux есть («menuconfig» -> bus options -> PCIe support) -

Это поддержка aspm и прочего, pcie программно совместима с pci.

Дальше не читал.

anonymous ()

Какой полёт мысли.

xfce от xfwm

первое - среда, второе - оконный менеджер (конкретное приложение), компонент среды.

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

А какую программу ты хочешь получить?

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

с работающим редактором WinForms

Может тогда лучше это, на винду?

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

Такой вопрос на сколько monodevelop уступает студии?Просто я на днях попробовал С# и таки влюбился в этот язык и студию

rikimaru ()

А в моно полупрозрачные окна нужны для того, чтобы работал дизайнер WinForms в Monodevelop.

Там просто какие-то костыли с RGBA, которые вообще в левом патче, и где сам автор писал про ошибки. Никаких новостей за 6 с половиной лет.

Забей, просто забей.

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

Просто я на днях попробовал С# и таки влюбился в этот язык

Use the Vala, Luke!

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

Сильно уступает. Но настоящих джедаев, сам понимаешь, это не остановит.

Indaril_Shpritz ()

В следующий раз хоть нумеруй утверждения, право слово, отвечать неудобно.

находится микросхема-мост (которая входит куда? в состав чипсета или в состав самого центрального процессора?)

У тебя сейчас каша в голове, сваренная из чипсетов и мостов, приправленная шинами. Вот классическая схема.

Зависит от возраста процессора, в последние запихали все, вплоть до, условно, игровой видеокарты( южный вроде пока так и остался на плате).

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

Эта организация такая вещь в себе, это вам не компьютер общего назначения, ядро на GPU выполняться не может, так что нужен только драйвер.

Все что выше, можно глянуть на схеме.

P.S. Так сложно зайти в вики, и прочитать про:
http://ru.wikipedia.org/wiki/Видеокарта
http://ru.wikipedia.org/wiki/Чипсет ?

CrossFire ★★★★★ ()

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

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

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

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

Вот классическая схема.

переменуем «классическую схему» в «логическую схему». Потому что для программирования важно, какие устройства есть логически (потому что для каждого устройства определен набор интерфейсов и протоколов)

Эта организация такая вещь в себе

ну какие-то спецификации должны же быть:
http://www.ixbt.com/video3/rv770-3-part1.shtml
http://www.ixbt.com/video3/images/rv770-3/bw.png
http://www.ixbt.com/video2/spravka-r7xx.shtml
http://www.ixbt.com/video3/images/rv770/rv770_diag.png

У видеопроцессора ведь не бывает выходов DVI-I ? Значит там ещё какой-то набор электрических компонентов на плате (RAMDAC, 2*2 штуки)

Дальше, у видеокарт бывает BIOS, мы видим его вызов в момент загрузки

И есть всякие технологии типа
* Integrated HD Audio controller (я думаю, что он нужен для HDMI), поддерживает восьмиканальный (7.1) поток формата AC3 с битрейтом до 6.144 Мбит/с или несжатый поток стереозвука с частотой дискретизации 48 кГц.
* HDMI with 7.1 surround sound.
* ATI CrossFireX Technology (CFBI = ?)
* Avivo HD Technology
* Unified Video Decoder 2 (аппаратно декодирует H.264, VC-1, MPEG2)
* Accelerated Video Transcoding (аппаратно кодирует и перекодирует H.264 и MPEG2)
* HDCP (High-bandwidth Digital Content Protection), особенно интересен тем, что сигнал до HDMI-монитора будет шифроваться (а значит надо понимать, откуда и как там берутся ключи и какие алгоритмы используются).
* Hardware DirectX 10.1
* Shader Model 4.1
* Запись результатов до 2*8 буферов кадра одновременно (MRT = Multiple Render Target)
* ATI PowerPlay (управление частотой чипов, памяти, напряжением питания, могут быть отключены простаивающие блоки GPU, вращением вентиляторов - ещё один микроконтроллер, постоянно проводящий мониторинг температурных датчиков и активность шин, как внутричиповых, так и внешней PCI Express)

2 x 512M / 2 x Bus Width 256bit GDDR3 Memory SDRAM, Clock Speed 993 MHz (1986 Mbps) memory
а если есть память, то должен быть контроллер этой памяти (четыре контроллера шириной по 64 бита с поддержкой GDDR3/GDDR5). Кто общается с контроллером прямого доступа к памяти с материнской платы кроме ЦП?

ядро на GPU выполняться не может, так что нужен только драйвер

Но где-то должно быть описано, как загружается код в видеокарту, как он там запускается. Даже если это не ядро, то всё равно это код, работающий на видеокарте.
И судя по функциям видеокарты, там еще своего кода должно хватать (как его обновлять?)

Это мне ещё повезло, что всего 2 GPU, могло быть и четыре:
http://article.tech-labs.ru/img/article/7720/ltbp_v5_6k_747267.JPG

можно глянуть на схеме

Схема красивая, хороша она тем, что на ней нарисованы DRM-модули ядра. Две только в ней проблемы:
1) Mir это не Wayland, насколько я понимаю
2) нужно больше деталей и подробностей.

Например мне непонятно:
А) как kms работает с разными GPU
Б) как разделяются функции между kms и drm (кто за что отвечает)
В) используется ли libGL-mesa-DRI в Mir
Г) зачем нужны аж три слоя - drm, libdrm, libGL-mesa-DRI, кто из них какие функции выполняет
Д) предусматривается ли в Mir работа через сеть, как в xorg-server или совсем нет (и на каком уровне эта поддержка находится)

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

Потому что для программирования важно, какие устройства есть логически (потому что для каждого устройства определен набор интерфейсов и протоколов)

Мы графику обсуждаем, а не SATA контроллеры, мне казалось.

ну какие-то спецификации должны же быть:

Кто говорил, что это черный ящик, работающий на магии?

Дальше, у видеокарт бывает BIOS, мы видим его вызов в момент загрузки

Ни разу не видел его вызова, слышу каждый раз, да.

Значит там ещё какой-то набор электрических компонентов на плате

Кто бы мог подумать?)

И есть всякие технологии типа

*Приводится мешанина из маркетоидных названий и хардварных реализаций, доступа к которым у нас нет*

Но где-то должно быть описано, как загружается код в видеокарту, как он там запускается.

man Open GL/CL

И судя по функциям видеокарты, там еще своего кода должно хватать (как его обновлять?)

man videoBIOS

Это мне ещё повезло, что всего 2 GPU, могло быть и четыре

Жутко повезло, ничего не скажешь. Количество GPU очень поможет тебе в написании прикладных программ.

Например мне непонятно:

man Google

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

В каком пакете пакетного менеджера находится этот код ?

В каком пакете код BIOS? При чем тут пакетный менеджер, при чем тут линукс?

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

1) Весь софт, который ставится в linux - он весь ставится пакетами. Это одно из основных отличий линукса от windows.

2) Смотрю я на секцию
Protocol specifications:
X11 Protocol & Extensions:
http://www.x.org/releases/X11R7.7/doc/
и мне непонятно, где там Xinerama Extensions

3) Мне не ясно, как соотносятся между собой Xinerama Extensions, XRandr extensions и Composite extensions. Что из них должно быть установлено и как это используется

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

Весь софт, который ставится в linux - он весь ставится пакетами. Это одно из основных отличий линукса от windows.

Спасибо за информацию, буду знать.

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

скажи сразу цель

Ну не напишет же он, что цель — тупо флуд, в самом деле.

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

Ubuntu при том, что только в ней есть Mir.

Так нужно было сразу писать: «планета Земля». Поскольку только на ней есть Mir.

factory / # man videoBIOS
No manual entry for videoBIOS
В каком пакете пакетного менеджера находится этот код ?

С дуба рухнул? Причем здесь «в каком пакете»? BIOS - это не часть ОС, он обычно зашивается во флеш устройства, иначе как бы оно работало?

Я все больше склоняюсь к тому, что анонимус был прав.

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

Потому что он написал ровно то, что я спрашивал.

Путь он будет лучший. Только для себя ответь: кто полезней - тот, кто дает тебе велосипед для ускорения движения, или тот, кто показывает тебе короткий путь, который быстрее доставит тебя к цели?

Хотя, судя по тому как ты воспринимаешь критику, тебе важнее отстоять свою правоту, нежели научиться...

Kroz ★★★★★ ()

Линакс не поддерживает графику.

anonymous ()

Каждые 3 года появляется очередная технология ускорения графики, за ними не уследишь.

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

на днях попробовал С# и таки влюбился в этот язык

Зонды Майкрософт всегда входят гладко... сначала...

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