ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Аппаратная графика в Qt4  (Прочитано 11011 раз)

0 Пользователей и 1 Гость просматривают эту тему.

scad

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 48
Аппаратная графика в Qt4
« : 15 Января, 2010, 13:12:35 »

Собираюсь писать драйвер для поддержки аппаратного ускорения ep93xx в Qt4 по аналогии с тем, что сейчас есть в Qt2. В связи с этим вопросы:
1. Может быть кто-то это уже сделал  ;)?
2. Как в настоящее время обстоит дело с реализацией аппартного blit в драйвере ядра?
в 2.6.20.4 оптимизированный код закомментирован. В 2.6.21.5
Есть еще вариант вот отсюда: http://arm.cirrus.com/forum/viewtopic.php?t=1567&highlight=qt
3. Какой код в 2.6.32 его кто-нибудь тестировал именно на производительность?
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Аппаратная графика в Qt4
« Ответ #1 : 15 Января, 2010, 14:34:10 »

> Собираюсь писать драйвер для поддержки аппаратного ускорения ep93xx в Qt4

На мой взгляд лучше драйвер с ускорением делать для directfb, а Qt4 собирать с поддержкой directfb.
В directfb есть наглядные тесты производительности.
Записан

scad

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 48
Re: Аппаратная графика в Qt4
« Ответ #2 : 15 Января, 2010, 15:53:35 »

Цитировать
На мой взгляд лучше драйвер с ускорением делать для directfb, а Qt4 собирать с поддержкой directfb.

Была попытка это сделать http://www.zao-zeo.ru/forum/index.php?topic=123.0
Во-первых, это дополнительный уровень между Qt и железом монитором.
Во-вторых, не так то просто собрать directfb под crater, который для ТИОНа в сборку по умолчанию он не добавлен - с патчами для directfb тоже надо разбиратся.
В-третьих, ускорения заметно не было, а вот segmentation fault в directfb возникал регулярно.
В-четвертых, какие-то фраги графики наблюдались - у меня по крайней мере (черные квадраты поверх окон) - может back buffer не работает, может еще чего...

Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Аппаратная графика в Qt4
« Ответ #3 : 15 Января, 2010, 16:18:26 »

> Во-первых, это дополнительный уровень между Qt и железом монитором.

Зато универсальнее.

> Во-вторых, не так то просто собрать directfb под crater, который для ТИОНа в сборку по умолчанию он не добавлен - с патчами для directfb тоже надо разбиратся.
> В-третьих, ускорения заметно не было, а вот segmentation fault в directfb возникал регулярно.

Бросьте cater, directfb есть в Buildroot.

> В-четвертых, какие-то фраги графики наблюдались - у меня по крайней мере (черные квадраты поверх окон) - может back buffer не работает, может еще чего...

Волков бояться...
Записан

dimaz

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 14
Re: Аппаратная графика в Qt4
« Ответ #4 : 17 Января, 2010, 19:01:01 »

Мне кажется, что ускорение для qt сделать будет не сильно сложно. Как реализовывать ускоренные методы отрисовки, используя аппаратные фишки вроде описано в доках к qt довольно хорошо...
Там дело заканчивается написанием пары-тройки классов.

Что-то я вот смотрю и не вижу в драйверах для фреймбуффера ep93xx в ядре 2.6.32 каких-нить намёков на функции для работы с аппаратно ускоренной графикой.
Поэтому я думаю, что как-то опасно писать это ускорение для старого ядра, всё-равно придётся на новое переходить. Хотя, может, если API останется тем же, то не страшно.

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

Я в будущем возможно буду заниматься вопросами ускорения графики для QT под ep9315, но это не раньше, чем через месяцок, наверное.
А так, надо мне кажется этот проектик как-нить публичным сделать, может на google code там создать чё.

В будущем буду рад помочь.
Записан

scad

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 48
Re: Аппаратная графика в Qt4
« Ответ #5 : 18 Января, 2010, 09:54:02 »


Бросьте cater, directfb есть в Buildroot.


По подробнее расскажите про это? Что качать? Где смотреть?
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Аппаратная графика в Qt4
« Ответ #6 : 18 Января, 2010, 15:08:10 »

Buldroot (на его основе был сколько-то лет назад сделан Crater):
http://buildroot.uclibc.org/

Есть начальная рабочая конфигурация для EP93, чтобы не пугаться начальных настроек, постараюсь в ближайшее время выложить.

DirectFB:
http://en.wikipedia.org/wiki/DirectFB
http://directfb.org/

http://directfb.org/docs/ELC2008/elc2008_directfb_gfx.pdf

PS: через ioctl не нужно -- это переключение контекста, для DirectFB можно написать драйвер в пользовательском окружении для EP93 через /dev/mem к регистрам, так будет быстрее чем ioctl.

Если делать драйвер DirectFB, то ускорение получит не только QT, но и GTK, SDL, Cairo, сам DirectFB и т.д.
Записан

dimaz

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 14
Re: Аппаратная графика в Qt4
« Ответ #7 : 18 Января, 2010, 16:56:15 »

PS: через ioctl не нужно -- это переключение контекста, для DirectFB можно написать драйвер в пользовательском окружении для EP93 через /dev/mem к регистрам, так будет быстрее чем ioctl.

А разве при обращении к /dev/mem его не будет? По моему одна фигня, тоже будет переключение контекста. Обрабатывается то в ядре работа с /dev/mem
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Аппаратная графика в Qt4
« Ответ #8 : 18 Января, 2010, 21:58:33 »

> А разве при обращении к /dev/mem его не будет?

read/write -- будет, конечно, я фигню написал.

Тем не менее плюсы есть.
Записан

scad

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 48
Re: Аппаратная графика в Qt4
« Ответ #9 : 19 Января, 2010, 13:06:43 »

Цитировать
Есть начальная рабочая конфигурация для EP93, чтобы не пугаться начальных настроек, постараюсь в ближайшее время выложить.

Было бы очень полезно.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Аппаратная графика в Qt4
« Ответ #10 : 27 Января, 2010, 20:59:20 »

> В directfb есть наглядные тесты производительности.

С текущим драйвером получаются следующие результаты на directfb-1.4.1

Тесты без ускорения:
Benchmarking 256x256 on 800x580 RGB16 (16bit)...

Anti-aliased Text                              3.040 secs (   28.421 KChars/sec) [100.0%]
Anti-aliased Text (blend)                      3.166 secs (    5.685 KChars/sec) [100.0%]
Fill Rectangle                                 3.043 secs (   23.690 MPixel/sec) [100.0%]
Fill Rectangle (blend)                         5.219 secs (    1.255 MPixel/sec) [100.1%]
Fill Rectangles [10]                           5.474 secs (   23.944 MPixel/sec) [100.1%]
Fill Rectangles [10] (blend)                  51.728 secs (    1.266 MPixel/sec) [100.0%]
Fill Triangles                                 3.132 secs (   17.785 MPixel/sec) [100.0%]
Fill Triangles (blend)                         5.313 secs (    1.233 MPixel/sec) [100.0%]
Draw Rectangle                                 3.013 secs (    2.489 KRects/sec) [100.0%]
Draw Rectangle (blend)                         3.169 secs (    0.504 KRects/sec) [100.3%]
Draw Lines [10]                                3.034 secs (    9.228 KLines/sec) [100.3%]
Draw Lines [10] (blend)                        3.167 secs (    2.210 KLines/sec) [100.3%]
Fill Spans                                     3.317 secs (   19.757 MPixel/sec) [100.3%]
Fill Spans (blend)                             5.227 secs (    1.253 MPixel/sec) [100.1%]
Blit                                           3.233 secs (   14.189 MPixel/sec) [100.0%]
Blit 180                                       3.200 secs (    8.192 MPixel/sec) [100.0%]
Blit colorkeyed                                3.361 secs (    9.749 MPixel/sec) [100.0%]
Blit destination colorkeyed                    3.933 secs (    3.332 MPixel/sec) [100.0%]
Blit with format conversion                    3.413 secs (    7.680 MPixel/sec) [100.0%]
Blit with colorizing                           3.194 secs (    2.051 MPixel/sec) [100.0%]
Blit from 32bit (blend)                        4.009 secs (    1.634 MPixel/sec) [100.2%]
Blit from 32bit (blend) with colorizing        9.519 secs (    0.688 MPixel/sec) [100.1%]
Stretch Blit                                   5.152 secs (   12.591 MPixel/sec) [100.0%]
Stretch Blit colorkeyed                        7.683 secs (    8.443 MPixel/sec) [100.0%]

Тесты с ускорением ep9x:
Benchmarking 256x256 on 800x580 RGB16 (16bit)...

Fill Rectangle                                 3.116 secs (*  21.032 MPixel/sec) [  4.5%]
Fill Rectangles [10]                           5.808 secs (*  22.567 MPixel/sec) [  0.5%]
Draw Lines [10]                                3.055 secs (*   8.837 KLines/sec) [ 30.4%]
Fill Spans                                     3.117 secs (*  10.512 MPixel/sec) [ 51.4%]

В [] указана загрузка CPU.
Записан

faa

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 72
Re: Аппаратная графика в Qt4
« Ответ #11 : 27 Января, 2010, 22:54:11 »

Есть начальная рабочая конфигурация для EP93, чтобы не пугаться начальных настроек, постараюсь в ближайшее время выложить.

Свежий buildroot - это было бы очень интересно.
Он хоть стабильно без бубна собирается :)
А DirectFB есть и в crater-е от января 2008. Но только уж больно староват. Свежий прикручивается с бубном. Да и cirrus на crater и ep93xx забил еще в 2008 году. Хотя выпускать ep93xx обещали еще долго.

Ковырял на днях openwrt на основе свежего buildroot-a (надо было для роутеров asus/dlink) - поддержка ep93xx в openwrt есть, но никакая. gcc без crunch-а, для ядра 2.6.30 есть патчи (правленые бекпорты от cirrusa) для http://simplemachines.it/simone.html. Можно из svn openwrt (kamikaze) взять начальные настройки и прикручивать уже crunch и т.п.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Аппаратная графика в Qt4
« Ответ #12 : 28 Января, 2010, 16:50:38 »

> Свежий buildroot - это было бы очень интересно.

http://www.zao-zeo.ru/forum/index.php?topic=249.0
Записан