您尚未登录。

楼主 # 2024-07-01 22:05:05

memory
会员
注册时间: 2021-08-11
已发帖子: 331
积分: 307

LVGL 使用 GPU 的 DEMO

https://github.com/JefkeB/lv_port_pc_eclipse


https://github.com/lvgl/lv_drivers/issues/241

准备工作:

sudo apt-get update && sudo apt-get install -y build-essential libsdl2-dev cmake -y
#克隆项目
git clone --recursive https://github.com/JefkeB/lv_port_pc_eclipse.git

#
cd lv_port_pc_eclipse

#建立编译目录
mkdir builds/ -p

cd builds/

cmake ..

#编译
make -j32

#运行
bin/main

离线

楼主 #1 2024-07-01 22:05:17

memory
会员
注册时间: 2021-08-11
已发帖子: 331
积分: 307

Re: LVGL 使用 GPU 的 DEMO

QQ截图20240701220218.png

ubuntu22.04

编译运行成功
编译运行成功
编译运行成功

离线

#2 2024-07-02 20:04:21

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 566
积分: 691
个人网站

Re: LVGL 使用 GPU 的 DEMO

对比通过wayland来使用GPU会怎样?

离线

楼主 #3 2024-07-02 22:45:15

memory
会员
注册时间: 2021-08-11
已发帖子: 331
积分: 307

Re: LVGL 使用 GPU 的 DEMO

海石生风 说:

对比通过wayland来使用GPU会怎样?

wayland没有听说过,没能力,不会玩。

离线

楼主 #4 2024-07-02 22:49:48

memory
会员
注册时间: 2021-08-11
已发帖子: 331
积分: 307

Re: LVGL 使用 GPU 的 DEMO

QQ截图20240702223928.png

QQ截图20240702224421.png



CPU渲染的时候,GPU使用率22% | GPU渲染的时候,GPU使用率35%以上。
CPU渲染的时候,GPU使用率22% | GPU渲染的时候,GPU使用率35%以上。
CPU渲染的时候,GPU使用率22% | GPU渲染的时候,GPU使用率35%以上。

最近编辑记录 memory (2024-07-02 22:57:44)

离线

楼主 #5 2024-07-04 11:02:28

memory
会员
注册时间: 2021-08-11
已发帖子: 331
积分: 307

Re: LVGL 使用 GPU 的 DEMO

QQ截图20240704105958.png

sdl.c 使用:

    m->renderer = SDL_CreateRenderer(m->window, -1, SDL_RENDERER_SOFTWARE);

sdl_gpu.c 使用:

    m->renderer = SDL_CreateRenderer(m->window, -1, SDL_RENDERER_ACCELERATED);

离线

楼主 #6 2024-07-04 13:45:00

memory
会员
注册时间: 2021-08-11
已发帖子: 331
积分: 307

Re: LVGL 使用 GPU 的 DEMO

void sdl_display_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
    lv_coord_t hres = disp_drv->hor_res;
    lv_coord_t vres = disp_drv->ver_res;

//    printf("x1:%d,y1:%d,x2:%d,y2:%d\n", area->x1, area->y1, area->x2, area->y2);

    /*Return if the area is out the screen*/
    if(area->x2 < 0 || area->y2 < 0 || area->x1 > hres - 1 || area->y1 > vres - 1) {
        lv_disp_flush_ready(disp_drv);
        return;
    }

    /* TYPICALLY YOU DO NOT NEED THIS
     * If it was the last part to refresh update the texture of the window.*/
    if(lv_disp_flush_is_last(disp_drv)) {
        window_update(disp_drv, color_p);
    }

    /*IMPORTANT! It must be called to tell the system the flush is ready*/
    lv_disp_flush_ready(disp_drv);

}
static void window_update(lv_disp_drv_t *disp_drv, void * buf)
{
    SDL_Renderer *renderer = ((lv_draw_sdl_drv_param_t *) disp_drv->user_data)->renderer;
    SDL_Texture *texture = buf;
    SDL_SetRenderTarget(renderer, NULL);
    SDL_RenderClear(renderer);
#if LV_COLOR_SCREEN_TRANSP
    SDL_SetRenderDrawColor(renderer, 0xff, 0, 0, 0xff);
    SDL_Rect r;
    r.x = 0; r.y = 0; r.w = SDL_HOR_RES; r.h = SDL_VER_RES;
    SDL_RenderDrawRect(renderer, &r);
#endif

    /*Update the renderer with the texture containing the rendered image*/
    SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
    SDL_RenderSetClipRect(renderer, NULL);
    SDL_RenderCopy(renderer, texture, NULL, NULL);
    SDL_RenderPresent(renderer);
    SDL_SetRenderTarget(renderer, texture);
}

SDL_RenderCopy(renderer, texture, NULL, NULL);

实在没看懂,为什么这个纹理贴图为什么不要设置目标x,y坐标

离线

楼主 #7 2024-07-04 17:03:00

memory
会员
注册时间: 2021-08-11
已发帖子: 331
积分: 307

Re: LVGL 使用 GPU 的 DEMO

#define LV_DISP_DEF_REFR_PERIOD 30      /*[ms]*/
#define LV_DISP_DEF_REFR_PERIOD 1      /*[ms]*/

瞬间飙升到 400fps:

QQ截图20240704165523.png

但是实际上电脑液晶显示器刷新率一般也就60FPS,你搞那么高有什么卵用?
但是实际上电脑液晶显示器刷新率一般也就60FPS,你搞那么高有什么卵用?
但是实际上电脑液晶显示器刷新率一般也就60FPS,你搞那么高有什么卵用?

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn