Go to file
Michel Thierry 3350add5cc intel: 48b ppgtt support (EXEC_OBJECT_SUPPORTS_48B_ADDRESS flag)
Gen8+ supports 48-bit virtual addresses, but some objects must always be
allocated inside the 32-bit address range.

In specific, any resource used with flat/heapless (0x00000000-0xfffff000)
General State Heap (GSH) or Instruction State Heap (ISH) must be in a
32-bit range, because the General State Offset and Instruction State Offset
are limited to 32-bits.

The i915 driver has been modified to provide a flag to set when the 4GB
limit is not necessary in a given bo (EXEC_OBJECT_SUPPORTS_48B_ADDRESS).
48-bit range will only be used when explicitly requested.

Callers to the existing drm_intel_bo_emit_reloc function should set the
use_48b_address_range flag beforehand, in order to use full ppgtt range.

v2: Make set/clear functions nops on pre-gen8 platforms, and use them
    internally in emit_reloc functions (Ben)
    s/48BADDRESS/48B_ADDRESS/ (Dave)
v3: Keep set/clear functions internal, no-one needs to use them directly.
v4: Don't set 48bit-support flag in emit reloc, check for ppgtt type
    before enabling set/clear function, print full offsets in debug
    statements, using port of lower_32_bits and upper_32_bits from linux
    kernel (Michał)

References: http://lists.freedesktop.org/archives/intel-gfx/2015-July/072612.html
Cc: Ben Widawsky <ben@bwidawsk.net>
Cc: Michał Winiarski <michal.winiarski@intel.com>
Signed-off-by: Michel Thierry <michel.thierry@intel.com>
Reviewed-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
2015-12-14 11:31:19 -08:00
amdgpu amdgpu: Make amdgpu_cs_calculate_timeout() return something sensible on error 2015-11-20 19:21:48 -05:00
exynos exynos/fimg2d: remove g2d_context from public header 2015-09-21 17:43:14 +01:00
freedreno freedreno: debug msg cleanup 2015-09-19 12:12:27 -04:00
include/drm intel: Update i915_drm.h 2015-12-14 11:30:10 -08:00
intel intel: 48b ppgtt support (EXEC_OBJECT_SUPPORTS_48B_ADDRESS flag) 2015-12-14 11:31:19 -08:00
libkms libkms: use static const for good measure 2015-09-04 21:39:06 +01:00
m4 build: Update autotools configuration 2011-03-21 13:43:43 +00:00
man man: remove .man_fixup workaround 2015-07-29 18:04:15 +01:00
nouveau nouveau: use designated initializers 2015-09-04 21:39:06 +01:00
omap omap: Initialize DMA BUF file descriptor to -1 2015-08-26 15:15:54 +02:00
radeon radeon: Handle surface offsets exceeding 32 bits correctly 2015-11-10 18:06:57 +09:00
tegra drm: remove drm_public macro 2015-04-28 11:19:15 +01:00
tests tests/drmdevice: add drm{Get,Free}Device() example 2015-09-21 17:43:11 +01:00
.gitignore gitignore: add some generated amdgpu files 2015-08-05 13:47:51 -04:00
Android.mk android: set the HAVE_VISIBILITY define 2015-04-29 17:29:37 +00:00
CleanSpec.mk android: add CleanSpec.mk 2014-09-01 16:06:02 +01:00
Makefile.am automake: set --enable-valgrind during make distcheck 2015-09-21 17:32:03 +01:00
Makefile.sources drm: add libdrm_amdgpu (v7) 2015-08-05 13:47:48 -04:00
README Update README 2009-11-20 17:08:28 -05:00
RELEASING RELEASING: Fix annouce typo 2015-03-20 15:55:23 +00:00
autogen.sh autogen.sh: handle out-of-tree invokation 2015-03-17 22:35:51 +00:00
configure.ac configure.ac: test for the same atomic function as the one we use 2015-11-16 13:52:56 +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
util_double_list.h drm: consolidate common list implementations (v2) 2015-08-05 13:47:48 -04:00
util_math.h util_math: add MAX3 macro 2015-09-21 17:42:51 +01:00
xf86atomic.h Fix SunOS/NetBSD atomic macro 2015-09-21 17:43:14 +01:00
xf86drm.c xf86drm: Handle unrecognized subsystems safely in drmGetDevice[s]() 2015-10-20 18:45:23 +01:00
xf86drm.h xf86drm: add drm{Get,Free}Device 2015-09-21 17:43:08 +01:00
xf86drmHash.c drm: use correct printf modifiers 2015-04-05 15:33:33 +01:00
xf86drmHash.h tests/hash: extract test out of xf86drmHash.c 2015-04-05 15:19:42 +01:00
xf86drmMode.c xf86drmMode: smoke-test the atomic API 2015-09-21 17:32:03 +01:00
xf86drmMode.h remove usage of 'c_plusplus' preprocessor macro 2015-08-10 11:25:39 +03: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 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.