Showing posts with label xorg. Show all posts
Showing posts with label xorg. Show all posts

Monday, September 6, 2010

Асинхронно выводить на экран?

Или маленькая мысль о том:
так ли X-протокол безнадежно устарел.

А зачем нужно не дожидаться завершения операции? Это хорошо когда нужно следить за большим количеством редко случающихся событий (делаем только по событию), но не очень хорошо при прорисовке, я думаю лучше все же иметь возможность отменить посылки до того как они полностью отосланы.

В общем идея такая: в отдельном потоке держать обработку списка задач которые синхронно отсылаются на сервер (возможно похоже на случай с Beos, где в app-server запущен еще один дополнительный поток на каждое окно, если верить некоторым публикациям), если потребность в них отпала - пользователь или кто то еще изменил существенно прорисовку зачем продолжать? Так мы можем определить, что за секунду мы прорисовываем 1000 примитивов и постепенно прорисовывать их пока не закончиться временной лимит, или кто-то не отменит прорисовку. В результате того как сейчас работает X протокол мы можем, если пользователь был не очень активен последнее время - с устройств ввода не было событий мы можем спокойно поставить проверку на ввод после n-го элемента(или по времени смотря что раньше произойдет), что выведет проверку на состояние каждые 1 секунду, и когда появляется активность ставить проверку на десятые доли секунды. Думаю это существенно снизит нагрузку на процессор.

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

Sunday, September 21, 2008

Ура:-) UTF8 работает в mc

Сегодня я наконец исправил установочный скрипт mc в используемом мною дистрибутиве, теперь русские буквы отображаются правильно и сроки не разжижаются - до сих пор я менял локаль, чтобы хоть как-то пользоваться mc(уж очень меня это досаждало). Теперь у меня красиво с подсветкой табов (показываются стрелочки) и все надписи ровненькие и не появляются в разных частях экрана. Пытался прикрутить патчи от CRUX, fedora и gentoo:-) Подошли объединенные скрипты :-)

Из федоры взял перекодировку манов и надписей. Падчи поддержки не подошли от нее(не компилировались исходники).

Нашел patches от CRUX все заработало, но версия mc (4.6.1) не поддерживала отображение табов стрелочками и надписи верхнего меню немного были неправильного размера.

Решил попробовать еще раз, но от генту (она использует patches от дебиана) и все заработало теперь мой любимый mc(4.6.2-pre1) работает как мне нужно:-)

Потом решил на этом не останавливаться и попробовать установить новые иксы - как раз вышла новая меса. Оказалось у меня в системе(в дистрибутиве) стоят почти последнее версии пакетов нужно было вручную обновить только xorg, libdrm и mesa. Обновил - запускаю, а у меня появильсь 3D ускорение(r4xx) - теперь можно в игрушки в линуксе запускать. И довольно неплохо - демки тунеля показывает 150 fps в игре gl-117 - 35 кадров(только какие-то глюки с клавой). И это на gpl дровах:-). Пропроритарные у меня не смогли откомпилить модуль ядра и не запустились - и во общем-то не очень и хотелось возиться с установкой приложения с закрытыми исходниками.

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

Относительно патча для gtkhtml - доделал по максимому что хотелось на первый раз подправить и написал в bugzilla gnome - пока не ответили. Надеюсь, что после того как выйдет новый релиз, напишут пожелания относительно моего патча - очень хочется сделать что нибудь хорошее!

В общем ура:-)

Thursday, November 29, 2007

Kernel space: E-paper support for Linux

Моё мнение относительно статьи о E-paper.
В статье предлагается использовать для управления 2 варианта решения проблемы отсутствия как такового буфера кадров кадров.
  • Для определения что изменилось 2 буфера и сравнивать текущее значение с предыдущим и разницу использовать для управления экраном, что имеет недостатки так как требуется выполнять цикл прохода всех значений и требуется в 2 раза больше памяти. Что в существующей технике и так используется двойная(иногда тройная) буферизация кадров, но выполнять операции по прорисовке может в таком случае только процессор.
  • Отмечать буфер кадров как только для чтения и при на уровне обработки прерываний по обращению к этой памяти на запись формировать команды управление на для этой системы.
Но почему-то не рассмотрен вариант когда эти операции выполняются на уровне Xserver. И он свои команды преобразует в эту последовательность - что приведет к большой экономии процессорного времени и памяти, так как требуется только дополнительная память под хранение текстур и выполнении их наложения.