news 2026/1/16 12:27: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/1/14 16:42:53

快速理解树莓派如何连接WiFi智能设备

用树莓派打造本地智能家居中枢&#xff1a;WiFi连接与设备控制实战指南你有没有遇到过这样的尴尬&#xff1f;想关个灯&#xff0c;手机App却提示“设备离线”——不是灯坏了&#xff0c;而是家里的Wi-Fi刚好抽风&#xff0c;云服务器连不上。再或者&#xff0c;明明只是想让客…

作者头像 李华
网站建设 2026/1/14 9:55:25

5分钟快速上手:无名杀在线卡牌游戏完整安装配置指南

5分钟快速上手&#xff1a;无名杀在线卡牌游戏完整安装配置指南 【免费下载链接】noname 项目地址: https://gitcode.com/gh_mirrors/nona/noname 想要体验刺激的多人对战卡牌游戏吗&#xff1f;无名杀作为一款基于浏览器的免费在线卡牌游戏&#xff0c;让您轻松搭建专…

作者头像 李华
网站建设 2026/1/15 4:59:17

Synfig Studio 终极指南:快速掌握开源2D动画制作

Synfig Studio 终极指南&#xff1a;快速掌握开源2D动画制作 【免费下载链接】synfig This is the Official source code repository of the Synfig project 项目地址: https://gitcode.com/gh_mirrors/sy/synfig 想要制作专业级别的2D动画却苦于技术门槛&#xff1f;Sy…

作者头像 李华
网站建设 2026/1/16 5:06:19

听云Network网络探针检测IndexTTS2 CDN加速效果

听云Network网络探针检测IndexTTS2 CDN加速效果 在智能语音服务日益普及的今天&#xff0c;用户早已不再满足于“能说话”的机械音。无论是客服机器人、有声书平台&#xff0c;还是车载助手&#xff0c;人们对语音合成的自然度、情感表达和响应速度都提出了近乎“真人级”的要求…

作者头像 李华
网站建设 2026/1/14 21:50:58

单板电脑系统配置终极方案:Armbian高效部署技术指南

单板电脑系统配置终极方案&#xff1a;Armbian高效部署技术指南 【免费下载链接】build Armbian Linux Build Framework 项目地址: https://gitcode.com/GitHub_Trending/bu/build 在嵌入式开发和单板电脑应用场景中&#xff0c;系统配置的复杂性往往成为技术实施的主要…

作者头像 李华
网站建设 2026/1/14 16:13:34

WinApps深度解析:在Linux桌面无缝运行Windows应用的技术实践

WinApps深度解析&#xff1a;在Linux桌面无缝运行Windows应用的技术实践 【免费下载链接】winapps The winapps main project, forked from https://github.com/Fmstrat/winapps/ 项目地址: https://gitcode.com/GitHub_Trending/wina/winapps 你是否曾经面临这样的困境…

作者头像 李华