Find a file
Emily Deng 56c21f877b libdrm: Fix issue about differrent domainID but same BDF
For multiple GPUs which has the same BDF, but has different domain ID,
the drmOpenByBusid will return the wrong fd when startx.

The reproduce sequence as below:
1. Call drmOpenByBusid to open Card0, then will return the right fd0, and the
fd0 is master privilege;
2. Call drmOpenByBusid to open Card1. In function drmOpenByBusid, it will
open Card0 first, this time, the fd1 for opening Card0 is not master
privilege, and will call drmSetInterfaceVersion to identify the
domain ID feature, as the fd1 is not master privilege, then drmSetInterfaceVersion
will fail, and then won't compare domain ID, then return the wrong fd for Card1.

Solution:
First loop search the best match fd about drm 1.4.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Emily Deng <Emily.Deng@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
2019-02-22 16:02:12 -05:00
amdgpu amdgpu: add a faster BO list API 2019-01-16 16:39:25 -05:00
android android: Fix 32-bit app crashing in 64-bit Android 2018-12-18 21:18:19 +01:00
data amdgpu: add some raven marketing names 2019-02-01 00:26:48 -05:00
etnaviv *-symbols-check: error out when using unset variables 2018-10-04 14:39:27 +01:00
exynos *-symbols-check: error out when using unset variables 2018-10-04 14:39:27 +01:00
freedreno freedreno: revert bad freedreno/atomic_ops commits 2019-02-19 09:50:26 +00:00
include/drm amdgpu: update amdgpu_drm.h 2019-01-16 11:57:18 -05:00
intel intel: sync i915_pciids.h with kernel 2019-02-04 10:45:53 -08:00
libkms *-symbols-check: error out when using unset variables 2018-10-04 14:39:27 +01:00
m4 build: Update autotools configuration 2011-03-21 13:43:43 +00:00
man Add meson build system 2018-01-12 09:40:48 -08:00
nouveau *-symbols-check: error out when using unset variables 2018-10-04 14:39:27 +01:00
omap *-symbols-check: error out when using unset variables 2018-10-04 14:39:27 +01:00
radeon *-symbols-check: error out when using unset variables 2018-10-04 14:39:27 +01:00
tegra *-symbols-check: error out when using unset variables 2018-10-04 14:39:27 +01:00
tests tests/amdgpu/vcn: fix the nop command in IBs 2018-12-14 12:21:12 -05:00
vc4 autotools: make symbols hidden by default 2018-09-19 22:46:45 -07:00
.editorconfig Add meson build system 2018-01-12 09:40:48 -08:00
.gitignore gitignore: add _build 2018-12-17 12:49:55 -08:00
.gitlab-ci.yml gitlab-ci: fix archlinux builds 2019-02-19 11:59:12 +00:00
Android.common.mk android: make symbols hidden by default 2018-10-04 14:42:54 +01:00
Android.mk android: Add missing include exports 2018-03-22 16:47:05 +00:00
autogen.sh autogen.sh: run git commands in the (potentially) git dir 2017-02-28 13:34:26 +00:00
CleanSpec.mk tests: Split helpers into library 2015-12-18 17:43:40 +00:00
configure.ac Bump the version to 2.4.97 2019-01-22 11:18:47 -05:00
CONTRIBUTING.rst doc: Rename README&CONTRIBUTING to .rst 2018-10-17 17:17:19 +02:00
libdrm.pc.in Revert "Fix pkgconfig includes for /usr/include/drm" 2010-04-09 16:33:38 -04:00
libdrm_lists.h lists: add nicer+unsafe foreach, and list join macros 2012-04-14 02:47:04 +10:00
libdrm_macros.h intel: annotate public functions 2018-09-19 22:46:44 -07:00
libsync.h add libsync.h helper 2016-11-05 10:16:46 -04:00
Makefile.am autotools: make symbols hidden by default 2018-09-19 22:46:45 -07:00
Makefile.sources libdrm: add msm drm uapi header 2018-08-23 08:48:45 -07:00
meson.build Bump the version to 2.4.97 2019-01-22 11:18:47 -05:00
meson_options.txt Add meson build system 2018-01-12 09:40:48 -08:00
README.rst README: reflow the project description to improve readability 2019-01-03 18:41:32 +00:00
RELEASING RELEASING: mention meson 2018-02-17 20:25:02 +01:00
util_double_list.h list: fix an issue with android build using clang 2016-08-02 16:22:45 -04:00
util_math.h Fix build with -std=c11 2018-09-05 13:09:29 +01:00
xf86atomic.h freedreno: revert bad freedreno/atomic_ops commits 2019-02-19 09:50:26 +00:00
xf86drm.c libdrm: Fix issue about differrent domainID but same BDF 2019-02-22 16:02:12 -05:00
xf86drm.h xf86drm: fix return type for drmIsMaster() 2019-02-08 18:52:36 +00:00
xf86drmHash.c xf86drmHash: remove unused loop variable 2018-11-09 10:59:11 +00:00
xf86drmHash.h tests/hash: extract test out of xf86drmHash.c 2015-04-05 15:19:42 +01:00
xf86drmMode.c libdrm: annotate public functions 2018-09-19 22:46:45 -07:00
xf86drmMode.h drm: Add drm mode lease ioctl wrappers [v3] 2017-12-18 10:04:02 +10:00
xf86drmRandom.c libdrm: annotate public functions 2018-09-19 22:46:45 -07:00
xf86drmRandom.h tests/random: extract test out of xf86drmRandom.c 2015-04-05 15:33:33 +01:00
xf86drmSL.c libdrm: annotate public functions 2018-09-19 22:46:45 -07:00

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.


Compiling
---------

libdrm has two build systems, a legacy autotools build system, and a newer
meson build system. The meson build system is much faster, and offers a
slightly different interface, but otherwise provides an equivalent feature set.

To use it:

    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.


Alternatively you can invoke autotools configure:

	./configure

By default, libdrm  will install into the /usr/local/  prefix.  If you
want  to  install   this  DRM  to  replace  your   system  copy,  pass
--prefix=/usr and  --exec-prefix=/ to configure.  If  you are building
libdrm  from a  git checkout,  you first  need to  run  the autogen.sh
script.  You can  pass any options to autogen.sh  that you would other
wise  pass to configure,  or you  can just  re-run configure  with the
options you need once autogen.sh finishes.

Next step is to build libdrm:

	make

and once make finishes successfully, install the package using

	make install

If you are installing into a system location, you will need to be root
to perform the install step.