news 2026/4/4 19:21:46

DRM KMS 子系统(2)Framebuffer

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DRM KMS 子系统(2)Framebuffer

文章目录

  • 1. Framebuffer
  • 2. drm_framebuffer数据结构
  • 3. pixel_format

1. Framebuffer

  • 这是一个标准目标存储了需要显示的内容的信息,信息包括:
    • 内存(显存)用于存储显示内容存区域的引用
    • 内存(显存)中存储的帧的格式
    • 内存(显存)区域中活跃区域(被显示部分的内容)
  • Framebuffer实现依赖于:
    • 当前在是使用的内存(显存)管理如GEM或TTM
    • 显示控制器的能力:
      • 支持DMA传输类型(Contiguous Memory or Scatter Gather)
      • 支持IOMMU
  • GEM实体的默认实现为使用CMA(Contiguous Memory Allocator),代码在drivers/gpu/drm/drm_fb_cma_helper.c
  • 其他实现通常依赖于显示控制器:
    • 散聚(Scatter Gather)示例 :drivers/gpu/drm/tegra/
    • IOMMU示例:drivers/gpu/drm/exynos/

2. drm_framebuffer数据结构

#defineDRM_FORMAT_MAX_PLANES4u

pitches/offsets数组大小的4为最大的plane的个数,这里涉及图像格式的知识,如YUV格式的图像,存在多平面如3个平面(Y平面/U平面/V平面)。

  • pitches:代表显示控制器中的一行的长度(字节数),通常4字节对齐
  • offsets:以字节为单位,从buffer开始到实际像素数据的偏移

3. pixel_format

structdrm_framebuffer{[...]uint32_tpixel_format;/* fourcc format */[...]};

pixel_format描述了内存(显存)buffer的组织方式,使用FOURCC编码格式,支持的格式定义在:include/drm/drm_fourcc.h或<uapi/drm/drm_fourcc.h>中

这些FOURCC编码格式并非一种标准化,因此只在DRM KMS子系统里是有效。

  • DRM KMS子系统使用三种图像编码格式:

    • RGB:每个像素都使用一个RGB元组
    • YUV:类似的元组,维度上为Y,U和V组件
    • C8:使用一个转换表来映射一个值到一个RGB元组
  • 视频影像中格式多为YUV,它又可细分为多种格式:

    • Packed(紧凑类型):一块内存(显存)区域存储所有组件(Y,U和V)

      紧凑型格式,只使用offsets[0]和pitches[0]

    • Semiplanar(半平面型):一块内存(显存)区域存储Y组件和另一块存储UV组件

      半平面型格式,offsets和pitches均使用前两个数组

    • Planar(多平面型):每个组件都需要一块内存(显存)区域存储

      多平面型格式,offsets和pitches均使用前三个数组

每个内存(显存)区域存储一个帧的组件(Y, U or V)被称作一个plane

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 15:48:43

Open3D三维重建:5步掌握多视角碎片配准技术

在现代三维重建应用中&#xff0c;Open3D作为一款强大的开源3D数据处理库&#xff0c;其多视角碎片配准功能能够将多个局部重建的碎片精确对齐到全局空间&#xff0c;实现完整场景的高质量重建。本文将通过简单易懂的方式&#xff0c;带你从零开始掌握Open3D碎片配准的核心技术…

作者头像 李华
网站建设 2026/4/3 14:39:23

Armbian桌面环境构建终极指南:从零打造专属单板电脑系统

Armbian桌面环境构建终极指南&#xff1a;从零打造专属单板电脑系统 【免费下载链接】build Armbian Linux Build Framework 项目地址: https://gitcode.com/GitHub_Trending/bu/build 还在为单板电脑寻找既轻量又功能完整的桌面系统而烦恼吗&#xff1f;Armbian桌面环境…

作者头像 李华
网站建设 2026/4/3 4:35:00

QuickLook:一键预览文件内容,彻底改变Windows文件管理体验

QuickLook&#xff1a;一键预览文件内容&#xff0c;彻底改变Windows文件管理体验 【免费下载链接】QuickLook 项目地址: https://gitcode.com/gh_mirrors/qui/QuickLook 还在为频繁打开关闭应用程序查看文件内容而感到困扰吗&#xff1f;在Windows系统中管理文件时&am…

作者头像 李华
网站建设 2026/4/1 12:41:55

Grafana仪表盘展示IndexTTS2资源消耗趋势图

Grafana仪表盘展示IndexTTS2资源消耗趋势图 在AI语音合成系统日益走向生产环境的今天&#xff0c;一个常被忽视的问题逐渐浮现&#xff1a;我们能听清语音是否自然&#xff0c;却很难“看见”模型运行时到底发生了什么。当用户反馈“服务变慢了”或“突然卡住”&#xff0c;开发…

作者头像 李华
网站建设 2026/3/27 6:43:18

百度搜索优化技巧:让你的IndexTTS2相关文章更容易被发现

百度搜索优化技巧&#xff1a;让你的 IndexTTS2 相关文章更容易被发现 在中文内容生态中&#xff0c;越来越多开发者开始关注如何让自己的技术成果“被看见”。尤其是在语音合成这类专业性强、受众垂直的领域&#xff0c;哪怕你有一个功能强大、设计精良的开源项目&#xff0c;…

作者头像 李华
网站建设 2026/4/3 4:49:24

Awesome-Awesome:精选资源合集终极指南 [特殊字符]

Awesome-Awesome&#xff1a;精选资源合集终极指南 &#x1f680; 【免费下载链接】awesome-awesome A curated list of awesome curated lists of many topics. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-awesome Awesome-Awesome 是一个精心整理的精选列表…

作者头像 李华