fix(profiler): fixed inability to disable and add new measurement points (#4224)

Signed-off-by: FASTSHIFT <vifextech@foxmail.com>
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
This commit is contained in:
_VIFEXTech
2023-05-18 19:02:17 +08:00
committed by GitHub
parent 453561bc46
commit fa5388a38b
7 changed files with 55 additions and 27 deletions

View File

@@ -1010,7 +1010,7 @@ menu "LVGL configuration"
default n
config LV_USE_PROFILER
bool "Run-time performance profiler."
bool "Runtime performance profiler."
config LV_PROFILER_INCLUDE
string "Header to include for the profiler"
depends on LV_USE_PROFILER

View File

@@ -14,9 +14,9 @@ Porting
To enable profiler, set :c:macro:`LV_USE_PROFILER` in ``lv_conf.h`` and configure the following options:
- :c:macro:`LV_PROFILER_INCLUDE`: Provides a header file for the performance measurement function.
- :c:macro:`LV_PROFILER_BEGIN`: Performance measurement start point function.
- :c:macro:`LV_PROFILER_END`: Performance measurement end point function.
- :c:macro:`LV_PROFILER_INCLUDE`: Provides a header file for the profiler function.
- :c:macro:`LV_PROFILER_BEGIN`: Profiler start point function.
- :c:macro:`LV_PROFILER_END`: Profiler end point function.
Example
*******
@@ -30,7 +30,7 @@ Configure ``lv_conf.h``:
#define LV_USE_PROFILER 1
#define LV_PROFILER_INCLUDE "lvgl/src/hal/lv_hal_tick.h"
#define LV_PROFILER_BEGIN uint32_t profiler_start = lv_tick_get()
#define LV_PROFILER_END LV_LOG_USER("cost %" LV_PRIu32 "ms", lv_tick_elaps(profiler_start))
#define LV_PROFILER_END LV_LOG_USER("cost %dms", (int)lv_tick_elaps(profiler_start))
Users can add the measured functions themselves:

View File

@@ -700,11 +700,18 @@
/*1: Enable system monitor component*/
#define LV_USE_SYSMON 0
/*1: Enable the run-time performance profiler*/
/*1: Enable the runtime performance profiler*/
#define LV_USE_PROFILER 0
#if LV_USE_PROFILER
/*Header to include for the profiler*/
#define LV_PROFILER_INCLUDE <stdint.h>
/*Profiler start point function*/
#define LV_PROFILER_BEGIN
/*Profiler end point function*/
#define LV_PROFILER_END
#endif
/*1: Enable Monkey test*/
#define LV_USE_MONKEY 0

View File

@@ -19,6 +19,7 @@
#include "../misc/lv_timer.h"
#include "../misc/lv_math.h"
#include "../misc/lv_gc.h"
#include "../misc/lv_profiler.h"
/*********************
* DEFINES
@@ -135,6 +136,7 @@ lv_indev_t * lv_indev_get_next(lv_indev_t * indev)
void _lv_indev_read(lv_indev_t * indev, lv_indev_data_t * data)
{
LV_PROFILER_BEGIN;
lv_memzero(data, sizeof(lv_indev_data_t));
/* For touchpad sometimes users don't set the last pressed coordinate on release.
@@ -159,6 +161,7 @@ void _lv_indev_read(lv_indev_t * indev, lv_indev_data_t * data)
else {
LV_LOG_WARN("indev_read_cb is not registered");
}
LV_PROFILER_END;
}
void lv_indev_read_timer_cb(lv_timer_t * timer)
@@ -177,6 +180,9 @@ void lv_indev_read_timer_cb(lv_timer_t * timer)
if(indev_act->disabled ||
indev_act->disp->prev_scr != NULL) return; /*Input disabled or screen animation active*/
LV_PROFILER_BEGIN;
bool continue_reading;
do {
/*Read the data*/
@@ -218,6 +224,7 @@ void lv_indev_read_timer_cb(lv_timer_t * timer)
indev_obj_act = NULL;
INDEV_TRACE("finished");
LV_PROFILER_END;
}
void lv_indev_enable(lv_indev_t * indev, bool en)

View File

@@ -1074,6 +1074,7 @@ static void draw_buf_flush(lv_disp_t * disp)
static void call_flush_cb(lv_disp_t * disp, const lv_area_t * area, lv_color_t * color_p)
{
LV_PROFILER_BEGIN;
REFR_TRACE("Calling flush_cb on (%d;%d)(%d;%d) area with %p image pointer",
(int)area->x1, (int)area->y1, (int)area->x2, (int)area->y2,
(void *)color_p);
@@ -1088,4 +1089,5 @@ static void call_flush_cb(lv_disp_t * disp, const lv_area_t * area, lv_color_t *
if(disp->draw_ctx->buffer_convert) disp->draw_ctx->buffer_convert(disp->draw_ctx);
disp->flush_cb(disp, &offset_area, color_p);
LV_PROFILER_END;
}

View File

@@ -2346,7 +2346,7 @@
#endif
#endif
/*1: Enable the run-time performance profiler*/
/*1: Enable the runtime performance profiler*/
#ifndef LV_USE_PROFILER
#ifdef CONFIG_LV_USE_PROFILER
#define LV_USE_PROFILER CONFIG_LV_USE_PROFILER
@@ -2354,6 +2354,8 @@
#define LV_USE_PROFILER 0
#endif
#endif
#if LV_USE_PROFILER
/*Header to include for the profiler*/
#ifndef LV_PROFILER_INCLUDE
#ifdef CONFIG_LV_PROFILER_INCLUDE
#define LV_PROFILER_INCLUDE CONFIG_LV_PROFILER_INCLUDE
@@ -2361,6 +2363,8 @@
#define LV_PROFILER_INCLUDE <stdint.h>
#endif
#endif
/*Profiler start point function*/
#ifndef LV_PROFILER_BEGIN
#ifdef CONFIG_LV_PROFILER_BEGIN
#define LV_PROFILER_BEGIN CONFIG_LV_PROFILER_BEGIN
@@ -2368,6 +2372,8 @@
#define LV_PROFILER_BEGIN
#endif
#endif
/*Profiler end point function*/
#ifndef LV_PROFILER_END
#ifdef CONFIG_LV_PROFILER_END
#define LV_PROFILER_END CONFIG_LV_PROFILER_END
@@ -2375,6 +2381,7 @@
#define LV_PROFILER_END
#endif
#endif
#endif
/*1: Enable Monkey test*/
#ifndef LV_USE_MONKEY

View File

@@ -36,6 +36,11 @@ extern "C" {
* MACROS
**********************/
#else
#define LV_PROFILER_BEGIN
#define LV_PROFILER_END
#endif /*LV_USE_PROFILER*/
#ifdef __cplusplus