struct drm_plane表示一个输入到CRTC的图像源,上游是drm_framebuffer,下游是drm_crtc。 structdrm_plane {structdrm_device *dev;structlist_head head;char*name;structdrm_modeset_lock mutex;structdrm_mode_objectbase;uint32_t possible_crtcs;uint32_t*format_types;unsignedintformat_count;boolformat_default...
drmModeAtomicAddProperty(req, plane_id, property_crtc_h, crtc_h); drmModeAtomicAddProperty(req, plane_id, property_src_x, src_x); drmModeAtomicAddProperty(req, plane_id, property_src_y, src_y); drmModeAtomicAddProperty(req, plane_id, property_src_w, src_w << 16); drmModeAtomicAddPro...
1.3 Planes 就是图层,比如视频层在plane2,UI在plane1,视频在UI上面; 2、通过modetest查看系统DRM的情况 例如在RV1109的开发板端执行modetest,我们可以看到以下输出信息: [root@RV1126_RV1109:/oem]# modetestEncoders:idcrtctypepossiblecrtcspossibleclones5553DSI0x000000010x00000000Connectors:idencoderstatusnamesize...
c) DRM中的Plane和我们常说的YUV/YCbCr图形格式中的plane完全是两个不同的概念。YUV图形格式中的plane指的是图 像数据在内存中的排列形式,一般Y通道占一段连续的内存块,UV通道占另一段连续的内存块,我们称之为YUV-2plane (也叫YUV 2平面),属于软件层面。而DRM中的Plane指的是Display Controller中用于多层合成...
.atomic_update = vop_plane_atomic_update, // 关闭图层 .atomic_disable = vop_plane_atomic_disable, }; vop接口: static const struct drm_crtc_helper_funcs vop_crtc_helper_funcs = { // 使能vop, 在这里面会将timing配好 .enable = vop_crtc_enable, ...
就是图层,比如视频层在plane2,UI在plane1,视频在UI上面; 2、通过modetest查看系统DRM的情况 例如在RV1109的开发板端执行modetest,我们可以看到以下输出信息: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 [root@RV1126_RV1109:/oem]# modetestEncoders:id crtc type possible crtcs possible clones5553DSI...
libdrm与内核的交互涉及参数填充,如alloc_arg.handle, alloc_arg.pitch和alloc_arg.size,以及mmap_arg.offset。这些信息会被传递给v4l2插件,用于相机数据输入。值得注意的是,crtc_id和fb_id不是指针,意味着每个plane只能对应单一的fb_id和crtc_id。最后,DMA-buf机制在DRM中也扮演重要角色,如...
size; bo->handle = bo->create.handle; drmModeAddFB(fd, bo->width, bo->height, 24, 32, bo->pitch, bo->handle, &bo->fb_id); //每行占用字节数,共占用字节数,MAP_DUMB的句柄 printf("pitch = %d ,size = %d, handle = %d \n",bo->pitch,bo->size,bo->handle); /* map the ...
KMS:CRTC,ENCODER,CONNECTOR,PLANE,FB,VBLANK,property GEM:DUMB、PRIME、fence 学习DRM 驱动其实就是学习上面各个元素的实现及用法,如果你能掌握这些知识点,那么在编写 DRM 驱动的时候就能游刃有余。 为了更好理解 DRM 当中的概念,从应用层开始是个不错的方向。
* @possible_crtcs: pipes this plane can be bound to constructed from * drm_crtc_mask() */uint32_tpossible_crtcs;/** @format_types: array of formats supported by this plane */uint32_t*format_types;/** @format_count: Size of the array pointed at by @format_types. */unsignedintfor...