一、简介
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
简短说明
| 包含特定于AMDGPU的直接渲染管理器函数 |
| 包含特定于Intel的直接渲染管理器函数 |
包含特定于开源nVidia(Nouveau)的直接渲染管理器函数 | |
| 包含特定于AMD Raedon的直接渲染管理器函数 |
包含直接渲染管理器API函数 |