libdrm全解析一 —— 总述

本文参考以下博文:

Linux libdrm代码完全解析

LIBDRM使用

最简单的DRM应用程序 (single-buffer)

Linux libdrm库入门教程

10. DRM图形显示框架

LIBDRM

特此致谢!

一、介绍

  • BLFS中给出的介绍

libdrm提供了一个用户空间库,用于访问支持ioctl接口的操作系统上的直接呈现管理器(DRM)。libdrm是一个低级级别库,通常由图形驱动(程序)使用,如Mesa DRI驱动(程序)、X驱动(程序)、libva和类似项目。

  • 官方gitlab(https://gitlab.freedesktop.org/mesa/drm)中给出的介绍

libdrm是一个用户空间库,用于在Linux、BSD以及其它支持ioctl接口的操作系统上访问DRM(Direct Rendering Manager,直接渲染管理器)。该库为ioctl提供了包装函数,以避免直接暴露内核接口,并为具有drm内存管理器的芯片集提供了跟踪重定位和缓冲区的支持。

内核DRM驱动程序中的新功能通常需要一个新的libdrm,但新的libdrm总是可以与旧的内核一起使用。

libdrm是一个低级库,通常由图形驱动(程序)使用,例如:Mesa驱动(程序)、X驱动(程序)、libva和类似项目。

libdrm在系统中所处的层次位置如下所示:

在这里插入图片描述

在这里插入图片描述

broken

二、作用

作为DRM框架中的一份子即组成部分之一,libdrm对底层接口进行封装,主要是对各种ioctl接口进行封装,向上层提供通用的API接口。用户或应用程序在用户空间调用libdrm提供的库函数,即可访问到显示的资源,并对显示资源进行管理和使用。

这样通过libdrm对显示资源进行统一访问,libdrm将命令传递到内核最终由DRM驱动接管各应用的请求并处理, 可以有效避免访问冲突。

libdrm基于DRI协议,通过ioctl与2D图显驱动进行交互,配置图显处理器以及HDMI、MIPI、LVDS等接口。

a69ff083341748e22bdb9a4bc081e863.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/50304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sulfo-CY3 DBCO在生物传感和靶向标记方面的优势

​欢迎来到星戈瑞荧光stargraydye!小编带您盘点: Sulfo-Cyanine3 DBCO在生物传感和靶向标记方面具有许多优势,使其成为生物医学研究中的工具。以下是Sulfo-Cyanine3 DBCO在生物传感和靶向标记方面的主要优势: **1. 特异性&#x…

PostgreSQL-研究学习-介绍与安装

PostgreSQL-预研 是个很厉害的数据库的样子 ψ(*`ー)ψ 官方文档:http://www.postgres.cn/docs/12/ 总的结论和备注 PgSQL 支持对JSON的支持很强大,以及提供了很多数学几何相关的数据类型【例:点,线条,几何…

【面试题】:axios二次封装都进行了哪些配置以及如果项目里面有两个baseURL你怎么解决?

一.axios的概念 Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。 二.axios的特点&#xf…

动态调用python类和函数

遇到一个需求,需要尽可能的尝试触发python模块里的行为,比如函数,类实例这样,感觉和java里的反射有点像;通过调研发现python里有getattr这个方法,类似于java里的反射机制,可以通过字符串比较方便…

5.11 汇编语言:仿写IF条件语句

条件语句,也称为IF-ELSE语句,是计算机编程中的一种基本控制结构。它允许程序根据条件的真假来执行不同的代码块。条件语句在处理决策和分支逻辑时非常有用。一般来说,条件语句由IF关键字、一个条件表达式、一个或多个代码块以及可选的ELSE关键…

java开源 VR全景商城 saas商城 b2b2c商城 o2o商城 积分商城 秒杀商城 拼团商城 分销商城 短视频商城 小程序商城搭建 bbc

​ 1. 涉及平台 平台管理、商家端(PC端、手机端)、买家平台(H5/公众号、小程序、APP端(IOS/Android)、微服务平台(业务服务) 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前…

回归预测 | MATLAB实现BES-SVM秃鹰搜索优化算法优化支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现BES-SVM秃鹰搜索优化算法优化支持向量机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现BES-SVM秃鹰搜索优化算法优化支持向量机多输入单输出回归预测(多指标,多图)效…

go gorm一对多has many

has many 与另一个模型建立了一对多的连接。 不同于 has one,拥有者可以有零或多个关联模型。 例如,您的应用包含 user 和 credit card 模型,且每个 user 可以有多张 credit card。 定义model // User 有多张 CreditCard,UserI…

python中的matplotlib画直方图(数据分析与可视化)

python中的matplotlib画直方图(数据分析与可视化) import numpy as np import pandas as pd import matplotlib.pyplot as pltpd.set_option("max_columns",None) plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]Fa…

TCP缓冲区参数调优

1、系统原值查询 [lybadmin autopush]$ cat /proc/sys/net/core/rmem_max 4194304 [lybadmin autopush]$ cat /proc/sys/net/core/wmem_max 1048576 [lybadmin autopush]$ cat /proc/sys/net/ipv4/tcp_rmem 4096 87380 4194304 [lybadmin autopush]$ cat /proc/sys/net/ip…

centos8安装mysql

1.首先用finalShell远程连接到服务器 2.如果服务器之前安装过mysql请先卸载,我这里是用yum安装的,现在通过yum去卸载 yum remove -y mysql find / -name mysql //找到残留的文件,再通过rm -rf去删除对应的文件3.下面正式开始安装 (1&#…

基于微信小程序+Springboot校园二手商城系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、目前专注于大学生项目实战开发,讲解,毕业答疑辅导✌ 🍅文末获取源码联系🍅 👇&#x1f3…

使用 OpenAI GPT 模型的最佳实践

推荐:使用NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景 为了帮助用户获得最佳输出,OpenAI 提供了使用 GPT 模型的最佳实践。这来自体验,因为许多用户不断尝试使用此模型并找到了最有效的方法。 在本文中,我将总结使用 Ope…

分数规划(二分)

链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 题目描述 小咪是一个土豪手办狂魔,这次他去了一家店,发现了好多好多(n个)手办,但他是一个很怪的人,每次只想买k个手办&a…

JavaSE-21 【Stream流】

1 Stream的介绍 1.1 概念 stream流操作是Java 8提供一个重要新特性,它允许开发人员以声明性方式处理集合,其核心类库主要改进了对集合类的 API和新增Stream操作。Stream类中每一个方法都对应集合上的一种操作。将真正的函数式编程引入到Java中&#xf…

【PHP】数据类型运算符位运算

文章目录 数据类型简单(基本)数据类型:4个小类复合数据类型:2个小类特殊数据类型:2个小类类型转换类型判断整数类型浮点类型布尔类型 运算符赋值运算符算术运算符比较运算符逻辑运算符连接运算符错误抑制符三目运算符自…

Apache ShenYu 学习笔记一

1、简介 这是一个异步的,高性能的,跨语言的,响应式的 API 网关。 官网文档:Apache ShenYu 介绍 | Apache ShenYu仓库地址:GitHub - apache/shenyu: Apache ShenYu is a Java native API Gateway for service proxy, pr…

nginx+keepalived负载均衡和高可用配置

概述 nginx用来负载均衡,keepalived是用来实现VIP故障切换。 配置 nginxkeepalived配置中,后端普通服务器不需要lvs实现负载均衡。 在服务器上停止之前的lvs配置 /etc/init.d/lvs_rs stop 1.nginx的配置 在主备节点上测试 配置nginx之前需要将kee…

UE学习记录03----UE5.2 使用MVVM示例

1.打开ue5.2新建C项目 2.项目中通过类导向新建C类,父类选择为UMVVMViewModelBase,创建完成会自动打开vs 3.在VS中对新建的类进行宏定义 使用 C 类向导 创建的类声明自动通过 UCLASS() 宏进行处理。 UCLASS() 宏使得引擎意识到这个类的存在,并…

React Native 任务列表实战

通过 ToDo 的小项目实战,我们可以回顾页面布局,事件的监听,React Native 中的钩子函数使用。 整体项目框架搭建以及相关基础样式 首先我们先完成项目的整体框架搭建,把页面中相关的元素和样式类名定义好。并且表明对应单独组建的…