
drm-kms
文章平均质量分 82
drm-kms 专注高通关于kms以及drm
maze.ma
向wuxiaowen学习!!!
向何小龙学习!!!
展开
-
display: drm: virtio-gpu-drm
static struct virtio_driver virtio_gpu_driver = { .feature_table = features, .feature_table_size = ARRAY_SIZE(features),… .id_table = id_table, .probe = virtio_gpu_probe, .remove = virtio_gpu_remove, .config_changed = virtio_gpu_...原创 2021-08-17 20:57:21 · 1844 阅读 · 0 评论 -
display:kernel送显流程:commit
drmModeAtomicCommit先是libdrm中的drmModeAtomicCommitdrmModeAtomicCommit ret = DRM_IOCTL(fd, DRM_IOCTL_MODE_ATOMIC, &atomic);随后进入kernel DRM_IOCTL_DEF(DRM_IOCTL_MODE_ATOMIC, drm_mode_atomic_ioctl, DRM_MASTER), drm_mode_atomic_ioctl //实际的ioctl函数原创 2021-05-31 13:51:06 · 2121 阅读 · 0 评论 -
display:agl-compositor
https://docs.automotivelinux.org/en/master/#5_Component_Documentation/1_agl-compositor/这个agl-compositor有点ivi-shell的味道。原创 2021-04-23 14:21:55 · 1107 阅读 · 1 评论 -
display:从Weston到DP
本文旨在总结最进工作经验以及汇总之前博文wayland/weston介绍文章:display:Wayland Architecture https://blog.youkuaiyun.com/u012839187/article/details/94599565 简单介绍x-server与weston的区别与联系。原创 2021-04-11 21:56:14 · 2534 阅读 · 2 评论 -
display:Buffer Sharing and Synchronization
缓冲区共享和同步dma-buf子系统提供了用于在多个设备驱动程序和子系统之间共享用于硬件(DMA)访问的缓冲区以及用于同步异步硬件访问的框架。例如,drm的“prime”多GPU支持可使用此功能,但当然不限于GPU用例。它的三个主要组成部分是:(1)dma-buf,表示一个sg_table,并作为文件描述符公开给用户空间,以允许在设备之间传递;(2)fence,该机制提供了一种机制,用于在一个设备完成访问时发出信号, (3)保留,它管理与缓冲区关联的共享或专用fence。NOTE:dma翻译 2021-03-26 11:16:38 · 1797 阅读 · 1 评论 -
display:Weston:怎么让某个surface永远置于顶层
问题如标题:假设我有一个app。想一直置于顶层,那么我可以怎么做?1.想办法拿掉weston或者说drm关于master权限的处理,然后自己基于libdrm画一个即可。2.可以想办法分出一个硬件的pipleline用来专门给这个显示用,同时枚举出另一个/dev/dri/cardX,然后自己写一个基于此card的绘图client即可。这个方法的问题就是,本质上和cma有点像,这个单独分出来的硬件,永远不会被weston看到。 如果能做到pipeline的动态分配到节点(打个比方crtc0可以在不原创 2021-03-18 11:16:47 · 2294 阅读 · 1 评论 -
display:Driver porting: DMA changes-2003
直接内存访问(DMA)支持层在2.6中已进行了广泛更改,但是在许多情况下,设备驱动程序应保持不变。对于使用新驱动程序的开发人员,或希望使用最新API保持其代码最新的开发人员,有很多更改需要注意。最明显的变化是创建了新的通用DMA层。大多数驱动程序程序员都知道pci_* DMA支持函数;。SPARC程序员可能也遇到过类似的sbus_*函数集。从2.5.53开始,添加了一组新的通用DMA函数,目的是提供一个DMA支持API,而不是特定于任何特定总线。新的功能看起来很像旧的功能;从一个API切换到另一个...翻译 2021-03-08 14:54:09 · 268 阅读 · 2 评论 -
display:Destaging ION-2019
多年来,Android系统已经为DMA缓冲区提供了几个分配器;首先是PMEM,然后是其替代ION。ION分配器在2012年左右就开始使用了,但是它仍然停留在内核的staging树中。将ION加入主线的工作始于2013年;在那个时候,分配程序有多个问题,这使得mianline包含ION仍然不可能。最近,John Stultz发布了一个补丁集,引入了DMA-BUF堆,这是ION的一个进化,它的设计就是要做到这一点——将Android的dma缓冲区分配程序合入到主流Linux内核中。翻译 2021-02-23 20:25:35 · 957 阅读 · 5 评论 -
display:Integrating the ION memory allocator-2013
作为2013 Linux Plumbers Conference大会上Android + Graphics会议的一部分,我们将讨论ION内存分配器及其功能如何上传到主流内核。由于时间有限,我想创建一些背景文档,以提供我们将在会议上讨论并试图解决的问题的背景。ION overviewAndroid ION子系统的主要目标是允许在硬件设备和用户空间之间分配和共享缓冲区,以便在设备之间实现零拷贝内存共享。这听起来很简单,但实际上是一个困难的问题。在片上系统(SoC)硬件上,通常有许多不同的设备具有直接内存翻译 2021-02-18 10:05:51 · 550 阅读 · 1 评论 -
display:3.3中的DMA缓冲区共享-2012
早在2011年8月,LWN就研究了Marek Szyprowski发布的DMA缓冲区共享补丁集。从那以后,Sumit Semwal拾起了该补丁,他对大量开发人员的评论做出了很大的修改。合并为3.3的此修补程序的版本与以前的版本有很大不同,因此值得在此进行其他介绍。但是,核心思想仍然是相同的:这种机制允许DMA缓冲区在可能不知道彼此的驱动程序之间共享。最初的目标用途是在视频流的生产者和消费者之间共享缓冲区;例如,摄像头设备可以将帧流捕获到与图形适配器共享的一系列缓冲区中,从而无需在内核中进行复制就可以捕获翻译 2021-02-03 19:12:15 · 647 阅读 · 2 评论 -
display:libdrm/libgbm/ion/gem/dma_buf
#include "xf86drm.h"#include "xf86drmMode.h"#include <stdio.h>#include <stdint.h>#include <unistd.h>#include <string.h>#include <fcntl.h>#include <sys/mman.h>struct buffer_object { uint32_t width; uint3.原创 2021-02-02 15:05:47 · 3968 阅读 · 5 评论 -
display:dp/dsi:构建虚拟5kdp/dsi
想要测试mdp的性能,购买屏幕成本很高,如何构建虚拟dp?1.kernel打通覆盖dpcd以及edid的节点2.正确的dpcd以及edid输入对于1,需要修改源码,简单的思路是创建一个sys节点,暴露dpcp以及edid的节点,顺便需要暴露hot-plug的节点。这样就可以先改好dpcd以及edid,然后模拟hot-plug,保证在hot-plug执行的时候读取预先写入edid以及dpcd。对于2,正确的dpcd,一般我们修改最多的就是lane的数量以及lane的最大传输速.原创 2020-09-09 17:08:45 · 1698 阅读 · 0 评论 -
转载:linux drm原理及应用
参考链接dma:https://blog.youkuaiyun.com/abc3240660/article/details/81942190#t6Linux DRM KMS 驱动简介:https://blog.youkuaiyun.com/zhuyong006/article/details/80942777DRM(Direct Rendering Manager)学习简介:https://blog.youkuaiyun.com/hexiaolong2009/article/details/83720940 应用场景linux.转载 2020-07-27 16:25:20 · 4089 阅读 · 6 评论 -
tools:modetest代码逻辑
参考代码:https://github.com/grate-driver/libdrm/blob/master/tests/modetest/modetest.cmodetest本质上是设置property,加载图片,显示单一静态图片.main 函数1.解析输入参数 parse_plane 图像格式,分辨率长宽,绑定的crtcid struct plane_a...原创 2020-04-29 10:38:58 · 5058 阅读 · 2 评论 -
Linux DRM Developer's Guide
1.简介2. DRM内部驱动程序初始化驱动信息驱动加载内存管理转换表管理器(TTM)图形执行管理器(GEM)模式设定帧缓冲区创建输出轮询锁定KMS初始化和清理CRTC(struct drm_crtc)Plane(structdrm_plane)Enc翻译 2020-03-28 17:58:21 · 8172 阅读 · 0 评论 -
tools:drm-kms调试手段[modetest]
工具:modetest工具路径:libdrm/tests/环境:Qcom使用方法:usage: ./modetest [-cDdefMPpsCvwa] Query options: -c list connectors -e list encoders -f list framebuffers -p list CRTCs and planes (pipes) T...原创 2019-12-12 16:06:48 · 12428 阅读 · 14 评论 -
display:kms-bridge-4.14kernel
https://bootlin.com/doc/training/graphics/graphics-slides.pdf/** * struct drm_bridge - central DRM bridge control structure */struct drm_bridge { /** @dev: DRM device this brid...原创 2019-05-31 16:56:47 · 1477 阅读 · 2 评论 -
display:kms-connector-4.14kernel
DOC: overviewIn DRM connectors are the general abstraction for display sinks, and includeals fixed panels or anything else that can display pixels in some form. Asopposed to all other KMS objects...原创 2019-05-31 13:50:27 · 912 阅读 · 8 评论 -
display:kms-panel-4.14kernel
Panel硬件上对应屏幕本身。Makefiledrm-$(CONFIG_DRM_PANEL) += drm_panel.odrm_kms_helper-y:drm_panel_helper.o 没找到对应函数drm_kms_helper-$(CONFIG_DRM_PANEL_BRIDGE) += bridge/panel.oobj-y...原创 2019-05-20 20:41:47 · 2946 阅读 · 0 评论 -
display:qualcomm-drm-kms
1.架构图1.App或者GUI tool发起绘画请求,最终经过libdrm到kernel驱动GPU进行渲染操作。2.GPU将渲染结果通过memory最终传给上层。3.渲染的一张张结果[多张不同图层]经过kms,displayconntroller合成一张图装换成合适的数据格式最终输出到屏幕上。a.高通方面的源码路径如下kernel/driver/g...原创 2019-05-13 19:28:56 · 6237 阅读 · 1 评论 -
Display中的Component System
OS: Android 7.1Board: Firefly-RK3399Kernel: v4.4.55关于component system,下面是作者的一段话:Subsystems such as ALSA, DRM and others require a single card-leveldevice structure to represent a subsystem. Howe...转载 2019-05-09 17:04:47 · 1144 阅读 · 0 评论 -
Linux GPU Driver Developer’s Guide
总览该框架以基于Wayland的Windowing system为例,描述了linux graphic系统在DRI框架下,通过两条路径(DRM和KMS),分别实现Rendering和送显两个显示步骤。1)Application(如3D game)根据用户动作,需要重绘界面,此时它会通过OpenGL|ES、EGL等接口,将一系列的绘图请求,提交给GPU。a)OpenGL|ES、EG...翻译 2019-05-07 16:54:01 · 8307 阅读 · 1 评论 -
SMMU-System Memory Management Unit
在计算机领域,输入输出内存管理单元(英语:input–output memory management unit,缩写IOMMU)是一种内存管理单元(MMU),它将具有直接記憶體存取能力(可以DMA)的I/O总线连接至主内存。如传统的MMU(将CPU可见的虚拟地址转换为物理地址)一样,IOMMU将设备可见的虚拟地址(在此上下文中也称设备地址或I/O地址)映射到物理地址。部分单元还提供内存保护功能,...转载 2019-04-29 10:51:51 · 2081 阅读 · 0 评论