ЗАО «ЗЭО»
Техническая поддержка пользователей => ОС Linux, U-Boot => Тема начата: scad от 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 его кто-нибудь тестировал именно на производительность?
-
> Собираюсь писать драйвер для поддержки аппаратного ускорения ep93xx в Qt4
На мой взгляд лучше драйвер с ускорением делать для directfb, а Qt4 собирать с поддержкой directfb.
В directfb есть наглядные тесты производительности.
-
На мой взгляд лучше драйвер с ускорением делать для directfb, а Qt4 собирать с поддержкой directfb.
Была попытка это сделать http://www.zao-zeo.ru/forum/index.php?topic=123.0 (http://www.zao-zeo.ru/forum/index.php?topic=123.0)
Во-первых, это дополнительный уровень между Qt и железом монитором.
Во-вторых, не так то просто собрать directfb под crater, который для ТИОНа в сборку по умолчанию он не добавлен - с патчами для directfb тоже надо разбиратся.
В-третьих, ускорения заметно не было, а вот segmentation fault в directfb возникал регулярно.
В-четвертых, какие-то фраги графики наблюдались - у меня по крайней мере (черные квадраты поверх окон) - может back buffer не работает, может еще чего...
-
> Во-первых, это дополнительный уровень между Qt и железом монитором.
Зато универсальнее.
> Во-вторых, не так то просто собрать directfb под crater, который для ТИОНа в сборку по умолчанию он не добавлен - с патчами для directfb тоже надо разбиратся.
> В-третьих, ускорения заметно не было, а вот segmentation fault в directfb возникал регулярно.
Бросьте cater, directfb есть в Buildroot.
> В-четвертых, какие-то фраги графики наблюдались - у меня по крайней мере (черные квадраты поверх окон) - может back buffer не работает, может еще чего...
Волков бояться...
-
Мне кажется, что ускорение для qt сделать будет не сильно сложно. Как реализовывать ускоренные методы отрисовки, используя аппаратные фишки вроде описано в доках к qt довольно хорошо...
Там дело заканчивается написанием пары-тройки классов.
Что-то я вот смотрю и не вижу в драйверах для фреймбуффера ep93xx в ядре 2.6.32 каких-нить намёков на функции для работы с аппаратно ускоренной графикой.
Поэтому я думаю, что как-то опасно писать это ускорение для старого ядра, всё-равно придётся на новое переходить. Хотя, может, если API останется тем же, то не страшно.
Отсюда 2 проблемы:
1. Надо определиться, что будет в дальнейшем, и в каком виде будет организован доступ к возможностям аппаратно ускоренной графики (через ioctl, или ещё чё...). Если в новых версиях ядра (2.6.32) нет поддержки аппаратного ускорения, то сначала может надо придумать, как быть с этим. Может портировать со старых ядер что-то...
2. Надо написать драйвер для QT.
Я в будущем возможно буду заниматься вопросами ускорения графики для QT под ep9315, но это не раньше, чем через месяцок, наверное.
А так, надо мне кажется этот проектик как-нить публичным сделать, может на google code там создать чё.
В будущем буду рад помочь.
-
Бросьте cater, directfb есть в Buildroot.
По подробнее расскажите про это? Что качать? Где смотреть?
-
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 и т.д.
-
PS: через ioctl не нужно -- это переключение контекста, для DirectFB можно написать драйвер в пользовательском окружении для EP93 через /dev/mem к регистрам, так будет быстрее чем ioctl.
А разве при обращении к /dev/mem его не будет? По моему одна фигня, тоже будет переключение контекста. Обрабатывается то в ядре работа с /dev/mem
-
> А разве при обращении к /dev/mem его не будет?
read/write -- будет, конечно, я фигню написал.
Тем не менее плюсы есть.
-
Есть начальная рабочая конфигурация для EP93, чтобы не пугаться начальных настроек, постараюсь в ближайшее время выложить.
Было бы очень полезно.
-
> В 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.
-
Есть начальная рабочая конфигурация для 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 (http://simplemachines.it/simone.html). Можно из svn openwrt (kamikaze) взять начальные настройки и прикручивать уже crunch и т.п.
-
> Свежий buildroot - это было бы очень интересно.
http://www.zao-zeo.ru/forum/index.php?topic=249.0