Например, если формат FrameBuffer — BGR565, определите макрос WITH_BITMAP_BGR565.
Для PXP/DMA2D аппаратного ускорения определите макрос WITH_BITMAP_BGRA.
Если скорость memcpy низкая, проверьте правильность настройки памяти, используемой GUI (например, кэш).
Можно проверить значение wm->last_paint_cost в src/base/window_manager.c:window_manager_paint_normal.
Подозреваете, что рендеринг шрифтов слишком медленный? Попробуйте вернуть lcd_draw_glyph напрямую и посмотрите на результат.
Подозреваете, что рендеринг изображений слишком медленный? Верните lcd_draw_image напрямую и посмотрите на результат.
Подозреваете, что заливка цветом слишком медленная? Верните lcd_fill_rect напрямую и посмотрите на результат.
Подозреваете, что аппаратное ускорение неэффективно, попробуйте рендерить чисто программно и сравните время, затраченное на рендеринг одного кадра.
Если определён глобальный макрос ENABLE_PERFORMANCE_PROFILE в проекте, lcd_profile будет собирать статистику времени для всех функций рисования (изображения, текст и заливка и т. д.). Если время рисования одного кадра превышает 25 мс, будет выведено следующее сообщение:
#####################################
src/base/lcd_profile.c:326
-------------------------------------
total_cost=30
draw_image_cost=18 times=1
draw_text_cost=0 times=15
fill_cost=0 times=15
stroke_cost=0 times=15
end_frame_cost=10
-------------------------------------
Также можно установить точку останова в функции lcd_profile_end_frame и получить более подробную статистическую информацию из объекта profile:
uint32_t total_cost;
uint32_t swap_cost;
uint32_t flush_cost;
uint32_t draw_image_cost;
uint32_t draw_image_times;
uint32_t draw_image_pixels;
uint32_t draw_text_cost;
uint32_t draw_text_times;
uint32_t draw_text_chars;
uint32_t fill_cost;
uint32_t fill_times;
uint32_t fill_pixels;
uint32_t stroke_cost;
uint32_t stroke_times;
uint32_t stroke_pixels;
См. lcd_profile.c.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )