DRM全解析 —— CRTC详解(4)
接前一篇文章:DRM全解析 —— CRTC详解(3)
本文继续对DRM中CRTC的核心结构struct drm_crtc的成员进行释义。
3. drm_crtc结构释义
(21)struct drm_object_properties properties
/** @properties: property tracking for this CRTC */struct drm_object_properties properties;
此crtc的属性跟踪。
(22)struct drm_property *scaling_filter_property
/*** @scaling_filter_property: property to apply a particular filter while* scaling.*/struct drm_property *scaling_filter_property;
属性,以便在缩放时应用特定的筛选器。
(23)struct drm_crtc_state *state
/*** @state:** Current atomic state for this CRTC.** This is protected by @mutex. Note that nonblocking atomic commits* access the current CRTC state without taking locks. Either by going* through the &struct drm_atomic_state pointers, see* for_each_oldnew_crtc_in_state(), for_each_old_crtc_in_state() and* for_each_new_crtc_in_state(). Or through careful ordering of atomic* commit operations as implemented in the atomic helpers, see* &struct drm_crtc_commit.*/struct drm_crtc_state *state;
此CRTC的当前原子状态。
此项是由@mutex保护的。注意,非阻塞原子提交访问当前CRTC状态而不取得锁。或者通过遍历&struct drm_atomic_state指针(参见for_each_oldnew_crtc_in_state()、for_each_old _crtc_in.state()和for_each_new_crtc_in_state())。或者通过对atomic helpers中实现的原子提交操作进行仔细排序(参阅&struct drm_crtc_commit)。
(24)struct list_head commit_list
/*** @commit_list:** List of &drm_crtc_commit structures tracking pending commits.* Protected by @commit_lock. This list holds its own full reference,* as does the ongoing commit.** "Note that the commit for a state change is also tracked in* &drm_crtc_state.commit. For accessing the immediately preceding* commit in an atomic update it is recommended to just use that* pointer in the old CRTC state, since accessing that doesn't need* any locking or list-walking. @commit_list should only be used to* stall for framebuffer cleanup that's signalled through* &drm_crtc_commit.cleanup_done."*/struct list_head commit_list;
跟踪挂起提交的&drm_crt_commit结构的列表。受@commit_lock保护。这个列表有自己的完整引用,正在进行的提交也是如此。
注意,状态更改的提交也在&drm_crtc_state.commit中进行跟踪。为了访问原子更新中紧接在前的提交,建议仅在旧CRTC状态下使用该指针,因为访问它不需要任何锁定或列表遍历。@commit_list应仅用于暂停通过&drm_crtc_commit.cleanup_done发出信号的帧缓冲区清理。
(25)spinlock_t commit_lock
/*** @commit_lock:** Spinlock to protect @commit_list.*/spinlock_t commit_lock;
保护@commit_list的自旋锁。
(26)struct dentry *debugfs_entry
/*** @debugfs_entry:** Debugfs directory for this CRTC.*/struct dentry *debugfs_entry;
此CRTC的debugfs目录。
(27) struct drm_crtc_crc crc
/*** @crc:** Configuration settings of CRC capture.*/struct drm_crtc_crc crc;
CRC捕获的配置设置。
(28)unsigned int fence_context
/*** @fence_context:** timeline context used for fence operations.*/unsigned int fence_context;
用于fence操作的时间线上下文。
(29)spinlock_t fence_lock
/*** @fence_lock:** spinlock to protect the fences in the fence_context.*/spinlock_t fence_lock;
保护fence_context中的fence的spinlock。
(30)unsigned long fence_seqno
/*** @fence_seqno:** Seqno variable used as monotonic counter for the fences* created on the CRTC's timeline.*/unsigned long fence_seqno;
Seqno变量用作CRTC时间线上创建的fences的单调计数器。
(31)char timeline_name[32]
/*** @timeline_name:** The name of the CRTC's fence timeline.*/char timeline_name[32];
CRTC的fence时间线的名称。
(32)struct drm_self_refresh_data *self_refresh_data
/*** @self_refresh_data: Holds the state for the self refresh helpers** Initialized via drm_self_refresh_helper_init().*/struct drm_self_refresh_data *self_refresh_data;
保持自刷新助手的状态。
通过drm_self_refresh_helper_init()初始化。
至此,DRM CRTC的核心结构struct drm_crtc就释义完成了。后续会对此结构中涉及到的结构进行深入讲解。
相关文章:
DRM全解析 —— CRTC详解(4)
接前一篇文章:DRM全解析 —— CRTC详解(3) 本文继续对DRM中CRTC的核心结构struct drm_crtc的成员进行释义。 3. drm_crtc结构释义 (21)struct drm_object_properties properties /** properties: property tracking …...
六个为Rust构建的IDE
Rust语言的学习曲线适中,介于高级语言和低级语言之间。这门语言既能编写系统软件,将嵌入式设备编译为x86 ARM,也可以用于前端技术,这要归功于WebAssembly。 在日渐成熟的发展中,Rust开始拥有更好的工具来提高效率。最…...
25 Python的collections模块
概述 在上一节,我们介绍了Python的sqlite3模块,包括:sqlite3模块中一些常用的函数和类。在这一节,我们将介绍Python的collections模块。collections模块是Python中的内置模块,它实现了特殊的容器数据类型,提…...
JEPG Encoder IP verilog设计及实现
总体介绍: 采用通用的常规 Verilog 代码编写,可用于任何 FPGA。 该内核不依赖任何专有 IP 内核,而是用 Verilog 编写了实现 JPEG 编码器所需的所有功能,代码完全独立。 编码器内核的输入是一条 24 位数据总线,红色像素、绿色像素和蓝色像素各有 8 位。 信号 "data_i…...

yolov5 web端部署进行图片和视频检测
目录 1、思路 2、代码结构 3、代码运行 4、api接口代码 5、web ui界面 6、参考资料 7、代码分享 1、思路 通过搭建flask微型服务器后端,以后通过vue搭建网页前端。flask是第一个第三方库。与其他模块一样,安装时可以直接使用python的pip命令实现…...

嵌入式养成计划-34--函数库
七十二、 函数库 1. 库的概念 库是一个二进制可执行文件,与二进制可执行程序比较,库是不能单独运行的。 库中存放的是功能函数,没有主函数(main函数) 库需要被载入到内存中使用 标准的基础库中存放了很多已经写好的…...

PM864AK01-eA 3BSE018161R2 工业人工智能供应链先驱
PM864AK01-eA 3BSE018161R2 工业人工智能供应链先驱 吞吐量和Macnica Networks的战略合作伙伴关系将使Macnica Networks的客户能够加速和量化智能工厂计划的投资回报(ROI)。高管、经理和运营负责人可以使用Macnica Networks领先的制造场所数据收集平台和ThroughPut基于约束理论…...

参与现场问题解决总结(Kafka、Hbase)
一. 背景 Kafka和Hbase在现场应用广泛,现场问题也较多,本季度通过对现场问题就行跟踪和总结,同时结合一些调研,尝试提高难点问题的解决效率,从而提高客户和现场满意度。非难点问题(历史遇到过问题…...

基于PSD-ML算法的语音增强算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1.加窗处理: 2.分帧处理: 3.功率谱密度估计: 4.滤波处理: 5.逆变换处理: 6.合并处理: 5.算法完整程序工程 1.算法…...

【1++的Linux】之文件(一)
👍作者主页:进击的1 🤩 专栏链接:【1的Linux】 文章目录 一,初识文件二,文件接口 一,初识文件 文件就是文件内容属性。因此对文件的操作无非就是对文件内容的操作和对文件属性的操作。 我们访问…...

Kafka 高可用
正文 一、高可用的由来 1.1 为何需要Replication 在Kafka在0.8以前的版本中,是没有Replication的,一旦某一个Broker宕机,则其上所有的Partition数据都不可被消费,这与Kafka数据持久性及Delivery Guarantee的设计目标相悖。同时Pr…...

关于分布式操作系统
关于分布式操作系统,如果你不太理解的话,可以把它看成是传统操作系统延展。二者的区别在于,传统的操作系统都是单机系统,只能在一台计算机上运行,而分布式操作系统是多机系统,每台计算机都是系统中的一个计…...
Pytorch使用DataLoader, num_workers!=0时的内存泄露
描述一下背景,和遇到的问题: 我在做一个超大数据集的多分类,设备Ubuntu 22.04i9 13900KNvidia 409064GB RAM,第一次的训练的训练集有700万张,训练成功。后面收集到更多数据集,数据增强后达到了1000万张。…...

chromedriver下载与安装方法
下载与安装: 1.查看Chrome浏览器版本 首先,需要检查Chrome浏览器的版本。请按照以下步骤进行: 打开Chrome浏览器。 点击浏览器右上角的菜单图标(三个垂直点)。 选择“帮助”(Help)。 在下拉菜单中选择“…...

数据库查询详解
数据库查询操作 前置:首先我们创建一个练习的数据库 /* SQLyog Professional v12.09 (64 bit) MySQL - 5.6.40-log : Database - studentsys ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET …...

c++视觉ROI 区域和ROI 区域图像叠加
ROI 区域提取和ROI 区域图像叠加 ROI 区域提取 #include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg");// 检查图像是否成功加载if (image.empty()) {std::cerr << "Error: Could not read the image." …...
scrapy爬虫系列之安装及入门介绍
前面介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分析网页DOM树结构进行爬取内容,同时可以结合Phantomjs模拟浏览器进行鼠标或键盘操作。但是,更为广泛使用的Python爬虫框架是——Scrapy爬虫。这是一篇在Windows系统下介绍 Scrapy爬虫安装及…...

洛谷刷题:数组
好累,学习令我快乐 一、小鱼比可爱 题目链接:https://www.luogu.com.cn/problem/P1428 题目描述 人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从…...
【Linux常用命令4】系统状态监测命令---2
last:查看所有系统的登录记录 执行last命令时,它会读取/var/log目录下名称为wtmp的文件,并把该文件记录的登录系统或终端的用户名单全部显示出来。默认显示wtmp的记录,btmp能显示的更详细,可以显示远程登录࿰…...
uboot启动流程-uboot代码重定位说明二
一. uboot启动流程 本文学习 uboot 的启动流程中涉及的 uboot 代码重定位部分。 _main 函数中会调用 relocate_code 函数。 relocate_code 函数分两个部分: 1. 拷贝 uboot 代码部分 2. 有关 " 重定位后有关函数调用或全局变量地址的问题"的解决方法…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...