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

news2024/10/7 20:32:43

一、简介

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.c

33 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.coloradmin.cn/o/912694.html

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

相关文章

技术分享 | 编程界也内卷?浅析“斜杠青年”RCU

随着硬件晶体管的尺寸越来越小,CPU 的频率上限已经基本保持在 4G 左右,但现代人类对于网络的要求不断升级,想要占领市场各厂商只能激发自己的潜能,将单线程代码发展为多核/多线程系统,在这其中,并行是充分利…

解决Spring mvc + JDK17@Resource无法使用的情况

问题描述 我在使用jdk17进行Spring mvc开发时发现 Resource用不了了。 原因 因为JDK版本升级的改动,在Jdk9~17环境下,搭建Springboot项目,会出现原有Resource(javax.annotation.Resource)不存在的问题,导…

el-table动态合并单元格

el-table使用这个方法合并单元格&#xff0c;:span-method“hbcell” <el-table size"small" :data"table.data" border empty-text"暂无数据" :cell-style"cellStyle" :header-cell-style"tableHeaderColor":span-meth…

基于web的教务管理系统java jsp学校学生教师选课mysql源代码

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 基于web的教务管理系统 系统有3权限&#xff1a;系统…

恒运资本:数据资产入表正式落地,产业化大时代开启,概念股狂欢!

数据要素产业化大时代降临&#xff0c;哪些上市公司有望获益&#xff1f; 8月22日早盘&#xff0c;医疗设备龙头联影医疗开盘跌落&#xff0c;盘中一度跌超15%&#xff0c;跌破发行价&#xff0c;盘中跌幅创该股上市以来单日新高。午间收盘&#xff0c;跌幅仍有13.72%&#xff…

RTSP/Onvif协议EasyNVR安防视频云平台配置录像阈值实现边删边录需求的具体操作步骤

EasyNVR是基于RTSP/Onvif协议的视频接入、处理及分发的安防视频云平台&#xff0c;可提供丰富且灵活的视频能力&#xff0c;包括&#xff1a;设备接入、实时视频直播、录像、云存储、录像回放与检索等功能&#xff0c;也能支持GB28181协议进行平台级联。 有很多用户咨询我们&am…

通达信指标公式16:使用BARSLAST函数写一个指标回测的思路

★★★★★博文原创不易&#xff0c;我的博文不需要打赏&#xff0c;也不需要知识付费&#xff0c;可以白嫖学习小技巧&#xff0c;喜欢的老铁可以多多帮忙点赞&#xff0c;小红牛在此表示感谢&#xff0c;就是对作者的最大支持。愿与诸君共勉&#xff0c;悟道于股市★★★★★…

2023中国算力大会,和鲸科技携手生态伙伴,推动算力创新发展与应用

8月18日至8月19日&#xff0c;由工业和信息化部、宁夏回族自治区人民政府共同主办的 2023 中国算力大会在宁夏银川举行。本届大会以“算领新产业潮流 力赋高质量发展”为主题&#xff0c;聚焦算力前沿技术领域&#xff0c;展示算力融合应用成果&#xff0c;推动算力产业加速发展…

QToolButton

QToolButton API使用方式 使用方法和功能跟QPushButton基本一致, 只不过在对于关联菜单这个功能点上, QToolButton类可以设置弹出的菜单的属性, 以及在显示图标的时候可以设置更多的样式, 可以理解为是一个增强版的QPushButton。 API / 构造函数 / QToolButton::QToolButton(…

C语言小练习(二)

&#x1f31e; “去努力吧&#xff0c;最坏的结果不过是大器晚成&#xff01;” Day02 &#x1f4dd; 一.选择题&#x1f4dd;二.编程题 &#x1f4dd; 一.选择题 1.&#x1f388;、以下程序段的输出结果是&#xff08; &#xff09; #include <stdio.h> int main() {…

蚂蚁区块链投票案例(一)---蚂蚁链简介

文章目录 摘要背景蚂蚁链简介联盟链&#xff08;合约体验链&#xff09;开放联盟链开发者测试链 总结遗留问题测试环境和生产环境的问题&#xff1f; 摘要 计划用三篇文章&#xff0c;一个月左右的时间来实现一个蚂蚁开放联盟链上的区块链投票案例&#xff0c;本文是系列第一篇…

设计模式(8)外观模式

一、 1、使用背景&#xff1a;降低访问复杂系统的内部子系统时的复杂度&#xff0c;简化客户端之间的接口。 2、定义&#xff1a; 为子系统中的一组接口定义一个一致的界面&#xff0c;此模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用。完美地体现…

恒运资本:科创板与创业板的区别?

近年来&#xff0c;跟着技能的飞速发展和立异认识的提高&#xff0c;科技立异成为了各国和企业竞相争夺的方向。在中国&#xff0c;“科创板”和“创业板”成为了人们重视的焦点。它们都是现代股票交易商场上的板块&#xff0c;但两者之间有何差异呢&#xff1f;下面从多个视点…

【allegro 17.4软件操作保姆级教程十一】表贴器件封装制作

&#x1f449;个人主页&#xff1a; highman110 &#x1f449;作者简介&#xff1a;一名硬件工程师&#xff0c;持续学习&#xff0c;不断记录&#xff0c;保持思考&#xff0c;输出干货内容 目录 封装组成元素 焊盘类型 表贴器件封装制作 环境设置 计算坐标 放置pin脚 …

pytorch基础实践-数据与预处理

文章目录 数据集Fashion-MNIST 数据集 数据预处理包的导入在Pytorch中进行 ETL利用torchvison包获取和处理数据集&#xff08;ET&#xff09; 访问数据集访问和查看 train_set 中的单个数据利用 DataLoader 成批访问数据 数据集 Fashion-MNIST 数据集 MNIST MNIST&#xff0c;…

day1 链表专题 牛客TOP100 BM 1-10

文章目录 链表BM1 反转链表BM2 链表内指定区间反转BM3 链表中的节点每k个一组翻转BM4 合并两个排序的链表BM5 合并k个已排序的链表BM6 判断链表中是否有环BM7 链表中环的入口结点BM8 链表中倒数最后k个结点BM9 删除链表的倒数第n个节点BM10 两个链表的第一个公共结点 链表 BM1…

ssm+vue绿色农产品推广应用网站源码和论文PPT

ssmvue绿色农产品推广应用网站041 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高…

浅谈限流式保护器在电气线路火灾中的应用

安科瑞 华楠 电气线路起火的主要原因 1.线路短路 所谓短路就是交流电路的两根导线互相触碰&#xff0c;电流不经过线路中的用电设备&#xff0c;而直接形成回路。由于电线本身的电阻比较小&#xff0c;若仅是通过电线这个回路&#xff0c;电流就会急剧变大&#xff0c;比正常情…

HAProxy的配置与搭建

Haproxy概念 HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理&#xff0c;是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大&#xff08;并发量达1w以上&#xff09;web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy的运行模式…

MySQL创建表报错

CREATE TABLE IF NOT EXISTS nhooo_b1 (nhooo_id INT UNSIGNED AUTO_INCREMENT,nhooo_title VARCHAR(100) NOT NULL,nhooo_author VARCHAR(40) NOT NULL,submission_date DATE,PRIMARY KEY (nhooo_id) ) ENGINEINNODB DEFAULT CHARSETutf8;创建表始终报以下错误&#xff1a; 这…