BLFS学习系列 第25章. 图形环境库 —— libdrm

一、简介

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

在这里插入图片描述

二、包信息

  • 版本:2.4.115
  • 下载链接:https://dri.freedesktop.org/libdrm/libdrm-2.4.115.tar.xz
  • MD5校验和:5403981a20c964f4c893ff91393652bd
  • 大小:459 KB
  • 估计所需磁盘空间:8.6 MB(含测试)
  • 估计构建时间:小于0.1 SBU(带测试),并行度=4(-j4)

解压后内容:

$ ls libdrm-2.4.115
amdgpu             CleanSpec.mk      etnaviv              include          libdrm.pc.in      meson.build        radeon            tegra               vc4           xf86drmHash.c  xf86drmRandom.c
android            CONTRIBUTING.rst  exynos               intel            libsync.h         meson_options.txt  README.rst        tests               xf86atomic.h  xf86drmHash.h  xf86drmRandom.h
Android.common.mk  core-symbols.txt  freedreno            libdrm_lists.h   Makefile.sources  nouveau            RELEASING         util_double_list.h  xf86drm.c     xf86drmMode.c  xf86drmSL.c
Android.mk         data              gen_table_fourcc.py  libdrm_macros.h  man               omap               symbols-check.py  util_math.h         xf86drm.h     xf86drmMode.h
$ tree libdrm-2.4.115
libdrm-2.4.115
├── amdgpu
│   ├── amdgpu_asic_id.c
│   ├── amdgpu_bo.c
│   ├── amdgpu_cs.c
│   ├── amdgpu_device.c
│   ├── amdgpu_gpu_info.c
│   ├── amdgpu.h
│   ├── amdgpu_internal.h
│   ├── amdgpu-symbols.txt
│   ├── amdgpu_vamgr.c
│   ├── amdgpu_vm.c
│   ├── Android.mk
│   ├── handle_table.c
│   ├── handle_table.h
│   ├── libdrm_amdgpu.pc.in
│   ├── Makefile.sources
│   └── meson.build
├── android
│   └── gralloc_handle.h
├── Android.common.mk
├── Android.mk
├── CleanSpec.mk
├── CONTRIBUTING.rst
├── core-symbols.txt
├── data
│   ├── amdgpu.ids
│   ├── Android.mk
│   └── meson.build
├── etnaviv
│   ├── Android.mk
│   ├── etnaviv_bo.c
│   ├── etnaviv_bo_cache.c
│   ├── etnaviv_cmd_stream.c
│   ├── etnaviv_device.c
│   ├── etnaviv_drm.h
│   ├── etnaviv_drmif.h
│   ├── etnaviv_gpu.c
│   ├── etnaviv_perfmon.c
│   ├── etnaviv_pipe.c
│   ├── etnaviv_priv.h
│   ├── etnaviv-symbols.txt
│   ├── libdrm_etnaviv.pc.in
│   ├── Makefile.sources
│   └── meson.build
├── exynos
│   ├── exynos_drm.c
│   ├── exynos_drm.h
│   ├── exynos_drmif.h
│   ├── exynos_fimg2d.c
│   ├── exynos_fimg2d.h
│   ├── exynos-symbols.txt
│   ├── fimg2d_reg.h
│   ├── libdrm_exynos.pc.in
│   └── meson.build
├── freedreno
│   ├── Android.mk
│   ├── freedreno_bo.c
│   ├── freedreno_bo_cache.c
│   ├── freedreno_device.c
│   ├── freedreno_drmif.h
│   ├── freedreno_pipe.c
│   ├── freedreno_priv.h
│   ├── freedreno_ringbuffer.c
│   ├── freedreno_ringbuffer.h
│   ├── freedreno-symbols.txt
│   ├── kgsl
│   │   ├── kgsl_bo.c
│   │   ├── kgsl_device.c
│   │   ├── kgsl_drm.h
│   │   ├── kgsl_pipe.c
│   │   ├── kgsl_priv.h
│   │   ├── kgsl_ringbuffer.c
│   │   ├── msm_kgsl.h
│   │   └── README
│   ├── libdrm_freedreno.pc.in
│   ├── Makefile.sources
│   ├── meson.build
│   └── msm
│       ├── msm_bo.c
│       ├── msm_device.c
│       ├── msm_pipe.c
│       ├── msm_priv.h
│       └── msm_ringbuffer.c
├── gen_table_fourcc.py
├── include
│   └── drm
│       ├── amdgpu_drm.h
│       ├── drm_fourcc.h
│       ├── drm.h
│       ├── drm_mode.h
│       ├── drm_sarea.h
│       ├── i915_drm.h
│       ├── mach64_drm.h
│       ├── mga_drm.h
│       ├── msm_drm.h
│       ├── nouveau_drm.h
│       ├── qxl_drm.h
│       ├── r128_drm.h
│       ├── radeon_drm.h
│       ├── README
│       ├── savage_drm.h
│       ├── sis_drm.h
│       ├── tegra_drm.h
│       ├── vc4_drm.h
│       ├── via_drm.h
│       ├── virtgpu_drm.h
│       └── vmwgfx_drm.h
├── intel
│   ├── Android.mk
│   ├── intel_aub.h
│   ├── intel_bufmgr.c
│   ├── intel_bufmgr_fake.c
│   ├── intel_bufmgr_gem.c
│   ├── intel_bufmgr.h
│   ├── intel_bufmgr_priv.h
│   ├── intel_chipset.h
│   ├── intel_debug.h
│   ├── intel_decode.c
│   ├── intel-symbols.txt
│   ├── libdrm_intel.pc.in
│   ├── Makefile.sources
│   ├── meson.build
│   ├── mm.c
│   ├── mm.h
│   ├── test_decode.c
│   ├── tests
│   │   ├── gen4-3d.batch
│   │   ├── gen4-3d.batch-ref.txt
│   │   ├── gen4-3d.batch.sh -> test-batch.sh
│   │   ├── gen5-3d.batch
│   │   ├── gen5-3d.batch-ref.txt
│   │   ├── gen5-3d.batch.sh -> test-batch.sh
│   │   ├── gen6-3d.batch
│   │   ├── gen6-3d.batch-ref.txt
│   │   ├── gen6-3d.batch.sh -> test-batch.sh
│   │   ├── gen7-2d-copy.batch
│   │   ├── gen7-2d-copy.batch-ref.txt
│   │   ├── gen7-2d-copy.batch.sh -> test-batch.sh
│   │   ├── gen7-3d.batch
│   │   ├── gen7-3d.batch-ref.txt
│   │   ├── gen7-3d.batch.sh -> test-batch.sh
│   │   ├── gm45-3d.batch
│   │   ├── gm45-3d.batch-ref.txt
│   │   ├── gm45-3d.batch.sh -> test-batch.sh
│   │   └── test-batch.sh
│   └── uthash.h
├── libdrm_lists.h
├── libdrm_macros.h
├── libdrm.pc.in
├── libsync.h
├── Makefile.sources
├── man
│   ├── drm.7.rst
│   ├── drmAvailable.3.rst
│   ├── drmHandleEvent.3.rst
│   ├── drm-kms.7.rst
│   ├── drm-memory.7.rst
│   ├── drmModeGetResources.3.rst
│   └── meson.build
├── meson.build
├── meson_options.txt
├── nouveau
│   ├── abi16.c
│   ├── Android.mk
│   ├── bufctx.c
│   ├── libdrm_nouveau.pc.in
│   ├── Makefile.sources
│   ├── meson.build
│   ├── nouveau.c
│   ├── nouveau.h
│   ├── nouveau-symbols.txt
│   ├── nvif
│   │   ├── cl0080.h
│   │   ├── cl9097.h
│   │   ├── class.h
│   │   ├── if0002.h
│   │   ├── if0003.h
│   │   ├── ioctl.h
│   │   └── unpack.h
│   ├── private.h
│   └── pushbuf.c
├── omap
│   ├── Android.mk
│   ├── libdrm_omap.pc.in
│   ├── meson.build
│   ├── omap_drm.c
│   ├── omap_drm.h
│   ├── omap_drmif.h
│   └── omap-symbols.txt
├── radeon
│   ├── Android.mk
│   ├── bof.c
│   ├── bof.h
│   ├── libdrm_radeon.pc.in
│   ├── Makefile.sources
│   ├── meson.build
│   ├── r600_pci_ids.h
│   ├── radeon_bo.c
│   ├── radeon_bo_gem.c
│   ├── radeon_bo_gem.h
│   ├── radeon_bo.h
│   ├── radeon_bo_int.h
│   ├── radeon_cs.c
│   ├── radeon_cs_gem.c
│   ├── radeon_cs_gem.h
│   ├── radeon_cs.h
│   ├── radeon_cs_int.h
│   ├── radeon_cs_space.c
│   ├── radeon_surface.c
│   ├── radeon_surface.h
│   └── radeon-symbols.txt
├── README.rst
├── RELEASING
├── symbols-check.py
├── tegra
│   ├── channel.c
│   ├── job.c
│   ├── libdrm_tegra.pc.in
│   ├── meson.build
│   ├── private.h
│   ├── pushbuf.c
│   ├── syncpt.c
│   ├── tegra.c
│   ├── tegra.h
│   └── tegra-symbols.txt
├── tests
│   ├── amdgpu
│   │   ├── amdgpu_stress.c
│   │   ├── amdgpu_test.c
│   │   ├── amdgpu_test.h
│   │   ├── basic_tests.c
│   │   ├── bo_tests.c
│   │   ├── cp_dma_tests.c
│   │   ├── cs_tests.c
│   │   ├── deadlock_tests.c
│   │   ├── decode_messages.h
│   │   ├── frame.h
│   │   ├── hotunplug_tests.c
│   │   ├── jpeg_tests.c
│   │   ├── meson.build
│   │   ├── ras_tests.c
│   │   ├── security_tests.c
│   │   ├── shader_code_gfx10.h
│   │   ├── shader_code_gfx11.h
│   │   ├── shader_code_gfx9.h
│   │   ├── shader_code.h
│   │   ├── shader_code_hang.h
│   │   ├── shader_test_util.c
│   │   ├── syncobj_tests.c
│   │   ├── uvd_enc_tests.c
│   │   ├── uve_ib.h
│   │   ├── vce_ib.h
│   │   ├── vce_tests.c
│   │   ├── vcn_tests.c
│   │   └── vm_tests.c
│   ├── Android.mk
│   ├── drmdevice.c
│   ├── drmsl.c
│   ├── etnaviv
│   │   ├── cmdstream.xml.h
│   │   ├── etnaviv_2d_test.c
│   │   ├── etnaviv_bo_cache_test.c
│   │   ├── etnaviv_cmd_stream_test.c
│   │   ├── meson.build
│   │   ├── state_2d.xml.h
│   │   ├── state.xml.h
│   │   ├── write_bmp.c
│   │   └── write_bmp.h
│   ├── exynos
│   │   ├── exynos_fimg2d_event.c
│   │   ├── exynos_fimg2d_perf.c
│   │   ├── exynos_fimg2d_test.c
│   │   └── meson.build
│   ├── hash.c
│   ├── meson.build
│   ├── modeprint
│   │   ├── meson.build
│   │   └── modeprint.c
│   ├── modetest
│   │   ├── Android.mk
│   │   ├── buffers.c
│   │   ├── buffers.h
│   │   ├── cursor.c
│   │   ├── cursor.h
│   │   ├── Makefile.sources
│   │   ├── meson.build
│   │   └── modetest.c
│   ├── nouveau
│   │   ├── meson.build
│   │   └── threaded.c
│   ├── proptest
│   │   ├── Android.mk
│   │   ├── Makefile.sources
│   │   ├── meson.build
│   │   └── proptest.c
│   ├── radeon
│   │   ├── meson.build
│   │   ├── radeon_ttm.c
│   │   ├── rbo.c
│   │   └── rbo.h
│   ├── tegra
│   │   ├── drm-test.c
│   │   ├── drm-test.h
│   │   ├── drm-test-tegra.c
│   │   ├── drm-test-tegra.h
│   │   ├── gr2d-fill.c
│   │   ├── host1x.h
│   │   ├── meson.build
│   │   ├── openclose.c
│   │   ├── syncpt-timeout.c
│   │   ├── syncpt-wait.c
│   │   ├── vic30.c
│   │   ├── vic30.h
│   │   ├── vic40.c
│   │   ├── vic40.h
│   │   ├── vic41.c
│   │   ├── vic41.h
│   │   ├── vic42.c
│   │   ├── vic42.h
│   │   ├── vic-blit.c
│   │   ├── vic.c
│   │   ├── vic-clear.c
│   │   ├── vic-flip.c
│   │   └── vic.h
│   ├── ttmtest
│   │   ├── AUTHORS
│   │   ├── ChangeLog
│   │   ├── configure.ac
│   │   ├── Makefile.am
│   │   ├── NEWS
│   │   ├── README
│   │   ├── reconf
│   │   └── src
│   │       ├── Makefile.am
│   │       ├── ttmtest.c
│   │       ├── xf86dri.c
│   │       ├── xf86dri.h
│   │       └── xf86dristr.h
│   ├── util
│   │   ├── Android.mk
│   │   ├── common.h
│   │   ├── format.c
│   │   ├── format.h
│   │   ├── kms.c
│   │   ├── kms.h
│   │   ├── Makefile.sources
│   │   ├── meson.build
│   │   ├── pattern.c
│   │   └── pattern.h
│   └── vbltest
│       ├── meson.build
│       └── vbltest.c
├── util_double_list.h
├── util_math.h
├── vc4
│   ├── libdrm_vc4.pc.in
│   ├── Makefile.sources
│   ├── meson.build
│   ├── vc4_packet.h
│   └── vc4_qpu_defines.h
├── xf86atomic.h
├── xf86drm.c
├── xf86drm.h
├── xf86drmHash.c
├── xf86drmHash.h
├── xf86drmMode.c
├── xf86drmMode.h
├── xf86drmRandom.c
├── xf86drmRandom.h
└── xf86drmSL.c33 directories, 337 files

三、包依赖

  • 推荐

Xorg库(Mesa需要的Intel KMS API支持) 。

  • 可选

Cairo-1.17.6(用于测试)、CMake-3.25.2(可用于在无pkgconfig文件的情况下查找依赖项)、docbook-xml-4.5、docbook-xsl-nons-1.79.2、docutils-0.19、libxslt-1.1.37(用于构建手册页)、libatomic_ops-7.6.14(没有本机原子操作的体系结构所需)、Valgring-3.20.0和CUnit(用于AMDGPU测试)。

四、安装

运行以下命令安装libdrm:

mkdir build &&
cd    build &&meson setup  --prefix=$XORG_PREFIX \--buildtype=release   \-Dudev=true           \-Dvalgrind=disabled   &&
ninja

执行以下命令检查结果:

ninja test

执行以下命令进行安装:

sudo ninja install

命令(选项)解释

  • -buildtype=release

指定一个适合包的稳定发布的构建类型,因为默认情况下可能会生成未优化的二进制文件。

  • -Dudev=true

此参数使能对于Udev的使用以代替mknod。

  • -Dvalgrind=disabled

此参数禁用使用valgrind支持构建libdrm。这修复了构建使用libdrm的sysprof和其他包的问题。如果需要valgrind的支持,请将此参数更改为“已启用”(或将其删除)。

五、生成内容

  • 安装的程序:
  • 安装的库:libdrm_amdgpu.so, libdrm_intel.so, libdrm_nouveau.so, libdrm_radeon.so, and libdrm.so
  • 安装的目录:/usr/include/libdrm and /usr/share/libdrm

简短说明

libdrm_amdgpu.so

包含特定于AMDGPU的直接渲染管理器函数

libdrm_intel.so

包含特定于Intel的直接渲染管理器函数

libdrm_nouveau.so

包含特定于开源nVidia(Nouveau)的直接渲染管理器函数

libdrm_radeon.so

包含特定于AMD Raedon的直接渲染管理器函数

libdrm.so

包含直接渲染管理器API函数

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

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

相关文章

基于java+swing俄罗斯方块

基于javaswing俄罗斯方块 一、系统介绍二、功能展示三、其他系统实现五、获取源码 一、系统介绍 项目类型:Java SE项目(awtswing)非开源 项目名称:俄罗斯方块(Tertis) 主要技术:java、awt、swing等技术 …

【玩转Linux操作】crond的基本操作

🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔概述🍔命令⭐常用选项 🍔练…

图解算法--排序算法

目录 1.冒泡排序算法 2.选择排序算法 3.插入排序算法 4.希尔排序算法 5.归并排序算法 6.快速排序算法 1.冒泡排序算法 原理讲解: 从待排序的数组中的第一个元素开始,依次比较当前元素和它相邻的下一个元素的大小。如果当前元素大于相邻元素&#x…

剪枝基础与实战(1): 概述

本文介绍基于L1正则化的剪枝原理,并以VGG网络进行实战说明。将从零详细介绍模型训练、稀疏化、剪枝、finetune的全过程,提供详细的源码及说明,有助于对剪枝的熟练掌握,后续也会对yolov8进行剪枝的介绍。 论文: Learning Efficient Convolutional Networks through Network …

SpringBoot项目(支付宝整合)——springboot整合支付宝沙箱支付 从极简实现到IOC改进

目录 引出git代码仓库准备工作支付宝沙箱api内网穿透 [natapp.cn](https://natapp.cn/#download) springboot整合—极简实现版1.导包配置文件2.controller层代码3.进行支付流程4.支付成功回调 依赖注入的改进1.整体结构2.pom.xml文件依赖3.配置文件4.配置类,依赖注入…

渗透测试方法论

文章目录 渗透测试方法论1. 渗透测试种类黑盒测试白盒测试脆弱性评估 2. 安全测试方法论2.1 OWASP TOP 102.3 CWE2.4 CVE 3. 渗透测试流程3.1 通用渗透测试框架3.1.1 范围界定3.1.2 信息搜集3.1.3 目标识别3.1.4 服务枚举3.1.5 漏洞映射3.1.6 社会工程学3.1.7 漏洞利用3.1.8 权…

根据源码,模拟实现 RabbitMQ - 虚拟主机 + Consume设计 (7)

目录 一、虚拟主机 Consume设计 1.1、承接问题 1.2、具体实现 1.2.1、消费者订阅消息实现思路 1.2.2、消费者描述自己执行任务方式实现思路 1.2.3、消息推送给消费者实现思路 1.2.4、消息确认 一、虚拟主机 Consume设计 1.1、承接问题 前面已经实现了虚拟主机大部分功…

【linux】2 Linux编译器-gcc/g++和Linux调试器-gdb

文章目录 一、Linux编译器-gcc/g使用1.1 背景知识1.2 gcc如何完成1.3 函数库1.4 gcc选项 二、linux调试器-gdb使用2.1 背景2.2 开始使用 总结 ヾ(๑╹◡╹)ノ" 人总要为过去的懒惰而付出代价ヾ(๑╹◡╹)ノ" 一、Linux编译器-gcc/g使用 1.1 背景…

JS加密的域名锁定功能,JShaman支持泛域名

JShaman的域名锁定功能,支持泛域名 JShaman的JS代码混淆加密中,有一项“域名锁定”功能。使用此功能后,代码运行时会检测浏览器地址中的域名信息,如是非指定域名,则不运行,以此防止自己网站的JS代码被复制…

python的文件操作

前言 打印内容到屏幕 最简单的输出方式是调用print函数,此函数会将你传递的表达式转化成字符串表达式,并将结果写道标准输出中。 读取键盘输入 python提供了两个raw_input和input内置函数从标准输入中读取一行文本,默认的标准输入是键盘。 …

Android NDK JNI与Java的相互调用

一、Jni调用Java代码 jni可以调用java中的方法和java中的成员变量,因此JNIEnv定义了一系列的方法来帮助我们调用java的方法和成员变量。 以上就是jni调用java类的大部分方法,如果是静态的成员变量和静态方法,可以使用***GetStaticMethodID、CallStaticObjectMethod等***。就…

docker安装fastDFS

一、docker安装 1、搜索镜像 2、拉取镜像 最新版本: docker pull delron/fastdfs3、使用镜像构建容器 3.1 创建tracker容器 docker run -dti --networkhost --name my-tracker -v /opt/zdxf/soft/fastdfs/tracker:/var/fdfs -v /etc/localtime:/etc/localtime d…

Nvidia Jetson 编解码开发(3)解决H265解码报错“PPS id out of range”

1.问题描述 基于之前的开发程序 Nvidia Jetson 编解码开发(2)Jetpack 4.x版本Multimedia API 硬件编码开发--集成encode模块_free-xx的博客-CSDN博客 通过Jetson Xavier NX 硬编码的H265发出后, 上位机断点播放发出来的H265码流, 会报“PPS id out of range” 错误 …

【C语言】喝汽水问题

大家好!今天我们来学习C语言中的喝汽水问题! 目录 1. 题目内容: 2. 思路分析 2.1 方法一 2.2 方法二 2.3 方法三 3. 代码实现 3.1 方法一 3.2 方法二 3.3 方法三 1. 题目内容 喝汽水,1瓶汽水1元,2个空瓶可以…

算法题面试实战收集

回文数字 2023-08-18 美团 一面 在不使用额外的内存空间的条件下判断一个整数是否是回文。 回文指逆序和正序完全相同。 数据范围: 进阶: 空间复杂度O(1) ,时间复杂度 O(n) 提示: 负整数可以是回文吗?(比如…

vue项目配置git提交规范

vue项目配置git提交规范 一、背景介绍二、husky、lint-staged、commitlint/cli1.husky2.lint-staged3.commitlint/cli 三、具体使用1.安装依赖2.运行初始化脚本3.在package.json中配置lint-staged4.根目录新增 commitlint.config.js 4.提交测试1.提示信息格式错误时2.eslint校验…

深度学习3:激活函数

一、激活函数的简介与由来 激活函数:是用来加入非线性因素的,解决线性模型所不能解决的问题。 线性函数的组合解决的问题太有限了,碰到非线性问题就束手无策了。如下图。 通过激活函数映射之后,可以输出非线性函数。 最后再通过…

【2023深圳杯数学建模A题思路模型与代码分享】

2023深圳杯数学建模A题 A题 影响城市居民身体健康的因素分析解题思路第一问第二问第三问第四问 技术文档第一问完整代码写在最后 A题 影响城市居民身体健康的因素分析 以心脑血管疾病、糖尿病、恶性肿瘤以及慢性阻塞性肺病为代表的慢性非传染性疾病(以下简称慢性病…

【Terraform学习】使用 Terraform 托管 S3 静态网站(Terraform-AWS最佳实战学习)

使用 Terraform 托管 S3 静态网站 实验步骤 前提条件 安装 Terraform: 地址 下载仓库代码模版 本实验代码位于 task_s3 文件夹中。 变量文件 variables.tf 在上面的代码中,您将声明,aws_access_key,aws_secret_key和区域变量…

ubuntu 22.04 LTS 在 llvm release/17.x 分支上编译 cookbook llvm example Chapter 02

不错的资料: LLVMClang编译器链接器--保值【进阶之路二】 - 掘金 —————————————————————————————————————— 下载 llvm-cookbook example: $ git clone https://github.com/elongbug/llvm-cookbook.git 也可以参照llvm-pr…