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
离线
ubuntu22.04
编译运行成功
编译运行成功
编译运行成功
离线
对比通过wayland来使用GPU会怎样?
wayland没有听说过,没能力,不会玩。
离线
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)
离线
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);
离线
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坐标
离线
#define LV_DISP_DEF_REFR_PERIOD 30 /*[ms]*/
#define LV_DISP_DEF_REFR_PERIOD 1 /*[ms]*/
瞬间飙升到 400fps:
但是实际上电脑液晶显示器刷新率一般也就60FPS,你搞那么高有什么卵用?
但是实际上电脑液晶显示器刷新率一般也就60FPS,你搞那么高有什么卵用?
但是实际上电脑液晶显示器刷新率一般也就60FPS,你搞那么高有什么卵用?
离线
老大,怎么在f1c100s或者v3s上使用GPU啊,我的CPU占用有点高啊
离线