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

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« : Июля 01, 2009, 01:12:27 pm »

Я закончил и devg-vesabios видеодрайвер. Результаты от безумных до никаких.

К примеру, на ATI x600 Pro, я не получил ровным счётом ничего по сравнению с devg-svga.so. Ноль. И это при том, что testgles тест работает у меня на уровне 40 fps, как и в svga driver'е, так и под vesabios драйвером. Чисто субъективно vesabios драйвер всё-таки быстрее на очень больших отрисовках, например PhAB.

На GeForce 7600GS под svga драйвером testegl выдавал у меня 21 fps. А вот на vesabios 65fps. Ускорение чуть больше, чем в три раза. Всё просто летает, я аж прослезился, получилось именно так, как я и прогнозировал. Погонял даже первый Quake, вполне играбельно.

Очень многое зависит от организации видеопамяти и процессора. Например я использую в vesabios для всей линейной видеопамяти write combine cache (реально работает с Pentium III), что было недоступно в svga драйвере, из-за того, что работа идёт с банками памяти, которые мапяться в первый мегабайт памяти. После того, как я ещё и модифицировал драйвер, начал работать и PCI posting (byte merger, burst transfer). Получается, что CPU при записи в framebuffer собирает и кеширует все данные для записи во write combine cache, которое в современных процессорах обычно более, чем 32x4 байт. Затем процессор, если поддерживает чипсет, оформляет всю посылку как один PCI burst transfer, 32 байта за 5 тактов PCI/PCI-E шины, быстрее данные процессором в framebuffer записать нельзя.
« Последнее редактирование: Декабря 07, 2012, 06:07:31 pm от lestat » Записан

mike
QOR.Moderator
*****
Offline Offline

Сообщений: 1186


Welcome to Lunatic Asylum.


Просмотр профиля WWW
« Ответ #1 : Июля 01, 2009, 01:53:46 pm »

опять же на моём встроенном интеле не завелись ни родной, ни твой
Записан
Fregl
Sr. Member
****
Offline Offline

Сообщений: 396


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

может не много не в тему, а есть ли возможность написать дрова под новые радеоны? более новые чем х1050?
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


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

может не много не в тему, а есть ли возможность написать дрова под новые радеоны? более новые чем х1050?
Угу, есть такая возможность, за ваши деньги любой каприз.
Записан

bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #4 : Июля 01, 2009, 02:05:07 pm »

A wot na maiom kompiuterie twoj lestat driver svga rabotaet wielikalepno po srawnieni s natiwnym.
Ja rabotaiu s ATI Radeon HD a CPU eto Core 2 Quad.
Nadieus szto s devg-vesabios budiet jeszczio lutsze.
 
Записан
agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #5 : Июля 01, 2009, 02:52:16 pm »

Тестировал драйвер на злополучной GeForce 8400G, что в ноутбуке FS Lifebook 8410.

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

Спасибо!

lestat, если необходимо прогнать какие-то тесты, напиши какие - проделаю и результат выложу.
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #6 : Июля 01, 2009, 03:21:45 pm »

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

В принципе я могу ещё выжать 15-20% максимум с svga и vesabios, но это уже будет тяжёлая работа, недельки на две, я думаю, т.к. необходимо будет писать много тестов и тестировать на многих процессорах. В общем необходимо сделать очень быструю функцию memcpy() прямую и реверсную, которая будет быстра и с видеопамятью и с основной и также поддерживать unaligned access - это последнее, что ещё можно заметно ускорить. Вполне возможно необходимо будет расщёпить немного код для AMD и для Intel процессоров, возможно попробовать SSE2 memcpy().

Дальше остаётся libffb, исходники которой сегодня открыли уже публично и которую используют все драйвера. Вполне возможно ускорить отрисовку линий раза в два для тех драйверов, которые не поддерживают аппаратные линии и полигоны, вполне возможно также ускорить ROP/Alpha Blend/Source Chroma Keying операции. Но это уже настолько частные и редкоиспользуемые случаи, что врядли стоит уделять этому отдельное время. Хотя я слышал форумах foundry, что быстрая отрисовка линий многим нужна ...
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


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

Вот последние исправления и SVGA и VESABIOS драйверов.  Я убрал memleak'и при переключении видеорежимов, которые были в оригинальных драйверах и которые я за собой протащил, чуть не забыл про них Smiley

Enjoy !
Записан

AG
QOR.Moderator
*****
Offline Offline

Сообщений: 872



Просмотр профиля WWW
« Ответ #8 : Июля 01, 2009, 05:12:22 pm »

... Вполне возможно необходимо будет расщёпить немного код для AMD и для Intel процессоров, возможно попробовать SSE2 memcpy().

В незапятные времена делал я такую тестовую программу, которая содержала различные вариации memcpy()/memset()/etc. для разных наборов инструкций: 86/mmx/3dnow(в том числе и с предвыборкой данных)... Ускорение имеется существенное, особенно на больших объемах данных, коие в кеш проца не помещаются целиком.
Потом я эту развлекуху забросил, ибо практически она мне не понадобилась. Могу тебе подкинуть оный код, но его надо будет предварительно хорошо протестить...
Если что пиши мылом; знаешь куда.
Записан

lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #9 : Июля 01, 2009, 05:23:16 pm »

... Вполне возможно необходимо будет расщёпить немного код для AMD и для Intel процессоров, возможно попробовать SSE2 memcpy().
В незапятные времена делал я такую тестовую программу, которая содержала различные вариации memcpy()/memset()/etc. для разных наборов инструкций: 86/mmx/3dnow(в том числе и с предвыборкой данных)... Ускорение имеется существенное, особенно на больших объемах данных, коие в кеш проца не помещаются целиком.
Потом я эту развлекуху забросил, ибо практически она мне не понадобилась. Могу тебе подкинуть оный код, но его надо будет предварительно хорошо протестить...
Если что пиши мылом; знаешь куда.
Тут как раз задача обратная, максимальный размер блока для копирования приблизительно 8192, в среднем копировать нужно по 1.5Kb, получается, что нужно для маленьких блоков данных, к тому же в обычном memcpy() предпочтение отдаётся скорости чтения больше чем записи, т.к. чтение из памяти, особенно невыравненное останавливает процессор до выполнения операции, а для видеопамяти критична запись, а чтение из system ram занимает на порядки меньше времени, чем запись в видеопамять.
Записан

agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


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

Решил погонять QEMU на вышеупомянутой конфигурации.

Проблема наблюдаетcя при попытке перехода эмулятора в полноэкранный режим. Во всех случаях на экране ничего не отрисовывается, за исключением изображения курсора в левом верхнем углу. В одних случаях после этого qemu падает в корку, происходит возвращение экранного режима в 1680x1050 (родное разрешение ноутбука), на экране вохникают артефакты (если "провести" любым окном по экрану, они пропадают). В других происходит вылет фотона, в консоли пишется "Draw cmd 0x18 failed".

На других конфигурациях не тестил, в упомянутом случае, возможно, это все те же тараканы биоса видеокарты.
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #11 : Июля 02, 2009, 08:58:30 am »

Я надеюсь с родными драйверами та же лажа ? Smiley  У меня в SDL 1.3 тоже много странностей именно с родными и моими vesabios и svga драйверами. По мере возможностей попытаюсь выяснить в чём проблема.
Записан

agent
Sr. Member
****
Offline Offline

Сообщений: 328


Fresh solutions


Просмотр профиля
« Ответ #12 : Июля 02, 2009, 01:15:00 pm »

Я надеюсь с родными драйверами та же лажа ? Smiley  У меня в SDL 1.3 тоже много странностей именно с родными и моими vesabios и svga драйверами. По мере возможностей попытаюсь выяснить в чём проблема.

Да, с родным драйвером vesabios на этой конфигурации те же глюки, за исключением того, что под изображением курсора не рисуется фон, весь экран черный (с новым драйвером он есть), артефакты после "возвращения" видеорежима ни разу не появлялись.

SDL (которую использует для вывода графики QEMU) инициализирует видеорежим без аппаратного ускорения.
« Последнее редактирование: Июля 05, 2009, 01:46:04 pm от agent » Записан
Fregl
Sr. Member
****
Offline Offline

Сообщений: 396


Просмотр профиля
« Ответ #13 : Июля 02, 2009, 03:23:41 pm »

Поддерживают ли ваши усовершенствованные драйвера мульти-мониторный режим? что бы запустить на двухголовой видеокарте рабочий стол на два монитора?
Записан
bbceler
Full Member
***
Offline Offline

Сообщений: 149


Просмотр профиля WWW
« Ответ #14 : Июля 02, 2009, 03:36:42 pm »

Вот какие на сегодня наблюдения на счет работы драйверов svga и vesabios.
1. оба драйверы работають гороздо лучше чем нативные в случае скролинга в окне.
    не наблудаю никоких задержок. И это не завсит от величины окна.
2. скорость высвечивания содержимого окна заметно возросла.
3. в нативных драйверах очень плохо идеть перемещение окна. Чем больше окно тем хуже.
    в драйверах от lestata передвижеине окна не вызываеть никаких странных эффектов.
А тепер сравнение работы на примере програм скомпилированых под QT4.5.1.
1. в примерах которые высвечивають разные движущие картины или к примеру движуший текст
    то нативный драйвер svga работаеть к сожалению гороздо лучше. Движение плавное и видны разные эффекты к примеру движущий шар изгибаеть текст над которым он проплываеть. Далше ререход на OpenGL замедляеть процесс но в случае драйвера vesabios от lestat движение прекрашаеться. В случае разных движков тоже нативный vesabios работаеть лучше без задержек. Далее если высвечиваеться какой то обект который можна вводит в движение если схвотить его мышой и двигать то нативный драйвер работаеть великолепно - быстро, тестированный vesabios вводит какие то задержки. Но скролинг двлше идеть гороздо лучше для нового драйвера.
2. когда высвечиваеть мени то в нативным драйвере все мени высвечиваеться сразу. В тестированном сначяла появляеться черный квадрат или прямоугольник и только после где то секунды появляеться мени.
3. есть такая демонстраценная программа qtdemo. И на нее видны разнице в поведении проверяемых драйверов - vesabios
   нативный - появляеться что то на подобе зеленого змея который движеться по экрание
                   мени появляеться пловно прямо всплываеть
                   картинки показываюшие отдельные тесты прямо вроде бы появляються или сверху
                   или справа - разные эффекты
  тестированный - никакого змея нет - не появляется К стати о б этом что есть такой змей я
                   узнал при работе с нативным драйвером
                   мени появляються без задержек и эффекту всплывания сразу все
                   картинки тоже самое появляються сразу на месте без эффекта медленного появления.
И пока это все.  
Записан
Страниц: [1] 2 3
  Печать  
 
Перейти в: