Skip to content

Commit dc5bab7

Browse files
committed
Speed up on 7inch screen.
1 parent aeb1dc0 commit dc5bab7

File tree

2 files changed

+17
-20
lines changed

2 files changed

+17
-20
lines changed

components/esp_nes/osd.c

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ static const char *TAG = "OSD";
3838

3939
#define APP_DEFAULT_WIDTH 256
4040
#define APP_DEFAULT_HEIGHT 240
41-
#define APP_DEFAULT_ZOOM 256
41+
#define APP_DEFAULT_SCALE 2
4242

4343
typedef struct {
4444
int16_t x; /* Mouse X coordinate */
@@ -118,8 +118,6 @@ static uint16 colorPalette[256];
118118
static bitmap_t *vidBitmap = NULL;
119119
static lv_obj_t * lvgl_video_canvas = NULL;
120120
static uint8_t * vid_buffer = NULL;
121-
static uint8_t * vid_buffer_tmp = NULL;
122-
static lv_img_dsc_t vid_tmp_img;
123121

124122
/* USB variables */
125123
static QueueHandle_t hid_queue = NULL;
@@ -148,25 +146,17 @@ void osd_setsound(void (*playfunc)(void *buffer, int size))
148146

149147
int osd_init(void)
150148
{
151-
uint32_t buf_size = APP_DEFAULT_WIDTH * APP_DEFAULT_HEIGHT * sizeof(uint16_t);
149+
uint32_t buf_size = 4*APP_DEFAULT_WIDTH * APP_DEFAULT_HEIGHT * sizeof(uint16_t);
152150
vid_buffer = heap_caps_malloc(buf_size, MALLOC_CAP_DEFAULT);
153151
assert(vid_buffer);
154152
memset(vid_buffer, 0x00, buf_size);
155-
//vid_buffer_tmp = heap_caps_malloc(buf_size, MALLOC_CAP_DEFAULT);
156-
//assert(vid_buffer_tmp);
157-
//memset(vid_buffer_tmp, 0x00, buf_size);
158-
159-
/*vid_tmp_img.data = (void *)vid_buffer_tmp;
160-
vid_tmp_img.header.cf = LV_IMG_CF_TRUE_COLOR;
161-
vid_tmp_img.header.w = APP_DEFAULT_WIDTH;
162-
vid_tmp_img.header.h = APP_DEFAULT_HEIGHT;*/
163153

164154
app_hid_init();
165155

166156
bsp_display_lock(0);
167157
lv_obj_set_style_bg_color(lv_scr_act(), lv_color_black(), 0);
168158
lvgl_video_canvas = lv_canvas_create(lv_scr_act());
169-
lv_canvas_set_buffer(lvgl_video_canvas, vid_buffer, APP_DEFAULT_WIDTH, APP_DEFAULT_HEIGHT, LV_IMG_CF_TRUE_COLOR);
159+
lv_canvas_set_buffer(lvgl_video_canvas, vid_buffer, APP_DEFAULT_SCALE*APP_DEFAULT_WIDTH, APP_DEFAULT_SCALE*APP_DEFAULT_HEIGHT, LV_IMG_CF_TRUE_COLOR);
170160
lv_obj_center(lvgl_video_canvas);
171161
bsp_display_unlock();
172162

@@ -375,18 +365,24 @@ static void app_osd_video_custom_blit(bitmap_t *primary, int num_dirties, rect_t
375365
{
376366
const uint8_t * data = primary->data;
377367

378-
for(int x=0; x<APP_DEFAULT_WIDTH; x++)
368+
bsp_display_lock(0);
369+
370+
for(int y=0; y<APP_DEFAULT_HEIGHT; y++)
379371
{
380-
for(int y=0; y<APP_DEFAULT_HEIGHT; y++)
372+
for(int x=0; x<APP_DEFAULT_WIDTH; x++)
381373
{
382-
vid_buffer[(x*APP_DEFAULT_HEIGHT*2) + (y*2)] = HIBYTE(colorPalette[data[0]]);
383-
vid_buffer[(x*APP_DEFAULT_HEIGHT*2) + (y*2)+1] = LOBYTE(colorPalette[data[0]]);
374+
for(int z=0; z<APP_DEFAULT_SCALE; z++)
375+
{
376+
vid_buffer[((x)*sizeof(uint16_t)*APP_DEFAULT_SCALE) + (((APP_DEFAULT_SCALE*y)+z)*APP_DEFAULT_SCALE*sizeof(uint16_t)*APP_DEFAULT_WIDTH)] = HIBYTE(colorPalette[data[0]]);
377+
vid_buffer[((x)*sizeof(uint16_t)*APP_DEFAULT_SCALE) + (((APP_DEFAULT_SCALE*y)+z)*APP_DEFAULT_SCALE*sizeof(uint16_t)*APP_DEFAULT_WIDTH) + 1] = LOBYTE(colorPalette[data[0]]);
378+
379+
vid_buffer[((x)*sizeof(uint16_t)*APP_DEFAULT_SCALE) + (((APP_DEFAULT_SCALE*y)+z)*APP_DEFAULT_SCALE*sizeof(uint16_t)*APP_DEFAULT_WIDTH) + 2] = HIBYTE(colorPalette[data[0]]);
380+
vid_buffer[((x)*sizeof(uint16_t)*APP_DEFAULT_SCALE) + (((APP_DEFAULT_SCALE*y)+z)*APP_DEFAULT_SCALE*sizeof(uint16_t)*APP_DEFAULT_WIDTH) + 3] = LOBYTE(colorPalette[data[0]]);
381+
}
384382
data++;
385383
}
386384
}
387-
388-
bsp_display_lock(0);
389-
//lv_canvas_transform(lvgl_video_canvas, &vid_tmp_img, 0, APP_DEFAULT_ZOOM, 0, 0, 0, 0, true);
385+
390386
lv_obj_invalidate(lvgl_video_canvas);
391387
bsp_display_unlock();
392388
}

components/ws_7inch/ws_7inch.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,7 @@ lv_disp_t *bsp_display_start(void)
203203
lv_disp_t *disp = NULL;
204204
lvgl_port_cfg_t lvgl_cfg = ESP_LVGL_PORT_INIT_CONFIG();
205205
lvgl_cfg.task_affinity = 0;
206+
lvgl_cfg.task_max_sleep_ms = 1;
206207
BSP_ERROR_CHECK_RETURN_NULL(lvgl_port_init(&lvgl_cfg));
207208
BSP_NULL_CHECK(disp = bsp_display_lcd_init(), NULL);
208209
BSP_NULL_CHECK(bsp_display_indev_init(disp), NULL);

0 commit comments

Comments
 (0)