Linux drm 显示框架
文章平均质量分 61
dongfangxingyu1
这个作者很懒,什么都没留下…
展开
-
QT 之wayland 事件处理分析基于qt5wayland5.14.2
hand_enter 处理调用虚函数pointer_enter:pointer_enter函数在:QWaylandInputDevice::Pointe实现。QWaylandInputDevice::Pointe 主要实现 QtWayland::wl_pointer 类函数。weston 服务接收鼠标事件就调用m_wl_pointer_listener 函数集。1. Qt wayland 初始化 接收鼠标/案件,触摸屏等事件事件。2. wl_pointer 类鼠标事件向weston 注册监听鼠标事件。原创 2023-03-03 00:08:07 · 1538 阅读 · 0 评论 -
QT 之事件循环简介
代码里会调用给app安装的所有事件过滤器(从代码中的注释看到,app的事件过滤器只能在主线程中被调用),我们给app安装的事件过滤器就是在这个阶段被执行的。可以看到,流程中涉及两个事件过滤器的调用:sendThroughApplicationEventFilters和sendThroughObjectEventFilters,事件过滤器调用完后,才是调用接收者的event函数。可以这么说,每一个事件执行前,都要经过QApplication::notify,所以,我们可以重写notify来对事件做特殊处理。转载 2023-02-28 18:59:08 · 1185 阅读 · 1 评论 -
QT 学习之QPA
【代码】QT 学习之QPA。原创 2023-02-27 19:51:01 · 515 阅读 · 0 评论 -
Linux drm显示框架
本系统教程基于rk3399-pc 设备环境开发测试。原创 2022-03-08 16:50:09 · 742 阅读 · 0 评论 -
drm 显示子系统之基础知识
drm 模块划分为三个部分:1.libdrm :用户态,对底层接口进行封装,向上层提供通用的API接口,主要是对各种IOCTL接口进行封装。2. KMS:内核态,Kernel Mode Setting,所谓Mode setting,其实说白了就两件事:更新画面和设置显示参数。更新画面:显示buffer的切换,多图层的合成方式,以及每个图层的显示位置。设置显示参数:包括分辨率、刷新率、电源状态(休眠唤醒)等。3.GEM:内核态:Graphic Execution Manager,主要负责显..原创 2022-03-08 17:12:05 · 1278 阅读 · 0 评论 -
drm 之modes
#define _GNU_SOURCE#include <errno.h>#include <fcntl.h>#include <stdbool.h>#include <stdint.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/mman.h>#include <time.h&...原创 2022-05-19 17:48:11 · 2104 阅读 · 3 评论 -
rk3399 注册drm 驱动
rk3399 基于component 框架,在probe阶段解析dts中各个设备的信息,加到componet match 列表中,等所有的设备加载完毕后,就会引发master设备的bind。3. 解析display_subsystem dts。原创 2022-11-16 18:01:12 · 853 阅读 · 0 评论 -
Wayland与Weston简介
简单地说,Wayland是一套display server(Wayland compositor)与client间的通信协议,而Weston是Wayland compositor的参考实现。其官网为Wayland。它们定位于在Linux上替换X图形系统。X图形系统经历了30年左右的发展,其设计在今天看来已略显陈旧。在X系统中,X Server作为中心服务,连接clien和硬件以及compositor。但时至今日,原本在X Server中做的事很多已被移到kernel或者单独的库中,因此X Server就显得转载 2022-05-19 14:57:32 · 829 阅读 · 0 评论 -
wayland 学习之weston 启动
ompositor/executable.c/main()-->compositor/main.c-->wet_main()-->verify_xdg_runtime_dir()//XDG_RUNTIME_DIR环境变量检查-->wl_display_create//创建wayland显示对象-->wl_display_get_event_loop-->wl_event_loop_...原创 2022-05-19 14:19:14 · 1001 阅读 · 0 评论 -
Wayland 协议定义及分发
1. 协议定义:Wayland核心协议是通过protocol/wayland.xml这个文件定义的。它通过wayland_scanner这个程序扫描后会生成wayland-protocol.c, wayland-client-protocol.h和wayland-server-protocol.h三个文件。wayland-client-protocol.h是给Client用的;wayland-server-protocol.h是给Server用的; wayland-protocol.c描述了接口,Cli原创 2022-05-19 15:31:30 · 1149 阅读 · 0 评论 -
wayland 之输入事件处理-pointer/keyboard/touch
在registry_handle_global 函数中bind wl_seat else if (strcmp(interface, "wl_seat") == 0) { d->seat = wl_registry_bind(registry, id, &wl_seat_interface, 1); wl_seat_add_listener(d->seat, &seat_listener, d); }注册鼠标poiner event 接口原创 2022-05-19 16:40:23 · 1053 阅读 · 0 评论 -
wayland之窗口显示
我们westonsimple_shm案例为例连接server:wl_display_connect 接口通过socket建立与Server端的连接返回wl_display,display->registry = wl_display_get_registry(display->display) // 申请创建registry,得到代理对象wl_registry。这个个对象相当于Client在Server端放的一个用于嗅探资源的Observer。Client通过它得到Server端有哪些Gl原创 2022-05-19 14:44:56 · 2613 阅读 · 2 评论 -
wayland 之显示bmp 图片
下面基于simple_shm.c 强制显示1080P bmp 显示1.demo 修改点paint_pixels 替换img_conv_argb8888 函数/* * Copyright © 2011 Benjamin Franzke * Copyright © 2010 Intel Corporation * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this..原创 2022-05-20 11:23:04 · 295 阅读 · 0 评论 -
wayland 显示bmp 图片优化
上一个案例我显示bmp图片。是强制1080P 分辨率,优化程序根据当前mode 创建window。并显示对应的分辨率图片。获取当前mode:static voidoutput_handle_geometry(void *data, struct wl_output *wl_output, int32_t x, int32_t y, int32_t physical_width, int32_t physical_height, int32_t原创 2022-05-20 12:50:17 · 377 阅读 · 2 评论 -
Weston中shm window渲染显示过程分析
让我们来回顾一下panel surface的创建过程,panel本身是一个支持widget的window窗口类型。在使用window_create_custom创建窗口的时候,由于目前大部分设备上的cairo都是支持EGL的,因此panel surface 的buffer类型是WINDOW_BUFFER_TYPE_EGL_WINDOW,如果cairo不支持EGL绘制,那么panel surface的buffer类型就是WINDOW_BUFFER_TYPE_SHM。EGL surface创建逻辑:转载 2022-07-04 11:19:39 · 1453 阅读 · 0 评论 -
wayland 之opengl es
wayland openegl原创 2022-08-30 10:45:11 · 1611 阅读 · 0 评论