Официальный форум СВД Встраиваемые Системы
19 Апрель, 2024, 05:43:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: FFB library — 2D software fallback routines  (Прочитано 1009 раз)
Sidoroffff
Пользователь

Сообщений: 11


« : 19 Декабрь, 2017, 13:44:31 »

Добрый день.
Возникла необходимость ускорить отрисовку реалтаймовского спектра в Фотоне. На данный момент имеем 17fps. Львиную долю времени тратится на вызовы ffb_ctx_draw_polyline()  и ffb_core_draw_line().
Информации по этой библиотеке очень мало. Насколько сильно они оптимизированы? Имеет ли смысл их заменить своими, модифицированными функциями?
Записан
Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1075



WWW
« Ответ #1 : 19 Декабрь, 2017, 14:04:21 »

Информации по этой библиотеке очень мало.

Это библиотека программной растеризации. Использует ее непосредственно драйвер.

Имеет ли смысл их заменить своими, модифицированными функциями?

Имеет смысл попробовать. По нашим наблюдениям программный растеризатор в Qt гораздо производительнее.
« Последнее редактирование: 19 Декабрь, 2017, 14:05:56 от Андрей Докучаев » Записан

Sidoroffff
Пользователь

Сообщений: 11


« Ответ #2 : 19 Декабрь, 2017, 14:30:52 »

Большое спасибо за ответ. По документации - используется стандартный алгоритм Брезенхема. Один из параметров при вызове функции - указатель на структуру disp_draw_context_t.
Где можно посмотреть как с ней работать для отрисовки необходимого? Публиковалась ли в исходниках эта библиотека?

Записан
Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1075



WWW
« Ответ #3 : 19 Декабрь, 2017, 14:44:30 »

Где можно посмотреть как с ней работать для отрисовки необходимого?

А чего Вы хотите этим добиться? Ситуация с libffb сильно сложнее, она предназначена для использования в графических драйверах и, как следствие, заточена на внутренние хэдеры io-display.

В случае, если у Вас есть собственная реализация Брезенхэма, достаете с помощью gf_surface_get_info() указатель на виртуальный адрес используемой поверхности и туда рисуете конкретные пиксели. Будет гораздо проще.

Публиковалась ли в исходниках эта библиотека?

Насколько мне известно, нет.
« Последнее редактирование: 19 Декабрь, 2017, 14:46:03 от Андрей Докучаев » Записан

Sidoroffff
Пользователь

Сообщений: 11


« Ответ #4 : 19 Декабрь, 2017, 14:59:04 »

Я использую Photon и самописный виджет.
По поводу  gf_surface_get_info(). Мне надо нарисовать бэкгроунд, сетку графика, шкалы, заливки. Потом саму полилинию из 800 сегментов. Как это все совместить?   
Подобный подход я использую в waterfall виджете, только получаю адрес экранной области через вызов PdGetOffscreenContextPtr. Производительность очень приличная.
Записан
Sidoroffff
Пользователь

Сообщений: 11


« Ответ #5 : 19 Декабрь, 2017, 15:02:57 »

Вот здесь кое что нарыл
http://www.kpda.ru/upload/iblock/e4b/bolshakov_compose_2014.pdf
Записан
Sidoroffff
Пользователь

Сообщений: 11


« Ответ #6 : 19 Декабрь, 2017, 15:24:00 »

По поводу gf_draw_polyline() Они ведь все равно будут использовать libffb программный растеризатор?
Записан
Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1075



WWW
« Ответ #7 : 19 Декабрь, 2017, 15:45:55 »

PdGetOffscreenContextPtr

Это есть ничто иное, как обертка над gf_surface_get_info().

По поводу gf_draw_polyline() Они ведь все равно будут использовать libffb программный растеризатор?

Да.
« Последнее редактирование: 19 Декабрь, 2017, 15:48:16 от Андрей Докучаев » Записан

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

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 28 Март, 2024, 12:42:41