LINUX.ORG.RU

Положение дел в мире графики для Линукса


1

0

Великолепная статья, которая описывает текущее состояние графической подсистемы компьютера, историю и перспективы развития графики и X сервера и его технологий. Статья будет очень полезна практически для всех.

>>> Подробности

★★★★★

Проверено: Pi ()

Ответ на: комментарий от svu

> backend ("модуль сопряжения"?).

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

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

backend - оконечное устройство примерно так :) , собственно, смысл слова понятен. Перевели мы нормально - модуль сопряжения. В данном контексте одна из частей, которая, с одной стороны, позволяет реализовать использование (стыковку) с ОткрытойГБ, с другой стороны, является реализатором инструментов (функций) библиотеки Каир, как раз оконечным устройством, по отношению к этим инструментам. Примерно так :) ?

(а ж/р я поправил сразу :) )

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

может просто backend заменить на "работает через". Дизайн Cairo гибок и подразумевает подключаемые модули ... переходит в Дизайн Cario гибок и позволяет библиотеке работать через различные модули: картинка, glitz, png, ps, pdf, svg, quartz, GDI и xlib.

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

осталось вспомнить что Linux работает не только на декстоп и вообще рынок PDA/embeded/home растет гораздо быстрее стагнирующего рынка PCдесктопов....

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

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

По переводу:
пришлось разделить на две части - видимо, из-за юникода перестала влазить. Оно и к лучшему - меньше нагрузка на БД.

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

Можно заменить. Только необходимо оставить точное упоминание, что такое глитз. Сейчас скорректирую.

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

2Socrat_ (*) (01.09.2005 9:02:33)

Ой, по-разному бывает :-)

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

>http://www.wikicities.com/wiki/The_State_of_Linux_Graphics

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

Zubok ★★★★★
()

Короче, народ, давайте пока делать на википедии (я там кое что уже написал) и давайте кто-нить письмо автору напишет(я не думаю что он будет против), потом перенесём куда надо.

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

'''Внимание! Прежде чем корректировать данный перевод, пожалуйста, разместите вашу часть в http://www.linux.org.ru/view-message.jsp?msgid=1056786'''

Джон Смирл

30 августа 2005

Источник: http://dri.freedesktop.org/~jonsmirl/graphics.html

Оригинальный перевод: http://www.teleology.ru/1/fparticle.php?cat=7&sort=0&id=7


После того, как я отошел от работы над [[http://www.freedesktop.org/wiki/Xegl Xgl]] , я получил много писем по электронной почте и прочитал большое количество сообщений на форумах (posts), из которых я понял, что люди зачастую не знают, как обстоят дела с графикой в ОС Линукс. Не составляет труда понять, почему они не видят "общую картину": графика это большая и сложная область, для которой характерно наличие большого числа программных составляющих, а также нескольких групп разработчиков, конкурирующих друг с другом.
Я написал эту статью для того, чтобы рассказать о том, как из всего этого формируется цельная картина.


== История ==

<div class="floatleft">http://dri.freedesktop.org/~jonsmirl/graphics_html_14c1cd97.png</div>;
В 2005 году, X-серверу исполняется 21 год. Программа выросла из проекта Athena 1984 года, и на протяжении многих лет верой и правдой служит Unix сообществу. В настояшее время "X" широко используется, и является преимущественной платформой для десктопов под управлением ОС Линукс.
Основными отличиями "X" от предшествующих продуктов явились открытый исходный код, и как следствие кросс-платформенная поддеджка, а также сетевая прозрачность. (Более подробную информацию о Х-сервере можно найти в [статье на Wikipedia http://en.wikipedia.org/wiki/X_Window_System ]. )
--------

Такая редактура вас устроит?

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

> Такая редактура вас устроит

Fucking shit! Я не это имел в виду! Можете помещайть свой перевод туда, НО главная правка перевода идёт здесь, в этом трэде!

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

Народ, стоп ругаться. Или тут дело делают, или собачатся. Давайте лучше первое.

svu ★★★★★
()

Для координации: Не переведенные части

3 Desktop Alternatives 5 X, the Operating System(grob) 10 DRI and OpenGL 13 Kernel Graphics Support 14 VGA Legacy 15 Making multiuser work 16 Splitting console 18 Alternate alternatives 19 Cooperating Effectively 20 OpenGL|ES 21 Pixel Perfect 22 Three Generations of Windows(частично some_x) 23 Drawing the line 24 Stacking the Blocks 25 A Future Direction

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

Для координации:

Не переведенные части

3 Desktop Alternatives

5 X, the Operating System(grob)

10 DRI and OpenGL

13 Kernel Graphics Support

14 VGA Legacy

15 Making multiuser work

16 Splitting console

18 Alternate alternatives

19 Cooperating Effectively

20 OpenGL|ES

21 Pixel Perfect

22 Three Generations of Windows(частично some_x)

23 Drawing the line

24 Stacking the Blocks

25 A Future Direction

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

У, блин, столько народа, а так и не перевели нифига. За "backend" как "модуль сопряжения" стоит (мягко) сделать выговор. "модуль сопряжения" == "adapter", или ещё что по контексту, но бэкенд им быть не может! Уж точно я последние несколько лет не "модули сопряжения" программирую. В данном контексте подходит "работает через", а вообще, я бы сказал "закулисный процесс" (только что придумал) :) Впрочем, про "закулису" это я шучу скорее.

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

> У, блин, столько народа, а так и не перевели нифига.

Кстати, сам я не помогу с переводом, поскольку у меня и так много отвлекающих от работы моментов :)

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

21

С точностью до пикселя.

Пиксельная точность &#8211; миф. Все, что возможно &#8211; бороться за повышение этой точности. Источники погрешности повсюду. Равномерность подсветки LCD, однородность чернил принтера, качество ЦАП, отражательные качества бумаги, проблемы соответствия цветов, разность в алгоритмах отрисовки, применяемых в GPU и т.д. OpenGL не гарантирует, что на разных версиях изображения будут одинаковыми с точностью до пикселя. Самое близкое, что можно сделать для получения одной и той же картинки &#8211; использовать одну и те же версию программной отрисовки Mesa во всех случаях жизни. Кстати, X сервер тоже не гарантирует аккуратность с точностью до пикселя. Обычно я считаю, что картинки достаточно &#171;похожи&#187;, если нужна лупа, чтобы разглядеть разницу. Люди часто не понимают этого. Если дать OpenGL растровое изображение для показа, он скопирует эти пиксели на экран без изменений, если не указано иное. Проблема аккуратности &#171;с точностю до пиксела&#187; больше относится к векторной графике, например, линиям. Субпиксельно-сглаженные шрифты &#8211; не проблема. OpenGL предоставляет разные пути для их отображения. Если необходимо, OpenGL может использовать тот же механизм отображения глифов, который сегодня использует X server. Т.к. это один и тот же механизм &#8211; глифы будут выглядеть одинаково. Нежелательно привязывать отображение к конкретному алгоритму &#8211; это может сделать невозможными дальнейшие улучшения. Например, эта статья (видео) исследует совершенно новый способ генерации шрифтов на GPU. Есть другая интересная работа, &#171;Resolution Independent Curve Rendering using Programmable Graphics Hardware&#8221; (Loop и Blinn, труды SIGGRAPH 2005 &#8211; недоступны). Если отрисовка шрифта определена с точностью до пикселя, вряд ли возможно использовать эти новые технологии. В этом случае глифы генерируются GPU и используют жестко заданные алгоритмы. Преобразование контурных глифов в пикселы при отрисовке &#8211; это только один из возможных способов отображения. Программируемые GPU предоставляют и другие варианты. Любые API с долгой историей должны учитывать это.

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

Я понимаю, что все такие занятые - но хотя бы хороший перевод для backend требуется, если уж мне выносят выговор. Иначе выговор считается неорганизованной репликой из зала:)

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

Кстати, если Вы подумаете над контекстом - то там backend спокойно заменяется словом adapter.

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

Stacking the Blocks(общая картина)

That&#8217;s a lot of acronyms to digest all at once. Некоторые примеры взаимодействия библиотек:

App -> gtk+ -> X -> XAA -> hw

Работа современной версии X сервера. Приложение взаимодействует с графической библиотекой(toolkit), которая использует xlib API. X сервер отрисовывает через драйвера XAA. X сервер и приложение - два разных процесса.

App -> gtk+ -> Cairo -> X Render -> X -> XAA/EXA -> hw

Работа с графической библиотекой, использующей Cairo(через X сервер). Cairo применяет X Render. В случае поддержки EXA используется аппаратно ускоренная версия X Render. X сервер и приложение - два разных процесса.

App -> qt -> Arthur -> X Render -> X -> XAA/EXA -> hw

Arthur - библиотека,входящая в QT4 эквиваленткая Cairo, действует почти так-же.

App -> gtk+ -> Cairo -> glitz -> GL -> hw

Работа с графической библиотекой, использующей Cairo(через glitz). Cairo использует модуль glitz для основанной на OpenGL отрисовки. Используется аппаратное ускорение, все происходит в одном процессе.

App -> gtk+ -> Cairo -> X Render -> Xgl -> EGL(standalone) -> GL -> hw

Случай применения Cairo,xlib,Xegl. Xegl применяет glitz для отрисовки. Glitz рисует на видеокарту. Xegl и приложение - два разных процесса. Заметьте, что графическая библиотека может выбрать прямое использование glitz, а значит и отрисовку в одном процессе.

App -> gtk+ -> Cairo -> X Render -> Xgl -> GLX(X) -> GL -> hw

В этом случае граф. библиотека работает через X render и Xglx сервер. Xglx - не отдельный(standalone) сервер, это - nested сервер. В то-же время Xglx не обычный nested сервер, он использует основной сервер только для ввода, он отрисовывает изображение через OpenGL внутри окна, созданного на основном сервере. В полноэкранном режиме вы не видите основного сервера. В данном случае работают три процесса: приложение, Xglx и обычный X сервер. Приложение использует Xglx, Xglx - рисует напрямую через DRI. Третий процесс (X сервер) используется, так-как он обеспечивает окно и ввод. Так-же с него запускается Xglx.

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

Молодец Серёга. Сразу было ясно, от кого будет толк :) . Вот и я, как раз, освободился :). Сейчас дополним статью.

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

Предлагается заголовок "Складывая воедино"

> That&#8217;s a lot of acronyms to digest all at once.

Тут была куча акронимов, сваленных в кучу.

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

И дальше "... Как насчет нескольких реальных примеров совместной работы библиотек:"

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

YesSSS тоже молодец. Собственно, как обычно. :)

>That's a lot of acronyms to digest all at once.

Существующих аббревиатур (акронимов, типа GTK, XAA...) достаточно для размещения одной строкой. Примерно так?

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

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

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

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

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

Мммммыыы :). Я в отрыве от контекста прикинул - не смотрел ещё :) абзац.

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

> Возникли проблемы со словом portable (замял вопрос:) и backend ("модуль сопряжения"?).

portable -- переносимый, мультиплатформенный

backend --- если это последняя прослойка перед железом, ее ИМХО можно назвать "растеризатором", если же этот программный слой где-то посередине, то "(виртуальное) устройство вывода"

--

SVK

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

Перевод не лишен недостатков, в некоторых местах оставлены английские варианты. В общем, если какие-то фрагменты или все целиком пригодится -- пользуйтесь! :)

Альтернативные десктопы.

Альтернативные десктопы, Макинтош и Windows, оба являются десктопами, использующими аппаратное ускорение графики. Очевидно, они заметно лучше своих предшественников. В некоторых случаях скорость отрисовки в них более, чем в сто раз превосходит ту, что была в старых моделях. В недалеком будущем производители графических чипов собираются вообще убрать метку 2D и предложат нам оборудование с поддержкой только трехмерной графики. До Microsoft и Apple, по-видимому, дошло, что трехмерность является дорогой, по которой стоит двигаться дальше, и они уже начали это движение. С другой стороны, от некоторых разработчиков X-системы (сервера?) я слышал пожелания прекратить болтовню о какой-либо конкуренции. Они заявляют, что всего лишь хотят улучшить X-систему. Им, вероятно, невдомек, а мне совершенно ясно, что руководители Redhat и Novell, когда столкнутся со снижением продаж из-за &#8220;неконкурирующей&#8221; графической системы, ни за что с этим не согласятся.

Использование трехмерной графики для десктопа &#8211; это не просто создание новых рюшечек. Множество рюшек можно сделать при помощи glitz, но есть и реальные причины для использования трехмерности. Хотя бы тот факт, что трехмерная графика быстрее двумерной, никто уже не занимется оптимизацие функций двумерной графики, все аппаратные изыскания (silicon engineering) происходят в области трехмерности. С ее помощью можно производить быстрые и произвольно сложные операции с рисунками, такие как изменение цветовой палитры, растяжение/сжатие и др. Мне довелось видеть, как чрезвычайно сложную фильтрацию проводили на shader hardware, что у центрального процесоора заняло бы несколько секунд на фрейм. Станет возможна поддержка гетерогенных цветовых режимов для окон (одновременное присутствие окон в 8-, 16- и 24-битном режимах) с произвольными палитрами. Моментальный поворот/отражение экрана на проекторах, увличение размеров при плохой видимости (visual impaired). Независимость от разрешения позволит отрисовывать объекты с в произвольного разрешения/размера, и проводить их пересемплирование прямо на экране. Более интересные возможности применения описаны ниже в разделе, описывающем управление окнами. (windowing section)

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

Эххх, а я как раз за него взялся. 8)

Хороший перевод.

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

> гетерогенных цветовых режимов

неоднородных цветовых режимов?

> несколько секунд на фрейм

фрейм => кадр, frames per sec. == кадров/с

> графических чипов

В других фрагментах перевода видел слово "микросхемы". ИМХО лучше унифицировать термины.

--

SVK

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

Перевел часа 2 назад раздел "Группировка устройств" - если кто видет ошибки - правьте.

/WBR NoFate

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

Остались ещё:

5 X, the Operating System(grob)

10 DRI and OpenGL

13 Kernel Graphics Support

14 VGA Legacy

15 Making multiuser work

16 Splitting console

18 Alternate alternatives

19 Cooperating Effectively

20 OpenGL|ES

22 Three Generations of Windows(частично some_x)

23 Drawing the line

25 A Future Direction

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

>> Более старое аппаратное обеспечение

>Устаревшее аппаратное обеспечение.

Уже было. В моём варианте - устаревающее.

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

Переведено " Выбор альтернативы" /WBR NoFate

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

>That's a lot of acronyms to digest all at once.

Дословно: слишком большое количество акронимов, чтобы их можно было сразу переварить.

Не дословно:
1. Столь большое количество акронимов, конечно, затрудняет понимание.
2. Столько акронимов сразу, конечно, не запомнишь.

(В контекст глядеть лениво)

anonymous
()

> Тут было достаточно акронимов перемешанных между собой.

Как-то совсем страшненько...

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

Тема с бэкендом оказалась сложной. Ломал голову 15 минут, потом понял, что по сути имею дело с заимствованным словом.

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

Похоже всех очень тронули слова этого человека...
мне кажеться из этого что то выйдет...
если не форк так глубокая переделка X точно.
X хорошой идеологией и возможностями но реализация конечно больше смахивает на кучу костылей.
Я так поглядел что проблемма многих ОО программ в их стихийности...
делают только то что необходимо делать :) но каждая архитектура имеет запас прочности который ИМХО у X почти закончился.

stalkerg ★★★★★
()

X как операционная система

Является ли X просто приложением или целой операционной системой? Для хорошего понимания принципов работы сервера X рекомендуется прочесть эту книгу. Несмотря на то, что книге восемь лет, большая часть ее все еще актуальна. Прочитайте ее, если вы не знакомы с такими терминами как DIX, mi, DDX, CFB. Где-то в районе X11R6.3 Xfree86 вылилась в отдельный проект, что повлекло за собой изменения дизайна X в сторону платформонезависимости. В операционных системах, где работает X, поддержка таких вещей как распознавание оборудования сильно разнится. Для решения этой проблемы в X появился код проверяющий шину PCI на наличие подключенных устройств, код для нахождения видео ROM'ов и их запуска для сброса настроек оборудования, распознавания и предоставления драйверов для устройств ввода, управления несколькими устройствами VGA и даже своя система загрузки модулей. Начиная с этого этапа, на вопрос, является ли X приложением или операционной системой, более не существует однозначного ответа. Несмотря на то, что для некоторых платформ данные возможности X как операционной системы были просто необходимы, на таких платформах как Linux, которые сами предоставляют эти возможности, это привело к конфликтам между X и платформой, которые мы имеем сейчас. Конечно, операционные системы не стоят на месте, и рациональные решения, сделанные десять лет назад, могут быть бессмысленными сейчас. Ядро Linux предоставляет такие подсистемы как PCI и framebuffer, которые отсутствуют в BSD и других платформах. Ради кроссплатфоренности в X сервере были параллельно реализованы эти подсистемы. В прошлом в этом была необходимость. В современных же Linux системах это приводит к тому, что две различные программы пытаются управлять одними и теми же устройствами. Многие пользователи Linux работают с видеоустройствами без X. Единственное, что их связывает с X - ядро Linux. Ядро Linux предоставляет для них множество механизмов, как то: подсистема PCI, драйверы устройств ввода, распознавание подключенных "на лету" устройств (hotplug), драйверы видеоустройств. В интересах координации с Linux лучшее решение в данной ситуации - использовать возможности, предоставленные ядром, в первую очедедь и запускать код X с той же функциональностью только на других системах. Драйверы fbdev и XAA являются наиболее яркими примерами продублированной функциональности. Linux имеет замечательную поддержку hotplug, и графической системе было бы полезно использовать ее. Экраны могут быть подключены из различных источников. Тривиальным примером использования системы hotplug является подключение к компьютеру новой видеокарты. Существуют также различные нетривиальные ситуации, где может быть использован hotplug. Если экран, который вы хотите использовать, занят другим пользователем, то его выход из системы может для вас обрабатываться как подключение экрана "на лету". При подключении внешнего монитора к ноутбуку может срабатывать система hotplug. С помощью беспроводного соединения можно подключаться к настенным экранам используя DMX или Chromium. USB также является источником множества событий hotplug. Пользователь может подключать на лету мыши, планшеты, клавиатуры, аудиоустройства или даже графические адаптеры. Из-за отсутсвия взаимодействия с системой hotplug ядра в настоящее время X-сервер не обрабатывает ни одну из этих ситуаций. Стандартное графическое окружение на системах Linux использует "корневой" (rooted) X. Корневой X управляет отрисовкой рабочего стола и расположенных на нем окон. Cygwin/X, Directfb и Apple Darwin используют некорневой X. В этих окружениях экраном управляет другая, главная оконная система, которая отрисовывает рабочий стол и предоставляет свой API для работы с окнами приложений. X может быть интегрирован как гостевая оконная система в такое окружение, работая в некорневом режиме. А именно, содержимое окон приложений, работающих с X, помещается в системную память, и в определенное время окна X синхронизируются с главной оконной системой, которая отображает их содержимое на экране. Некорневой X также предоставляет протоколы для передачи событий ввода между главной и гостевой оконными системами.

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

Кстати, неплохо бы у автора спросить об условиях публикации перевода.
Например, выкладывание текста в википедии наверняка нарушает авторские права.

grob ★★★★★
()

> Более старое аппаратное обеспечение

Устаревшее оборудование

Backend == движок. Хотя тоже, конечно, жаргон. :(

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