| libdrm - userspace library for drm | |
| ---------------------------------- | |
| This is libdrm, a userspace library for accessing the DRM, direct rendering | |
| manager, on Linux, BSD and other operating systems that support the ioctl | |
| interface. | |
| The library provides wrapper functions for the ioctls to avoid exposing the | |
| kernel interface directly, and for chipsets with drm memory manager, support | |
| for tracking relocations and buffers. | |
| New functionality in the kernel DRM drivers typically requires a new libdrm, | |
| but a new libdrm will always work with an older kernel. | |
| libdrm is a low-level library, typically used by graphics drivers such as | |
| the Mesa drivers, the X drivers, libva and similar projects. | |
| Syncing with the Linux kernel headers | |
| ------------------------------------- | |
| The library should be regularly updated to match the recent changes in the | |
| `include/uapi/drm/`. | |
| libdrm maintains a human-readable version for the token format modifier, with | |
| the simpler ones being extracted automatically from `drm_fourcc.h` header file | |
| with the help of a python script. This might not always possible, as some of | |
| the vendors require decoding/extracting them programmatically. For that | |
| reason one can enhance the current vendor functions to include/provide the | |
| newly added token formats, or, in case there's no such decoding | |
| function, to add one that performs the tasks of extracting them. | |
| For simpler format modifier tokens there's a script (gen_table_fourcc.py) that | |
| creates a static table, by going over `drm_fourcc.h` header file. The script | |
| could be further modified if it can't handle new (simpler) token format | |
| modifiers instead of the generated static table. | |
| Compiling | |
| --------- | |
| To set up meson: | |
| meson builddir/ | |
| By default this will install into /usr/local, you can change your prefix | |
| with --prefix=/usr (or `meson configure builddir/ -Dprefix=/usr` after | |
| the initial meson setup). | |
| Then use ninja to build and install: | |
| ninja -C builddir/ install | |
| If you are installing into a system location you will need to run install | |
| separately, and as root. |