Go to file
Rob Herring 009634e493 android: fix gralloc_handle_create() problems
There's a number of problems with gralloc_handle_create starting with it
doesn't even compile. More importantly, it doesn't really create (i.e.
allocate) a handle. It allocates a native_handle_t, copies it to a
struct gralloc_handle_t on the stack and returns the struct (not a ptr).
So the caller still has to allocate a struct gralloc_handle_t to hold
the returned struct.

Rework gralloc_handle_create() to allocate a new handle and return the
pointer to the allocated handle. Callers should free the handle with
native_handle_close() and native_handle_delete(). In the interest of
making gralloc_handle_t opaque, return a native_handle_t ptr instead.

Reviewed-by: Robert Foss <robert.foss@collabora.com>
Signed-off-by: Rob Herring <robh@kernel.org>
2018-02-20 14:16:16 -06:00
amdgpu amdgpu: Fix mistake in initial hole size calculation. 2018-02-19 09:32:17 -05:00
android android: fix gralloc_handle_create() problems 2018-02-20 14:16:16 -06:00
data Add meson build system 2018-01-12 09:40:48 -08:00
etnaviv Add meson build system 2018-01-12 09:40:48 -08:00
exynos Add meson build system 2018-01-12 09:40:48 -08:00
freedreno always define HAVE_VALGRIND 2018-01-29 15:41:52 +00:00
include/drm drm/tegra: Sanitize format modifiers 2018-02-19 14:58:57 +01:00
intel always define HAVE_VALGRIND 2018-01-29 15:41:52 +00:00
libkms meson,configure: always define HAVE_{INTEL,VMWGFX,NOUVEAU,EXYNOS,VC4,RADEON} 2018-01-29 15:41:52 +00: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 meson: fix libdrm_nouveau pkgconfig include directories 2018-01-31 09:15:27 -08:00
omap Add meson build system 2018-01-12 09:40:48 -08:00
radeon Add meson build system 2018-01-12 09:40:48 -08:00
tegra Add meson build system 2018-01-12 09:40:48 -08:00
tests drm/tegra: Sanitize format modifiers 2018-02-19 14:58:57 +01:00
vc4 Add meson build system 2018-01-12 09:40:48 -08:00
.editorconfig Add meson build system 2018-01-12 09:40:48 -08:00
.gitignore libdrm: add etnaviv tests 2016-09-17 15:05:33 +02:00
Android.common.mk Android: disable warnings causing errors 2017-11-27 13:38:29 -06:00
Android.mk android: Move gralloc handle struct to libdrm 2018-02-14 17:33:57 +01:00
CleanSpec.mk tests: Split helpers into library 2015-12-18 17:43:40 +00:00
Makefile.am autotools: Include meson.build files in tarball 2018-01-12 09:40:48 -08:00
Makefile.sources android: Move gralloc handle struct to libdrm 2018-02-14 17:33:57 +01:00
README README: Add note about meson 2018-01-12 09:40:48 -08:00
RELEASING RELEASING: mention meson 2018-02-17 20:25:02 +01:00
autogen.sh autogen.sh: run git commands in the (potentially) git dir 2017-02-28 13:34:26 +00:00
configure.ac meson/configure.ac: pthread-stubs not present on OpenBSD 2018-02-20 15:05:20 +00: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 drm: remove drm_public macro 2015-04-28 11:19:15 +01:00
libsync.h add libsync.h helper 2016-11-05 10:16:46 -04:00
meson.build meson/configure.ac: pthread-stubs not present on OpenBSD 2018-02-20 15:05:20 +00:00
meson_options.txt Add meson build system 2018-01-12 09:40:48 -08: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 util_math: add MAX3 macro 2015-09-21 17:42:51 +01:00
xf86atomic.h xf86atomic: fix -Wundef warning 2018-01-29 16:18:52 +00:00
xf86drm.c fix return value for syncobj wait 2018-02-07 11:23:01 +08:00
xf86drm.h drm: Add CrtcGetSequence and CrtcQueueSequence IOCTLs [v2] 2017-12-18 10:04:02 +10:00
xf86drmHash.c xf86drmHash: remove always-false #if guards 2018-01-31 11:22:47 +00:00
xf86drmHash.h tests/hash: extract test out of xf86drmHash.c 2015-04-05 15:19:42 +01:00
xf86drmMode.c drm: Add CrtcGetSequence and CrtcQueueSequence IOCTLs [v2] 2017-12-18 10:04:02 +10:00
xf86drmMode.h drm: Add drm mode lease ioctl wrappers [v3] 2017-12-18 10:04:02 +10:00
xf86drmRandom.c drm: replace HASH_DEBUG with DEBUG 2015-04-05 15:33:33 +01:00
xf86drmRandom.h tests/random: extract test out of xf86drmRandom.c 2015-04-05 15:33:33 +01:00
xf86drmSL.c drm: replace HASH_DEBUG with DEBUG 2015-04-05 15:33:33 +01:00

README

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.   libdrm  is  a  low-level library,  typically  used  by
graphics drivers  such as the Mesa  DRI drivers, the  X drivers, libva
and  similar projects.  New  functionality in  the kernel  DRM drivers
typically requires  a new  libdrm, but a  new libdrm will  always work
with an older kernel.


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.