--- libdrm-2.4.56.orig/RELEASING +++ libdrm-2.4.56/RELEASING @@ -0,0 +1,66 @@ +The release criteria for libdrm is essentially "if you need a release, +make one". There is no designated release engineer or maintainer. +Anybody is free to make a release if there's a certain feature or bug +fix they need in a released version of libdrm. + +When new ioctl definitions are merged into drm-next, we will add +support to libdrm, at which point we typically create a new release. +However, this is up to whoever is driving the feature in question. + +Follow these steps to release a new version of libdrm: + + 1) Ensure that there are no local, uncommitted/unpushed + modifications. You're probably in a good state if both "git diff + HEAD" and "git log master..origin/master" give no output. + + 3) Bump the version number in configure.ac. We seem to have settled + for 2.4.x as the versioning scheme for libdrm, so just bump the + micro version. + + 4) Run autoconf and then re-run ./configure so the build system + picks up the new version number. + + 5) Verify that the code passes "make distcheck". libdrm is tricky + to distcheck since the test suite will need to become drm master. + This means that you need to run it outside X, that is, in text + mode (KMS or no KMS doesn't matter). + + Running "make distcheck" should result in no warnings or errors + and end with a message of the form: + + ============================================= + libdrm-X.Y.Z archives ready for distribution: + libdrm-X.Y.Z.tar.gz + libdrm-X.Y.Z.tar.bz2 + ============================================= + + Make sure that the version number reported by distcheck and in + the tarball names matches the number you bumped to in configure.ac. + + 6) Commit the configure.ac change and make an annotated tag for that + commit with the version number of the release as the name and a + message of "libdrm X.Y.Z". For example, for the 2.4.16 release + the command is: + + git tag -a 2.4.16 -m "libdrm 2.4.16" + + 7) Push the commit and tag by saying + + git push --tags origin master + + assuming the remote for the upstream libdrm repo is called origin. + + 6) Use the release.sh script from the xorg/util/modular repo to + upload the tarballs to the freedesktop.org download area and + create an annouce email template. The script takes three + arguments: a "section", the previous tag and the new tag we just + created. For 2.4.16 again, the command is: + + ../modular/release.sh libdrm 2.4.15 2.4.16 + + This copies the two tarballs to freedesktop.org and creates + libdrm-2.4.16.announce which has a detailed summary of the + changes, links to the tarballs, MD5 and SHA1 sums and pre-filled + out email headers. Fill out the blank between the email headers + and the list of changes with a brief message of what changed or + what prompted this release. Send out the email and you're done! --- libdrm-2.4.56.orig/autogen.sh +++ libdrm-2.4.56/autogen.sh @@ -0,0 +1,6 @@ +#! /bin/sh + +test -n "$srcdir" || srcdir=`dirname "$0"` +test -n "$srcdir" || srcdir=. +autoreconf --force --install --verbose "$srcdir" +test -n "$NOCONFIGURE" || "$srcdir/configure" --enable-maintainer-mode "$@" --- libdrm-2.4.56.orig/debian/README.source +++ libdrm-2.4.56/debian/README.source @@ -0,0 +1,55 @@ +------------------------------------------------------ +Quick Guide To Patching This Package For The Impatient +------------------------------------------------------ + +1. Make sure you have quilt installed +2. Unpack the package as usual with "dpkg-source -x" +3. Run the "patch" target in debian/rules +4. Create a new patch with "quilt new" (see quilt(1)) +5. Edit all the files you want to include in the patch with "quilt edit" + (see quilt(1)). +6. Write the patch with "quilt refresh" (see quilt(1)) +7. Run the "clean" target in debian/rules + +Alternatively, instead of using quilt directly, you can drop the patch in to +debian/patches and add the name of the patch to debian/patches/series. + +While building from git, dpkg-source can complain about symlinks vs. +normal files mismatches. To work around this issue, before uploading, +and without committing: + + find -type l | while read dest; do src=$(readlink -f $dest); rm $dest; cp $src $dest; done + +------------------------------------ +Guide To The X Strike Force Packages +------------------------------------ + +The X Strike Force team maintains X packages in git repositories on +git.debian.org in the pkg-xorg subdirectory. Most upstream packages +are actually maintained in git repositories as well, so they often +just need to be pulled into git.debian.org in a "upstream-*" branch. +Otherwise, the upstream sources are manually installed in the Debian +git repository. + +The .orig.tar.gz upstream source file could be generated using this +"upstream-*" branch in the Debian git repository but it is actually +copied from upstream tarballs directly. + +Due to X.org being highly modular, packaging all X.org applications +as their own independent packages would have created too many Debian +packages. For this reason, some X.org applications have been grouped +into larger packages: xutils, xutils-dev, x11-apps, x11-session-utils, +x11-utils, x11-xfs-utils, x11-xkb-utils, x11-xserver-utils. +Most packages, including the X.org server itself and all libraries +and drivers are, however maintained independently. + +The Debian packaging is added by creating the "debian-*" git branch +which contains the aforementioned "upstream-*" branch plus the debian/ +repository files. +When a patch has to be applied to the Debian package, two solutions +are involved: +* If the patch is available in one of the upstream branches, it + may be git'cherry-picked into the Debian repository. In this + case, it appears directly in the .diff.gz. +* Otherwise, the patch is added to debian/patches/ which is managed + with quilt as documented in /usr/share/doc/quilt/README.source. --- libdrm-2.4.56.orig/debian/changelog +++ libdrm-2.4.56/debian/changelog @@ -0,0 +1,737 @@ +libdrm (2.4.56-1) unstable; urgency=medium + + * New upstream release. + * Enable building freedreno and exynos on arm. (Closes: #741509) + * Add a squashed patch from upstream to hide all private symbols. + - 03_hide_symbols.diff + + -- Maarten Lankhorst Wed, 06 Aug 2014 12:15:26 +0200 + +libdrm (2.4.54-1) unstable; urgency=medium + + [ Andreas Boll ] + * New upstream release. + * Add 02_fix_qxl_drm_h.diff (Closes: #746807). + + -- Julien Cristau Sat, 10 May 2014 15:38:16 +0200 + +libdrm (2.4.53-1) unstable; urgency=medium + + [ Timo Aaltonen ] + * New upstream release. + - 02_kbsd_modeset.diff dropped, upstream + + -- Julien Cristau Sun, 27 Apr 2014 22:15:55 +0200 + +libdrm (2.4.52-1) unstable; urgency=medium + + [ Julien Cristau ] + * Remove Cyril Brulebois from Uploaders. + + [ Maarten Lankhorst ] + * New upstream release. + + -- Maarten Lankhorst Fri, 24 Jan 2014 13:41:57 +0100 + +libdrm (2.4.51-1) unstable; urgency=medium + + * New upstream release. + + -- Julien Cristau Mon, 20 Jan 2014 13:45:50 +0100 + +libdrm (2.4.50-1) unstable; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Thu, 19 Dec 2013 10:49:57 +0100 + +libdrm (2.4.49-2) unstable; urgency=low + + * Cherry-pick a commit from upstream to fix a radeonsi regression. + - c8a437f4c76: radeon: Update unaligned offset for 2D->1D tiling + transition on SI + + -- Maarten Lankhorst Tue, 26 Nov 2013 15:25:45 +0100 + +libdrm (2.4.49-1) unstable; urgency=low + + * New upstream release. + + -- Maarten Lankhorst Mon, 25 Nov 2013 11:36:32 +0100 + +libdrm (2.4.46-4) unstable; urgency=low + + [ Colin Watson ] + * Declare libdrm-dev Multi-Arch: same. + + [ Maarten Lankhorst ] + * Cherry-pick upstream patch to fix relocations for all cards Thu, 07 Nov 2013 14:11:38 +0100 + +libdrm (2.4.46-3) unstable; urgency=low + + * Make drmCheckModesettingSupported work on FreeBSD. Thanks, Christoph + Egger! + * Stop building libkms. + + -- Julien Cristau Thu, 19 Sep 2013 21:24:52 +0200 + +libdrm (2.4.46-2) unstable; urgency=low + + * Build libdrm-radeon1 on kfreebsd (closes: #684593). + + -- Julien Cristau Wed, 21 Aug 2013 21:05:44 +0200 + +libdrm (2.4.46-1) unstable; urgency=low + + [ Sven Joachim ] + * New upstream release. + * Bump libdrm2's and libdrm-intel1's symbols and shlibs. + * Build libdrm-intel1 on x32 (Closes: #712515). + * Disable silent rules. + + -- Maarten Lankhorst Mon, 05 Aug 2013 13:44:46 +0200 + +libdrm (2.4.45-3) unstable; urgency=low + + * Team upload. + + * debian/patches/03_build_against_librt.diff: + + Removed, no longer needed with our current glibc version. + Thanks to Julien Cristau for pointing it out. + * Upload to unstable. + + -- Emilio Pozuelo Monfort Thu, 06 Jun 2013 23:13:12 +0200 + +libdrm (2.4.45-2) experimental; urgency=low + + [ Sven Joachim ] + * Only build-depend on valgrind on architectures where + valgrind is actually available. + + -- Julien Cristau Thu, 30 May 2013 10:03:37 +0200 + +libdrm (2.4.45-1) experimental; urgency=low + + * Team upload. + + [ Julien Cristau ] + * Bump libdrm2 shlibs to 2.4.38. + + [ Maarten Lankhorst ] + * New upstream release. + * Build-depend on xsltproc and docbook-xsl. + * Add valgrind to build-depends. + + [ Timo Aaltonen ] + * control: Bump policy to 3.9.4, no changes. + + [ Emilio Pozuelo Monfort ] + * Upload to experimental. + + -- Emilio Pozuelo Monfort Thu, 16 May 2013 00:09:59 +0200 + +libdrm (2.4.40-1) experimental; urgency=low + + [ Maarten Lankhorst ] + * New upstream release. + - Nouveau ABI change, replace libdrm-nouveau1a with libdrm-nouveau2. + + [ Timo Aaltonen ] + * Bump libdrm-intel1's and libdrm-nouveau2's shlibs due to new symbols. + * Hardcode the version for libdrm-omap1's shlibs. + + [ Christopher James Halse Rogers ] + * Add libdrm2-udeb; Xserver 1.13 wants libdrm for hotplug config, so + will be needed for the 1.13 xserver-xorg-core-udeb. + + [ Sven Joachim ] + * Bump libdrm-radeon1's symbols and shlibs. + * Mark some internal libdrm-nouveau2 symbols as private. + * Drop patch 02_build_libkms_against_in_tree_drm.diff, applied upstream. + + -- Julien Cristau Sat, 17 Nov 2012 18:50:33 +0100 + +libdrm (2.4.33-3) unstable; urgency=low + + * Add missing dependency on libdrm-omap1 to libdrm-dev (thanks, Robert + Hooker!). Make some arm matching a bit simpler. + + -- Julien Cristau Thu, 21 Jun 2012 23:22:22 +0200 + +libdrm (2.4.33-2) unstable; urgency=low + + [ Sebastian Reichel ] + * Build libdrm_omap (closes: #667572). + + -- Julien Cristau Thu, 21 Jun 2012 22:39:22 +0200 + +libdrm (2.4.33-1) unstable; urgency=low + + * New upstream release. + + -- Cyril Brulebois Mon, 02 Apr 2012 01:28:22 +0000 + +libdrm (2.4.32-1) unstable; urgency=low + + [ Robert Hooker ] + * New upstream release (2.4.31). + * Bump libdrm2 and libdrm-radeon1 symbols and shlibs to account for + recent changes. + + [ Cyril Brulebois ] + * New upstream release (2.4.32). + * Bump libdrm-intel1's symbols and shlibs accordingly. + + -- Cyril Brulebois Mon, 19 Mar 2012 19:56:12 +0000 + +libdrm (2.4.30-1) unstable; urgency=low + + * New upstream release. + * Bump libdrm2's and libdrm-intel1's symbols and shlibs accordingly. + * Document the symlink dance when building from git in README.source. + + -- Cyril Brulebois Fri, 06 Jan 2012 20:04:37 +0100 + +libdrm (2.4.29-1) unstable; urgency=low + + * New upstream release: + - assert()s are now gone (Closes: #651316). + * Update libdrm-intel1's symbols and shlibs accordingly. + + -- Cyril Brulebois Tue, 13 Dec 2011 13:16:22 +0100 + +libdrm (2.4.28-1) unstable; urgency=low + + * New upstream release. + + -- Cyril Brulebois Tue, 06 Dec 2011 15:17:50 +0100 + +libdrm (2.4.27-1) unstable; urgency=low + + * New upstream release: + - Push the new Intel API for use by mesa. + - Usual bug fixes. + * Update libdrm-intel1's symbols and shlibs accordingly. + + -- Cyril Brulebois Tue, 01 Nov 2011 19:30:54 +0100 + +libdrm (2.4.26-1) unstable; urgency=low + + * New upstream release: + - Fix two important intel bugs. + * Add libpciaccess-dev build-dep. + * Update libdrm-intel1.symbols and shlibs for new aperture-related symbol. + + -- Cyril Brulebois Fri, 24 Jun 2011 17:07:04 +0200 + +libdrm (2.4.25-3) unstable; urgency=low + + * Team upload. + + [ Steve Langasek ] + * Build for multiarch. + + [ Julien Cristau ] + * Add lintian overrides for symbols-declares-dependency-on-other-package (we + use that for private symbols). + * Bump Standards-Version to 3.9.2. + + -- Julien Cristau Thu, 09 Jun 2011 20:05:53 +0200 + +libdrm (2.4.25-2) unstable; urgency=low + + * Upload to unstable. + + -- Cyril Brulebois Mon, 16 May 2011 19:14:49 +0200 + +libdrm (2.4.25-1) experimental; urgency=low + + * New upstream release. + * Update libdrm2.symbols and shlibs. + * Update libkms1.symbols, marking dumb_create@Base as private. + * Switch to dh: + - Bump compat/build-dep to 8. + - Use dh-autoreconf. + - Tidy old build-deps. + - Testsuite now automatically gets run. + * Accordingly, add a build-dep to fix FTBFS during make check: + - 03_build_against_librt.diff + * Add libudev-dev build-dep on Linux so that detection works. + * Since the testsuite just got enabled, let's not bail out if it fails. + * Remove xsfbs as it's no longer needed. + * Bump Standards-Version (no changes needed). + + -- Cyril Brulebois Tue, 19 Apr 2011 02:57:29 +0200 + +libdrm (2.4.24-2) unstable; urgency=low + + * Upload to unstable. + + -- Cyril Brulebois Sun, 10 Apr 2011 22:57:02 +0200 + +libdrm (2.4.24-1) experimental; urgency=low + + [ Christopher James Halse Rogers ] + * New upstream release. + * Add new internal radeon symbols to libkms1.symbols + + [ Cyril Brulebois ] + * Just as a reminder, not adding a lintian override for the following + warning, since patches were sent upstream to stop exporting private + symbols: symbols-declares-dependency-on-other-package + + -- Cyril Brulebois Sat, 05 Mar 2011 20:27:23 +0100 + +libdrm (2.4.23-3) unstable; urgency=low + + * Cherry-pick from upstream: + - intel: Fallback to old exec if no mrb_exec is available + - intel: Set the public handle after opening by name + - intel: Remember named bo + * The first of those fixes should fix some failures to submit batch + buffer (Closes: #612766). + * Bump dependency to 2.4.23-3 for the drm_intel_bo_mrb_exec symbol in + libdrm-intel1's symbols file. While the former version is alright + from a shared object point of view, runtime doesn't seem to agree + (Closes: #609299). + * Bump the libdrm-intel1 shlibs version for consistency. + + -- Cyril Brulebois Wed, 16 Feb 2011 11:44:44 +0100 + +libdrm (2.4.23-2) unstable; urgency=low + + * Upload to unstable. + * Update Uploaders list. Thanks, David & Brice! + + -- Cyril Brulebois Sat, 05 Feb 2011 11:26:44 +0100 + +libdrm (2.4.23-1) experimental; urgency=low + + [ Sven Joachim ] + * New upstream release. + * Rename the libdrm-nouveau1 package to libdrm-nouveau1a, since upstream + broke the ABI without changing the soname. + - Make libdrm-nouveau1a{,-dbg} conflict with libdrm-nouveau1{,-dbg} and + remove the Breaks against xserver-xorg-video-nouveau. + - Adjust the lintian override. + - Bump libdrm-nouveau shlibs and symbols versions to 2.4.23. + * Use dh_prep instead of the deprecated dh_clean -k in debian/rules. + + -- Julien Cristau Thu, 23 Dec 2010 17:56:54 +0100 + +libdrm (2.4.22-2) experimental; urgency=low + + * Cherry-pick some commits from upstream to make the intel video driver + 2.13.901 buildable: + - 057fab33: intel: Prepare for BLT ring split + - 36245771: intel: enable relaxed fence allocation for i915 + - 49447a9b: intel: initialize bufmgr.bo_mrb_exec unconditionally + + -- Cyril Brulebois Sun, 07 Nov 2010 22:51:12 +0100 + +libdrm (2.4.22-1) experimental; urgency=low + + [ Sven Joachim ] + * New upstream release. + + -- Cyril Brulebois Sat, 02 Oct 2010 00:41:05 +0200 + +libdrm (2.4.21-2) experimental; urgency=low + + [ Sven Joachim ] + * Bump libdrm-nouveau shlibs and symbols versions to 2.4.21-1 to ensure + that packages built against this version are not used with squeeze's + libdrm-nouveau1. + * Add a lintian override for the symbols-file-contains-debian-revision + warning. Bump debhelper compatibility level to 6 for dh_lintian. + + -- Julien Cristau Wed, 25 Aug 2010 23:14:40 +0200 + +libdrm (2.4.21-1) experimental; urgency=low + + [ Christopher James Halse Rogers ] + * debian/rules: + - Add libkms to build + - Build vmwgfx experimental API. The drm module is available in the 2.6.34 + kernel so we might as well build the userspace bits. + * debian/control: + - Add libkms1, libkms1-dbg packages on linux + * debian/patches/02_build_libkms_against_in_tree_drm: + - Link libkms against libdrm as it uses symbols from libdrm. + + [ Robert Hooker ] + * New upstream release. + * Refresh 02_build_libkms_against_in_tree_drm. + * Update libdrm-intel1.symbols, libdrm-radeon1.symbols and shlibs. + + [ Julien Cristau ] + * Update the copyright file to hopefully include all licenses variations and + copyright statements from the source tree. + * Mark new libdrm_radeon symbols private. They shouldn't actually be + exported. + * Same with libkms. Also don't set a minimum version to 2.4.20, since we + didn't ship it before anyway. + + -- Julien Cristau Thu, 10 Jun 2010 23:24:54 +0200 + +libdrm (2.4.20-3) experimental; urgency=low + + [ Sven Joachim ] + * Update libdrm-nouveau1 to the ABI of Linux 2.6.34. + - Drop 03_revert_abi_change.diff. + - Bump libdrm-nouveau shlibs and symbols versions to 2.4.20-3~ + to ensure that packages built against this version are not used + with an older libdrm-nouveau1 version. + - Add versioned Breaks against xserver-xorg-video-nouveau to force + an upgrade of that package and prevent X segfaults. + * Include full SONAME in libdrm-nouveau1.install. + * Update xsfbs to 81fc271788605b52e85c2d11635a0371fb44605e0. + + -- Julien Cristau Wed, 26 May 2010 10:33:22 +0200 + +libdrm (2.4.20-2) experimental; urgency=low + + * Upload again, faking a new upstream version, since a screw-up on + ftpmaster side trashed all files from experimental. + + -- Cyril Brulebois Wed, 28 Apr 2010 01:54:44 +0200 + +libdrm (2.4.20-1) experimental; urgency=low + + * New upstream release. + + Cherry-pick upstream fixes 107ccd92 and 332739e3. + * Update libdrm-intel1.symbols, libdrm-radeon1.symbols and shlibs. + * Disable libkms for now. + + -- Brice Goglin Fri, 16 Apr 2010 07:14:41 +0200 + +libdrm (2.4.18-5) unstable; urgency=low + + * Upload to unstable. + + -- Cyril Brulebois Wed, 14 Apr 2010 13:02:34 +0200 + +libdrm (2.4.18-4) experimental; urgency=low + + * Steal 03_revert_abi_change.diff from Ubuntu to revert the nouveau ABI + change. Current Debian kernels support only the old ABI. + Thanks Sven Joachim! + * Build a libdrm-nouveau1 package on Linux architectures (Closes: #568162). + Patch adapted from the Ubuntu package. Thanks Sven Joachim! + + -- Brice Goglin Wed, 24 Mar 2010 22:27:00 +0100 + +libdrm (2.4.18-3) unstable; urgency=low + + * Include full SONAME in libdrm*.install to prevent accidental breakage. + * Add back the drm headers in libdrm-dev. + + -- Julien Cristau Tue, 16 Mar 2010 12:28:50 +0100 + +libdrm (2.4.18-2) unstable; urgency=low + + * Fix FTBFS on non-Linux architectures (Closes: #570851): Replace + --{enable,disable}-radeon-experimental-api configure flag with + --{enable,disable}-radeon since it got renamed. + * Add ${misc:Depends} where it was missing, and fold all Depends. + * Bump Standards-Version from 3.8.3 to 3.8.4 (no changes needed). + * Add myself to Uploaders. + + -- Cyril Brulebois Mon, 22 Feb 2010 15:31:47 +0100 + +libdrm (2.4.18-1) unstable; urgency=low + + * New upstream release. + + -- Brice Goglin Thu, 18 Feb 2010 08:06:14 +0100 + +libdrm (2.4.17-1) unstable; urgency=low + + [ Julien Cristau ] + * New upstream release, closes: #560434, #567831. + * Update patch 01_default_perms.diff to account for upstream move of libdrm + to toplevel. + * Update libdrm2.symbols and shlibs. + * Update libdrm-intel1.symbols and shlibs. + * Bump debhelper build-dep, we use dh_strip --remaining-packages (closes: + #558443). Thanks, Sergio Gelato! + * Enable libdrm_radeon, interface to kernel graphics memory management on + radeon (closes: #558786). + * Rename the build directory to not include DEB_BUILD_GNU_TYPE for no + good reason. Thanks, Colin Watson! + * Remove myself from Uploaders + + [ Brice Goglin ] + * Bump linux-libc-dev dependency to 2.6.32, thanks Piotr Engelking, + closes: #561224. + * Add libdrm-radeon1 symbols and update shlibs. + * Update debian/copyright. + + [ Timo Aaltonen ] + * Update libdrm2.symbols and shlibs. + + -- Brice Goglin Sun, 31 Jan 2010 20:12:38 +0100 + +libdrm (2.4.15-1) unstable; urgency=low + + * New upstream release. + + update libdrm-intel1 symbols and shlibs + * Only build libdrm-intel on x86 (linux and kfreebsd). + + -- Julien Cristau Mon, 23 Nov 2009 17:00:57 +0100 + +libdrm (2.4.14-1) unstable; urgency=low + + * Parse space-separated DEB_BUILD_OPTIONS, and handle parallel=N. + * New upstream release. + * Bump Standards-Version to 3.8.3. + + -- Julien Cristau Thu, 24 Sep 2009 21:53:09 +0200 + +libdrm (2.4.13-1) unstable; urgency=low + + [ Christopher James Halse Rogers ] + * debian/control: + + Remove scary 'built from DRM snapshot' warning from long description of + libdrm-intel1{,-dbg} + + [ Julien Cristau ] + * New upstream release. + * Update libdrm-intel1.symbols. + + -- Julien Cristau Sat, 05 Sep 2009 13:15:36 +0200 + +libdrm (2.4.12-1) unstable; urgency=low + + * New upstream release. + + -- Brice Goglin Tue, 21 Jul 2009 15:29:03 +0200 + +libdrm (2.4.11-1) unstable; urgency=low + + * New upstream release. + * Also pull in additional fix for libdrm-intel: Only do BO caching up to + 64MB objects. + * Update libdrm-intel1.symbols and bump shlibs. + * Add README.source from xsfbs. Bump Standards-Version to 3.8.1. + * Remove Thierry Reding from Uploaders, he doesn't seem to be around anymore + :( + + -- Julien Cristau Mon, 08 Jun 2009 16:22:04 +0200 + +libdrm (2.4.9-2) unstable; urgency=low + + * Ship all drm headers on kfreebsd, again. + * Move -dbg packages to new debug section. + + -- Julien Cristau Sun, 03 May 2009 18:55:42 +0200 + +libdrm (2.4.9-1) unstable; urgency=low + + [ Brice Goglin ] + * New upstream release. + + Remove buggy symlinks for the upstream tarball. + * Add myself to Uploaders. + + [ Julien Cristau ] + * Make the linux-libc-dev dependency linux-only (closes: #521253). Thanks, + Petr Salinger! + + -- Brice Goglin Sat, 11 Apr 2009 23:12:49 +0200 + +libdrm (2.4.5-2) unstable; urgency=low + + * Add drm_mode.h to the list of headers we don't ship. + + -- Julien Cristau Wed, 25 Mar 2009 10:56:53 +0100 + +libdrm (2.4.5-1) unstable; urgency=low + + * New upstream release. (closes: #505740) + + [ Timo Aaltonen ] + * debian/rules: + -Run autoreconf at build time, build-depend on automake and libtool. + (closes: #482727) + -Add a debian/libdrm2.symbols file and '-c4' parameter to dh_makeshlibs + to fail if new symbols are added. Don't use Debian versions for now. + + [ Julien Cristau ] + * Add a new package for the intel-specific bits (libdrm-intel1) + * Build-depend on pkg-config and libpthread-stubs0-dev (closes: #502078). + Thanks, Frank Lichtenheld! + * Don't mention *.la in libdrm-dev.install. + * Make libdrm-dev depend on libdrm-intel1 on x86. + * On Linux, let udev create the device files. + * Let linux-libc-dev provide some drm headers, drop them from libdrm-dev. + Add dependency on linux-libc-dev >= 2.6.28. + * Set libdrm2 shlibs to 2.4.3, libdrm-intel1 shlibs to 2.4.5. Update + symbols files. + + -- Julien Cristau Tue, 24 Mar 2009 22:20:50 +0100 + +libdrm (2.3.1-2) unstable; urgency=high + + * Remove from the source package a bunch of files that are only used by the + kernel drm component. This gets rid of the mga, r128 and radeon + microcode, and thus closes: #502675. Thanks, Ben Hutchings! + + -- Julien Cristau Sun, 19 Oct 2008 14:26:37 +0200 + +libdrm (2.3.1-1) unstable; urgency=low + + [ Brice Goglin ] + * Update upstream URL in debian/copyright. + * Bump Standards-Version to 3.7.3 (no changes). + * Drop the XS- prefix from Vcs-Git and Vcs-Browser fields in debian/control. + * Install the upstream ChangeLog. + + [ Julien Cristau ] + * New upstream release (needed for mesa 7.1 and newer xserver). + * Note: this release removes the memory manager (TTM) interface used by the + i915tex dri driver. + * debian/rules: don't call configure with --host if we're not + cross-building, and fix some rules dependencies. + + [ Timo Aaltonen ] + * Bump the shlibs to 2.3.1. + + -- Julien Cristau Sun, 13 Jul 2008 19:07:49 +0200 + +libdrm (2.3.0-4) unstable; urgency=low + + [ David Nusinow ] + * Add NEWS.Debian explaining the change in the last upload to interested + administrators. + + [ Julien Cristau ] + * Upload to unstable. + + -- Julien Cristau Fri, 20 Apr 2007 05:06:34 +0200 + +libdrm (2.3.0-3) experimental; urgency=low + + * Add myself to uploaders + * Patch libdrm to default to device permission 666 so we don't have to do it + in xorg.conf. The only way libdrm can do anything is through the server + anyway. This can still be overridden by a user's xorg.conf. This change + also requires adding quilt to the build-depends + + -- David Nusinow Sun, 15 Apr 2007 13:08:50 -0400 + +libdrm (2.3.0-2) unstable; urgency=low + + * Update my email address in debian/control. + * Add XS-Vcs-Git and XS-Vcs-Browser in debian/control. + * Upload to unstable. + + -- Julien Cristau Thu, 12 Apr 2007 19:06:57 +0200 + +libdrm (2.3.0-1) experimental; urgency=low + + [ Thierry Reding ] + * New upstream release. + * Set the Debian X Strike Force as maintainer. + * Add myself to uploaders. + * Add a debugging symbol package for libdrm2. + + [ Julien Cristau ] + * Bump shlibs to libdrm2 >= 2.3.0. + * Add myself to uploaders. + * Add build-dep on dpkg-dev >= 1.13.19 to make sure that the binary:Version + substvar is available. + * libdrm2-dbg depends on libdrm2 (= ${binary:Version}). + * Don't install libdrm.la, and use dh_install --list-missing. + + -- Julien Cristau Thu, 4 Jan 2007 18:56:08 +0100 + +libdrm (2.2.0-0.1) experimental; urgency=low + + * Non-maintainer upload. + * New upstream release. + * Bump Standards-Version to 3.7.2, no changes required. + * Bump debhelper compatibility to 5 and adjust build-dependency. + * Don't try to install pkgconfig files from usr/share/pkgconfig because + there is nothing in that directory. + + -- Thierry Reding Sat, 18 Nov 2006 19:50:26 +0100 + +libdrm (2.0.2-0.1) unstable; urgency=low + + * Non-maintainer upload. + * New upstream release (closes: #377166). + - Includes a fix for FTBFS on GNU/kFreeBSD (closes: #332994). + * Manually force static build. + + -- Andres Salomon Sat, 23 Sep 2006 06:32:23 +0000 + +libdrm (2.0.1-1) unstable; urgency=high + + * New upstream release + - Fixes a pathological hash table smash discovered by the Coverity scanner + - updates the installed header files for various new #defines + + -- David Nusinow Tue, 4 Apr 2006 23:46:05 -0400 + +libdrm (2.0-1) experimental; urgency=low + + * First upload to Debian + + -- David Nusinow Thu, 5 Jan 2006 22:45:27 -0500 + +libdrm (2.0-0ubuntu1) dapper; urgency=low + + * New upstream release. + * Change binary package from libdrm1 to libdrm2, following soversion bump. + + -- Daniel Stone Mon, 12 Dec 2005 13:05:22 +1100 + +libdrm (1.0.5-0ubuntu1) dapper; urgency=low + + * New upstream version. + + -- Daniel Stone Wed, 2 Nov 2005 01:56:07 +1100 + +libdrm (1.0.3-3) unstable; urgency=low + + * Yay for understandable bug reports! *gmprf* + * debian/control:libdrm1 =~ s/development/runtime/ (closes: bug#325515) + + -- Marcelo E. Magallon Fri, 16 Sep 2005 09:46:05 -0600 + +libdrm (1.0.3-2) unstable; urgency=low + + * libdrm.pc.in: add -ldrm to Libs + + -- Marcelo E. Magallon Thu, 08 Sep 2005 20:49:01 -0600 + +libdrm (1.0.3-1) unstable; urgency=low + + * New upstream + + -- Marcelo E. Magallon Sun, 28 Aug 2005 11:12:07 -0600 + +libdrm (1.0.2-3) unstable; urgency=low + + * debian/control: it's "Direct Rendering Infraestructure". I was rather + sure it stand for interface... thanks Michel. (closes: bug#324514) + * debian/control: forgot to actually write this in the file. Build-Depends + on libx11-dev. Thanks Kurt (closes: bug#324560) + + -- Marcelo E. Magallon Sun, 28 Aug 2005 11:01:41 -0600 + +libdrm (1.0.2-2) unstable; urgency=low + + * Forgot to fix the other broken bit :-P + + -- Marcelo E. Magallon Fri, 19 Aug 2005 22:01:32 -0600 + +libdrm (1.0.2-1) unstable; urgency=low + + * Initial release. Closes: #324074 + + -- Marcelo E. Magallon Fri, 19 Aug 2005 21:11:18 -0600 + --- libdrm-2.4.56.orig/debian/compat +++ libdrm-2.4.56/debian/compat @@ -0,0 +1 @@ +9 --- libdrm-2.4.56.orig/debian/control +++ libdrm-2.4.56/debian/control @@ -0,0 +1,278 @@ +Source: libdrm +Priority: optional +Maintainer: Debian X Strike Force +Build-Depends: + debhelper (>= 9), + dh-autoreconf, + quilt, + xsltproc, + docbook-xsl, + libx11-dev, + pkg-config, + libpthread-stubs0-dev, + libudev-dev [linux-any], + libpciaccess-dev, + valgrind [amd64 armhf i386 mips mipsel powerpc s390x], + libbsd-dev [kfreebsd-any], +Standards-Version: 3.9.4 +Section: libs +Vcs-Git: git://git.debian.org/git/pkg-xorg/lib/libdrm +Vcs-Browser: http://git.debian.org/?p=pkg-xorg/lib/libdrm.git + +Package: libdrm-dev +Section: libdevel +Architecture: any +Depends: + libdrm2 (= ${binary:Version}), + libdrm-intel1 (= ${binary:Version}) [amd64 i386 kfreebsd-amd64 kfreebsd-i386 x32], + libdrm-radeon1 (= ${binary:Version}), + libdrm-nouveau2 (= ${binary:Version}) [linux-any], + libdrm-omap1 (= ${binary:Version}) [any-arm], + libdrm-freedreno1 (= ${binary:Version}) [any-arm], + libdrm-exynos1 (= ${binary:Version}) [any-arm], + ${misc:Depends}, +Multi-Arch: same +Replaces: + linux-libc-dev (<< 2.6.32-10) +Description: Userspace interface to kernel DRM services -- development files + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + . + This package provides the development environment for libdrm. + +Package: libdrm2 +Section: libs +Architecture: any +Depends: + ${shlibs:Depends}, + ${misc:Depends}, +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Description: Userspace interface to kernel DRM services -- runtime + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + . + This package provides the runtime environment for libdrm. + +Package: libdrm2-udeb +Package-Type: udeb +Section: debian-installer +Architecture: any +Depends: + ${shlibs:Depends}, + ${misc:Depends}, +Description: Userspace interface to kernel DRM services -- runtime + This is a udeb, or a microdeb, for the debian-installer. + +Package: libdrm2-dbg +Section: debug +Priority: extra +Architecture: any +Depends: + libdrm2 (= ${binary:Version}), + ${misc:Depends}, +Multi-Arch: same +Description: Userspace interface to kernel DRM services -- debugging symbols + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + . + This package provides debugging symbols for the libdrm2 package. + +Package: libdrm-intel1 +Section: libs +Architecture: amd64 i386 kfreebsd-amd64 kfreebsd-i386 x32 +Depends: + ${shlibs:Depends}, + ${misc:Depends}, +Pre-Depends: ${misc:Pre-Depends} +Multi-Arch: same +Description: Userspace interface to intel-specific kernel DRM services -- runtime + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + +Package: libdrm-intel1-dbg +Section: debug +Priority: extra +Architecture: amd64 i386 kfreebsd-amd64 kfreebsd-i386 x32 +Depends: + libdrm-intel1 (= ${binary:Version}), + ${misc:Depends}, +Multi-Arch: same +Description: Userspace interface to intel-specific kernel DRM services -- debugging symbols + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + . + This package provides the debugging symbols for the libdrm-intel1 package. + +Package: libdrm-nouveau2 +Section: libs +Architecture: linux-any +Depends: ${shlibs:Depends}, + ${misc:Depends}, +Pre-Depends: ${misc:Pre-Depends} +Multi-Arch: same +Description: Userspace interface to nouveau-specific kernel DRM services -- runtime + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + +Package: libdrm-nouveau2-dbg +Section: debug +Priority: extra +Architecture: linux-any +Depends: libdrm-nouveau2 (= ${binary:Version}), + ${misc:Depends}, +Multi-Arch: same +Description: Userspace interface to nouveau-specific kernel DRM -- debugging symbols + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + . + This package provides the debugging symbols for the libdrm-nouveau2 package. + +Package: libdrm-radeon1 +Section: libs +Architecture: any +Depends: + ${shlibs:Depends}, + ${misc:Depends}, +Pre-Depends: ${misc:Pre-Depends} +Multi-Arch: same +Description: Userspace interface to radeon-specific kernel DRM services -- runtime + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + +Package: libdrm-radeon1-dbg +Section: debug +Priority: extra +Architecture: any +Depends: + libdrm-radeon1 (= ${binary:Version}), + ${misc:Depends}, +Multi-Arch: same +Description: Userspace interface to radeon-specific kernel DRM services -- debugging symbols + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + . + This package provides the debugging symbols for the libdrm-radeon1 package. + +Package: libdrm-omap1 +Section: libs +Architecture: any-arm +Depends: + ${shlibs:Depends}, + ${misc:Depends}, +Pre-Depends: ${misc:Pre-Depends} +Multi-Arch: same +Description: Userspace interface to omap-specific kernel DRM services -- runtime + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + +Package: libdrm-omap1-dbg +Section: debug +Priority: extra +Architecture: any-arm +Depends: + libdrm-omap1 (= ${binary:Version}), + ${misc:Depends}, +Multi-Arch: same +Description: Userspace interface to omap-specific kernel DRM services -- debugging symbols + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + . + This package provides the debugging symbols for the libdrm-omap1 package. + +Package: libdrm-freedreno1 +Section: libs +Architecture: any-arm +Depends: + ${shlibs:Depends}, + ${misc:Depends}, +Pre-Depends: ${misc:Pre-Depends} +Multi-Arch: same +Description: Userspace interface to msm/kgsl kernel DRM services -- runtime + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + +Package: libdrm-freedreno1-dbg +Section: debug +Priority: extra +Architecture: any-arm +Depends: + libdrm-freedreno1 (= ${binary:Version}), + ${misc:Depends}, +Multi-Arch: same +Description: Userspace interface to msm/kgsl kernel DRM services -- debugging symbols + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + . + This package provides the debugging symbols for the libdrm-freedreno1 package. + +Package: libdrm-exynos1 +Section: libs +Architecture: any-arm +Depends: + ${shlibs:Depends}, + ${misc:Depends}, +Pre-Depends: ${misc:Pre-Depends} +Multi-Arch: same +Description: Userspace interface to exynos-specific kernel DRM services -- runtime + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + +Package: libdrm-exynos1-dbg +Section: debug +Priority: extra +Architecture: any-arm +Depends: + libdrm-exynos1 (= ${binary:Version}), + ${misc:Depends}, +Multi-Arch: same +Description: Userspace interface to exynos-specific kernel DRM services -- debugging symbols + This library implements the userspace interface to the kernel DRM + services. DRM stands for "Direct Rendering Manager", which is the + kernelspace portion of the "Direct Rendering Infrastructure" (DRI). + The DRI is currently used on Linux to provide hardware-accelerated + OpenGL drivers. + . + This package provides the debugging symbols for the libdrm-exynos1 package. --- libdrm-2.4.56.orig/debian/copyright +++ libdrm-2.4.56/debian/copyright @@ -0,0 +1,316 @@ +This package was downloaded from +http://dri.freedesktop.org/libdrm/ + +It was debianized by Marcelo E. Magallon on +Fri, 19 Aug 2005 21:11:18 -0600. + + + Copyright 2005 Adam Jackson. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation on the rights to use, copy, modify, merge, + publish, distribute, sub license, and/or sell copies of the Software, + and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NON-INFRINGEMENT. IN NO EVENT SHALL ADAM JACKSON BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. + Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. + Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS + SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + + Copyright (c) 2007-2008 Dave Airlie + Copyright (c) 2007-2008 Jakob Bornecrantz + Copyright (c) 2008 Red Hat Inc. + Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA + Copyright (c) 2007-2009 Intel Corporation + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + IN THE SOFTWARE. + + + Copyright 2002-2006 Tungsten Graphics, Inc., Cedar Park, Texas. + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + + Copyright 2000 Gareth Hughes + Copyright 2002 Frank C. Earl + Copyright 2002-2003 Leif Delgass + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE COPYRIGHT OWNER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. + Copyright 2005 Stephane Marchesin. + All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + + + Copyright 2004 Felix Kuehling + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sub license, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NON-INFRINGEMENT. IN NO EVENT SHALL FELIX KUEHLING BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + Copyright 2005 Eric Anholt + Copyright © 2007-2008 Intel Corporation + Copyright © 2008 Jérôme Glisse + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + + + Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. + Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sub license, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + VIA, S3 GRAPHICS, AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR + OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + + + Copyright © 2009 VMware, Inc., Palo Alto, CA., USA + Copyright © 2007-2009 Red Hat Inc. + Copyright © 2007 Intel Corporation + Copyright 2006 Tungsten Graphics, Inc., Bismarck, ND., USA + Copyright © 2008 Dave Airlie + Copyright © 2008 Jérôme Glisse + Copyright © 2008 Nicolai Haehnle + All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sub license, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice (including the + next paragraph) shall be included in all copies or substantial portions + of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. + + + Copyright (C) 1999 Wittawat Yamwong + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + WITTAWAT YAMWONG, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,? + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR? + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE? + OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + Copyright (c) 2007 Nouveau Project + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF + OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + + + Copyright 2010 Jerome Glisse + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + on the rights to use, copy, modify, merge, publish, distribute, sub + license, and/or sell copies of the Software, and to permit persons to whom + the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice (including the next + paragraph) shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL + THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. --- libdrm-2.4.56.orig/debian/libdrm-dev.install +++ libdrm-2.4.56/debian/libdrm-dev.install @@ -0,0 +1,6 @@ +usr/include/* +usr/lib/*/lib*.a +usr/lib/*/lib*.so +usr/lib/*/pkgconfig/* +usr/share/man/man3/* +usr/share/man/man7/* --- libdrm-2.4.56.orig/debian/libdrm-exynos1.install +++ libdrm-2.4.56/debian/libdrm-exynos1.install @@ -0,0 +1 @@ +usr/lib/*/libdrm_exynos.so.1* --- libdrm-2.4.56.orig/debian/libdrm-exynos1.symbols +++ libdrm-2.4.56/debian/libdrm-exynos1.symbols @@ -0,0 +1,20 @@ +libdrm_exynos.so.1 libdrm-exynos1 #MINVER# + exynos_bo_create@Base 0 + exynos_bo_destroy@Base 0 + exynos_bo_from_name@Base 0 + exynos_bo_get_info@Base 0 + exynos_bo_get_name@Base 0 + exynos_bo_handle@Base 0 + exynos_bo_map@Base 0 + exynos_device_create@Base 0 + exynos_device_destroy@Base 0 + exynos_prime_fd_to_handle@Base 0 + exynos_prime_handle_to_fd@Base 0 + exynos_vidi_connection@Base 0 + g2d_blend@Base 0 + g2d_copy@Base 0 + g2d_copy_with_scale@Base 0 + g2d_exec@Base 0 + g2d_fini@Base 0 + g2d_init@Base 0 + g2d_solid_fill@Base 0 --- libdrm-2.4.56.orig/debian/libdrm-freedreno1.install +++ libdrm-2.4.56/debian/libdrm-freedreno1.install @@ -0,0 +1 @@ +usr/lib/*/libdrm_freedreno.so.1* --- libdrm-2.4.56.orig/debian/libdrm-freedreno1.symbols +++ libdrm-2.4.56/debian/libdrm-freedreno1.symbols @@ -0,0 +1,34 @@ +libdrm_freedreno.so.1 libdrm-freedreno1 #MINVER# + fd_bo_cpu_fini@Base 0 + fd_bo_cpu_prep@Base 0 + fd_bo_del@Base 0 + fd_bo_from_fbdev@Base 0 + fd_bo_from_handle@Base 0 + fd_bo_from_name@Base 0 + fd_bo_get_name@Base 0 + fd_bo_handle@Base 0 + fd_bo_map@Base 0 + fd_bo_new@Base 0 + fd_bo_ref@Base 0 + fd_bo_size@Base 0 + fd_device_del@Base 0 + fd_device_new@Base 0 + fd_device_new_dup@Base 0 + fd_device_ref@Base 0 + fd_pipe_del@Base 0 + fd_pipe_get_param@Base 0 + fd_pipe_new@Base 0 + fd_pipe_wait@Base 0 + fd_ringbuffer_del@Base 0 + fd_ringbuffer_emit_reloc_ring@Base 0 + fd_ringbuffer_flush@Base 0 + fd_ringbuffer_new@Base 0 + fd_ringbuffer_reloc@Base 0 + fd_ringbuffer_reset@Base 0 + fd_ringbuffer_set_parent@Base 0 + fd_ringbuffer_timestamp@Base 0 + fd_ringmarker_del@Base 0 + fd_ringmarker_dwords@Base 0 + fd_ringmarker_flush@Base 0 + fd_ringmarker_mark@Base 0 + fd_ringmarker_new@Base 0 --- libdrm-2.4.56.orig/debian/libdrm-intel1.install +++ libdrm-2.4.56/debian/libdrm-intel1.install @@ -0,0 +1 @@ +usr/lib/*/libdrm_intel.so.1* --- libdrm-2.4.56.orig/debian/libdrm-intel1.symbols +++ libdrm-2.4.56/debian/libdrm-intel1.symbols @@ -0,0 +1,69 @@ +libdrm_intel.so.1 libdrm-intel1 #MINVER# + drm_intel_bo_alloc@Base 2.4.1 + drm_intel_bo_alloc_for_render@Base 2.4.5 + drm_intel_bo_alloc_tiled@Base 2.4.15 + drm_intel_bo_busy@Base 2.4.13 + drm_intel_bo_disable_reuse@Base 2.4.10 + drm_intel_bo_emit_reloc@Base 2.4.1 + drm_intel_bo_emit_reloc_fence@Base 2.4.20 + drm_intel_bo_exec@Base 2.4.1 + drm_intel_bo_fake_alloc_static@Base 2.4.1 + drm_intel_bo_fake_disable_backing_store@Base 2.4.1 + drm_intel_bo_flink@Base 2.4.1 + drm_intel_bo_gem_create_from_name@Base 2.4.1 + drm_intel_bo_gem_create_from_prime@Base 2.4.38 + drm_intel_bo_gem_export_to_prime@Base 2.4.38 + drm_intel_bo_get_subdata@Base 2.4.1 + drm_intel_bo_get_tiling@Base 2.4.1 + drm_intel_bo_is_reusable@Base 2.4.21 + drm_intel_bo_madvise@Base 2.4.16 + drm_intel_bo_map@Base 2.4.1 + drm_intel_bo_mrb_exec@Base 2.4.23-3~ + drm_intel_bo_pin@Base 2.4.1 + drm_intel_bo_reference@Base 2.4.1 + drm_intel_bo_references@Base 2.4.15 + drm_intel_bo_set_tiling@Base 2.4.1 + drm_intel_bo_subdata@Base 2.4.1 + drm_intel_bo_unmap@Base 2.4.1 + drm_intel_bo_unpin@Base 2.4.1 + drm_intel_bo_unreference@Base 2.4.1 + drm_intel_bo_wait_rendering@Base 2.4.1 + drm_intel_bufmgr_check_aperture_space@Base 2.4.1 + drm_intel_bufmgr_destroy@Base 2.4.1 + drm_intel_bufmgr_fake_contended_lock_take@Base 2.4.1 + drm_intel_bufmgr_fake_evict_all@Base 2.4.1 + drm_intel_bufmgr_fake_init@Base 2.4.1 + drm_intel_bufmgr_fake_set_exec_callback@Base 2.4.1 + drm_intel_bufmgr_fake_set_fence_callback@Base 2.4.1 + drm_intel_bufmgr_fake_set_last_dispatch@Base 2.4.1 + drm_intel_bufmgr_gem_enable_fenced_relocs@Base 2.4.20 + drm_intel_bufmgr_gem_enable_reuse@Base 2.4.1 + drm_intel_bufmgr_gem_get_devid@Base 2.4.32 + drm_intel_bufmgr_gem_init@Base 2.4.1 + drm_intel_bufmgr_gem_set_aub_dump@Base 2.4.32 + drm_intel_bufmgr_gem_set_aub_filename@Base 2.4.46 + drm_intel_bufmgr_gem_set_aub_annotations@Base 2.4.34 + drm_intel_bufmgr_gem_set_vma_cache_size@Base 2.4.29 + drm_intel_bufmgr_set_debug@Base 2.4.1 + drm_intel_decode@Base 2.4.30 + drm_intel_decode_context_alloc@Base 2.4.30 + drm_intel_decode_context_free@Base 2.4.30 + drm_intel_decode_set_batch_pointer@Base 2.4.30 + drm_intel_decode_set_dump_past_end@Base 2.4.30 + drm_intel_decode_set_head_tail@Base 2.4.30 + drm_intel_decode_set_output_file@Base 2.4.30 + drm_intel_gem_bo_aub_dump_bmp@Base 2.4.32 + drm_intel_gem_bo_clear_relocs@Base 2.4.27 + drm_intel_gem_bo_context_exec@Base 2.4.36 + drm_intel_gem_bo_get_reloc_count@Base 2.4.27 + drm_intel_gem_bo_map_gtt@Base 2.4.3 + drm_intel_gem_bo_map_unsynchronized@Base 2.4.32 + drm_intel_gem_bo_start_gtt_access@Base 2.4.3 + drm_intel_gem_bo_unmap_gtt@Base 2.4.9 + drm_intel_gem_bo_wait@Base 2.4.36 + drm_intel_gem_context_create@Base 2.4.37 + drm_intel_gem_context_destroy@Base 2.4.37 + drm_intel_get_aperture_sizes@Base 2.4.26 + drm_intel_get_pipe_from_crtc_id@Base 2.4.11 + drm_intel_get_reset_stats@Base 2.4.48 + drm_intel_reg_read@Base 2.4.38 --- libdrm-2.4.56.orig/debian/libdrm-nouveau2.install +++ libdrm-2.4.56/debian/libdrm-nouveau2.install @@ -0,0 +1 @@ +usr/lib/*/libdrm_nouveau.so.2* --- libdrm-2.4.56.orig/debian/libdrm-nouveau2.lintian-overrides +++ libdrm-2.4.56/debian/libdrm-nouveau2.lintian-overrides @@ -0,0 +1 @@ +libdrm-nouveau2: symbols-declares-dependency-on-other-package libdrm-nouveau-private --- libdrm-2.4.56.orig/debian/libdrm-nouveau2.symbols +++ libdrm-2.4.56/debian/libdrm-nouveau2.symbols @@ -0,0 +1,37 @@ +libdrm_nouveau.so.2 libdrm-nouveau2 #MINVER# +| libdrm-nouveau-private + nouveau_bo_map@Base 2.4.34 + nouveau_bo_name_get@Base 2.4.34 + nouveau_bo_name_ref@Base 2.4.34 + nouveau_bo_new@Base 2.4.34 + nouveau_bo_prime_handle_ref@Base 2.4.38 + nouveau_bo_ref@Base 2.4.34 + nouveau_bo_set_prime@Base 2.4.38 + nouveau_bo_wait@Base 2.4.34 + nouveau_bo_wrap@Base 2.4.34 + nouveau_bufctx_del@Base 2.4.34 + nouveau_bufctx_mthd@Base 2.4.34 + nouveau_bufctx_new@Base 2.4.34 + nouveau_bufctx_refn@Base 2.4.34 + nouveau_bufctx_reset@Base 2.4.34 + nouveau_client_del@Base 2.4.34 + nouveau_client_new@Base 2.4.34 + nouveau_device_del@Base 2.4.34 + nouveau_device_open@Base 2.4.34 + nouveau_device_open_existing@Base 0 1 + nouveau_device_wrap@Base 2.4.34 + nouveau_getparam@Base 2.4.34 + nouveau_object_del@Base 2.4.34 + nouveau_object_find@Base 2.4.34 + nouveau_object_new@Base 2.4.34 + nouveau_pushbuf_bufctx@Base 2.4.34 + nouveau_pushbuf_data@Base 2.4.34 + nouveau_pushbuf_del@Base 2.4.34 + nouveau_pushbuf_kick@Base 2.4.34 + nouveau_pushbuf_new@Base 2.4.34 + nouveau_pushbuf_refd@Base 2.4.34 + nouveau_pushbuf_refn@Base 2.4.34 + nouveau_pushbuf_reloc@Base 2.4.34 + nouveau_pushbuf_space@Base 2.4.34 + nouveau_pushbuf_validate@Base 2.4.34 + nouveau_setparam@Base 2.4.34 --- libdrm-2.4.56.orig/debian/libdrm-omap1.install +++ libdrm-2.4.56/debian/libdrm-omap1.install @@ -0,0 +1 @@ +usr/lib/*/libdrm_omap.so.1* --- libdrm-2.4.56.orig/debian/libdrm-omap1.symbols +++ libdrm-2.4.56/debian/libdrm-omap1.symbols @@ -0,0 +1,19 @@ +libdrm_omap.so.1 libdrm-omap1 #MINVER# + omap_bo_cpu_fini@Base 2.4.33 + omap_bo_cpu_prep@Base 2.4.33 + omap_bo_del@Base 2.4.33 + omap_bo_dmabuf@Base 2.4.34 + omap_bo_from_dmabuf@Base 2.4.38 + omap_bo_from_name@Base 2.4.33 + omap_bo_get_name@Base 2.4.33 + omap_bo_handle@Base 2.4.33 + omap_bo_map@Base 2.4.33 + omap_bo_new@Base 2.4.33 + omap_bo_new_tiled@Base 2.4.33 + omap_bo_ref@Base 2.4.38 + omap_bo_size@Base 2.4.33 + omap_device_del@Base 2.4.33 + omap_device_new@Base 2.4.33 + omap_device_ref@Base 2.4.38 + omap_get_param@Base 2.4.33 + omap_set_param@Base 2.4.33 --- libdrm-2.4.56.orig/debian/libdrm-radeon1.install +++ libdrm-2.4.56/debian/libdrm-radeon1.install @@ -0,0 +1 @@ +usr/lib/*/libdrm_radeon.so.1* --- libdrm-2.4.56.orig/debian/libdrm-radeon1.symbols +++ libdrm-2.4.56/debian/libdrm-radeon1.symbols @@ -0,0 +1,45 @@ +libdrm_radeon.so.1 libdrm-radeon1 #MINVER# + radeon_bo_debug@Base 2.4.17 + radeon_bo_get_handle@Base 2.4.17 + radeon_bo_get_src_domain@Base 2.4.17 + radeon_bo_get_tiling@Base 2.4.17 + radeon_bo_is_busy@Base 2.4.17 + radeon_bo_is_referenced_by_cs@Base 2.4.17 + radeon_bo_is_static@Base 2.4.17 + radeon_bo_manager_gem_ctor@Base 2.4.17 + radeon_bo_manager_gem_dtor@Base 2.4.17 + radeon_bo_map@Base 2.4.17 + radeon_bo_open@Base 2.4.17 + radeon_bo_ref@Base 2.4.17 + radeon_bo_set_tiling@Base 2.4.17 + radeon_bo_unmap@Base 2.4.17 + radeon_bo_unref@Base 2.4.17 + radeon_bo_wait@Base 2.4.17 + radeon_cs_begin@Base 2.4.17 + radeon_cs_create@Base 2.4.17 + radeon_cs_destroy@Base 2.4.17 + radeon_cs_emit@Base 2.4.17 + radeon_cs_end@Base 2.4.17 + radeon_cs_erase@Base 2.4.17 + radeon_cs_get_id@Base 2.4.20 + radeon_cs_manager_gem_ctor@Base 2.4.17 + radeon_cs_manager_gem_dtor@Base 2.4.17 + radeon_cs_need_flush@Base 2.4.17 + radeon_cs_print@Base 2.4.17 + radeon_cs_set_limit@Base 2.4.17 + radeon_cs_space_add_persistent_bo@Base 2.4.17 + radeon_cs_space_check@Base 2.4.17 + radeon_cs_space_check_with_bo@Base 2.4.17 + radeon_cs_space_reset_bos@Base 2.4.17 + radeon_cs_space_set_flush@Base 2.4.17 + radeon_cs_write_reloc@Base 2.4.17 + radeon_gem_bo_open_prime@Base 2.4.39 + radeon_gem_get_kernel_name@Base 2.4.17 + radeon_gem_get_reloc_in_cs@Base 2.4.20 + radeon_gem_name_bo@Base 2.4.17 + radeon_gem_prime_share_bo@Base 2.4.39 + radeon_gem_set_domain@Base 2.4.17 + radeon_surface_best@Base 2.4.31 + radeon_surface_init@Base 2.4.31 + radeon_surface_manager_free@Base 2.4.31 + radeon_surface_manager_new@Base 2.4.31 --- libdrm-2.4.56.orig/debian/libdrm2-udeb.install +++ libdrm-2.4.56/debian/libdrm2-udeb.install @@ -0,0 +1 @@ +usr/lib/*/libdrm.so.2* --- libdrm-2.4.56.orig/debian/libdrm2.NEWS +++ libdrm-2.4.56/debian/libdrm2.NEWS @@ -0,0 +1,8 @@ +libdrm (2.3.0-4) experimental; urgency=low + + * We are now shipping libdrm with the default permissions set to 666, + rather than the upstream default of 660. If you have untrusted users, + you should configure the X server to explicitly use a mode of 660 in + the xorg.conf. + + -- David Nusinow Wed, 18 Apr 2007 22:44:21 -0400 --- libdrm-2.4.56.orig/debian/libdrm2.install +++ libdrm-2.4.56/debian/libdrm2.install @@ -0,0 +1 @@ +usr/lib/*/libdrm.so.2* --- libdrm-2.4.56.orig/debian/libdrm2.symbols +++ libdrm-2.4.56/debian/libdrm2.symbols @@ -0,0 +1,150 @@ +libdrm.so.2 libdrm2 #MINVER# + drmAddBufs@Base 2.3.1 + drmAddContextPrivateMapping@Base 2.3.1 + drmAddContextTag@Base 2.3.1 + drmAddMap@Base 2.3.1 + drmAgpAcquire@Base 2.3.1 + drmAgpAlloc@Base 2.3.1 + drmAgpBase@Base 2.3.1 + drmAgpBind@Base 2.3.1 + drmAgpDeviceId@Base 2.3.1 + drmAgpEnable@Base 2.3.1 + drmAgpFree@Base 2.3.1 + drmAgpGetMode@Base 2.3.1 + drmAgpMemoryAvail@Base 2.3.1 + drmAgpMemoryUsed@Base 2.3.1 + drmAgpRelease@Base 2.3.1 + drmAgpSize@Base 2.3.1 + drmAgpUnbind@Base 2.3.1 + drmAgpVendorId@Base 2.3.1 + drmAgpVersionMajor@Base 2.3.1 + drmAgpVersionMinor@Base 2.3.1 + drmAllocCpy@Base 2.4.3 + drmAuthMagic@Base 2.3.1 + drmAvailable@Base 2.3.1 + drmCheckModesettingSupported@Base 2.4.3 + drmClose@Base 2.3.1 + drmCloseOnce@Base 2.3.1 + drmCommandNone@Base 2.3.1 + drmCommandRead@Base 2.3.1 + drmCommandWrite@Base 2.3.1 + drmCommandWriteRead@Base 2.3.1 + drmCreateContext@Base 2.3.1 + drmCreateDrawable@Base 2.3.1 + drmCtlInstHandler@Base 2.3.1 + drmCtlUninstHandler@Base 2.3.1 + drmDMA@Base 2.3.1 + drmDelContextTag@Base 2.3.1 + drmDestroyContext@Base 2.3.1 + drmDestroyDrawable@Base 2.3.1 + drmDropMaster@Base 2.4.3 + drmError@Base 2.3.1 + drmFinish@Base 2.3.1 + drmFree@Base 2.3.1 + drmFreeBufs@Base 2.3.1 + drmFreeBusid@Base 2.3.1 + drmFreeReservedContextList@Base 2.3.1 + drmFreeVersion@Base 2.3.1 + drmGetBufInfo@Base 2.3.1 + drmGetBusid@Base 2.3.1 + drmGetCap@Base 2.4.25 + drmGetClient@Base 2.3.1 + drmGetContextFlags@Base 2.3.1 + drmGetContextPrivateMapping@Base 2.3.1 + drmGetContextTag@Base 2.3.1 + drmGetDeviceNameFromFd@Base 2.4.16 + drmGetEntry@Base 2.3.1 + drmGetHashTable@Base 2.3.1 + drmGetInterruptFromBusID@Base 2.3.1 + drmGetLibVersion@Base 2.3.1 + drmGetLock@Base 2.3.1 + drmGetMagic@Base 2.3.1 + drmGetMap@Base 2.3.1 + drmGetReservedContextList@Base 2.3.1 + drmGetStats@Base 2.3.1 + drmGetVersion@Base 2.3.1 + drmHandleEvent@Base 2.4.16 + drmHashCreate@Base 2.3.1 + drmHashDelete@Base 2.3.1 + drmHashDestroy@Base 2.3.1 + drmHashFirst@Base 2.3.1 + drmHashInsert@Base 2.3.1 + drmHashLookup@Base 2.3.1 + drmHashNext@Base 2.3.1 + drmIoctl@Base 2.4.3 + drmMalloc@Base 2.3.1 + drmMap@Base 2.3.1 + drmMapBufs@Base 2.3.1 + drmMarkBufs@Base 2.3.1 + drmModeAddFB2@Base 2.4.30 + drmModeAddFB@Base 2.4.3 + drmModeAttachMode@Base 2.4.3 + drmModeConnectorSetProperty@Base 2.4.3 + drmModeCrtcGetGamma@Base 2.4.3 + drmModeCrtcSetGamma@Base 2.4.3 + drmModeDetachMode@Base 2.4.3 + drmModeDirtyFB@Base 2.4.17 + drmModeFreeConnector@Base 2.4.3 + drmModeFreeCrtc@Base 2.4.3 + drmModeFreeEncoder@Base 2.4.3 + drmModeFreeFB@Base 2.4.3 + drmModeFreeModeInfo@Base 2.4.3 + drmModeFreeObjectProperties@Base 2.4.36 + drmModeFreePlane@Base 2.4.30 + drmModeFreePlaneResources@Base 2.4.31 + drmModeFreeProperty@Base 2.4.3 + drmModeFreePropertyBlob@Base 2.4.3 + drmModeFreeResources@Base 2.4.3 + drmModeGetConnector@Base 2.4.3 + drmModeGetCrtc@Base 2.4.3 + drmModeGetEncoder@Base 2.4.3 + drmModeGetFB@Base 2.4.3 + drmModeGetPlane@Base 2.4.30 + drmModeGetPlaneResources@Base 2.4.30 + drmModeGetProperty@Base 2.4.3 + drmModeGetPropertyBlob@Base 2.4.3 + drmModeGetResources@Base 2.4.3 + drmModeMoveCursor@Base 2.4.3 + drmModeObjectGetProperties@Base 2.4.36 + drmModeObjectSetProperty@Base 2.4.36 + drmModePageFlip@Base 2.4.17 + drmModeRmFB@Base 2.4.3 + drmModeSetCrtc@Base 2.4.3 + drmModeSetCursor2@Base 2.4.46 + drmModeSetCursor@Base 2.4.3 + drmModeSetPlane@Base 2.4.30 + drmMsg@Base 2.4.1 + drmOpen@Base 2.3.1 + drmOpenControl@Base 2.4.3 + drmOpenOnce@Base 2.3.1 + drmPrimeFDToHandle@Base 2.4.38 + drmPrimeHandleToFD@Base 2.4.38 + drmRandom@Base 2.3.1 + drmRandomCreate@Base 2.3.1 + drmRandomDestroy@Base 2.3.1 + drmRandomDouble@Base 2.3.1 + drmRmMap@Base 2.3.1 + drmSLCreate@Base 2.3.1 + drmSLDelete@Base 2.3.1 + drmSLDestroy@Base 2.3.1 + drmSLDump@Base 2.3.1 + drmSLFirst@Base 2.3.1 + drmSLInsert@Base 2.3.1 + drmSLLookup@Base 2.3.1 + drmSLLookupNeighbors@Base 2.3.1 + drmSLNext@Base 2.3.1 + drmScatterGatherAlloc@Base 2.3.1 + drmScatterGatherFree@Base 2.3.1 + drmSetBusid@Base 2.3.1 + drmSetClientCap@Base 2.4.47 + drmSetContextFlags@Base 2.3.1 + drmSetDebugMsgFunction@Base 2.3.1 + drmSetInterfaceVersion@Base 2.3.1 + drmSetMaster@Base 2.4.3 + drmSetServerInfo@Base 2.3.1 + drmSwitchToContext@Base 2.3.1 + drmUnlock@Base 2.3.1 + drmUnmap@Base 2.3.1 + drmUnmapBufs@Base 2.3.1 + drmUpdateDrawableInfo@Base 2.3.1 + drmWaitVBlank@Base 2.3.1 --- libdrm-2.4.56.orig/debian/patches/01_default_perms.diff +++ libdrm-2.4.56/debian/patches/01_default_perms.diff @@ -0,0 +1,13 @@ +Index: libdrm/xf86drm.h +=================================================================== +--- libdrm.orig/xf86drm.h ++++ libdrm/xf86drm.h +@@ -70,7 +70,7 @@ + /* Default /dev/dri directory permissions 0755 */ + #define DRM_DEV_DIRMODE \ + (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH) +-#define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP) ++#define DRM_DEV_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) + + #define DRM_DIR_NAME "/dev/dri" + #define DRM_DEV_NAME "%s/card%d" --- libdrm-2.4.56.orig/debian/patches/03_hide_symbols.diff +++ libdrm-2.4.56/debian/patches/03_hide_symbols.diff @@ -0,0 +1,2389 @@ +diff --git a/Makefile.am b/Makefile.am +index 826c30d..65680da 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -69,6 +69,7 @@ libdrm_la_SOURCES = \ + xf86drmSL.c \ + xf86drmMode.c \ + xf86atomic.h \ ++ libdrm.h \ + libdrm_lists.h + + libdrmincludedir = ${includedir} +diff --git a/configure.ac b/configure.ac +index 5e9cb6c..bb0559a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -366,6 +366,26 @@ AC_ARG_WITH([kernel-source], + [kernel_source="$with_kernel_source"]) + AC_SUBST(kernel_source) + ++dnl Add flags for gcc and g++ ++if test "x$GCC" = xyes; then ++ # Enable -fvisibility=hidden if using a gcc that supports it ++ save_CFLAGS="$CFLAGS" ++ AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden]) ++ VISIBILITY_CFLAGS="-fvisibility=hidden" ++ CFLAGS="$CFLAGS $VISIBILITY_CFLAGS" ++ AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), ++ [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]); ++ ++ # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed. ++ CFLAGS=$save_CFLAGS ++ ++ if test "x$VISIBILITY_CFLAGS" != x; then ++ AC_DEFINE(HAVE_VISIBILITY, 1, [Compiler has -fvisibility support]) ++ fi ++ ++ AC_SUBST([VISIBILITY_CFLAGS]) ++fi ++ + AC_SUBST(WARN_CFLAGS) + AC_CONFIG_FILES([ + Makefile +diff --git a/exynos/Makefile.am b/exynos/Makefile.am +index 0a2663a..06bee00 100644 +--- a/exynos/Makefile.am ++++ b/exynos/Makefile.am +@@ -1,5 +1,6 @@ + AM_CFLAGS = \ + $(WARN_CFLAGS) \ ++ $(VISIBILITY_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/exynos \ + $(PTHREADSTUBS_CFLAGS) \ +diff --git a/exynos/exynos_drm.c b/exynos/exynos_drm.c +index 5fff259..4c7dd13 100644 +--- a/exynos/exynos_drm.c ++++ b/exynos/exynos_drm.c +@@ -38,6 +38,7 @@ + + #include + ++#include "libdrm.h" + #include "exynos_drm.h" + #include "exynos_drmif.h" + +@@ -48,7 +49,7 @@ + * + * if true, return the device object else NULL. + */ +-struct exynos_device * exynos_device_create(int fd) ++drm_public struct exynos_device * exynos_device_create(int fd) + { + struct exynos_device *dev; + +@@ -69,7 +70,7 @@ struct exynos_device * exynos_device_create(int fd) + * + * @dev: exynos drm device object. + */ +-void exynos_device_destroy(struct exynos_device *dev) ++drm_public void exynos_device_destroy(struct exynos_device *dev) + { + free(dev); + } +@@ -87,8 +88,8 @@ void exynos_device_destroy(struct exynos_device *dev) + * + * if true, return a exynos buffer object else NULL. + */ +-struct exynos_bo * exynos_bo_create(struct exynos_device *dev, +- size_t size, uint32_t flags) ++drm_public struct exynos_bo * exynos_bo_create(struct exynos_device *dev, ++ size_t size, uint32_t flags) + { + struct exynos_bo *bo; + struct drm_exynos_gem_create req = { +@@ -141,8 +142,8 @@ fail: + * + * if true, return 0 else negative. + */ +-int exynos_bo_get_info(struct exynos_device *dev, uint32_t handle, +- size_t *size, uint32_t *flags) ++drm_public int exynos_bo_get_info(struct exynos_device *dev, uint32_t handle, ++ size_t *size, uint32_t *flags) + { + int ret; + struct drm_exynos_gem_info req = { +@@ -167,7 +168,7 @@ int exynos_bo_get_info(struct exynos_device *dev, uint32_t handle, + * + * @bo: a exynos buffer object to be destroyed. + */ +-void exynos_bo_destroy(struct exynos_bo *bo) ++drm_public void exynos_bo_destroy(struct exynos_bo *bo) + { + if (!bo) + return; +@@ -199,7 +200,8 @@ void exynos_bo_destroy(struct exynos_bo *bo) + * if true, return a exynos buffer object else NULL. + * + */ +-struct exynos_bo * exynos_bo_from_name(struct exynos_device *dev, uint32_t name) ++drm_public struct exynos_bo * ++exynos_bo_from_name(struct exynos_device *dev, uint32_t name) + { + struct exynos_bo *bo; + struct drm_gem_open req = { +@@ -241,7 +243,7 @@ err_free_bo: + * + * if true, return 0 else negative. + */ +-int exynos_bo_get_name(struct exynos_bo *bo, uint32_t *name) ++drm_public int exynos_bo_get_name(struct exynos_bo *bo, uint32_t *name) + { + if (!bo->name) { + struct drm_gem_flink req = { +@@ -264,7 +266,7 @@ int exynos_bo_get_name(struct exynos_bo *bo, uint32_t *name) + return 0; + } + +-uint32_t exynos_bo_handle(struct exynos_bo *bo) ++drm_public uint32_t exynos_bo_handle(struct exynos_bo *bo) + { + return bo->handle; + } +@@ -277,7 +279,7 @@ uint32_t exynos_bo_handle(struct exynos_bo *bo) + * + * if true, user pointer mmaped else NULL. + */ +-void *exynos_bo_map(struct exynos_bo *bo) ++drm_public void *exynos_bo_map(struct exynos_bo *bo) + { + if (!bo->vaddr) { + struct exynos_device *dev = bo->dev; +@@ -309,8 +311,8 @@ void *exynos_bo_map(struct exynos_bo *bo) + * + * @return: 0 on success, -1 on error, and errno will be set + */ +-int exynos_prime_handle_to_fd(struct exynos_device *dev, uint32_t handle, +- int *fd) ++drm_public int ++exynos_prime_handle_to_fd(struct exynos_device *dev, uint32_t handle, int *fd) + { + return drmPrimeHandleToFD(dev->fd, handle, 0, fd); + } +@@ -324,8 +326,8 @@ int exynos_prime_handle_to_fd(struct exynos_device *dev, uint32_t handle, + * + * @return: 0 on success, -1 on error, and errno will be set + */ +-int exynos_prime_fd_to_handle(struct exynos_device *dev, int fd, +- uint32_t *handle) ++drm_public int ++exynos_prime_fd_to_handle(struct exynos_device *dev, int fd, uint32_t *handle) + { + return drmPrimeFDToHandle(dev->fd, fd, handle); + } +@@ -347,8 +349,9 @@ int exynos_prime_fd_to_handle(struct exynos_device *dev, int fd, + * + * if true, return 0 else negative. + */ +-int exynos_vidi_connection(struct exynos_device *dev, uint32_t connect, +- uint32_t ext, void *edid) ++drm_public int ++exynos_vidi_connection(struct exynos_device *dev, uint32_t connect, ++ uint32_t ext, void *edid) + { + struct drm_exynos_vidi_connection req = { + .connection = connect, +diff --git a/exynos/exynos_fimg2d.c b/exynos/exynos_fimg2d.c +index fc281b6..ce1ba1e 100644 +--- a/exynos/exynos_fimg2d.c ++++ b/exynos/exynos_fimg2d.c +@@ -24,6 +24,7 @@ + + #include + ++#include "libdrm.h" + #include "exynos_drm.h" + #include "fimg2d_reg.h" + #include "fimg2d.h" +@@ -184,7 +185,7 @@ static int g2d_flush(struct g2d_context *ctx) + * + * fd: a file descriptor to drm device driver opened. + */ +-struct g2d_context *g2d_init(int fd) ++drm_public struct g2d_context *g2d_init(int fd) + { + struct drm_exynos_g2d_get_ver ver; + struct g2d_context *ctx; +@@ -212,7 +213,7 @@ struct g2d_context *g2d_init(int fd) + return ctx; + } + +-void g2d_fini(struct g2d_context *ctx) ++drm_public void g2d_fini(struct g2d_context *ctx) + { + if (ctx) + free(ctx); +@@ -223,7 +224,7 @@ void g2d_fini(struct g2d_context *ctx) + * + * @ctx: a pointer to g2d_context structure. + */ +-int g2d_exec(struct g2d_context *ctx) ++drm_public int g2d_exec(struct g2d_context *ctx) + { + struct drm_exynos_g2d_exec exec; + int ret; +@@ -255,7 +256,8 @@ int g2d_exec(struct g2d_context *ctx) + * @w: width value to buffer filled with given color data. + * @h: height value to buffer filled with given color data. + */ +-int g2d_solid_fill(struct g2d_context *ctx, struct g2d_image *img, ++drm_public int ++g2d_solid_fill(struct g2d_context *ctx, struct g2d_image *img, + unsigned int x, unsigned int y, unsigned int w, + unsigned int h) + { +@@ -315,7 +317,8 @@ int g2d_solid_fill(struct g2d_context *ctx, struct g2d_image *img, + * @w: width value to source and destination buffers. + * @h: height value to source and destination buffers. + */ +-int g2d_copy(struct g2d_context *ctx, struct g2d_image *src, ++drm_public int ++g2d_copy(struct g2d_context *ctx, struct g2d_image *src, + struct g2d_image *dst, unsigned int src_x, unsigned int src_y, + unsigned int dst_x, unsigned dst_y, unsigned int w, + unsigned int h) +@@ -414,7 +417,8 @@ int g2d_copy(struct g2d_context *ctx, struct g2d_image *src, + * @negative: indicate that it uses color negative to source and + * destination buffers. + */ +-int g2d_copy_with_scale(struct g2d_context *ctx, struct g2d_image *src, ++drm_public int ++g2d_copy_with_scale(struct g2d_context *ctx, struct g2d_image *src, + struct g2d_image *dst, unsigned int src_x, + unsigned int src_y, unsigned int src_w, + unsigned int src_h, unsigned int dst_x, +@@ -526,7 +530,8 @@ int g2d_copy_with_scale(struct g2d_context *ctx, struct g2d_image *src, + * @h: height value to source and destination buffer. + * @op: blend operation type. + */ +-int g2d_blend(struct g2d_context *ctx, struct g2d_image *src, ++drm_public int ++g2d_blend(struct g2d_context *ctx, struct g2d_image *src, + struct g2d_image *dst, unsigned int src_x, + unsigned int src_y, unsigned int dst_x, unsigned int dst_y, + unsigned int w, unsigned int h, enum e_g2d_op op) +diff --git a/freedreno/Makefile.am b/freedreno/Makefile.am +index 7903e5b..49471e9 100644 +--- a/freedreno/Makefile.am ++++ b/freedreno/Makefile.am +@@ -2,6 +2,7 @@ AUTOMAKE_OPTIONS=subdir-objects + + AM_CFLAGS = \ + $(WARN_CFLAGS) \ ++ $(VISIBILITY_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/freedreno \ + $(PTHREADSTUBS_CFLAGS) \ +diff --git a/freedreno/freedreno_bo.c b/freedreno/freedreno_bo.c +index 8cea4de..3a2e464 100644 +--- a/freedreno/freedreno_bo.c ++++ b/freedreno/freedreno_bo.c +@@ -163,8 +163,8 @@ static struct fd_bo *find_in_bucket(struct fd_device *dev, + } + + +-struct fd_bo * fd_bo_new(struct fd_device *dev, +- uint32_t size, uint32_t flags) ++drm_public struct fd_bo * ++fd_bo_new(struct fd_device *dev, uint32_t size, uint32_t flags) + { + struct fd_bo *bo = NULL; + struct fd_bo_bucket *bucket; +@@ -197,8 +197,8 @@ struct fd_bo * fd_bo_new(struct fd_device *dev, + return bo; + } + +-struct fd_bo *fd_bo_from_handle(struct fd_device *dev, +- uint32_t handle, uint32_t size) ++drm_public struct fd_bo * ++fd_bo_from_handle(struct fd_device *dev, uint32_t handle, uint32_t size) + { + struct fd_bo *bo = NULL; + +@@ -209,7 +209,7 @@ struct fd_bo *fd_bo_from_handle(struct fd_device *dev, + return bo; + } + +-struct fd_bo * fd_bo_from_name(struct fd_device *dev, uint32_t name) ++drm_public struct fd_bo * fd_bo_from_name(struct fd_device *dev, uint32_t name) + { + struct drm_gem_open req = { + .name = name, +@@ -242,13 +242,13 @@ out_unlock: + return bo; + } + +-struct fd_bo * fd_bo_ref(struct fd_bo *bo) ++drm_public struct fd_bo * fd_bo_ref(struct fd_bo *bo) + { + atomic_inc(&bo->refcnt); + return bo; + } + +-void fd_bo_del(struct fd_bo *bo) ++drm_public void fd_bo_del(struct fd_bo *bo) + { + struct fd_device *dev = bo->dev; + +@@ -307,7 +307,7 @@ static void bo_del(struct fd_bo *bo) + bo->funcs->destroy(bo); + } + +-int fd_bo_get_name(struct fd_bo *bo, uint32_t *name) ++drm_public int fd_bo_get_name(struct fd_bo *bo, uint32_t *name) + { + if (!bo->name) { + struct drm_gem_flink req = { +@@ -330,17 +330,17 @@ int fd_bo_get_name(struct fd_bo *bo, uint32_t *name) + return 0; + } + +-uint32_t fd_bo_handle(struct fd_bo *bo) ++drm_public uint32_t fd_bo_handle(struct fd_bo *bo) + { + return bo->handle; + } + +-uint32_t fd_bo_size(struct fd_bo *bo) ++drm_public uint32_t fd_bo_size(struct fd_bo *bo) + { + return bo->size; + } + +-void * fd_bo_map(struct fd_bo *bo) ++drm_public void * fd_bo_map(struct fd_bo *bo) + { + if (!bo->map) { + uint64_t offset; +@@ -362,12 +362,12 @@ void * fd_bo_map(struct fd_bo *bo) + } + + /* a bit odd to take the pipe as an arg, but it's a, umm, quirk of kgsl.. */ +-int fd_bo_cpu_prep(struct fd_bo *bo, struct fd_pipe *pipe, uint32_t op) ++drm_public int fd_bo_cpu_prep(struct fd_bo *bo, struct fd_pipe *pipe, uint32_t op) + { + return bo->funcs->cpu_prep(bo, pipe, op); + } + +-void fd_bo_cpu_fini(struct fd_bo *bo) ++drm_public void fd_bo_cpu_fini(struct fd_bo *bo) + { + bo->funcs->cpu_fini(bo); + } +diff --git a/freedreno/freedreno_device.c b/freedreno/freedreno_device.c +index c34963c..2d3aa33 100644 +--- a/freedreno/freedreno_device.c ++++ b/freedreno/freedreno_device.c +@@ -76,7 +76,7 @@ init_cache_buckets(struct fd_device *dev) + } + } + +-struct fd_device * fd_device_new(int fd) ++drm_public struct fd_device * fd_device_new(int fd) + { + struct fd_device *dev; + drmVersionPtr version; +@@ -115,7 +115,7 @@ struct fd_device * fd_device_new(int fd) + /* like fd_device_new() but creates it's own private dup() of the fd + * which is close()d when the device is finalized. + */ +-struct fd_device * fd_device_new_dup(int fd) ++drm_public struct fd_device * fd_device_new_dup(int fd) + { + struct fd_device *dev = fd_device_new(dup(fd)); + if (dev) +@@ -123,7 +123,7 @@ struct fd_device * fd_device_new_dup(int fd) + return dev; + } + +-struct fd_device * fd_device_ref(struct fd_device *dev) ++drm_public struct fd_device * fd_device_ref(struct fd_device *dev) + { + atomic_inc(&dev->refcnt); + return dev; +@@ -146,7 +146,7 @@ void fd_device_del_locked(struct fd_device *dev) + fd_device_del_impl(dev); + } + +-void fd_device_del(struct fd_device *dev) ++drm_public void fd_device_del(struct fd_device *dev) + { + if (!atomic_dec_and_test(&dev->refcnt)) + return; +diff --git a/freedreno/freedreno_pipe.c b/freedreno/freedreno_pipe.c +index 805bf00..f55aaa4 100644 +--- a/freedreno/freedreno_pipe.c ++++ b/freedreno/freedreno_pipe.c +@@ -29,7 +29,8 @@ + #include "freedreno_drmif.h" + #include "freedreno_priv.h" + +-struct fd_pipe * fd_pipe_new(struct fd_device *dev, enum fd_pipe_id id) ++drm_public struct fd_pipe * ++fd_pipe_new(struct fd_device *dev, enum fd_pipe_id id) + { + struct fd_pipe *pipe = NULL; + +@@ -54,18 +55,18 @@ fail: + return NULL; + } + +-void fd_pipe_del(struct fd_pipe *pipe) ++drm_public void fd_pipe_del(struct fd_pipe *pipe) + { + pipe->funcs->destroy(pipe); + } + +-int fd_pipe_get_param(struct fd_pipe *pipe, enum fd_param_id param, +- uint64_t *value) ++drm_public int fd_pipe_get_param(struct fd_pipe *pipe, ++ enum fd_param_id param, uint64_t *value) + { + return pipe->funcs->get_param(pipe, param, value); + } + +-int fd_pipe_wait(struct fd_pipe *pipe, uint32_t timestamp) ++drm_public int fd_pipe_wait(struct fd_pipe *pipe, uint32_t timestamp) + { + return pipe->funcs->wait(pipe, timestamp); + } +diff --git a/freedreno/freedreno_priv.h b/freedreno/freedreno_priv.h +index 7438485..6bd1dec 100644 +--- a/freedreno/freedreno_priv.h ++++ b/freedreno/freedreno_priv.h +@@ -29,6 +29,10 @@ + #ifndef FREEDRENO_PRIV_H_ + #define FREEDRENO_PRIV_H_ + ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ + #include + #include + #include +@@ -41,6 +45,7 @@ + #include + #include + ++#include "libdrm.h" + #include "xf86drm.h" + #include "xf86atomic.h" + +diff --git a/freedreno/freedreno_ringbuffer.c b/freedreno/freedreno_ringbuffer.c +index b9849c5..def869f 100644 +--- a/freedreno/freedreno_ringbuffer.c ++++ b/freedreno/freedreno_ringbuffer.c +@@ -32,8 +32,8 @@ + #include "freedreno_priv.h" + #include "freedreno_ringbuffer.h" + +-struct fd_ringbuffer * fd_ringbuffer_new(struct fd_pipe *pipe, +- uint32_t size) ++drm_public struct fd_ringbuffer * ++fd_ringbuffer_new(struct fd_pipe *pipe, uint32_t size) + { + struct fd_ringbuffer *ring; + +@@ -51,7 +51,7 @@ struct fd_ringbuffer * fd_ringbuffer_new(struct fd_pipe *pipe, + return ring; + } + +-void fd_ringbuffer_del(struct fd_ringbuffer *ring) ++drm_public void fd_ringbuffer_del(struct fd_ringbuffer *ring) + { + ring->funcs->destroy(ring); + } +@@ -60,13 +60,13 @@ void fd_ringbuffer_del(struct fd_ringbuffer *ring) + * the IB source) as it's parent before emitting reloc's, to ensure + * the bookkeeping works out properly. + */ +-void fd_ringbuffer_set_parent(struct fd_ringbuffer *ring, +- struct fd_ringbuffer *parent) ++drm_public void fd_ringbuffer_set_parent(struct fd_ringbuffer *ring, ++ struct fd_ringbuffer *parent) + { + ring->parent = parent; + } + +-void fd_ringbuffer_reset(struct fd_ringbuffer *ring) ++drm_public void fd_ringbuffer_reset(struct fd_ringbuffer *ring) + { + uint32_t *start = ring->start; + if (ring->pipe->id == FD_PIPE_2D) +@@ -77,30 +77,32 @@ void fd_ringbuffer_reset(struct fd_ringbuffer *ring) + } + + /* maybe get rid of this and use fd_ringmarker_flush() from DDX too? */ +-int fd_ringbuffer_flush(struct fd_ringbuffer *ring) ++drm_public int fd_ringbuffer_flush(struct fd_ringbuffer *ring) + { + return ring->funcs->flush(ring, ring->last_start); + } + +-uint32_t fd_ringbuffer_timestamp(struct fd_ringbuffer *ring) ++drm_public uint32_t fd_ringbuffer_timestamp(struct fd_ringbuffer *ring) + { + return ring->last_timestamp; + } + +-void fd_ringbuffer_reloc(struct fd_ringbuffer *ring, +- const struct fd_reloc *reloc) ++drm_public void fd_ringbuffer_reloc(struct fd_ringbuffer *ring, ++ const struct fd_reloc *reloc) + { + ring->funcs->emit_reloc(ring, reloc); + } + +-void fd_ringbuffer_emit_reloc_ring(struct fd_ringbuffer *ring, +- struct fd_ringmarker *target, struct fd_ringmarker *end) ++drm_public void ++fd_ringbuffer_emit_reloc_ring(struct fd_ringbuffer *ring, ++ struct fd_ringmarker *target, ++ struct fd_ringmarker *end) + { + assert(target->ring == end->ring); + ring->funcs->emit_reloc_ring(ring, target, end); + } + +-struct fd_ringmarker * fd_ringmarker_new(struct fd_ringbuffer *ring) ++drm_public struct fd_ringmarker * fd_ringmarker_new(struct fd_ringbuffer *ring) + { + struct fd_ringmarker *marker = NULL; + +@@ -117,23 +119,23 @@ struct fd_ringmarker * fd_ringmarker_new(struct fd_ringbuffer *ring) + return marker; + } + +-void fd_ringmarker_del(struct fd_ringmarker *marker) ++drm_public void fd_ringmarker_del(struct fd_ringmarker *marker) + { + free(marker); + } + +-void fd_ringmarker_mark(struct fd_ringmarker *marker) ++drm_public void fd_ringmarker_mark(struct fd_ringmarker *marker) + { + marker->cur = marker->ring->cur; + } + +-uint32_t fd_ringmarker_dwords(struct fd_ringmarker *start, +- struct fd_ringmarker *end) ++drm_public uint32_t fd_ringmarker_dwords(struct fd_ringmarker *start, ++ struct fd_ringmarker *end) + { + return end->cur - start->cur; + } + +-int fd_ringmarker_flush(struct fd_ringmarker *marker) ++drm_public int fd_ringmarker_flush(struct fd_ringmarker *marker) + { + struct fd_ringbuffer *ring = marker->ring; + return ring->funcs->flush(ring, marker->cur); +diff --git a/freedreno/kgsl/kgsl_bo.c b/freedreno/kgsl/kgsl_bo.c +index 19a1008..c868097 100644 +--- a/freedreno/kgsl/kgsl_bo.c ++++ b/freedreno/kgsl/kgsl_bo.c +@@ -171,8 +171,8 @@ struct fd_bo * kgsl_bo_from_handle(struct fd_device *dev, + return bo; + } + +-struct fd_bo * fd_bo_from_fbdev(struct fd_pipe *pipe, +- int fbfd, uint32_t size) ++drm_public struct fd_bo * ++fd_bo_from_fbdev(struct fd_pipe *pipe, int fbfd, uint32_t size) + { + struct fd_bo *bo; + +diff --git a/intel/Makefile.am b/intel/Makefile.am +index f49b099..f734b0b 100644 +--- a/intel/Makefile.am ++++ b/intel/Makefile.am +@@ -24,6 +24,7 @@ + + AM_CFLAGS = \ + $(WARN_CFLAGS) \ ++ $(VISIBILITY_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/intel \ + $(PTHREADSTUBS_CFLAGS) \ +diff --git a/intel/intel_bufmgr.c b/intel/intel_bufmgr.c +index 905556f..03dba50 100644 +--- a/intel/intel_bufmgr.c ++++ b/intel/intel_bufmgr.c +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include "libdrm.h" + #include "intel_bufmgr.h" + #include "intel_bufmgr_priv.h" + #include "xf86drm.h" +@@ -46,21 +47,21 @@ + * Convenience functions for buffer management methods. + */ + +-drm_intel_bo *drm_intel_bo_alloc(drm_intel_bufmgr *bufmgr, const char *name, +- unsigned long size, unsigned int alignment) ++drm_public drm_intel_bo * ++drm_intel_bo_alloc(drm_intel_bufmgr *bufmgr, const char *name, ++ unsigned long size, unsigned int alignment) + { + return bufmgr->bo_alloc(bufmgr, name, size, alignment); + } + +-drm_intel_bo *drm_intel_bo_alloc_for_render(drm_intel_bufmgr *bufmgr, +- const char *name, +- unsigned long size, +- unsigned int alignment) ++drm_public drm_intel_bo * ++drm_intel_bo_alloc_for_render(drm_intel_bufmgr *bufmgr, const char *name, ++ unsigned long size, unsigned int alignment) + { + return bufmgr->bo_alloc_for_render(bufmgr, name, size, alignment); + } + +-drm_intel_bo * ++drm_public drm_intel_bo * + drm_intel_bo_alloc_tiled(drm_intel_bufmgr *bufmgr, const char *name, + int x, int y, int cpp, uint32_t *tiling_mode, + unsigned long *pitch, unsigned long flags) +@@ -69,12 +70,14 @@ drm_intel_bo_alloc_tiled(drm_intel_bufmgr *bufmgr, const char *name, + tiling_mode, pitch, flags); + } + +-void drm_intel_bo_reference(drm_intel_bo *bo) ++drm_public void ++drm_intel_bo_reference(drm_intel_bo *bo) + { + bo->bufmgr->bo_reference(bo); + } + +-void drm_intel_bo_unreference(drm_intel_bo *bo) ++drm_public void ++drm_intel_bo_unreference(drm_intel_bo *bo) + { + if (bo == NULL) + return; +@@ -82,24 +85,26 @@ void drm_intel_bo_unreference(drm_intel_bo *bo) + bo->bufmgr->bo_unreference(bo); + } + +-int drm_intel_bo_map(drm_intel_bo *buf, int write_enable) ++drm_public int ++drm_intel_bo_map(drm_intel_bo *buf, int write_enable) + { + return buf->bufmgr->bo_map(buf, write_enable); + } + +-int drm_intel_bo_unmap(drm_intel_bo *buf) ++drm_public int ++drm_intel_bo_unmap(drm_intel_bo *buf) + { + return buf->bufmgr->bo_unmap(buf); + } + +-int ++drm_public int + drm_intel_bo_subdata(drm_intel_bo *bo, unsigned long offset, + unsigned long size, const void *data) + { + return bo->bufmgr->bo_subdata(bo, offset, size, data); + } + +-int ++drm_public int + drm_intel_bo_get_subdata(drm_intel_bo *bo, unsigned long offset, + unsigned long size, void *data) + { +@@ -118,24 +123,26 @@ drm_intel_bo_get_subdata(drm_intel_bo *bo, unsigned long offset, + return 0; + } + +-void drm_intel_bo_wait_rendering(drm_intel_bo *bo) ++drm_public void ++drm_intel_bo_wait_rendering(drm_intel_bo *bo) + { + bo->bufmgr->bo_wait_rendering(bo); + } + +-void drm_intel_bufmgr_destroy(drm_intel_bufmgr *bufmgr) ++drm_public void ++drm_intel_bufmgr_destroy(drm_intel_bufmgr *bufmgr) + { + bufmgr->destroy(bufmgr); + } + +-int ++drm_public int + drm_intel_bo_exec(drm_intel_bo *bo, int used, + drm_clip_rect_t * cliprects, int num_cliprects, int DR4) + { + return bo->bufmgr->bo_exec(bo, used, cliprects, num_cliprects, DR4); + } + +-int ++drm_public int + drm_intel_bo_mrb_exec(drm_intel_bo *bo, int used, + drm_clip_rect_t *cliprects, int num_cliprects, int DR4, + unsigned int rings) +@@ -155,17 +162,20 @@ drm_intel_bo_mrb_exec(drm_intel_bo *bo, int used, + } + } + +-void drm_intel_bufmgr_set_debug(drm_intel_bufmgr *bufmgr, int enable_debug) ++drm_public void ++drm_intel_bufmgr_set_debug(drm_intel_bufmgr *bufmgr, int enable_debug) + { + bufmgr->debug = enable_debug; + } + +-int drm_intel_bufmgr_check_aperture_space(drm_intel_bo ** bo_array, int count) ++drm_public int ++drm_intel_bufmgr_check_aperture_space(drm_intel_bo ** bo_array, int count) + { + return bo_array[0]->bufmgr->check_aperture_space(bo_array, count); + } + +-int drm_intel_bo_flink(drm_intel_bo *bo, uint32_t * name) ++drm_public int ++drm_intel_bo_flink(drm_intel_bo *bo, uint32_t * name) + { + if (bo->bufmgr->bo_flink) + return bo->bufmgr->bo_flink(bo, name); +@@ -173,7 +183,7 @@ int drm_intel_bo_flink(drm_intel_bo *bo, uint32_t * name) + return -ENODEV; + } + +-int ++drm_public int + drm_intel_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset, + drm_intel_bo *target_bo, uint32_t target_offset, + uint32_t read_domains, uint32_t write_domain) +@@ -184,7 +194,7 @@ drm_intel_bo_emit_reloc(drm_intel_bo *bo, uint32_t offset, + } + + /* For fence registers, not GL fences */ +-int ++drm_public int + drm_intel_bo_emit_reloc_fence(drm_intel_bo *bo, uint32_t offset, + drm_intel_bo *target_bo, uint32_t target_offset, + uint32_t read_domains, uint32_t write_domain) +@@ -195,7 +205,8 @@ drm_intel_bo_emit_reloc_fence(drm_intel_bo *bo, uint32_t offset, + } + + +-int drm_intel_bo_pin(drm_intel_bo *bo, uint32_t alignment) ++drm_public int ++drm_intel_bo_pin(drm_intel_bo *bo, uint32_t alignment) + { + if (bo->bufmgr->bo_pin) + return bo->bufmgr->bo_pin(bo, alignment); +@@ -203,7 +214,8 @@ int drm_intel_bo_pin(drm_intel_bo *bo, uint32_t alignment) + return -ENODEV; + } + +-int drm_intel_bo_unpin(drm_intel_bo *bo) ++drm_public int ++drm_intel_bo_unpin(drm_intel_bo *bo) + { + if (bo->bufmgr->bo_unpin) + return bo->bufmgr->bo_unpin(bo); +@@ -211,8 +223,9 @@ int drm_intel_bo_unpin(drm_intel_bo *bo) + return -ENODEV; + } + +-int drm_intel_bo_set_tiling(drm_intel_bo *bo, uint32_t * tiling_mode, +- uint32_t stride) ++drm_public int ++drm_intel_bo_set_tiling(drm_intel_bo *bo, uint32_t * tiling_mode, ++ uint32_t stride) + { + if (bo->bufmgr->bo_set_tiling) + return bo->bufmgr->bo_set_tiling(bo, tiling_mode, stride); +@@ -221,8 +234,9 @@ int drm_intel_bo_set_tiling(drm_intel_bo *bo, uint32_t * tiling_mode, + return 0; + } + +-int drm_intel_bo_get_tiling(drm_intel_bo *bo, uint32_t * tiling_mode, +- uint32_t * swizzle_mode) ++drm_public int ++drm_intel_bo_get_tiling(drm_intel_bo *bo, uint32_t * tiling_mode, ++ uint32_t * swizzle_mode) + { + if (bo->bufmgr->bo_get_tiling) + return bo->bufmgr->bo_get_tiling(bo, tiling_mode, swizzle_mode); +@@ -232,40 +246,46 @@ int drm_intel_bo_get_tiling(drm_intel_bo *bo, uint32_t * tiling_mode, + return 0; + } + +-int drm_intel_bo_disable_reuse(drm_intel_bo *bo) ++drm_public int ++drm_intel_bo_disable_reuse(drm_intel_bo *bo) + { + if (bo->bufmgr->bo_disable_reuse) + return bo->bufmgr->bo_disable_reuse(bo); + return 0; + } + +-int drm_intel_bo_is_reusable(drm_intel_bo *bo) ++drm_public int ++drm_intel_bo_is_reusable(drm_intel_bo *bo) + { + if (bo->bufmgr->bo_is_reusable) + return bo->bufmgr->bo_is_reusable(bo); + return 0; + } + +-int drm_intel_bo_busy(drm_intel_bo *bo) ++drm_public int ++drm_intel_bo_busy(drm_intel_bo *bo) + { + if (bo->bufmgr->bo_busy) + return bo->bufmgr->bo_busy(bo); + return 0; + } + +-int drm_intel_bo_madvise(drm_intel_bo *bo, int madv) ++drm_public int ++drm_intel_bo_madvise(drm_intel_bo *bo, int madv) + { + if (bo->bufmgr->bo_madvise) + return bo->bufmgr->bo_madvise(bo, madv); + return -1; + } + +-int drm_intel_bo_references(drm_intel_bo *bo, drm_intel_bo *target_bo) ++drm_public int ++drm_intel_bo_references(drm_intel_bo *bo, drm_intel_bo *target_bo) + { + return bo->bufmgr->bo_references(bo, target_bo); + } + +-int drm_intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, int crtc_id) ++drm_public int ++drm_intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, int crtc_id) + { + if (bufmgr->get_pipe_from_crtc_id) + return bufmgr->get_pipe_from_crtc_id(bufmgr, crtc_id); +@@ -298,9 +318,8 @@ err: + return size; + } + +-int drm_intel_get_aperture_sizes(int fd, +- size_t *mappable, +- size_t *total) ++drm_public int ++drm_intel_get_aperture_sizes(int fd, size_t *mappable, size_t *total) + { + + struct drm_i915_gem_get_aperture aperture; +diff --git a/intel/intel_bufmgr_fake.c b/intel/intel_bufmgr_fake.c +index d63fc81..c4828fa 100644 +--- a/intel/intel_bufmgr_fake.c ++++ b/intel/intel_bufmgr_fake.c +@@ -49,6 +49,7 @@ + #include "drm.h" + #include "i915_drm.h" + #include "mm.h" ++#include "libdrm.h" + #include "libdrm_lists.h" + + /* Support gcc's __FUNCTION__ for people using other compilers */ +@@ -248,7 +249,7 @@ FENCE_LTE(unsigned a, unsigned b) + return 0; + } + +-void ++drm_public void + drm_intel_bufmgr_fake_set_fence_callback(drm_intel_bufmgr *bufmgr, + unsigned int (*emit) (void *priv), + void (*wait) (unsigned int fence, +@@ -771,7 +772,7 @@ drm_intel_fake_bo_wait_rendering(drm_intel_bo *bo) + * -- just evict everything + * -- and wait for idle + */ +-void ++drm_public void + drm_intel_bufmgr_fake_contended_lock_take(drm_intel_bufmgr *bufmgr) + { + drm_intel_bufmgr_fake *bufmgr_fake = (drm_intel_bufmgr_fake *) bufmgr; +@@ -867,7 +868,7 @@ drm_intel_fake_bo_alloc_tiled(drm_intel_bufmgr * bufmgr, + 4096); + } + +-drm_intel_bo * ++drm_public drm_intel_bo * + drm_intel_bo_fake_alloc_static(drm_intel_bufmgr *bufmgr, + const char *name, + unsigned long offset, +@@ -962,7 +963,7 @@ drm_intel_fake_bo_unreference(drm_intel_bo *bo) + * Set the buffer as not requiring backing store, and instead get the callback + * invoked whenever it would be set dirty. + */ +-void ++drm_public void + drm_intel_bo_fake_disable_backing_store(drm_intel_bo *bo, + void (*invalidate_cb) (drm_intel_bo *bo, + void *ptr), +@@ -1416,7 +1417,7 @@ drm_intel_bo_fake_post_submit(drm_intel_bo *bo) + bo_fake->write_domain = 0; + } + +-void ++drm_public void + drm_intel_bufmgr_fake_set_exec_callback(drm_intel_bufmgr *bufmgr, + int (*exec) (drm_intel_bo *bo, + unsigned int used, +@@ -1539,7 +1540,8 @@ drm_intel_fake_check_aperture_space(drm_intel_bo ** bo_array, int count) + * Used by the X Server on LeaveVT, when the card memory is no longer our + * own. + */ +-void drm_intel_bufmgr_fake_evict_all(drm_intel_bufmgr *bufmgr) ++drm_public void ++drm_intel_bufmgr_fake_evict_all(drm_intel_bufmgr *bufmgr) + { + drm_intel_bufmgr_fake *bufmgr_fake = (drm_intel_bufmgr_fake *) bufmgr; + struct block *block, *tmp; +@@ -1573,21 +1575,20 @@ void drm_intel_bufmgr_fake_evict_all(drm_intel_bufmgr *bufmgr) + pthread_mutex_unlock(&bufmgr_fake->lock); + } + +-void drm_intel_bufmgr_fake_set_last_dispatch(drm_intel_bufmgr *bufmgr, +- volatile unsigned int +- *last_dispatch) ++drm_public void ++drm_intel_bufmgr_fake_set_last_dispatch(drm_intel_bufmgr *bufmgr, ++ volatile unsigned int ++ *last_dispatch) + { + drm_intel_bufmgr_fake *bufmgr_fake = (drm_intel_bufmgr_fake *) bufmgr; + + bufmgr_fake->last_dispatch = (volatile int *)last_dispatch; + } + +-drm_intel_bufmgr *drm_intel_bufmgr_fake_init(int fd, +- unsigned long low_offset, +- void *low_virtual, +- unsigned long size, +- volatile unsigned int +- *last_dispatch) ++drm_public drm_intel_bufmgr * ++drm_intel_bufmgr_fake_init(int fd, unsigned long low_offset, ++ void *low_virtual, unsigned long size, ++ volatile unsigned int *last_dispatch) + { + drm_intel_bufmgr_fake *bufmgr_fake; + +diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c +index 007a6d8..0e1cb0d 100644 +--- a/intel/intel_bufmgr_gem.c ++++ b/intel/intel_bufmgr_gem.c +@@ -57,6 +57,7 @@ + #ifndef ETIME + #define ETIME ETIMEDOUT + #endif ++#include "libdrm.h" + #include "libdrm_lists.h" + #include "intel_bufmgr.h" + #include "intel_bufmgr_priv.h" +@@ -853,7 +854,7 @@ drm_intel_gem_bo_alloc_tiled(drm_intel_bufmgr *bufmgr, const char *name, + * This can be used when one application needs to pass a buffer object + * to another. + */ +-drm_intel_bo * ++drm_public drm_intel_bo * + drm_intel_bo_gem_create_from_name(drm_intel_bufmgr *bufmgr, + const char *name, + unsigned int handle) +@@ -1294,7 +1295,8 @@ map_gtt(drm_intel_bo *bo) + return 0; + } + +-int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo) ++drm_public int ++drm_intel_gem_bo_map_gtt(drm_intel_bo *bo) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bo->bufmgr; + drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo; +@@ -1352,7 +1354,8 @@ int drm_intel_gem_bo_map_gtt(drm_intel_bo *bo) + * undefined). + */ + +-int drm_intel_gem_bo_map_unsynchronized(drm_intel_bo *bo) ++drm_public int ++drm_intel_gem_bo_map_unsynchronized(drm_intel_bo *bo) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bo->bufmgr; + #ifdef HAVE_VALGRIND +@@ -1435,7 +1438,8 @@ static int drm_intel_gem_bo_unmap(drm_intel_bo *bo) + return ret; + } + +-int drm_intel_gem_bo_unmap_gtt(drm_intel_bo *bo) ++drm_public int ++drm_intel_gem_bo_unmap_gtt(drm_intel_bo *bo) + { + return drm_intel_gem_bo_unmap(bo); + } +@@ -1550,7 +1554,8 @@ drm_intel_gem_bo_wait_rendering(drm_intel_bo *bo) + * handle. Userspace must make sure this race does not occur if such precision + * is important. + */ +-int drm_intel_gem_bo_wait(drm_intel_bo *bo, int64_t timeout_ns) ++drm_public int ++drm_intel_gem_bo_wait(drm_intel_bo *bo, int64_t timeout_ns) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bo->bufmgr; + drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo; +@@ -1585,7 +1590,7 @@ int drm_intel_gem_bo_wait(drm_intel_bo *bo, int64_t timeout_ns) + * In combination with drm_intel_gem_bo_pin() and manual fence management, we + * can do tiled pixmaps this way. + */ +-void ++drm_public void + drm_intel_gem_bo_start_gtt_access(drm_intel_bo *bo, int write_enable) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bo->bufmgr; +@@ -1745,7 +1750,7 @@ drm_intel_gem_bo_emit_reloc_fence(drm_intel_bo *bo, uint32_t offset, + read_domains, write_domain, true); + } + +-int ++drm_public int + drm_intel_gem_bo_get_reloc_count(drm_intel_bo *bo) + { + drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo; +@@ -1766,7 +1771,7 @@ drm_intel_gem_bo_get_reloc_count(drm_intel_bo *bo) + * Any further drm_intel_bufmgr_check_aperture_space() queries + * involving this buffer in the tree are undefined after this call. + */ +-void ++drm_public void + drm_intel_gem_bo_clear_relocs(drm_intel_bo *bo, int start) + { + drm_intel_bo_gem *bo_gem = (drm_intel_bo_gem *) bo; +@@ -2095,7 +2100,7 @@ aub_build_dump_ringbuffer(drm_intel_bufmgr_gem *bufmgr_gem, + bufmgr_gem->aub_offset += 4096; + } + +-void ++drm_public void + drm_intel_gem_bo_aub_dump_bmp(drm_intel_bo *bo, + int x1, int y1, int width, int height, + enum aub_dump_bmp_format format, +@@ -2366,7 +2371,7 @@ drm_intel_gem_bo_mrb_exec2(drm_intel_bo *bo, int used, + flags); + } + +-int ++drm_public int + drm_intel_gem_bo_context_exec(drm_intel_bo *bo, drm_intel_context *ctx, + int used, unsigned int flags) + { +@@ -2485,7 +2490,7 @@ drm_intel_gem_bo_get_tiling(drm_intel_bo *bo, uint32_t * tiling_mode, + return 0; + } + +-drm_intel_bo * ++drm_public drm_intel_bo * + drm_intel_bo_gem_create_from_prime(drm_intel_bufmgr *bufmgr, int prime_fd, int size) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bufmgr; +@@ -2566,7 +2571,7 @@ drm_intel_bo_gem_create_from_prime(drm_intel_bufmgr *bufmgr, int prime_fd, int s + return &bo_gem->bo; + } + +-int ++drm_public int + drm_intel_bo_gem_export_to_prime(drm_intel_bo *bo, int *prime_fd) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bo->bufmgr; +@@ -2619,7 +2624,7 @@ drm_intel_gem_bo_flink(drm_intel_bo *bo, uint32_t * name) + * size is only bounded by how many buffers of that size we've managed to have + * in flight at once. + */ +-void ++drm_public void + drm_intel_bufmgr_gem_enable_reuse(drm_intel_bufmgr *bufmgr) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *) bufmgr; +@@ -2634,7 +2639,7 @@ drm_intel_bufmgr_gem_enable_reuse(drm_intel_bufmgr *bufmgr) + * allocation. If this option is not enabled, all relocs will have fence + * register allocated. + */ +-void ++drm_public void + drm_intel_bufmgr_gem_enable_fenced_relocs(drm_intel_bufmgr *bufmgr) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bufmgr; +@@ -2906,7 +2911,7 @@ init_cache_buckets(drm_intel_bufmgr_gem *bufmgr_gem) + } + } + +-void ++drm_public void + drm_intel_bufmgr_gem_set_vma_cache_size(drm_intel_bufmgr *bufmgr, int limit) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bufmgr; +@@ -2948,7 +2953,7 @@ get_pci_device_id(drm_intel_bufmgr_gem *bufmgr_gem) + return devid; + } + +-int ++drm_public int + drm_intel_bufmgr_gem_get_devid(drm_intel_bufmgr *bufmgr) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bufmgr; +@@ -2962,7 +2967,7 @@ drm_intel_bufmgr_gem_get_devid(drm_intel_bufmgr *bufmgr) + * This function has to be called before drm_intel_bufmgr_gem_set_aub_dump() + * for it to have any effect. + */ +-void ++drm_public void + drm_intel_bufmgr_gem_set_aub_filename(drm_intel_bufmgr *bufmgr, + const char *filename) + { +@@ -2981,7 +2986,7 @@ drm_intel_bufmgr_gem_set_aub_filename(drm_intel_bufmgr *bufmgr, + * You can set up a GTT and upload your objects into the referenced + * space, then send off batchbuffers and get BMPs out the other end. + */ +-void ++drm_public void + drm_intel_bufmgr_gem_set_aub_dump(drm_intel_bufmgr *bufmgr, int enable) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bufmgr; +@@ -3037,7 +3042,7 @@ drm_intel_bufmgr_gem_set_aub_dump(drm_intel_bufmgr *bufmgr, int enable) + } + } + +-drm_intel_context * ++drm_public drm_intel_context * + drm_intel_gem_context_create(drm_intel_bufmgr *bufmgr) + { + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bufmgr; +@@ -3064,7 +3069,7 @@ drm_intel_gem_context_create(drm_intel_bufmgr *bufmgr) + return context; + } + +-void ++drm_public void + drm_intel_gem_context_destroy(drm_intel_context *ctx) + { + drm_intel_bufmgr_gem *bufmgr_gem; +@@ -3087,7 +3092,7 @@ drm_intel_gem_context_destroy(drm_intel_context *ctx) + free(ctx); + } + +-int ++drm_public int + drm_intel_get_reset_stats(drm_intel_context *ctx, + uint32_t *reset_count, + uint32_t *active, +@@ -3121,7 +3126,7 @@ drm_intel_get_reset_stats(drm_intel_context *ctx, + return ret; + } + +-int ++drm_public int + drm_intel_reg_read(drm_intel_bufmgr *bufmgr, + uint32_t offset, + uint64_t *result) +@@ -3161,7 +3166,7 @@ drm_intel_reg_read(drm_intel_bufmgr *bufmgr, + * default state (no annotations), call this function with a \c count + * of zero. + */ +-void ++drm_public void + drm_intel_bufmgr_gem_set_aub_annotations(drm_intel_bo *bo, + drm_intel_aub_annotation *annotations, + unsigned count) +@@ -3187,7 +3192,7 @@ drm_intel_bufmgr_gem_set_aub_annotations(drm_intel_bo *bo, + * + * \param fd File descriptor of the opened DRM device. + */ +-drm_intel_bufmgr * ++drm_public drm_intel_bufmgr * + drm_intel_bufmgr_gem_init(int fd, int batch_size) + { + drm_intel_bufmgr_gem *bufmgr_gem; +diff --git a/intel/intel_decode.c b/intel/intel_decode.c +index 61239dd..a5d6e04 100644 +--- a/intel/intel_decode.c ++++ b/intel/intel_decode.c +@@ -21,6 +21,10 @@ + * IN THE SOFTWARE. + */ + ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif ++ + #include + #include + #include +@@ -29,6 +33,7 @@ + #include + #include + ++#include "libdrm.h" + #include "xf86drm.h" + #include "intel_chipset.h" + #include "intel_bufmgr.h" +@@ -3812,7 +3817,7 @@ decode_3d_i830(struct drm_intel_decode *ctx) + return 1; + } + +-struct drm_intel_decode * ++drm_public struct drm_intel_decode * + drm_intel_decode_context_alloc(uint32_t devid) + { + struct drm_intel_decode *ctx; +@@ -3844,20 +3849,20 @@ drm_intel_decode_context_alloc(uint32_t devid) + return ctx; + } + +-void ++drm_public void + drm_intel_decode_context_free(struct drm_intel_decode *ctx) + { + free(ctx); + } + +-void ++drm_public void + drm_intel_decode_set_dump_past_end(struct drm_intel_decode *ctx, + int dump_past_end) + { + ctx->dump_past_end = !!dump_past_end; + } + +-void ++drm_public void + drm_intel_decode_set_batch_pointer(struct drm_intel_decode *ctx, + void *data, uint32_t hw_offset, int count) + { +@@ -3866,7 +3871,7 @@ drm_intel_decode_set_batch_pointer(struct drm_intel_decode *ctx, + ctx->base_count = count; + } + +-void ++drm_public void + drm_intel_decode_set_head_tail(struct drm_intel_decode *ctx, + uint32_t head, uint32_t tail) + { +@@ -3874,7 +3879,7 @@ drm_intel_decode_set_head_tail(struct drm_intel_decode *ctx, + ctx->tail = tail; + } + +-void ++drm_public void + drm_intel_decode_set_output_file(struct drm_intel_decode *ctx, + FILE *out) + { +@@ -3888,7 +3893,7 @@ drm_intel_decode_set_output_file(struct drm_intel_decode *ctx, + * \param count number of DWORDs to decode in the batch buffer + * \param hw_offset hardware address for the buffer + */ +-void ++drm_public void + drm_intel_decode(struct drm_intel_decode *ctx) + { + int ret; +diff --git a/libdrm.h b/libdrm.h +new file mode 100644 +index 0000000..23926e6 +--- /dev/null ++++ b/libdrm.h +@@ -0,0 +1,34 @@ ++/* ++ * Copyright © 2014 NVIDIA Corporation ++ * ++ * Permission is hereby granted, free of charge, to any person obtaining a ++ * copy of this software and associated documentation files (the "Software"), ++ * to deal in the Software without restriction, including without limitation ++ * the rights to use, copy, modify, merge, publish, distribute, sublicense, ++ * and/or sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following conditions: ++ * ++ * The above copyright notice and this permission notice shall be included in ++ * all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++#ifndef LIBDRM_LIBDRM_H ++#define LIBDRM_LIBDRM_H ++ ++#if defined(HAVE_VISIBILITY) ++# define drm_private __attribute__((visibility("hidden"))) ++# define drm_public __attribute__((visibility("default"))) ++#else ++# define drm_private ++# define drm_public ++#endif ++ ++#endif +diff --git a/nouveau/Makefile.am b/nouveau/Makefile.am +index 206e892..73cff9f 100644 +--- a/nouveau/Makefile.am ++++ b/nouveau/Makefile.am +@@ -1,5 +1,6 @@ + AM_CFLAGS = \ + $(WARN_CFLAGS) \ ++ $(VISIBILITY_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/nouveau \ + $(PTHREADSTUBS_CFLAGS) \ +diff --git a/nouveau/bufctx.c b/nouveau/bufctx.c +index 23d6f09..fdd3164 100644 +--- a/nouveau/bufctx.c ++++ b/nouveau/bufctx.c +@@ -68,7 +68,7 @@ nouveau_bufctx(struct nouveau_bufctx *bctx) + return (struct nouveau_bufctx_priv *)bctx; + } + +-int ++drm_public int + nouveau_bufctx_new(struct nouveau_client *client, int bins, + struct nouveau_bufctx **pbctx) + { +@@ -88,7 +88,7 @@ nouveau_bufctx_new(struct nouveau_client *client, int bins, + return -ENOMEM; + } + +-void ++drm_public void + nouveau_bufctx_del(struct nouveau_bufctx **pbctx) + { + struct nouveau_bufctx_priv *pctx = nouveau_bufctx(*pbctx); +@@ -105,7 +105,7 @@ nouveau_bufctx_del(struct nouveau_bufctx **pbctx) + } + } + +-void ++drm_public void + nouveau_bufctx_reset(struct nouveau_bufctx *bctx, int bin) + { + struct nouveau_bufctx_priv *pctx = nouveau_bufctx(bctx); +@@ -123,7 +123,7 @@ nouveau_bufctx_reset(struct nouveau_bufctx *bctx, int bin) + pbin->relocs = 0; + } + +-struct nouveau_bufref * ++drm_public struct nouveau_bufref * + nouveau_bufctx_refn(struct nouveau_bufctx *bctx, int bin, + struct nouveau_bo *bo, uint32_t flags) + { +@@ -150,7 +150,7 @@ nouveau_bufctx_refn(struct nouveau_bufctx *bctx, int bin, + return &pref->base; + } + +-struct nouveau_bufref * ++drm_public struct nouveau_bufref * + nouveau_bufctx_mthd(struct nouveau_bufctx *bctx, int bin, uint32_t packet, + struct nouveau_bo *bo, uint64_t data, uint32_t flags, + uint32_t vor, uint32_t tor) +diff --git a/nouveau/nouveau.c b/nouveau/nouveau.c +index 1bede84..43f0d3c 100644 +--- a/nouveau/nouveau.c ++++ b/nouveau/nouveau.c +@@ -62,14 +62,14 @@ debug_init(char *args) + * is kept here to prevent AIGLX from crashing if the DDX is linked against + * the new libdrm, but the DRI driver against the old + */ +-int ++drm_public int + nouveau_device_open_existing(struct nouveau_device **pdev, int close, int fd, + drm_context_t ctx) + { + return -EACCES; + } + +-int ++drm_public int + nouveau_device_wrap(int fd, int close, struct nouveau_device **pdev) + { + struct nouveau_device_priv *nvdev = calloc(1, sizeof(*nvdev)); +@@ -147,7 +147,7 @@ nouveau_device_wrap(int fd, int close, struct nouveau_device **pdev) + return 0; + } + +-int ++drm_public int + nouveau_device_open(const char *busid, struct nouveau_device **pdev) + { + int ret = -ENODEV, fd = drmOpen("nouveau", busid); +@@ -159,7 +159,7 @@ nouveau_device_open(const char *busid, struct nouveau_device **pdev) + return ret; + } + +-void ++drm_public void + nouveau_device_del(struct nouveau_device **pdev) + { + struct nouveau_device_priv *nvdev = nouveau_device(*pdev); +@@ -173,7 +173,7 @@ nouveau_device_del(struct nouveau_device **pdev) + } + } + +-int ++drm_public int + nouveau_getparam(struct nouveau_device *dev, uint64_t param, uint64_t *value) + { + struct drm_nouveau_getparam r = { param, 0 }; +@@ -183,14 +183,14 @@ nouveau_getparam(struct nouveau_device *dev, uint64_t param, uint64_t *value) + return ret; + } + +-int ++drm_public int + nouveau_setparam(struct nouveau_device *dev, uint64_t param, uint64_t value) + { + struct drm_nouveau_setparam r = { param, value }; + return drmCommandWrite(dev->fd, DRM_NOUVEAU_SETPARAM, &r, sizeof(r)); + } + +-int ++drm_public int + nouveau_client_new(struct nouveau_device *dev, struct nouveau_client **pclient) + { + struct nouveau_device_priv *nvdev = nouveau_device(dev); +@@ -229,7 +229,7 @@ unlock: + return ret; + } + +-void ++drm_public void + nouveau_client_del(struct nouveau_client **pclient) + { + struct nouveau_client_priv *pcli = nouveau_client(*pclient); +@@ -245,7 +245,7 @@ nouveau_client_del(struct nouveau_client **pclient) + } + } + +-int ++drm_public int + nouveau_object_new(struct nouveau_object *parent, uint64_t handle, + uint32_t oclass, void *data, uint32_t length, + struct nouveau_object **pobj) +@@ -307,7 +307,7 @@ nouveau_object_new(struct nouveau_object *parent, uint64_t handle, + return 0; + } + +-void ++drm_public void + nouveau_object_del(struct nouveau_object **pobj) + { + struct nouveau_object *obj = *pobj; +@@ -331,7 +331,7 @@ nouveau_object_del(struct nouveau_object **pobj) + *pobj = NULL; + } + +-void * ++drm_public void * + nouveau_object_find(struct nouveau_object *obj, uint32_t pclass) + { + while (obj && obj->oclass != pclass) { +@@ -385,7 +385,7 @@ nouveau_bo_del(struct nouveau_bo *bo) + free(nvbo); + } + +-int ++drm_public int + nouveau_bo_new(struct nouveau_device *dev, uint32_t flags, uint32_t align, + uint64_t size, union nouveau_bo_config *config, + struct nouveau_bo **pbo) +@@ -451,7 +451,7 @@ nouveau_bo_wrap_locked(struct nouveau_device *dev, uint32_t handle, + return -ENOMEM; + } + +-int ++drm_public int + nouveau_bo_wrap(struct nouveau_device *dev, uint32_t handle, + struct nouveau_bo **pbo) + { +@@ -463,7 +463,7 @@ nouveau_bo_wrap(struct nouveau_device *dev, uint32_t handle, + return ret; + } + +-int ++drm_public int + nouveau_bo_name_ref(struct nouveau_device *dev, uint32_t name, + struct nouveau_bo **pbo) + { +@@ -492,7 +492,7 @@ nouveau_bo_name_ref(struct nouveau_device *dev, uint32_t name, + return ret; + } + +-int ++drm_public int + nouveau_bo_name_get(struct nouveau_bo *bo, uint32_t *name) + { + struct drm_gem_flink req = { .handle = bo->handle }; +@@ -510,7 +510,7 @@ nouveau_bo_name_get(struct nouveau_bo *bo, uint32_t *name) + return 0; + } + +-void ++drm_public void + nouveau_bo_ref(struct nouveau_bo *bo, struct nouveau_bo **pref) + { + struct nouveau_bo *ref = *pref; +@@ -524,7 +524,7 @@ nouveau_bo_ref(struct nouveau_bo *bo, struct nouveau_bo **pref) + *pref = bo; + } + +-int ++drm_public int + nouveau_bo_prime_handle_ref(struct nouveau_device *dev, int prime_fd, + struct nouveau_bo **bo) + { +@@ -553,7 +553,7 @@ nouveau_bo_prime_handle_ref(struct nouveau_device *dev, int prime_fd, + return ret; + } + +-int ++drm_public int + nouveau_bo_set_prime(struct nouveau_bo *bo, int *prime_fd) + { + struct nouveau_bo_priv *nvbo = nouveau_bo(bo); +@@ -567,7 +567,7 @@ nouveau_bo_set_prime(struct nouveau_bo *bo, int *prime_fd) + return 0; + } + +-int ++drm_public int + nouveau_bo_wait(struct nouveau_bo *bo, uint32_t access, + struct nouveau_client *client) + { +@@ -601,7 +601,7 @@ nouveau_bo_wait(struct nouveau_bo *bo, uint32_t access, + return ret; + } + +-int ++drm_public int + nouveau_bo_map(struct nouveau_bo *bo, uint32_t access, + struct nouveau_client *client) + { +diff --git a/nouveau/private.h b/nouveau/private.h +index 4f337ad..bf9db04 100644 +--- a/nouveau/private.h ++++ b/nouveau/private.h +@@ -1,6 +1,7 @@ + #ifndef __NOUVEAU_LIBDRM_PRIVATE_H__ + #define __NOUVEAU_LIBDRM_PRIVATE_H__ + ++#include + #include + #include + #include +diff --git a/nouveau/pushbuf.c b/nouveau/pushbuf.c +index 4f77881..6e703a4 100644 +--- a/nouveau/pushbuf.c ++++ b/nouveau/pushbuf.c +@@ -529,7 +529,7 @@ pushbuf_validate(struct nouveau_pushbuf *push, bool retry) + return ret; + } + +-int ++drm_public int + nouveau_pushbuf_new(struct nouveau_client *client, struct nouveau_object *chan, + int nr, uint32_t size, bool immediate, + struct nouveau_pushbuf **ppush) +@@ -600,7 +600,7 @@ nouveau_pushbuf_new(struct nouveau_client *client, struct nouveau_object *chan, + return 0; + } + +-void ++drm_public void + nouveau_pushbuf_del(struct nouveau_pushbuf **ppush) + { + struct nouveau_pushbuf_priv *nvpb = nouveau_pushbuf(*ppush); +@@ -626,7 +626,7 @@ nouveau_pushbuf_del(struct nouveau_pushbuf **ppush) + *ppush = NULL; + } + +-struct nouveau_bufctx * ++drm_public struct nouveau_bufctx * + nouveau_pushbuf_bufctx(struct nouveau_pushbuf *push, struct nouveau_bufctx *ctx) + { + struct nouveau_bufctx *prev = push->bufctx; +@@ -634,7 +634,7 @@ nouveau_pushbuf_bufctx(struct nouveau_pushbuf *push, struct nouveau_bufctx *ctx) + return prev; + } + +-int ++drm_public int + nouveau_pushbuf_space(struct nouveau_pushbuf *push, + uint32_t dwords, uint32_t relocs, uint32_t pushes) + { +@@ -698,7 +698,7 @@ nouveau_pushbuf_space(struct nouveau_pushbuf *push, + return flushed ? pushbuf_validate(push, false) : 0; + } + +-void ++drm_public void + nouveau_pushbuf_data(struct nouveau_pushbuf *push, struct nouveau_bo *bo, + uint64_t offset, uint64_t length) + { +@@ -728,14 +728,14 @@ nouveau_pushbuf_data(struct nouveau_pushbuf *push, struct nouveau_bo *bo, + } + } + +-int ++drm_public int + nouveau_pushbuf_refn(struct nouveau_pushbuf *push, + struct nouveau_pushbuf_refn *refs, int nr) + { + return pushbuf_refn(push, true, refs, nr); + } + +-void ++drm_public void + nouveau_pushbuf_reloc(struct nouveau_pushbuf *push, struct nouveau_bo *bo, + uint32_t data, uint32_t flags, uint32_t vor, uint32_t tor) + { +@@ -743,13 +743,13 @@ nouveau_pushbuf_reloc(struct nouveau_pushbuf *push, struct nouveau_bo *bo, + push->cur++; + } + +-int ++drm_public int + nouveau_pushbuf_validate(struct nouveau_pushbuf *push) + { + return pushbuf_validate(push, true); + } + +-uint32_t ++drm_public uint32_t + nouveau_pushbuf_refd(struct nouveau_pushbuf *push, struct nouveau_bo *bo) + { + struct drm_nouveau_gem_pushbuf_bo *kref; +@@ -766,7 +766,7 @@ nouveau_pushbuf_refd(struct nouveau_pushbuf *push, struct nouveau_bo *bo) + return flags; + } + +-int ++drm_public int + nouveau_pushbuf_kick(struct nouveau_pushbuf *push, struct nouveau_object *chan) + { + if (!push->channel) +diff --git a/omap/Makefile.am b/omap/Makefile.am +index c77520b..0778bdd 100644 +--- a/omap/Makefile.am ++++ b/omap/Makefile.am +@@ -1,5 +1,6 @@ + AM_CFLAGS = \ + $(WARN_CFLAGS) \ ++ $(VISIBILITY_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/omap \ + $(PTHREADSTUBS_CFLAGS) \ +diff --git a/omap/omap_drm.c b/omap/omap_drm.c +index 89f1491..8b4ec46 100644 +--- a/omap/omap_drm.c ++++ b/omap/omap_drm.c +@@ -39,6 +39,7 @@ + #include + #include + ++#include + #include + #include + +@@ -91,7 +92,7 @@ static struct omap_device * omap_device_new_impl(int fd) + return dev; + } + +-struct omap_device * omap_device_new(int fd) ++drm_public struct omap_device * omap_device_new(int fd) + { + struct omap_device *dev = NULL; + +@@ -114,13 +115,13 @@ struct omap_device * omap_device_new(int fd) + return dev; + } + +-struct omap_device * omap_device_ref(struct omap_device *dev) ++drm_public struct omap_device * omap_device_ref(struct omap_device *dev) + { + atomic_inc(&dev->refcnt); + return dev; + } + +-void omap_device_del(struct omap_device *dev) ++drm_public void omap_device_del(struct omap_device *dev) + { + if (!atomic_dec_and_test(&dev->refcnt)) + return; +@@ -131,7 +132,8 @@ void omap_device_del(struct omap_device *dev) + free(dev); + } + +-int omap_get_param(struct omap_device *dev, uint64_t param, uint64_t *value) ++drm_public int ++omap_get_param(struct omap_device *dev, uint64_t param, uint64_t *value) + { + struct drm_omap_param req = { + .param = param, +@@ -148,7 +150,8 @@ int omap_get_param(struct omap_device *dev, uint64_t param, uint64_t *value) + return 0; + } + +-int omap_set_param(struct omap_device *dev, uint64_t param, uint64_t value) ++drm_public int ++omap_set_param(struct omap_device *dev, uint64_t param, uint64_t value) + { + struct drm_omap_param req = { + .param = param, +@@ -226,8 +229,8 @@ fail: + + + /* allocate a new (un-tiled) buffer object */ +-struct omap_bo * omap_bo_new(struct omap_device *dev, +- uint32_t size, uint32_t flags) ++drm_public struct omap_bo * ++omap_bo_new(struct omap_device *dev, uint32_t size, uint32_t flags) + { + union omap_gem_size gsize = { + .bytes = size, +@@ -239,8 +242,9 @@ struct omap_bo * omap_bo_new(struct omap_device *dev, + } + + /* allocate a new buffer object */ +-struct omap_bo * omap_bo_new_tiled(struct omap_device *dev, +- uint32_t width, uint32_t height, uint32_t flags) ++drm_public struct omap_bo * ++omap_bo_new_tiled(struct omap_device *dev, uint32_t width, ++ uint32_t height, uint32_t flags) + { + union omap_gem_size gsize = { + .tiled = { +@@ -254,7 +258,7 @@ struct omap_bo * omap_bo_new_tiled(struct omap_device *dev, + return omap_bo_new_impl(dev, gsize, flags); + } + +-struct omap_bo * omap_bo_ref(struct omap_bo *bo) ++drm_public struct omap_bo *omap_bo_ref(struct omap_bo *bo) + { + atomic_inc(&bo->refcnt); + return bo; +@@ -280,7 +284,8 @@ static int get_buffer_info(struct omap_bo *bo) + } + + /* import a buffer object from DRI2 name */ +-struct omap_bo * omap_bo_from_name(struct omap_device *dev, uint32_t name) ++drm_public struct omap_bo * ++omap_bo_from_name(struct omap_device *dev, uint32_t name) + { + struct omap_bo *bo = NULL; + struct drm_gem_open req = { +@@ -313,7 +318,8 @@ fail: + * fd so caller should close() the fd when it is otherwise done + * with it (even if it is still using the 'struct omap_bo *') + */ +-struct omap_bo * omap_bo_from_dmabuf(struct omap_device *dev, int fd) ++drm_public struct omap_bo * ++omap_bo_from_dmabuf(struct omap_device *dev, int fd) + { + struct omap_bo *bo = NULL; + struct drm_prime_handle req = { +@@ -344,7 +350,7 @@ fail: + } + + /* destroy a buffer object */ +-void omap_bo_del(struct omap_bo *bo) ++drm_public void omap_bo_del(struct omap_bo *bo) + { + if (!bo) { + return; +@@ -377,7 +383,7 @@ void omap_bo_del(struct omap_bo *bo) + } + + /* get the global flink/DRI2 buffer name */ +-int omap_bo_get_name(struct omap_bo *bo, uint32_t *name) ++drm_public int omap_bo_get_name(struct omap_bo *bo, uint32_t *name) + { + if (!bo->name) { + struct drm_gem_flink req = { +@@ -398,7 +404,7 @@ int omap_bo_get_name(struct omap_bo *bo, uint32_t *name) + return 0; + } + +-uint32_t omap_bo_handle(struct omap_bo *bo) ++drm_public uint32_t omap_bo_handle(struct omap_bo *bo) + { + return bo->handle; + } +@@ -406,7 +412,7 @@ uint32_t omap_bo_handle(struct omap_bo *bo) + /* caller owns the dmabuf fd that is returned and is responsible + * to close() it when done + */ +-int omap_bo_dmabuf(struct omap_bo *bo) ++drm_public int omap_bo_dmabuf(struct omap_bo *bo) + { + if (!bo->fd) { + struct drm_prime_handle req = { +@@ -425,7 +431,7 @@ int omap_bo_dmabuf(struct omap_bo *bo) + return dup(bo->fd); + } + +-uint32_t omap_bo_size(struct omap_bo *bo) ++drm_public uint32_t omap_bo_size(struct omap_bo *bo) + { + if (!bo->size) { + get_buffer_info(bo); +@@ -433,7 +439,7 @@ uint32_t omap_bo_size(struct omap_bo *bo) + return bo->size; + } + +-void * omap_bo_map(struct omap_bo *bo) ++drm_public void *omap_bo_map(struct omap_bo *bo) + { + if (!bo->map) { + if (!bo->offset) { +@@ -449,7 +455,7 @@ void * omap_bo_map(struct omap_bo *bo) + return bo->map; + } + +-int omap_bo_cpu_prep(struct omap_bo *bo, enum omap_gem_op op) ++drm_public int omap_bo_cpu_prep(struct omap_bo *bo, enum omap_gem_op op) + { + struct drm_omap_gem_cpu_prep req = { + .handle = bo->handle, +@@ -459,7 +465,7 @@ int omap_bo_cpu_prep(struct omap_bo *bo, enum omap_gem_op op) + DRM_OMAP_GEM_CPU_PREP, &req, sizeof(req)); + } + +-int omap_bo_cpu_fini(struct omap_bo *bo, enum omap_gem_op op) ++drm_public int omap_bo_cpu_fini(struct omap_bo *bo, enum omap_gem_op op) + { + struct drm_omap_gem_cpu_fini req = { + .handle = bo->handle, +diff --git a/radeon/Makefile.am b/radeon/Makefile.am +index a8cd100..c969573 100644 +--- a/radeon/Makefile.am ++++ b/radeon/Makefile.am +@@ -24,6 +24,7 @@ + + AM_CFLAGS = \ + $(WARN_CFLAGS) \ ++ $(VISIBILITY_CFLAGS) \ + -I$(top_srcdir) \ + -I$(top_srcdir)/radeon \ + $(PTHREADSTUBS_CFLAGS) \ +diff --git a/radeon/radeon_bo.c b/radeon/radeon_bo.c +index 6a0f8e7..865e3f7 100644 +--- a/radeon/radeon_bo.c ++++ b/radeon/radeon_bo.c +@@ -29,10 +29,14 @@ + * Dave Airlie + * Jérôme Glisse + */ ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++#include + #include + #include + +-void radeon_bo_debug(struct radeon_bo *bo, const char *op) ++drm_public void radeon_bo_debug(struct radeon_bo *bo, const char *op) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + +@@ -40,26 +44,23 @@ void radeon_bo_debug(struct radeon_bo *bo, const char *op) + op, bo, bo->handle, boi->size, boi->cref); + } + +-struct radeon_bo *radeon_bo_open(struct radeon_bo_manager *bom, +- uint32_t handle, +- uint32_t size, +- uint32_t alignment, +- uint32_t domains, +- uint32_t flags) ++drm_public struct radeon_bo * ++radeon_bo_open(struct radeon_bo_manager *bom, uint32_t handle, uint32_t size, ++ uint32_t alignment, uint32_t domains, uint32_t flags) + { + struct radeon_bo *bo; + bo = bom->funcs->bo_open(bom, handle, size, alignment, domains, flags); + return bo; + } + +-void radeon_bo_ref(struct radeon_bo *bo) ++drm_public void radeon_bo_ref(struct radeon_bo *bo) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + boi->cref++; + boi->bom->funcs->bo_ref(boi); + } + +-struct radeon_bo *radeon_bo_unref(struct radeon_bo *bo) ++drm_public struct radeon_bo *radeon_bo_unref(struct radeon_bo *bo) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + if (bo == NULL) +@@ -69,19 +70,19 @@ struct radeon_bo *radeon_bo_unref(struct radeon_bo *bo) + return boi->bom->funcs->bo_unref(boi); + } + +-int radeon_bo_map(struct radeon_bo *bo, int write) ++drm_public int radeon_bo_map(struct radeon_bo *bo, int write) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + return boi->bom->funcs->bo_map(boi, write); + } + +-int radeon_bo_unmap(struct radeon_bo *bo) ++drm_public int radeon_bo_unmap(struct radeon_bo *bo) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + return boi->bom->funcs->bo_unmap(boi); + } + +-int radeon_bo_wait(struct radeon_bo *bo) ++drm_public int radeon_bo_wait(struct radeon_bo *bo) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + if (!boi->bom->funcs->bo_wait) +@@ -89,27 +90,29 @@ int radeon_bo_wait(struct radeon_bo *bo) + return boi->bom->funcs->bo_wait(boi); + } + +-int radeon_bo_is_busy(struct radeon_bo *bo, uint32_t *domain) ++drm_public int radeon_bo_is_busy(struct radeon_bo *bo, uint32_t *domain) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + return boi->bom->funcs->bo_is_busy(boi, domain); + } + +-int radeon_bo_set_tiling(struct radeon_bo *bo, +- uint32_t tiling_flags, uint32_t pitch) ++drm_public int ++radeon_bo_set_tiling(struct radeon_bo *bo, ++ uint32_t tiling_flags, uint32_t pitch) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + return boi->bom->funcs->bo_set_tiling(boi, tiling_flags, pitch); + } + +-int radeon_bo_get_tiling(struct radeon_bo *bo, +- uint32_t *tiling_flags, uint32_t *pitch) ++drm_public int ++radeon_bo_get_tiling(struct radeon_bo *bo, ++ uint32_t *tiling_flags, uint32_t *pitch) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + return boi->bom->funcs->bo_get_tiling(boi, tiling_flags, pitch); + } + +-int radeon_bo_is_static(struct radeon_bo *bo) ++drm_public int radeon_bo_is_static(struct radeon_bo *bo) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + if (boi->bom->funcs->bo_is_static) +@@ -117,18 +120,19 @@ int radeon_bo_is_static(struct radeon_bo *bo) + return 0; + } + +-int radeon_bo_is_referenced_by_cs(struct radeon_bo *bo, struct radeon_cs *cs) ++drm_public int ++radeon_bo_is_referenced_by_cs(struct radeon_bo *bo, struct radeon_cs *cs) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + return boi->cref > 1; + } + +-uint32_t radeon_bo_get_handle(struct radeon_bo *bo) ++drm_public uint32_t radeon_bo_get_handle(struct radeon_bo *bo) + { + return bo->handle; + } + +-uint32_t radeon_bo_get_src_domain(struct radeon_bo *bo) ++drm_public uint32_t radeon_bo_get_src_domain(struct radeon_bo *bo) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + uint32_t src_domain; +diff --git a/radeon/radeon_bo_gem.c b/radeon/radeon_bo_gem.c +index 4ea405f..251ec1b 100644 +--- a/radeon/radeon_bo_gem.c ++++ b/radeon/radeon_bo_gem.c +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include "libdrm.h" + #include "xf86drm.h" + #include "xf86atomic.h" + #include "drm.h" +@@ -283,7 +284,7 @@ static struct radeon_bo_funcs bo_gem_funcs = { + bo_is_busy, + }; + +-struct radeon_bo_manager *radeon_bo_manager_gem_ctor(int fd) ++drm_public struct radeon_bo_manager *radeon_bo_manager_gem_ctor(int fd) + { + struct bo_manager_gem *bomg; + +@@ -296,7 +297,7 @@ struct radeon_bo_manager *radeon_bo_manager_gem_ctor(int fd) + return (struct radeon_bo_manager*)bomg; + } + +-void radeon_bo_manager_gem_dtor(struct radeon_bo_manager *bom) ++drm_public void radeon_bo_manager_gem_dtor(struct radeon_bo_manager *bom) + { + struct bo_manager_gem *bomg = (struct bo_manager_gem*)bom; + +@@ -306,19 +307,22 @@ void radeon_bo_manager_gem_dtor(struct radeon_bo_manager *bom) + free(bomg); + } + +-uint32_t radeon_gem_name_bo(struct radeon_bo *bo) ++drm_public uint32_t ++radeon_gem_name_bo(struct radeon_bo *bo) + { + struct radeon_bo_gem *bo_gem = (struct radeon_bo_gem*)bo; + return bo_gem->name; + } + +-void *radeon_gem_get_reloc_in_cs(struct radeon_bo *bo) ++drm_public void * ++radeon_gem_get_reloc_in_cs(struct radeon_bo *bo) + { + struct radeon_bo_gem *bo_gem = (struct radeon_bo_gem*)bo; + return &bo_gem->reloc_in_cs; + } + +-int radeon_gem_get_kernel_name(struct radeon_bo *bo, uint32_t *name) ++drm_public int ++radeon_gem_get_kernel_name(struct radeon_bo *bo, uint32_t *name) + { + struct radeon_bo_gem *bo_gem = (struct radeon_bo_gem*)bo; + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; +@@ -339,7 +343,8 @@ int radeon_gem_get_kernel_name(struct radeon_bo *bo, uint32_t *name) + return 0; + } + +-int radeon_gem_set_domain(struct radeon_bo *bo, uint32_t read_domains, uint32_t write_domain) ++drm_public int ++radeon_gem_set_domain(struct radeon_bo *bo, uint32_t read_domains, uint32_t write_domain) + { + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; + struct drm_radeon_gem_set_domain args; +@@ -356,7 +361,7 @@ int radeon_gem_set_domain(struct radeon_bo *bo, uint32_t read_domains, uint32_t + return r; + } + +-int radeon_gem_prime_share_bo(struct radeon_bo *bo, int *handle) ++drm_public int radeon_gem_prime_share_bo(struct radeon_bo *bo, int *handle) + { + struct radeon_bo_gem *bo_gem = (struct radeon_bo_gem*)bo; + int ret; +@@ -365,9 +370,8 @@ int radeon_gem_prime_share_bo(struct radeon_bo *bo, int *handle) + return ret; + } + +-struct radeon_bo *radeon_gem_bo_open_prime(struct radeon_bo_manager *bom, +- int fd_handle, +- uint32_t size) ++drm_public struct radeon_bo * ++radeon_gem_bo_open_prime(struct radeon_bo_manager *bom, int fd_handle, uint32_t size) + { + struct radeon_bo_gem *bo; + int r; +diff --git a/radeon/radeon_cs.c b/radeon/radeon_cs.c +index d0e922b..fe5bbce 100644 +--- a/radeon/radeon_cs.c ++++ b/radeon/radeon_cs.c +@@ -1,19 +1,22 @@ +- ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++#include "libdrm.h" + #include + #include "radeon_cs.h" + #include "radeon_cs_int.h" + +-struct radeon_cs *radeon_cs_create(struct radeon_cs_manager *csm, uint32_t ndw) ++drm_public struct radeon_cs * ++radeon_cs_create(struct radeon_cs_manager *csm, uint32_t ndw) + { + struct radeon_cs_int *csi = csm->funcs->cs_create(csm, ndw); + return (struct radeon_cs *)csi; + } + +-int radeon_cs_write_reloc(struct radeon_cs *cs, +- struct radeon_bo *bo, +- uint32_t read_domain, +- uint32_t write_domain, +- uint32_t flags) ++drm_public int ++radeon_cs_write_reloc(struct radeon_cs *cs, struct radeon_bo *bo, ++ uint32_t read_domain, uint32_t write_domain, ++ uint32_t flags) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + +@@ -24,56 +27,54 @@ int radeon_cs_write_reloc(struct radeon_cs *cs, + flags); + } + +-int radeon_cs_begin(struct radeon_cs *cs, +- uint32_t ndw, +- const char *file, +- const char *func, +- int line) ++drm_public int ++radeon_cs_begin(struct radeon_cs *cs, uint32_t ndw, ++ const char *file, const char *func, int line) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + return csi->csm->funcs->cs_begin(csi, ndw, file, func, line); + } + +-int radeon_cs_end(struct radeon_cs *cs, +- const char *file, +- const char *func, +- int line) ++drm_public int ++radeon_cs_end(struct radeon_cs *cs, ++ const char *file, const char *func, int line) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + return csi->csm->funcs->cs_end(csi, file, func, line); + } + +-int radeon_cs_emit(struct radeon_cs *cs) ++drm_public int radeon_cs_emit(struct radeon_cs *cs) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + return csi->csm->funcs->cs_emit(csi); + } + +-int radeon_cs_destroy(struct radeon_cs *cs) ++drm_public int radeon_cs_destroy(struct radeon_cs *cs) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + return csi->csm->funcs->cs_destroy(csi); + } + +-int radeon_cs_erase(struct radeon_cs *cs) ++drm_public int radeon_cs_erase(struct radeon_cs *cs) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + return csi->csm->funcs->cs_erase(csi); + } + +-int radeon_cs_need_flush(struct radeon_cs *cs) ++drm_public int radeon_cs_need_flush(struct radeon_cs *cs) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + return csi->csm->funcs->cs_need_flush(csi); + } + +-void radeon_cs_print(struct radeon_cs *cs, FILE *file) ++drm_public void radeon_cs_print(struct radeon_cs *cs, FILE *file) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + csi->csm->funcs->cs_print(csi, file); + } + +-void radeon_cs_set_limit(struct radeon_cs *cs, uint32_t domain, uint32_t limit) ++drm_public void ++radeon_cs_set_limit(struct radeon_cs *cs, uint32_t domain, uint32_t limit) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + if (domain == RADEON_GEM_DOMAIN_VRAM) +@@ -82,14 +83,15 @@ void radeon_cs_set_limit(struct radeon_cs *cs, uint32_t domain, uint32_t limit) + csi->csm->gart_limit = limit; + } + +-void radeon_cs_space_set_flush(struct radeon_cs *cs, void (*fn)(void *), void *data) ++drm_public void radeon_cs_space_set_flush(struct radeon_cs *cs, ++ void (*fn)(void *), void *data) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + csi->space_flush_fn = fn; + csi->space_flush_data = data; + } + +-uint32_t radeon_cs_get_id(struct radeon_cs *cs) ++drm_public uint32_t radeon_cs_get_id(struct radeon_cs *cs) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + return csi->id; +diff --git a/radeon/radeon_cs_gem.c b/radeon/radeon_cs_gem.c +index b87c6b1..2020e1a 100644 +--- a/radeon/radeon_cs_gem.c ++++ b/radeon/radeon_cs_gem.c +@@ -29,6 +29,9 @@ + * Nicolai Haehnle + * Jérôme Glisse + */ ++#ifdef HAVE_CONFIG_H ++#include "config.h" ++#endif + #include + #include + #include +@@ -42,6 +45,7 @@ + #include "radeon_cs_gem.h" + #include "radeon_bo_gem.h" + #include "drm.h" ++#include "libdrm.h" + #include "xf86drm.h" + #include "xf86atomic.h" + #include "radeon_drm.h" +@@ -533,7 +537,7 @@ static int radeon_get_device_id(int fd, uint32_t *device_id) + return r; + } + +-struct radeon_cs_manager *radeon_cs_manager_gem_ctor(int fd) ++drm_public struct radeon_cs_manager *radeon_cs_manager_gem_ctor(int fd) + { + struct radeon_cs_manager_gem *csm; + +@@ -547,7 +551,7 @@ struct radeon_cs_manager *radeon_cs_manager_gem_ctor(int fd) + return &csm->base; + } + +-void radeon_cs_manager_gem_dtor(struct radeon_cs_manager *csm) ++drm_public void radeon_cs_manager_gem_dtor(struct radeon_cs_manager *csm) + { + free(csm); + } +diff --git a/radeon/radeon_cs_space.c b/radeon/radeon_cs_space.c +index be047a7..cca650b 100644 +--- a/radeon/radeon_cs_space.c ++++ b/radeon/radeon_cs_space.c +@@ -25,9 +25,13 @@ + */ + /* + */ ++#ifdef HAVE_CONFIG_H ++#include ++#endif + #include + #include + #include ++#include "libdrm.h" + #include "radeon_cs.h" + #include "radeon_bo_int.h" + #include "radeon_cs_int.h" +@@ -161,7 +165,9 @@ static int radeon_cs_do_space_check(struct radeon_cs_int *cs, struct radeon_cs_s + return RADEON_CS_SPACE_OK; + } + +-void radeon_cs_space_add_persistent_bo(struct radeon_cs *cs, struct radeon_bo *bo, uint32_t read_domains, uint32_t write_domain) ++drm_public void ++radeon_cs_space_add_persistent_bo(struct radeon_cs *cs, struct radeon_bo *bo, ++ uint32_t read_domains, uint32_t write_domain) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; +@@ -203,9 +209,9 @@ again: + return 0; + } + +-int radeon_cs_space_check_with_bo(struct radeon_cs *cs, +- struct radeon_bo *bo, +- uint32_t read_domains, uint32_t write_domain) ++drm_public int ++radeon_cs_space_check_with_bo(struct radeon_cs *cs, struct radeon_bo *bo, ++ uint32_t read_domains, uint32_t write_domain) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + struct radeon_bo_int *boi = (struct radeon_bo_int *)bo; +@@ -224,13 +230,13 @@ int radeon_cs_space_check_with_bo(struct radeon_cs *cs, + return ret; + } + +-int radeon_cs_space_check(struct radeon_cs *cs) ++drm_public int radeon_cs_space_check(struct radeon_cs *cs) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + return radeon_cs_check_space_internal(csi, NULL); + } + +-void radeon_cs_space_reset_bos(struct radeon_cs *cs) ++drm_public void radeon_cs_space_reset_bos(struct radeon_cs *cs) + { + struct radeon_cs_int *csi = (struct radeon_cs_int *)cs; + int i; +diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c +index 8a1fe7d..e056ed4 100644 +--- a/radeon/radeon_surface.c ++++ b/radeon/radeon_surface.c +@@ -26,6 +26,9 @@ + * Authors: + * Jérôme Glisse + */ ++#ifdef HAVE_CONFIG_H ++#include ++#endif + #include + #include + #include +@@ -35,6 +38,7 @@ + #include + #include + #include "drm.h" ++#include "libdrm.h" + #include "xf86drm.h" + #include "radeon_drm.h" + #include "radeon_surface.h" +@@ -2395,7 +2399,8 @@ static int cik_surface_best(struct radeon_surface_manager *surf_man, + /* =========================================================================== + * public API + */ +-struct radeon_surface_manager *radeon_surface_manager_new(int fd) ++drm_public struct radeon_surface_manager * ++radeon_surface_manager_new(int fd) + { + struct radeon_surface_manager *surf_man; + +@@ -2443,7 +2448,8 @@ out_err: + return NULL; + } + +-void radeon_surface_manager_free(struct radeon_surface_manager *surf_man) ++drm_public void ++radeon_surface_manager_free(struct radeon_surface_manager *surf_man) + { + free(surf_man); + } +@@ -2515,8 +2521,9 @@ static int radeon_surface_sanity(struct radeon_surface_manager *surf_man, + return 0; + } + +-int radeon_surface_init(struct radeon_surface_manager *surf_man, +- struct radeon_surface *surf) ++drm_public int ++radeon_surface_init(struct radeon_surface_manager *surf_man, ++ struct radeon_surface *surf) + { + unsigned mode, type; + int r; +@@ -2531,8 +2538,9 @@ int radeon_surface_init(struct radeon_surface_manager *surf_man, + return surf_man->surface_init(surf_man, surf); + } + +-int radeon_surface_best(struct radeon_surface_manager *surf_man, +- struct radeon_surface *surf) ++drm_public int ++radeon_surface_best(struct radeon_surface_manager *surf_man, ++ struct radeon_surface *surf) + { + unsigned mode, type; + int r; --- libdrm-2.4.56.orig/debian/patches/series +++ libdrm-2.4.56/debian/patches/series @@ -0,0 +1,2 @@ +01_default_perms.diff +03_hide_symbols.diff \ No newline at end of file --- libdrm-2.4.56.orig/debian/rules +++ libdrm-2.4.56/debian/rules @@ -0,0 +1,106 @@ +#!/usr/bin/make -f + +### +### Configuration, decide what to build +### + +# Some variables: +DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) +DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU) + +confflags = \ + --enable-radeon \ + --disable-libkms \ + $() + +# Linux vs. the rest: +ifeq (linux, $(DEB_HOST_ARCH_OS)) + confflags += --enable-udev + confflags += --enable-vmwgfx + confflags += --enable-nouveau + NOUVEAU = yes +else + confflags += --disable-udev + confflags += --disable-vmwgfx + confflags += --disable-nouveau + NOUVEAU = no + # kfreebsd mangles freebsd's sys/types.h + confflags += CFLAGS="$(shell pkg-config --cflags libbsd-overlay)" +endif + +# Intel is only on x86: +ifneq (,$(filter amd64 i386,$(DEB_HOST_ARCH_CPU))) +ifneq (,$(filter linux kfreebsd,$(DEB_HOST_ARCH_OS))) + INTEL = yes +endif +endif +ifeq ($(INTEL), yes) + confflags += --enable-intel +else + confflags += --disable-intel +endif + +# Omap and freedreno are only on arm +ifneq (,$(filter arm,$(DEB_HOST_ARCH_CPU))) + ARM = yes +endif +ifeq ($(ARM), yes) + confflags += --enable-omap-experimental-api + confflags += --enable-freedreno-experimental-api + confflags += --enable-exynos-experimental-api +else + confflags += --disable-omap-experimental-api + confflags += --disable-freedreno-experimental-api + confflags += --disable-exynos-experimental-api +endif + +### +### Actual build +### + +override_dh_auto_configure: + dh_auto_configure -- --disable-silent-rules --enable-static=yes $(confflags) + +override_dh_auto_test: + dh_auto_test || echo "Test suite failure, but keeping on anyway" + +override_dh_auto_install: + dh_auto_install --destdir=debian/tmp + +override_dh_install: + find debian/tmp -name '*.la' -delete + dh_install --fail-missing + +override_dh_strip: + dh_strip -plibdrm2 --dbg-package=libdrm2-dbg +ifeq ($(INTEL), yes) + dh_strip -plibdrm-intel1 --dbg-package=libdrm-intel1-dbg +endif +ifeq ($(NOUVEAU), yes) + dh_strip -plibdrm-nouveau2 --dbg-package=libdrm-nouveau2-dbg +endif + dh_strip -plibdrm-radeon1 --dbg-package=libdrm-radeon1-dbg +ifeq ($(ARM), yes) + dh_strip -plibdrm-omap1 --dbg-package=libdrm-omap1-dbg + dh_strip -plibdrm-freedreno1 --dbg-package=libdrm-freedreno1-dbg + dh_strip -plibdrm-exynos1 --dbg-package=libdrm-exynos1-dbg +endif + dh_strip -s --remaining-packages + +override_dh_makeshlibs: + dh_makeshlibs -plibdrm2 -V'libdrm2 (>= 2.4.46)' --add-udeb=libdrm2-udeb -- -c4 +ifeq ($(INTEL), yes) + dh_makeshlibs -plibdrm-intel1 -V'libdrm-intel1 (>= 2.4.46)' -- -c4 +endif +ifeq ($(NOUVEAU), yes) + dh_makeshlibs -plibdrm-nouveau2 -V'libdrm-nouveau2 (>= 2.4.38)' -- -c4 +endif + dh_makeshlibs -plibdrm-radeon1 -V'libdrm-radeon1 (>= 2.4.39)' -- -c4 +ifeq ($(ARM), yes) + dh_makeshlibs -plibdrm-omap1 -V'libdrm-omap1 (>= 2.4.38)' -- -c4 + dh_makeshlibs -plibdrm-freedreno1 -V'libdrm-freedreno1' -- -c4 + dh_makeshlibs -plibdrm-exynos1 -V'libdrm-exynos1' -- -c4 +endif + +%: + dh $@ --with quilt,autoreconf --builddirectory=build/ --- libdrm-2.4.56.orig/debian/watch +++ libdrm-2.4.56/debian/watch @@ -0,0 +1,3 @@ +#git=git://anongit.freedesktop.org/mesa/drm +version=3 +http://dri.freedesktop.org/libdrm/libdrm-(.*)\.tar\.gz --- libdrm-2.4.56.orig/tests/auth.c +++ libdrm-2.4.56/tests/auth.c @@ -0,0 +1,137 @@ +/* + * Copyright © 2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +#include +#include "drmtest.h" + +enum auth_event { + SERVER_READY, + CLIENT_MAGIC, + CLIENT_DONE, +}; + +int commfd[2]; + +static void wait_event(int pipe, enum auth_event expected_event) +{ + int ret; + enum auth_event event; + unsigned char in; + + ret = read(commfd[pipe], &in, 1); + if (ret == -1) + err(1, "read error"); + event = in; + + if (event != expected_event) + errx(1, "unexpected event: %d\n", event); +} + +static void +send_event(int pipe, enum auth_event send_event) +{ + int ret; + unsigned char event; + + event = send_event; + ret = write(commfd[pipe], &event, 1); + if (ret == -1) + err(1, "failed to send event %d", event); +} + +static void client() +{ + struct drm_auth auth; + int drmfd, ret; + + /* XXX: Should make sure we open the same DRM as the master */ + wait_event(0, SERVER_READY); + + drmfd = drm_open_any(); + + /* Get a client magic number and pass it to the master for auth. */ + auth.magic = 0; /* Quiet valgrind */ + ret = ioctl(drmfd, DRM_IOCTL_GET_MAGIC, &auth); + if (ret == -1) + err(1, "Couldn't get client magic"); + send_event(0, CLIENT_MAGIC); + ret = write(commfd[0], &auth.magic, sizeof(auth.magic)); + if (ret == -1) + err(1, "Couldn't write auth data"); + + /* Signal that the client is completely done. */ + send_event(0, CLIENT_DONE); +} + +static void server() +{ + int drmfd, ret; + struct drm_auth auth; + + drmfd = drm_open_any_master(); + + auth.magic = 0xd0d0d0d0; + ret = ioctl(drmfd, DRM_IOCTL_AUTH_MAGIC, &auth); + if (ret != -1 || errno != EINVAL) + errx(1, "Authenticating bad magic succeeded\n"); + + send_event(1, SERVER_READY); + + wait_event(1, CLIENT_MAGIC); + ret = read(commfd[1], &auth.magic, sizeof(auth.magic)); + if (ret == -1) + err(1, "Failure to read client magic"); + + ret = ioctl(drmfd, DRM_IOCTL_AUTH_MAGIC, &auth); + if (ret == -1) + err(1, "Failure to authenticate client magic\n"); + + wait_event(1, CLIENT_DONE); +} + +/** + * Checks DRM authentication mechanisms. + */ +int main(int argc, char **argv) +{ + int ret; + + ret = pipe(commfd); + if (ret == -1) + err(1, "Couldn't create pipe"); + + ret = fork(); + if (ret == -1) + err(1, "failure to fork client"); + if (ret == 0) + client(); + else + server(); + + return 0; +} + --- libdrm-2.4.56.orig/tests/lock.c +++ libdrm-2.4.56/tests/lock.c @@ -0,0 +1,263 @@ +/* + * Copyright © 2007 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + * + * Authors: + * Eric Anholt + * + */ + +/** @file lock.c + * Tests various potential failures of the DRM locking mechanisms + */ + +#include +#include "drmtest.h" + +enum auth_event { + SERVER_READY, + CLIENT_MAGIC, + SERVER_LOCKED, + CLIENT_LOCKED, +}; + +int commfd[2]; +unsigned int lock1 = 0x00001111; +unsigned int lock2 = 0x00002222; + +/* return time in milliseconds */ +static unsigned int +get_millis() +{ + struct timeval tv; + + gettimeofday(&tv, NULL); + return tv.tv_sec * 1000 + tv.tv_usec / 1000; +} + +static void +wait_event(int pipe, enum auth_event expected_event) +{ + int ret; + enum auth_event event; + unsigned char in; + + ret = read(commfd[pipe], &in, 1); + if (ret == -1) + err(1, "read error"); + event = in; + + if (event != expected_event) + errx(1, "unexpected event: %d\n", event); +} + +static void +send_event(int pipe, enum auth_event send_event) +{ + int ret; + unsigned char event; + + event = send_event; + ret = write(commfd[pipe], &event, 1); + if (ret == -1) + err(1, "failed to send event %d", event); +} + +static void +client_auth(int drmfd) +{ + struct drm_auth auth; + int ret; + + /* Get a client magic number and pass it to the master for auth. */ + ret = ioctl(drmfd, DRM_IOCTL_GET_MAGIC, &auth); + if (ret == -1) + err(1, "Couldn't get client magic"); + send_event(0, CLIENT_MAGIC); + ret = write(commfd[0], &auth.magic, sizeof(auth.magic)); + if (ret == -1) + err(1, "Couldn't write auth data"); +} + +static void +server_auth(int drmfd) +{ + struct drm_auth auth; + int ret; + + send_event(1, SERVER_READY); + wait_event(1, CLIENT_MAGIC); + ret = read(commfd[1], &auth.magic, sizeof(auth.magic)); + if (ret == -1) + err(1, "Failure to read client magic"); + + ret = ioctl(drmfd, DRM_IOCTL_AUTH_MAGIC, &auth); + if (ret == -1) + err(1, "Failure to authenticate client magic\n"); +} + +/** Tests that locking is successful in normal conditions */ +static void +test_lock_unlock(int drmfd) +{ + int ret; + + ret = drmGetLock(drmfd, lock1, 0); + if (ret != 0) + err(1, "Locking failed"); + ret = drmUnlock(drmfd, lock1); + if (ret != 0) + err(1, "Unlocking failed"); +} + +/** Tests that unlocking the lock while it's not held works correctly */ +static void +test_unlock_unlocked(int drmfd) +{ + int ret; + + ret = drmUnlock(drmfd, lock1); + if (ret == 0) + err(1, "Unlocking unlocked lock succeeded"); +} + +/** Tests that unlocking a lock held by another context fails appropriately */ +static void +test_unlock_unowned(int drmfd) +{ + int ret; + + ret = drmGetLock(drmfd, lock1, 0); + assert(ret == 0); + ret = drmUnlock(drmfd, lock2); + if (ret == 0) + errx(1, "Unlocking other context's lock succeeded"); + ret = drmUnlock(drmfd, lock1); + assert(ret == 0); +} + +/** + * Tests that an open/close by the same process doesn't result in the lock + * being dropped. + */ +static void test_open_close_locked(drmfd) +{ + int ret, tempfd; + + ret = drmGetLock(drmfd, lock1, 0); + assert(ret == 0); + /* XXX: Need to make sure that this is the same device as drmfd */ + tempfd = drm_open_any(); + close(tempfd); + ret = drmUnlock(drmfd, lock1); + if (ret != 0) + errx(1, "lock lost during open/close by same pid"); +} + +static void client() +{ + int drmfd, ret; + unsigned int time; + + wait_event(0, SERVER_READY); + + /* XXX: Should make sure we open the same DRM as the master */ + drmfd = drm_open_any(); + + client_auth(drmfd); + + /* Wait for the server to grab the lock, then grab it ourselves (to + * contest it). Hopefully we hit it within the window of when the + * server locks. + */ + wait_event(0, SERVER_LOCKED); + ret = drmGetLock(drmfd, lock2, 0); + time = get_millis(); + if (ret != 0) + err(1, "Failed to get lock on client\n"); + drmUnlock(drmfd, lock2); + + /* Tell the server that our locking completed, and when it did */ + send_event(0, CLIENT_LOCKED); + ret = write(commfd[0], &time, sizeof(time)); + + close(drmfd); + exit(0); +} + +static void server() +{ + int drmfd, tempfd, ret; + unsigned int client_time, unlock_time; + + drmfd = drm_open_any_master(); + + test_lock_unlock(drmfd); + test_unlock_unlocked(drmfd); + test_unlock_unowned(drmfd); + test_open_close_locked(drmfd); + + /* Perform the authentication sequence with the client. */ + server_auth(drmfd); + + /* Now, test that the client attempting to lock while the server + * holds the lock works correctly. + */ + ret = drmGetLock(drmfd, lock1, 0); + assert(ret == 0); + send_event(1, SERVER_LOCKED); + /* Wait a while for the client to do its thing */ + sleep(1); + ret = drmUnlock(drmfd, lock1); + assert(ret == 0); + unlock_time = get_millis(); + + wait_event(1, CLIENT_LOCKED); + ret = read(commfd[1], &client_time, sizeof(client_time)); + if (ret == -1) + err(1, "Failure to read client magic"); + + if (client_time < unlock_time) + errx(1, "Client took lock before server released it"); + + close(drmfd); +} + +int main(int argc, char **argv) +{ + int ret; + + + ret = pipe(commfd); + if (ret == -1) + err(1, "Couldn't create pipe"); + + ret = fork(); + if (ret == -1) + err(1, "failure to fork client"); + if (ret == 0) + client(); + else + server(); + + return 0; +} +