Страниц: 1 [2] 3
  Печать  
Автор Тема: Усовершенствованный драйвер devg-vesabios.so  (Прочитано 26157 раз)
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #15 : Июля 02, 2009, 04:31:34 pm »

bbceler, не мог бы ты слинковать qtdemo статически и выложить для проверки ? Я боюсь, что зеленого змея нет из-за того, что есть ошибка в отрисовке. Для того, чтобы данные отобразились на экране необходим вызова PgFlush(). Если его нет, данные кэшируются драйвером и это нормальное поведение. Так должно быть.
То же самое и про всплывание меню, оно не всплывает, т.к. то, что выводит не делает периодических вызовов PgFlush().

Существуют драйвера под QNX, которые также кешируют все отрисовки и для реального железа. Просто часто у видеочипов есть большой буфер в видеопамяти, куда пишуться команды, на подобие отрисовать примитив: линию, прямоугольник, сделать блиттинг, etc. А команды проигрываются только по вызову функции сброса всех буферов. Поэтому такое поведение Qt некорректно.
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #16 : Июля 02, 2009, 04:34:20 pm »

Нет, мультимониторный вывод не поддерживается.
Записан

Fregl
Sr. Member
****
Offline Offline

Сообщений: 396


Просмотр профиля
« Ответ #17 : Июля 02, 2009, 06:39:06 pm »

жаль, тогда интерес отпадает
Записан
bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #18 : Июля 02, 2009, 08:10:10 pm »

bbceler, не мог бы ты слинковать qtdemo статически и выложить для проверки ? Я боюсь, что зеленого змея нет из-за того, что есть ошибка в отрисовке. Для того, чтобы данные отобразились на экране необходим вызова PgFlush(). Если его нет, данные кэшируются драйвером и это нормальное поведение. Так должно быть.
То же самое и про всплывание меню, оно не всплывает, т.к. то, что выводит не делает периодических вызовов PgFlush().

Существуют драйвера под QNX, которые также кешируют все отрисовки и для реального железа. Просто часто у видеочипов есть большой буфер в видеопамяти, куда пишуться команды, на подобие отрисовать примитив: линию, прямоугольник, сделать блиттинг, etc. А команды проигрываются только по вызову функции сброса всех буферов. Поэтому такое поведение Qt некорректно.

Ia podumaiu kak slinkowat qtdemo static ili kakoju to druguiu testowuju programmu sztoby byla wozmoznost testirowat bez problem.
A na szczot "ошибка в отрисовке" i "вызова PgFlush()". To gdie woznikaet problema ? W programie qtdemo ili w draiwerie vesabios ili XPhoton ?
Kartina wot takawa:
qtdemo ==> XPhoton ==> vesabios ==> ATI Radeon HD ==> Display
To jest qtdemo wysylaiet graficzeskie komandy X11 do XPhoton. XPhoton perewodit ich w natiwnyie dla QNX komandy i posylaet ich drajweru vesabios.
I drajwer vesabios posylaet ich k graficzeskoj karte - u mienia ATI Radeon HD i karta wyswiecziwaet ich na ekranie.
Test zakluczaietsia w tom szto ja raz w etoj cepoczkie ispolzuiu drajwer vesabios natiwnyj a w drugoj raz ispolzuiu drajwer ot lestata
Kazetsa szto wmiesto vesabios mozna podstawit luboj drajwer katoryj smozet rabotat z kartoj AT Radeon HD.
Woznikaiet sleduiuszij wopros:
qtdemo rozliczaiet graficzeskie drajwery i wysylaiet raznyie graficzeskie komandy w zawisimosti ot drajwera ?
iesli niet to qtdemo + XPhoton wysylaiet odinakowyie graficzieskie komandy i to szto ja wizu raznoie powiedienie na ekranie to zawisit tolko ot drajwera grafiki.
iesli da to kak eto proischodit ? cziem otliczaiutsa drajwer natiwnyj od drajwera lestata w etom otnoszeni ?
A w kakom miestie proischodid wyzow PgFlush() ?
Esli ia prawilno ponial lestata to natiwnyj drajwer poluczaiet bolsze ili z bolszej czastatoj wyzow PgFlush() poetomy rezultat na ekranie raznyj w zawisimosti ot drajwera.
Ia prawilno rassuzdaiu ?
Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #19 : Июля 05, 2009, 01:51:57 pm »

Тестировал усовершенствованные драйверы SVGA и VESABIOS на ноутбуке HP Compaq nx6125, видеокарта ATI Radeon X200 (встроена в чипсет). По сравнению с родными версиями ускорение заметно невооруженным глазом, но:

1. Иногда при прокрутке больших тестов в Ped возникают артефакты (ряд пикселов как бы запаздывает при прокрутке, в результате чего текст становится нечитаемым до момента, когда заданная область экрана не будет "протерта" другим окном.
2. Не работает у всех двух драйверов переключение в полноэкранный режим - имеет место такая картинка: возникает несколько какбы сплющенных дублирующихся областей, в которых видно курсор и очертания окон (но все это смазано), при выходе из фотона через Ctrl-Alt-Shift-Backspace видеорежим не восстанавливается. Глюк наблюдается как с приложениями SDL, так и с "родной" игрушкой QNX Columns, которая может запускаться в полноэкранном режиме. Со стандартными драйверами такого не наблюдается.
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #20 : Июля 06, 2009, 10:15:12 pm »

bbceler, нет. Нативный драйвер рисует сразу на экран, не задумываясь об кэшировании. Поэтому на нативном оно работает.

2agent: я воспроизвожу проблемы со шрифтами с любыми драйверами. Переключение работает, но есть проблемы у photon с этим. Драйвера тут ни при чём.
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #21 : Июля 13, 2009, 08:36:54 am »

Добрался я наконец до домашнего компа, на GeForce 8600GTS (Core2Duo 2.66Ghz разогнанный до 3.9GHz) с новым vesabios скорость работы увеличилась в среднем в 4 раза по сравнению с svga драйвером. Обновление 640x480 окна теперь происходит со скоростью около 80fps в 16bpp и 40fps в 32bpp. Чем мне нравятся последние GeForce'ы, так это тем, что они модифицируют BIOS после старта и добавляют в VESA режимы flat panel, который сейчас подключен. Таким образом появились 16:10 разрешения 1280x800 и 1680x1050, но только в 32bpp. Тем не менее уже можно комфортно работать.

Исходники я пока выложить не могу, т.к. мне их выдали ещё до публикования исходников Graphics на Foundry27 и они содержат хидеры только для внутреннего использования. Жду, когда человек из QSSL, который со мной работал, выйдет из отпуска и тогда решит, как быть с исходниками.
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #22 : Июля 13, 2009, 08:40:23 am »

2mike:
Кстати, я смог воспроизвести проблему, подобную твоей со встроенной графикой от Intel (на devg-i830 и devg-extreme2). Если хоть раз в системе стартанул драйвер i830 или extreme2, то переключиться в svga/vesabios невозможно - только чёрный экран. Но если снести всю конфигурацию (display.conf), перезагрузиться и первым выбрать svga или vesabios драйвер, то всё работает до первого переключения на i830 или extreme2. Лажа какая-то.
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #23 : Июля 13, 2009, 09:43:57 pm »

Получил добро. Вот исходники двух драйверов: svga и vesabios в одном архиве. Для 6.4.0 и 6.4.1. Чтобы пересобрать нужны headers из каталога public в исходниках проекта Graphics: ./trunk/hardware/devg/public.

P.S. К слову. На сколько я знаю, QSSL сейчас сделала поддержку x86-64 архитектуры (EMT64/AMD64), так вот мой svga драйвер работать на ней не сможет, из-за использования 32-bit Protect Mode интерфейса биоса. Ну это ещё не скоро ...
Записан

oder
Гость
« Ответ #24 : Июля 13, 2009, 09:47:38 pm »

Интересно, как у них будет 64-бит работать, если у них все хидеры забиты int-ами вместо size_t и все указатели в интах передаются. :-/
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #25 : Июля 13, 2009, 10:00:12 pm »

Я просто вижу как в SVN попадают исходники, которые туда не должны были попасть на этой стадии (ну и комментарии соответствующие), где как раз они и наводят шорох по поводу типизации Smiley По последней информации пока только ядрышко сделали, остальное ещё правят.
Записан

bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #26 : Июля 14, 2009, 06:58:49 pm »

lestat ia smotriu w twoi ischodniki i srawniwaiu ich s drugimi eti s проекта Graphics i etimi vesabios kotoryj dielal Evan Hillas
I mienia zainteresowalo to szto ty ispolzuiesz disp_memcpy tam gdie u drugich stoit prosto memcpy.
Mog by ty obiasnit poczemu tak dielaiesz ?
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #27 : Июля 14, 2009, 08:04:28 pm »

disp_memcpy оптимизирован под прямое копирование, есть ещё реверсное копирование. disp_memcpy() быстрее на 30% при работе с видеопамятью и где-то на 50-70% при работе с обычной памятью, т.к. драйвера компилируются без опций оптимизации, то gcc используют обычную версию memcpy(), которая медленая до чёртиков, он медленная даже при использовании -O3 по сравнению с disp_memcpy().
Записан

bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #28 : Июля 14, 2009, 08:16:49 pm »

Spasiba za otwiet.
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #29 : Июля 14, 2009, 08:52:08 pm »

disp_memcpy() работает далеко не на пределе своих возможностей, её ещё можно хорошо оптимизировать. Чем меньше задержка между последовательными записями в память, тем больше шансов, что процессор будет делать burst write полными пакетами данных по PCI шине. Т.е. при работе с видеопамятью может получиться так, что оптимизировав disp_memcpy() на 15% с обычной памятью, мы получим до 60% с видеопамятью.
Записан

Страниц: 1 [2] 3
  Печать  
 
Перейти в: