
DRM子系统
文章平均质量分 74
drm子系统
HugoVus
这个作者很懒,什么都没留下…
展开
-
drm相关博客~~~~
我的标签 - -Yaong- - 博客园标签 - crab2313's blog共计 21 个标签kernel22drm9risc-v4driver3gnome3mutter3algorithm2mesa2arm1binary1clutter1egl1eventfd1filesystem1iommu1isa1kdump1net1network1pci1usb1...原创 2022-04-23 11:54:05 · 684 阅读 · 0 评论 -
Linux图形显示系统之DRM
一、OverviewDirect Rendering Manager(DRM)是linux内核子系统,负责与显卡交互。 DRM提供一组API,用户空间程序可以使用该API将命令和数据发送到GPU并执行诸如配置显示器的模式设置之类的操作。DRM最初是作为X server Direct Rendering基础结构的内核空间组件开发的,但从那以后它被其他图形系统(例如Wayland)所使用。用户空间程序可以使用DRM API命令GPU执行硬件加速的3D渲染和视频解码以及GPU计算。Linux内核已经有一个转载 2022-04-07 18:17:01 · 3074 阅读 · 0 评论 -
Linux 图形栈一览:基于 DRM 和 Wayland
Chen Jie创作于 2019/11/13by Chen Jie ofTinyLab.org2019/10/07本文图示了基于 DRM 还有 Wayland 的 Linux 图形栈。在这个图形栈中,App 将画好的 surface,通过 Wayland 协议提交给 Compositor。Compositor 将来自各个应用的 surface(s) 合成为一帧,通过 DRM 接口最终画在FrameBuffer,如下图所示:图 1:Linux 图形栈概览:Wayland 协议, ...转载 2022-03-16 19:48:21 · 2341 阅读 · 0 评论 -
RK3399 探索之旅 / Display 子系统 / 基础概念
Linux 下的许多驱动框架其实都挺复杂,大多都是许多国内外的牛人经过多年的完善而积累下来的代码。学习驱动开发需要找准自己的定位,先全局把握再适当地去填充细节,不要总想着深入到驱动框架里,站在一个使用者的角度去思考如何应用这些驱动框架或许会有更好的效果。这里我是以一个菜鸟的身份记录下自己的一些想法和学习心得,欢迎纠正我。一、基础概念1. Linux 的 2 种显示方案包括: FBDEV: Framebuffer Device DRM/KMS: Direct Renderi转载 2022-03-07 10:24:19 · 2350 阅读 · 0 评论 -
DRM框架(vkms)分析(9)----drm驱动创建fbdevice分析(以rockchip_drm_drv为例)
本文主要介绍DRM框架里的fbdev兼容逻辑一 framebuffer框架简单介绍framebuffer框架下fbdev的注册主要三步步:(1)创建fbdev操作函数,以rockchip为例:static const struct fb_ops rockchip_drm_fbdev_ops = { .owner = THIS_MODULE, DRM_FB_HELPER_DEFAULT_OPS, .fb_mmap = rockchip_fbdev_mmap, .fb_fillrec原创 2022-02-28 02:04:08 · 5079 阅读 · 1 评论 -
DRM框架(vkms)分析(6)---- plane初始化
一drm_plane结构体struct drm_plane { struct drm_device *dev; //挂载到&drm_mode_config.plane_list struct list_head head; char *name; struct drm_modeset_lock mutex; //表示plane的mode对象, 其包含了plane的各种属性 struct drm_mode_object base; /** * @possibl.原创 2022-02-25 18:45:17 · 5314 阅读 · 0 评论 -
linux GPU上多个buffer间的同步之ww_mutex、dma_fence的使用 笔记
WW-Mutexes在GPU中一次Render可能会涉及到对多个buffer的引用。所以在command buffer提交到GPU前,需要等到所有依赖的buffer可用。因为这些buffer可能被多个设备或进程所共享,所以相比单个buffer,增加了deadlock的风险。这不能简单地通过一个 buffer mutex锁来等待buffer可用,因为这些buffer通常受控于应用程序.比如Vertex shader中用到的vertex data: input attributes bu转载 2022-02-25 17:38:21 · 2001 阅读 · 0 评论 -
DRM框架(vkms)分析(5)----crtc初始化
drm_crtc结构体类型如下:/** * struct drm_crtc - central CRTC control structure * * Each CRTC may have one or more connectors associated with it. This structure * allows the CRTC to be controlled. */struct drm_crtc { /*挂载到&drm_mode_config.crtc_list*/原创 2022-02-20 21:59:19 · 4794 阅读 · 0 评论 -
DRM框架(vkms)分析(4)----encoder初始化
本文主要分析encoder的初始化和配置,drm_encoder结构体如下:/** * struct drm_encoder - central DRM encoder structure * @dev: parent DRM device * @head: list management * @base: base KMS object * @name: human readable name, can be overwritten by the driver * @funcs: c原创 2022-01-26 18:50:34 · 3479 阅读 · 0 评论 -
DRM框架(vkms)分析(3)----connector->func && connector->helper_private的使用
一 connector->funcdrm_connector_funcs类型的对象实例,其中有些对象实例可直接使用helper函数,有些可以自定义,还有一些可以忽略掉不赋值的/** * struct drm_connector_funcs - control connectors on a given device * * Each CRTC may have one or more connectors attached to it. The functions * below.原创 2022-01-21 18:23:24 · 2757 阅读 · 1 评论 -
DRM框架(vkms)分析(2)----connector初始化
本文主要分析connector的初始化和配置,drm_connector结构体如下:/** * struct drm_connector - central DRM connector control structure * * Each connector may be connected to one or more CRTCs, or may be clonable by * another connector if they can share a CRTC. Each connec原创 2022-01-19 21:07:01 · 6006 阅读 · 0 评论 -
DRM框架(vkms)分析(1)----概述
本系列主要基于vkms测试程序,libdrm,以及vkms驱动来分析DRM框架,主要包括kms+gem。其中,(1)vkms测试程序主要参考如下三篇博客:最简单的DRM应用程序 (single-buffer)_hexiaolong2009的专栏-优快云博客_drm应用DRM应用程序进阶 (atomic-crtc)_hexiaolong2009的专栏-优快云博客_libdrm应用程序DRM应用程序进阶 (atomic-plane)_hexiaolong2009的专栏-优快云博客(原创 2022-01-17 19:47:16 · 3412 阅读 · 0 评论 -
最新版本libdrm(2.4.109)编译
drm的atomic操作在老版本的libdrm中没有支持,需要下载最新的libdrm,我这里下载的是libdrm-2.4.109版本下载链接:https://dri.freedesktop.org/libdrm/新版本的libdrm不再采用configure && make的方式编译,而是改用meson && ninja编译方式。meson 与ninja的安装如下:sudo apt-get install python3 python3-pip ninja-原创 2022-01-17 15:23:08 · 6609 阅读 · 1 评论 -
dma-fence
dma-fence本身的实现和使用并不复杂,其只有两种状态signaled和unsigned。可能正是因为其本身的精简,在融入其他概念中时,在不同的环境下,赋予了dma-fence不同的含义。所以通常需要根据dma-fence的具体使用的情况来理解其含义。dma-fence是内核中的同步原语,本身只能表示两种状态,这点上就和complete有点类似了。但是dma-fence是可以跨设备,跨进程的。具体来说:1.就是A设备驱动程序中创建的dma-fence可以被B驱动程序使用。2.dm转载 2022-01-14 17:54:19 · 2351 阅读 · 0 评论 -
DRM框架梳理-- dumb-buffer的分配和绑定到crtc
用户态程序参考代码:最简单的DRM应用程序 (single-buffer)_hexiaolong2009的专栏-优快云博客_drm应用modeset-single-buffer.c驱动参考代码:DRM 驱动程序开发(VKMS)_hexiaolong2009的专栏-优快云博客_drm_driver本文主要通过用户态的调用流程跟踪内核vkms驱动的调用逻辑:(1) drmModeGetResourcesdrm_ioctl_*控制宏定义在文件:drivers/gpu/drm/d原创 2022-01-05 23:07:07 · 2666 阅读 · 0 评论 -
libdrm下载及编译
一、代码下载libdrm下载网址:https://dri.freedesktop.org/libdrm/我这里选在libdrm-2.4.60.tar.bz2版本最新版本需要pthread-stubs版本大于0.4。 对于ubuntu16.04来说,如果通过仓库安装的话,无法安装到0.4的版本。解压命令:tar -jxvf libdrm-2.4.60.tar.bz2二、代码编译(1)进入libdrm-2.4.60顶层目录cd /home/share/libdrm-2.4.60(原创 2021-09-03 15:47:36 · 7441 阅读 · 0 评论