Go to file
Rob Clark b3a3a77823 freedreno: add synchronization between mesa and ddx
Super-cheezy way to synchronization between mesa and ddx..  the
SET_ACTIVE ioctl gives us a way to stash a 32b # w/ a GEM bo, and
GET_BUFINFO gives us a way to retrieve it.  We use this to stash
the timestamp of the last ISSUEIBCMDS on the buffer.

To avoid an obscene amount of syscalls, we:
 1) Only set the timestamp for buffers w/ an flink name, ie.
    only buffers shared across processes.  This is enough to
    catch the DRI2 buffers.
 2) Only set the timestamp for buffers submitted to the 3d ring
    and only check the timestamps on buffers submitted to the
    2d ring.  This should be enough to handle synchronizing of
    presentation blit.  We could do synchronization in the other
    direction too, but that would be problematic if we are using
    the 3d ring from DDX, since client side wouldn't know this.

The waiting on timestamp happens before flush, and setting of
timestamp happens after flush.  It is transparent to the user
of libdrm_freedreno as all the tracking of buffers happens via
_emit_reloc()..

Signed-off-by: Rob Clark <robclark@freedesktop.org>
2013-04-25 17:33:59 -04:00
exynos makefiles: Add missing headers. 2013-03-27 14:06:56 +01:00
freedreno freedreno: add synchronization between mesa and ddx 2013-04-25 17:33:59 -04:00
include radeon: update radeon_drm.h to kernel last API additions v2 2013-04-12 09:46:20 -04:00
intel intel-decode: Fix gen6 HIER_DEPTH_BUFFER decoding 2013-04-04 09:59:20 +02:00
libkms kms: Return a negative error code in kms_bo_create() 2013-04-18 10:07:01 -04:00
m4 build: Update autotools configuration 2011-03-21 13:43:43 +00:00
man man: Fix typo and use $() for make expressions 2013-01-25 13:46:57 -08:00
nouveau nouveau: add a way to override single pushbuffer memory limits 2013-03-26 21:08:03 +01:00
omap omap: release lock also on error paths 2012-10-09 09:41:27 -05:00
radeon radeon: add new richland pci ids 2013-04-25 14:13:52 -04:00
tests modetest: Add YUV420 support and fix YVU420 Cb/Cr ordering 2013-04-18 14:53:14 -04:00
.gitignore Add exynos_fimg2d_test to .gitignore 2013-04-22 14:50:57 -04:00
Makefile.am freedreno: add freedreno DRM 2013-02-14 12:13:15 -05:00
README Update README 2009-11-20 17:08:28 -05:00
RELEASING Add RELEASING to document the release process 2009-12-03 17:50:37 -05:00
autogen.sh autogen.sh: Restore passing --enable-maintainer-mode to configure. 2012-06-08 15:23:46 +02:00
configure.ac libdrm 2.4.44 2013-04-18 15:01:19 -04: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
xf86atomic.h Correct the Solaris definitions of atomic_add & atomic_dec 2010-04-16 17:37:58 -07:00
xf86drm.c drm: Fix error message in drmWaitVBlank 2013-03-28 08:34:30 -07:00
xf86drm.h libdrm: add prime fd->handle and handle->fd interfaces 2012-07-16 02:39:56 +01:00
xf86drmHash.c Move libdrm/ up one level 2009-11-17 11:15:06 -05:00
xf86drmMode.c initialize width/height fields in drmModeCrtc 2012-10-14 16:56:53 -05:00
xf86drmMode.h Add support for generic object properties IOCTLs 2012-06-08 09:27:20 -05:00
xf86drmRandom.c Move libdrm/ up one level 2009-11-17 11:15:06 -05:00
xf86drmSL.c Tidy up compile warnings by cleaning up types. 2010-02-04 19:45:10 -05: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 systes  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  is  a  standard  autotools  packages and  follows  the  normal
configure, build  and install steps.   The first step is  to configure
the package, which is done by running the configure shell script:

	./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 install into a system location, you will need to be root to
perform the install step.