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.mzph.cn/news/47848.shtml

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

相关文章

【记录】Python3|Selenium4 极速上手入门(Windows)

环境:Windows 版本:python3,selenium 4.11.2 写这个是方便自己重装电脑时重新装 Selenium,懒得每次都重新找链接。 文章目录 1 装ChromeEdge其他浏览器 2 运行报错RequestsDependencyWarning: urllib3 (1.26.9) or chardet (3.0.4…

几种常见的递归算法

阶乘 这个比较简单就不说了。 int factorial(int n) {if (n < 0){return 0;}else if (n 1){return 1;}else {return n * factorial(n - 1);} }fibonacci 如此简单的算法&#xff0c;复试的时候竟然写错了&#xff01;&#x1f633;囧&#xff01; int fibonacci(unsigne…

搭建开发环境-操作系统篇(一键搭建开发环境)

概述 所谓工欲善其事必先利其器&#xff0c;搭环境往往是开发过程中卡出很多初学者的拦路虎。 对于很多老鸟来说&#xff0c;很多东西都已经习惯成自然&#xff0c;也就没有刻意和初学者说。但对于很多初学者&#xff0c;却是受益良多。 这个系列&#xff0c;先从操作系统开始…

Docker容器与虚拟化技术:容器运行时说明与比较

目录 一、理论 1.容器运行时 2.容器运行时接口 3.容器运行时层级 4.容器运行时比较 5.强隔离容器 二、问题 1.K8S为何难以实现真正的多租户 三、总结 一、理论 1.容器运行时 &#xff08;1&#xff09;概念 Container Runtime 是运行于 k8s 集群每个节点中&#xff…

【前端vue升级】vue2+js+elementUI升级为vue3+ts+elementUI plus

一、工具的选择 近期想将vuejselementUI的项目升级为vue3tselementUI plus&#xff0c;以获得更好的开发体验&#xff0c;并且vue3也显著提高了性能&#xff0c;所以在此记录一下升级的过程对于一个正在使用的项目手工替换肯定不是个可实现的解决方案&#xff0c;更优方案是基于…

阿里云服务器-修改ecs操作系统,把window系统更换成Linux操作系统

其他sql格式也在更新中&#xff0c;可直接查看这个系列&#xff0c;要是没有你需要的格式&#xff0c;可在评论或私信我 总目录 目录-后期更新打算 hive的nvl中的子查询 总目录我这个是window&#xff0c;默认应该都是window&#xff0c;我需要改成Linux系统第一步&#xff…

RISC-V公测平台发布· CoreMark测试报告

一. CoreMark简介 CoreMark是一款用于评估CPU性能的基准测试程序&#xff0c;它包含了多种不同的计算任务&#xff0c;包括浮点数、整数、缓存、内存等方面的测试。CoreMark的测试结果通常被用来作为CPU性能的参考&#xff0c;它可以帮助开发人员和系统管理员评估不同处理器和…

ClickHouse(二十三):Java Spark读写ClickHouse API

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术&#xff0c;IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &…

部署问题集合(十九)linux设置Tomcat、Docker,以及使用脚本开机自启(亲测)

前言 因为不想每次启动虚拟机都要手动启动一遍这些东西&#xff0c;所以想要设置成开机自启的状态 设置Tomcat开机自启 创建service文件 vi /etc/systemd/system/tomcat.service添加如下内容&#xff0c;注意修改启动脚本和关闭脚本的地址 [Unit] DescriptionTomcat9068 A…

C语言编写图形界面

文章目录 环境使用库基础概念句柄 程序的入口创建窗口定义窗口类注册窗口类创建窗口 完整代码运行效果 环境 使用的是VSCode MinGW&#xff1b; 使用库 我们使用windows.h库来实现图形化界面。 头文件如下&#xff1a; #include <windows.h>windows.h是 Windows 操作…

春秋云镜 CVE-2019-2725

春秋云镜 CVE-2019-2725 Weblogic < 10.3.6 ‘wls-wsat’ XMLDecoder 反序列化漏洞 靶标介绍 Oracle Fusion Middleware&#xff08;子组件&#xff1a;Web Services&#xff09;的 Oracle WebLogic Server 组件中的漏洞。受影响的受支持版本为 10.3.6.0.0 和 12.1.3.0.0。…

油画欣赏|《纯洁的梦乡》,心中的宇宙

《纯洁的梦乡》 80x60cm 陈可之2021年绘 油画《纯洁的梦乡》&#xff0c;以绮丽的想象&#xff0c;精湛的技艺&#xff0c;描绘出梦境中的蜻蜓、山、水、星空等事物&#xff0c;展现出一个纯洁美好的心灵宇宙世界。 油画采用水平构图的方式&#xff0c;在位置偏低的山脚设置水…

分析Flink,源和算子并行度不一致时,运行一段时间后,看似不再继续消费的问题,提供解决思路。

文章目录 背景分析 问题来了比较一开始的情况解决方式 背景 之前有分析过一次类似问题&#xff0c;最终结论是在keyby之后&#xff0c;其中有一个key数量特别庞大&#xff0c;导致对应的subtask压力过大&#xff0c;进而使得整个job不再继续运作。在这个问题解决之后&#xff…

UG\NX二次开发 创建中心线

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,C\C++,Qt-CSDN博客 简介: 下面是在制图模块创建中心线的例子,用的是ufun函数。 效果: 代码: #include "me.hpp"#include <stdio.h> #include <string.h> #include <uf.h>…

postgresql 谨慎使用正则删除(%,_)

建表 CREATE TABLE public.ellistest (id bigserial NOT NULL,"name" varchar null,primary key (id) );插入数据 删除含有_线的数据 你会发现表被清空了 delete from ellistest where name like %_%原因 百分号(%)用于表示0、1或多个字符或数字。 下划线通配符…

【【萌新的STM32学习-12】】

萌新的STM32学习-12 GPIO八种模式 1输入浮空 输入用&#xff0c;完全浮空&#xff0c;状态不定 2输入上拉 输入用&#xff0c;用内部上拉&#xff0c;默认是高电平 3输入下拉 输入用&#xff0c;用内部下拉&#xff0c;默认是低电平 4模拟功能 ADC DAC 5开漏输出 软件IIC的…

2023年上半年,吉利汽车销量增长13.1%,同比增长38%

根据吉利汽车发布的中期业绩报告&#xff0c;2023年上半年&#xff0c;吉利汽车取得了令人瞩目的销售和收入增长。该公司在中国乘用车市场表现出色&#xff0c;销量增长了13.1%&#xff0c;达到了69.4万辆&#xff0c;超过了整体市场增长率&#xff08;8.8%&#xff09;。 这主…

学习笔记|按键原理|消抖|按键点灯的4种模式|STC32G单片机视频开发教程(冲哥)|第七集:按键点灯

文章目录 第六集&#xff08;下&#xff09;课后练习解答&#xff1a;SOS求救灯光编写求救信号原理冲哥代码及解析分模块设计&#xff1a;math.h&#xff1a;math.c:while主程序部分 按键点灯&#xff08;下&#xff09;1.按键的原理Tips&#xff1a;按键消抖 2.按键的代码实现…

python 基础篇 day 1 初识变量和数据类型

文章目录 变量变量作用——用于存储和表示数据。变量命名规则命名法大驼峰小驼峰下划体n j i a x 通常作为临时变量使用 建议 变量种类全局变量&#xff08;Global Variables&#xff09;局部变量&#xff08;Local Variables&#xff09;静态变量&#xff08;Static Variables…

万宾科技22款产品入选《城市生命线安全工程监测技术产品名录》

2023年8月17日-18日&#xff0c;由北京市地下管线协会主办的2023首届城市生命线安全与发展大会在北京召开&#xff0c;本次大会汇聚中央及地方政府主管领导、院士专家、行业领袖、龙头代表、产业精英等。 大会聚焦安全监管智慧平台和燃气爆炸、城市内涝、地下管线交互风险、第三…