.gitignore | 4 ChangeLog | 1387 ++++ Makefile.am | 6 autogen.sh | 2 configure.ac | 88 debian/changelog | 29 debian/control | 2 debian/libdrm-dev.install | 1 debian/libdrm-intel1.symbols | 8 debian/libdrm-omap1.symbols | 4 debian/libdrm-radeon1.symbols | 2 debian/libdrm2.symbols | 5 debian/patches/02_build_libkms_against_in_tree_drm.diff | 17 debian/patches/revert-nouveau-rewrite.diff | 4935 ++++++++++++++++ debian/patches/series | 2 debian/rules | 16 exynos/Makefile.am | 22 exynos/exynos_drm.c | 396 + exynos/exynos_drm.h | 148 exynos/exynos_drmif.h | 88 exynos/libdrm_exynos.pc.in | 11 include/drm/drm.h | 22 include/drm/drm_mode.h | 25 include/drm/i915_drm.h | 71 intel/Makefile.am | 2 intel/intel_bufmgr.h | 24 intel/intel_bufmgr_gem.c | 364 + intel/intel_bufmgr_priv.h | 5 intel/intel_chipset.h | 79 intel/intel_decode.c | 106 intel/test_decode.c | 2 intel/tests/gen7-3d.batch-ref.txt | 4 libdrm_lists.h | 29 libkms/Makefile.am | 2 man/Makefile.am | 11 man/drmAvailable.man | 25 man/drmHandleEvent.man | 45 man/drmModeGetResources.man | 79 nouveau/Makefile.am | 36 nouveau/abi16.c | 195 nouveau/bufctx.c | 170 nouveau/libdrm_nouveau.pc.in | 2 nouveau/nouveau.c | 527 + nouveau/nouveau.h | 215 nouveau/nouveau_bo.c | 549 - nouveau/nouveau_bo.h | 104 nouveau/nouveau_channel.c | 142 nouveau/nouveau_channel.h | 57 nouveau/nouveau_device.c | 198 nouveau/nouveau_device.h | 33 nouveau/nouveau_drmif.h | 58 nouveau/nouveau_grobj.c | 148 nouveau/nouveau_grobj.h | 48 nouveau/nouveau_notifier.c | 148 nouveau/nouveau_notifier.h | 63 nouveau/nouveau_private.h | 136 nouveau/nouveau_pushbuf.c | 344 - nouveau/nouveau_pushbuf.h | 162 nouveau/nouveau_reloc.c | 154 nouveau/nouveau_reloc.h | 32 nouveau/nouveau_resource.c | 124 nouveau/nouveau_resource.h | 51 nouveau/nv04_pushbuf.h | 66 nouveau/nvc0_pushbuf.h | 92 nouveau/private.h | 122 nouveau/pushbuf.c | 773 ++ omap/omap_drm.c | 199 omap/omap_drm.h | 36 omap/omap_drmif.h | 4 radeon/Makefile.am | 2 radeon/r600_pci_ids.h | 83 radeon/radeon_bo_gem.c | 48 radeon/radeon_bo_gem.h | 4 radeon/radeon_cs_gem.c | 2 radeon/radeon_surface.c | 460 + radeon/radeon_surface.h | 2 tests/modetest/Makefile.am | 14 tests/modetest/buffers.c | 1021 +++ tests/modetest/buffers.h | 45 tests/modetest/modetest.c | 628 +- tests/vbltest/vbltest.c | 2 xf86drm.c | 31 xf86drm.h | 3 xf86drmMode.c | 92 xf86drmMode.h | 14 85 files changed, 12330 insertions(+), 3177 deletions(-)
New commits: commit a523d34a401239ea24a85593c71ed22eeea4d878 Author: Julien Cristau <jcris...@debian.org> Date: Sat Jan 5 22:28:56 2013 +0100 Upload to unstable diff --git a/debian/changelog b/debian/changelog index fe51436..79fa48b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,10 +1,10 @@ -libdrm (2.4.40-1~deb7u1) UNRELEASED; urgency=low +libdrm (2.4.40-1~deb7u1) experimental; urgency=low * Revert nouveau to the 2.4.33 state (ie before the rewrite). * Revert addition of libdrm2-udeb. * Bump libdrm2 shlibs to 2.4.38. - -- Julien Cristau <jcris...@debian.org> Tue, 25 Dec 2012 13:08:50 +0100 + -- Julien Cristau <jcris...@debian.org> Sat, 05 Jan 2013 22:28:45 +0100 libdrm (2.4.40-1) experimental; urgency=low commit 503b3d229472d6fb747b39dc7fc4a3b1210245d2 Author: Julien Cristau <jcris...@debian.org> Date: Tue Dec 25 13:14:35 2012 +0100 Bump libdrm2 shlibs to 2.4.38. diff --git a/debian/changelog b/debian/changelog index 14f29c7..fe51436 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ libdrm (2.4.40-1~deb7u1) UNRELEASED; urgency=low * Revert nouveau to the 2.4.33 state (ie before the rewrite). * Revert addition of libdrm2-udeb. + * Bump libdrm2 shlibs to 2.4.38. -- Julien Cristau <jcris...@debian.org> Tue, 25 Dec 2012 13:08:50 +0100 diff --git a/debian/rules b/debian/rules index 63f0cf9..bb23d84 100755 --- a/debian/rules +++ b/debian/rules @@ -88,7 +88,7 @@ endif dh_strip -s --remaining-packages override_dh_makeshlibs: - dh_makeshlibs -plibdrm2 -V'libdrm2 (>= 2.4.31)' -- -c4 + dh_makeshlibs -plibdrm2 -V'libdrm2 (>= 2.4.38)' -- -c4 ifeq ($(INTEL), yes) dh_makeshlibs -plibdrm-intel1 -V'libdrm-intel1 (>= 2.4.38)' -- -c4 endif commit abc34f3d609e1088ebff24c4695e1a2a5012f224 Author: Julien Cristau <jcris...@debian.org> Date: Tue Dec 25 13:13:41 2012 +0100 Revert addition of libdrm2-udeb. diff --git a/debian/changelog b/debian/changelog index 580aa76..14f29c7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,7 @@ libdrm (2.4.40-1~deb7u1) UNRELEASED; urgency=low * Revert nouveau to the 2.4.33 state (ie before the rewrite). + * Revert addition of libdrm2-udeb. -- Julien Cristau <jcris...@debian.org> Tue, 25 Dec 2012 13:08:50 +0100 diff --git a/debian/control b/debian/control index e9e0031..354f97d 100644 --- a/debian/control +++ b/debian/control @@ -55,16 +55,6 @@ Description: Userspace interface to kernel DRM services -- runtime . This package provides the runtime environment for libdrm. -Package: libdrm2-udeb -XC-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 diff --git a/debian/libdrm2-udeb.install b/debian/libdrm2-udeb.install deleted file mode 100644 index 6e2fd9b..0000000 --- a/debian/libdrm2-udeb.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*/libdrm.so.2* diff --git a/debian/rules b/debian/rules index b348274..63f0cf9 100755 --- a/debian/rules +++ b/debian/rules @@ -88,7 +88,7 @@ endif dh_strip -s --remaining-packages override_dh_makeshlibs: - dh_makeshlibs -plibdrm2 -V'libdrm2 (>= 2.4.31)' --add-udeb=libdrm2-udeb -- -c4 + dh_makeshlibs -plibdrm2 -V'libdrm2 (>= 2.4.31)' -- -c4 ifeq ($(INTEL), yes) dh_makeshlibs -plibdrm-intel1 -V'libdrm-intel1 (>= 2.4.38)' -- -c4 endif commit 1b072ee351dd6254999ae7d76fc066f811c8ed13 Author: Julien Cristau <jcris...@debian.org> Date: Tue Dec 25 13:12:08 2012 +0100 Revert nouveau to the 2.4.33 state (ie before the rewrite). diff --git a/debian/changelog b/debian/changelog index 1389fa9..580aa76 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libdrm (2.4.40-1~deb7u1) UNRELEASED; urgency=low + + * Revert nouveau to the 2.4.33 state (ie before the rewrite). + + -- Julien Cristau <jcris...@debian.org> Tue, 25 Dec 2012 13:08:50 +0100 + libdrm (2.4.40-1) experimental; urgency=low [ Maarten Lankhorst ] diff --git a/debian/control b/debian/control index 12171e7..e9e0031 100644 --- a/debian/control +++ b/debian/control @@ -23,7 +23,7 @@ Depends: libdrm2 (= ${binary:Version}), libdrm-intel1 (= ${binary:Version}) [amd64 i386 kfreebsd-amd64 kfreebsd-i386], libdrm-radeon1 (= ${binary:Version}) [linux-any], - libdrm-nouveau2 (= ${binary:Version}) [linux-any], + libdrm-nouveau1a (= ${binary:Version}) [linux-any], libdrm-omap1 (= ${binary:Version}) [any-arm], libkms1 (= ${binary:Version}) [linux-any], ${misc:Depends}, @@ -112,11 +112,12 @@ Description: Userspace interface to intel-specific kernel DRM services -- debugg . This package provides the debugging symbols for the libdrm-intel1 package. -Package: libdrm-nouveau2 +Package: libdrm-nouveau1a Section: libs Architecture: linux-any Depends: ${shlibs:Depends}, ${misc:Depends}, +Conflicts: libdrm-nouveau1 Pre-Depends: ${misc:Pre-Depends} Multi-Arch: same Description: Userspace interface to nouveau-specific kernel DRM services -- runtime @@ -125,12 +126,13 @@ Description: Userspace interface to nouveau-specific kernel DRM services -- runt 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 +Package: libdrm-nouveau1a-dbg Section: debug Priority: extra Architecture: linux-any -Depends: libdrm-nouveau2 (= ${binary:Version}), +Depends: libdrm-nouveau1a (= ${binary:Version}), ${misc:Depends}, +Conflicts: libdrm-nouveau1-dbg Multi-Arch: same Description: Userspace interface to nouveau-specific kernel DRM -- debugging symbols This library implements the userspace interface to the kernel DRM services. @@ -138,7 +140,7 @@ Description: Userspace interface to nouveau-specific kernel DRM -- debugging sym 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. + This package provides the debugging symbols for the libdrm-nouveau1a package. Package: libdrm-radeon1 Section: libs diff --git a/debian/libdrm-nouveau1a.install b/debian/libdrm-nouveau1a.install new file mode 100644 index 0000000..6c55080 --- /dev/null +++ b/debian/libdrm-nouveau1a.install @@ -0,0 +1 @@ +usr/lib/*/libdrm_nouveau.so.1* diff --git a/debian/libdrm-nouveau1a.lintian-overrides b/debian/libdrm-nouveau1a.lintian-overrides new file mode 100644 index 0000000..76c525b --- /dev/null +++ b/debian/libdrm-nouveau1a.lintian-overrides @@ -0,0 +1 @@ +libdrm-nouveau1a: package-name-doesnt-match-sonames libdrm-nouveau1 diff --git a/debian/libdrm-nouveau1a.symbols b/debian/libdrm-nouveau1a.symbols new file mode 100644 index 0000000..a2ba922 --- /dev/null +++ b/debian/libdrm-nouveau1a.symbols @@ -0,0 +1,46 @@ +libdrm_nouveau.so.1 libdrm-nouveau1a #MINVER# + nouveau_bo_busy@Base 2.4.23 + nouveau_bo_emit_buffer@Base 2.4.23 + nouveau_bo_handle_get@Base 2.4.23 + nouveau_bo_handle_ref@Base 2.4.23 + nouveau_bo_init@Base 2.4.23 + nouveau_bo_map@Base 2.4.23 + nouveau_bo_map_flush@Base 2.4.23 + nouveau_bo_map_range@Base 2.4.23 + nouveau_bo_new@Base 2.4.23 + nouveau_bo_new_tile@Base 2.4.23 + nouveau_bo_pending@Base 2.4.23 + nouveau_bo_ref@Base 2.4.23 + nouveau_bo_takedown@Base 2.4.23 + nouveau_bo_unmap@Base 2.4.23 + nouveau_bo_user@Base 2.4.23 + nouveau_bo_wrap@Base 2.4.23 + nouveau_channel_alloc@Base 2.4.23 + nouveau_channel_free@Base 2.4.23 + nouveau_device_close@Base 2.4.23 + nouveau_device_get_param@Base 2.4.23 + nouveau_device_open@Base 2.4.23 + nouveau_device_open_existing@Base 2.4.23 + nouveau_device_set_param@Base 2.4.23 + nouveau_grobj_alloc@Base 2.4.23 + nouveau_grobj_autobind@Base 2.4.23 + nouveau_grobj_free@Base 2.4.23 + nouveau_grobj_ref@Base 2.4.23 + nouveau_notifier_alloc@Base 2.4.23 + nouveau_notifier_free@Base 2.4.23 + nouveau_notifier_reset@Base 2.4.23 + nouveau_notifier_return_val@Base 2.4.23 + nouveau_notifier_status@Base 2.4.23 + nouveau_notifier_wait_status@Base 2.4.23 + nouveau_pushbuf_emit_reloc@Base 2.4.23 + nouveau_pushbuf_fini@Base 2.4.23 + nouveau_pushbuf_flush@Base 2.4.23 + nouveau_pushbuf_init@Base 2.4.23 + nouveau_pushbuf_marker_emit@Base 2.4.23 + nouveau_pushbuf_marker_undo@Base 2.4.23 + nouveau_pushbuf_submit@Base 2.4.23 + nouveau_reloc_emit@Base 2.4.23 + nouveau_resource_alloc@Base 2.4.23 + nouveau_resource_destroy@Base 2.4.23 + nouveau_resource_free@Base 2.4.23 + nouveau_resource_init@Base 2.4.23 diff --git a/debian/libdrm-nouveau2.install b/debian/libdrm-nouveau2.install deleted file mode 100644 index a573e71..0000000 --- a/debian/libdrm-nouveau2.install +++ /dev/null @@ -1 +0,0 @@ -usr/lib/*/libdrm_nouveau.so.2* diff --git a/debian/libdrm-nouveau2.lintian-overrides b/debian/libdrm-nouveau2.lintian-overrides deleted file mode 100644 index 730972c..0000000 --- a/debian/libdrm-nouveau2.lintian-overrides +++ /dev/null @@ -1 +0,0 @@ -libdrm-nouveau2: symbols-declares-dependency-on-other-package libdrm-nouveau-private diff --git a/debian/libdrm-nouveau2.symbols b/debian/libdrm-nouveau2.symbols deleted file mode 100644 index 1b5ee4c..0000000 --- a/debian/libdrm-nouveau2.symbols +++ /dev/null @@ -1,44 +0,0 @@ -libdrm_nouveau.so.2 libdrm-nouveau2 #MINVER# -| libdrm-nouveau-private - abi16_bo_info@Base 0 1 - abi16_bo_init@Base 0 1 - abi16_chan_nv04@Base 0 1 - abi16_chan_nvc0@Base 0 1 - abi16_engobj@Base 0 1 - abi16_ntfy@Base 0 1 - 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_debug@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 diff --git a/debian/patches/revert-nouveau-rewrite.diff b/debian/patches/revert-nouveau-rewrite.diff new file mode 100644 index 0000000..76bec4b --- /dev/null +++ b/debian/patches/revert-nouveau-rewrite.diff @@ -0,0 +1,4935 @@ +diff --git a/nouveau/Makefile.am b/nouveau/Makefile.am +index 206e892..8b89916 100644 +--- a/nouveau/Makefile.am ++++ b/nouveau/Makefile.am +@@ -3,23 +3,41 @@ AM_CFLAGS = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/nouveau \ + $(PTHREADSTUBS_CFLAGS) \ +- -I$(top_srcdir)/include/drm \ +- -DDEBUG ++ -I$(top_srcdir)/include/drm + + libdrm_nouveau_la_LTLIBRARIES = libdrm_nouveau.la + libdrm_nouveau_ladir = $(libdir) +-libdrm_nouveau_la_LDFLAGS = -version-number 2:0:0 -no-undefined ++libdrm_nouveau_la_LDFLAGS = -version-number 1:0:0 -no-undefined + libdrm_nouveau_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@ + +-libdrm_nouveau_la_SOURCES = nouveau.c \ +- pushbuf.c \ +- bufctx.c \ +- abi16.c \ +- private.h ++libdrm_nouveau_la_SOURCES = \ ++ nouveau_device.c \ ++ nouveau_channel.c \ ++ nouveau_pushbuf.c \ ++ nouveau_grobj.c \ ++ nouveau_notifier.c \ ++ nouveau_bo.c \ ++ nouveau_resource.c \ ++ nouveau_private.h \ ++ nouveau_reloc.c ++ ++libdrm_nouveaucommonincludedir = ${includedir}/nouveau ++libdrm_nouveaucommoninclude_HEADERS = \ ++ nouveau_device.h \ ++ nouveau_channel.h \ ++ nouveau_grobj.h \ ++ nouveau_notifier.h \ ++ nouveau_pushbuf.h \ ++ nv04_pushbuf.h \ ++ nvc0_pushbuf.h \ ++ nouveau_bo.h \ ++ nouveau_resource.h \ ++ nouveau_reloc.h + + + libdrm_nouveauincludedir = ${includedir}/libdrm +-libdrm_nouveauinclude_HEADERS = nouveau.h ++libdrm_nouveauinclude_HEADERS = \ ++ nouveau_drmif.h + + pkgconfigdir = @pkgconfigdir@ + pkgconfig_DATA = libdrm_nouveau.pc +diff --git a/nouveau/abi16.c b/nouveau/abi16.c +deleted file mode 100644 +index a67fbc1..0000000 +--- a/nouveau/abi16.c ++++ /dev/null +@@ -1,195 +0,0 @@ +-/* +- * Copyright 2012 Red Hat Inc. +- * +- * 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. +- * +- * Authors: Ben Skeggs +- */ +- +-#include <stdlib.h> +-#include <stdint.h> +- +-#include "private.h" +- +-int +-abi16_chan_nv04(struct nouveau_object *obj) +-{ +- struct nouveau_device *dev = (struct nouveau_device *)obj->parent; +- struct nv04_fifo *nv04 = obj->data; +- struct drm_nouveau_channel_alloc req = {nv04->vram, nv04->gart}; +- int ret; +- +- ret = drmCommandWriteRead(dev->fd, DRM_NOUVEAU_CHANNEL_ALLOC, +- &req, sizeof(req)); +- if (ret) +- return ret; +- +- nv04->base.channel = req.channel; +- nv04->base.pushbuf = req.pushbuf_domains; +- nv04->notify = req.notifier_handle; +- nv04->base.object->handle = req.channel; +- nv04->base.object->length = sizeof(*nv04); +- return 0; +-} +- +-int +-abi16_chan_nvc0(struct nouveau_object *obj) +-{ +- struct nouveau_device *dev = (struct nouveau_device *)obj->parent; +- struct drm_nouveau_channel_alloc req = {}; +- struct nvc0_fifo *nvc0 = obj->data; +- int ret; +- +- ret = drmCommandWriteRead(dev->fd, DRM_NOUVEAU_CHANNEL_ALLOC, +- &req, sizeof(req)); +- if (ret) +- return ret; +- +- nvc0->base.channel = req.channel; +- nvc0->base.pushbuf = req.pushbuf_domains; +- nvc0->notify = req.notifier_handle; +- nvc0->base.object->handle = req.channel; +- nvc0->base.object->length = sizeof(*nvc0); +- return 0; +-} +- +-int +-abi16_engobj(struct nouveau_object *obj) +-{ +- struct drm_nouveau_grobj_alloc req = { +- obj->parent->handle, obj->handle, obj->oclass +- }; +- struct nouveau_device *dev; +- int ret; +- +- dev = nouveau_object_find(obj, NOUVEAU_DEVICE_CLASS); +- ret = drmCommandWrite(dev->fd, DRM_NOUVEAU_GROBJ_ALLOC, +- &req, sizeof(req)); +- if (ret) +- return ret; +- +- obj->length = sizeof(struct nouveau_object *); +- return 0; +-} +- +-int +-abi16_ntfy(struct nouveau_object *obj) +-{ +- struct nv04_notify *ntfy = obj->data; +- struct drm_nouveau_notifierobj_alloc req = { +- obj->parent->handle, ntfy->object->handle, ntfy->length +- }; +- struct nouveau_device *dev; +- int ret; +- +- dev = nouveau_object_find(obj, NOUVEAU_DEVICE_CLASS); +- ret = drmCommandWriteRead(dev->fd, DRM_NOUVEAU_NOTIFIEROBJ_ALLOC, +- &req, sizeof(req)); +- if (ret) +- return ret; +- +- ntfy->offset = req.offset; +- ntfy->object->length = sizeof(*ntfy); +- return 0; +-} +- +-void +-abi16_bo_info(struct nouveau_bo *bo, struct drm_nouveau_gem_info *info) +-{ +- struct nouveau_bo_priv *nvbo = nouveau_bo(bo); +- +- nvbo->map_handle = info->map_handle; +- bo->handle = info->handle; +- bo->size = info->size; +- bo->offset = info->offset; +- +- bo->flags = 0; +- if (info->domain & NOUVEAU_GEM_DOMAIN_VRAM) +- bo->flags |= NOUVEAU_BO_VRAM; +- if (info->domain & NOUVEAU_GEM_DOMAIN_GART) +- bo->flags |= NOUVEAU_BO_GART; +- if (!(info->tile_flags & NOUVEAU_GEM_TILE_NONCONTIG)) +- bo->flags |= NOUVEAU_BO_CONTIG; +- if (nvbo->map_handle) +- bo->flags |= NOUVEAU_BO_MAP; +- +- if (bo->device->chipset >= 0xc0) { +- bo->config.nvc0.memtype = (info->tile_flags & 0xff00) >> 8; +- bo->config.nvc0.tile_mode = info->tile_mode; +- } else +- if (bo->device->chipset >= 0x80 || bo->device->chipset == 0x50) { +- bo->config.nv50.memtype = (info->tile_flags & 0x07f00) >> 8 | +- (info->tile_flags & 0x30000) >> 9; +- bo->config.nv50.tile_mode = info->tile_mode << 4; +- } else { +- bo->config.nv04.surf_flags = info->tile_flags & 7; +- bo->config.nv04.surf_pitch = info->tile_mode; +- } +-} +- +-int +-abi16_bo_init(struct nouveau_bo *bo, uint32_t alignment, +- union nouveau_bo_config *config) +-{ +- struct nouveau_device *dev = bo->device; +- struct drm_nouveau_gem_new req = {}; +- struct drm_nouveau_gem_info *info = &req.info; +- int ret; +- +- if (bo->flags & NOUVEAU_BO_VRAM) +- info->domain |= NOUVEAU_GEM_DOMAIN_VRAM; +- if (bo->flags & NOUVEAU_BO_GART) +- info->domain |= NOUVEAU_GEM_DOMAIN_GART; +- if (!info->domain) +- info->domain |= NOUVEAU_GEM_DOMAIN_VRAM | +- NOUVEAU_GEM_DOMAIN_GART; +- +- if (bo->flags & NOUVEAU_BO_MAP) +- info->domain |= NOUVEAU_GEM_DOMAIN_MAPPABLE; +- +- if (!(bo->flags & NOUVEAU_BO_CONTIG)) +- info->tile_flags = NOUVEAU_GEM_TILE_NONCONTIG; +- +- info->size = bo->size; +- req.align = alignment; +- +- if (config) { +- if (dev->chipset >= 0xc0) { +- info->tile_flags = (config->nvc0.memtype & 0xff) << 8; +- info->tile_mode = config->nvc0.tile_mode; +- } else +- if (dev->chipset >= 0x80 || dev->chipset == 0x50) { +- info->tile_flags = (config->nv50.memtype & 0x07f) << 8 | +- (config->nv50.memtype & 0x180) << 9; +- info->tile_mode = config->nv50.tile_mode >> 4; +- } else { +- info->tile_flags = config->nv04.surf_flags & 7; +- info->tile_mode = config->nv04.surf_pitch; +- } +- } +- +- if (!nouveau_device(dev)->have_bo_usage) +- info->tile_flags &= 0x0000ff00; +- +- ret = drmCommandWriteRead(dev->fd, DRM_NOUVEAU_GEM_NEW, +- &req, sizeof(req)); +- if (ret == 0) +- abi16_bo_info(bo, &req.info); +- return ret; +-} +diff --git a/nouveau/bufctx.c b/nouveau/bufctx.c +deleted file mode 100644 +index 23d6f09..0000000 +--- a/nouveau/bufctx.c ++++ /dev/null +@@ -1,170 +0,0 @@ +-/* +- * Copyright 2012 Red Hat Inc. +- * +- * 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. +- * +- * Authors: Ben Skeggs +- */ +- +-#ifdef HAVE_CONFIG_H +-#include <config.h> +-#endif +- +-#include <stdio.h> +-#include <stdlib.h> +-#include <stdint.h> +-#include <stdbool.h> +-#include <assert.h> +-#include <errno.h> +- +-#include "libdrm_lists.h" +- +-#include "nouveau.h" +-#include "private.h" +- +-struct nouveau_bufref_priv { +- struct nouveau_bufref base; +- struct nouveau_bufref_priv *next; +- struct nouveau_bufctx *bufctx; +-}; +- +-static inline struct nouveau_bufref_priv * +-nouveau_bufref(struct nouveau_bufref *bctx) +-{ +- return (struct nouveau_bufref_priv *)bctx; +-} +- +-struct nouveau_bufbin_priv { +- struct nouveau_bufref_priv *list; +- int relocs; +-}; +- +-struct nouveau_bufctx_priv { +- struct nouveau_bufctx base; +- struct nouveau_bufref_priv *free; +- int nr_bins; +- struct nouveau_bufbin_priv bins[]; +-}; +- +-static inline struct nouveau_bufctx_priv * +-nouveau_bufctx(struct nouveau_bufctx *bctx) +-{ +- return (struct nouveau_bufctx_priv *)bctx; +-} +- +-int +-nouveau_bufctx_new(struct nouveau_client *client, int bins, +- struct nouveau_bufctx **pbctx) +-{ +- struct nouveau_bufctx_priv *priv; +- +- priv = calloc(1, sizeof(*priv) + sizeof(priv->bins[0]) * bins); +- if (priv) { +- DRMINITLISTHEAD(&priv->base.head); +- DRMINITLISTHEAD(&priv->base.pending); +- DRMINITLISTHEAD(&priv->base.current); +- priv->base.client = client; +- priv->nr_bins = bins; +- *pbctx = &priv->base; +- return 0; +- } +- +- return -ENOMEM; +-} +- +-void +-nouveau_bufctx_del(struct nouveau_bufctx **pbctx) +-{ +- struct nouveau_bufctx_priv *pctx = nouveau_bufctx(*pbctx); +- struct nouveau_bufref_priv *pref; +- if (pctx) { +- while (pctx->nr_bins--) +- nouveau_bufctx_reset(&pctx->base, pctx->nr_bins); +- while ((pref = pctx->free)) { +- pctx->free = pref->next; +- free(pref); +- } +- free(pctx); +- *pbctx = NULL; +- } +-} +- +-void +-nouveau_bufctx_reset(struct nouveau_bufctx *bctx, int bin) +-{ +- struct nouveau_bufctx_priv *pctx = nouveau_bufctx(bctx); +- struct nouveau_bufbin_priv *pbin = &pctx->bins[bin]; +- struct nouveau_bufref_priv *pref; +- +- while ((pref = pbin->list)) { +- DRMLISTDELINIT(&pref->base.thead); +- pbin->list = pref->next; +- pref->next = pctx->free; +- pctx->free = pref; +- } +- +- bctx->relocs -= pbin->relocs; +- pbin->relocs = 0; +-} +- +-struct nouveau_bufref * +-nouveau_bufctx_refn(struct nouveau_bufctx *bctx, int bin, +- struct nouveau_bo *bo, uint32_t flags) +-{ +- struct nouveau_bufctx_priv *pctx = nouveau_bufctx(bctx); +- struct nouveau_bufbin_priv *pbin = &pctx->bins[bin]; +- struct nouveau_bufref_priv *pref = pctx->free; +- +- if (!pref) +- pref = malloc(sizeof(*pref)); +- else +- pctx->free = pref->next; +- +- if (pref) { +- pref->base.bo = bo; +- pref->base.flags = flags; +- pref->base.packet = 0; +- +- DRMLISTADDTAIL(&pref->base.thead, &bctx->pending); +- pref->bufctx = bctx; +- pref->next = pbin->list; +- pbin->list = pref; +- } +- +- return &pref->base; +-} +- +-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) +-{ +- struct nouveau_bufctx_priv *pctx = nouveau_bufctx(bctx); +- struct nouveau_bufbin_priv *pbin = &pctx->bins[bin]; +- struct nouveau_bufref *bref = nouveau_bufctx_refn(bctx, bin, bo, flags); +- if (bref) { +- bref->packet = packet; +- bref->data = data; +- bref->vor = vor; +- bref->tor = tor; +- pbin->relocs++; +- bctx->relocs++; +- } +- return bref; +-} +diff --git a/nouveau/libdrm_nouveau.pc.in b/nouveau/libdrm_nouveau.pc.in +index 6170613..c78a28a 100644 +--- a/nouveau/libdrm_nouveau.pc.in ++++ b/nouveau/libdrm_nouveau.pc.in +@@ -5,7 +5,7 @@ includedir=@includedir@ + + Name: libdrm_nouveau + Description: Userspace interface to nouveau kernel DRM services +-Version: 2.4.33 ++Version: 0.6 + Libs: -L${libdir} -ldrm_nouveau + Cflags: -I${includedir} -I${includedir}/libdrm -I${includedir}/nouveau + Requires.private: libdrm +diff --git a/nouveau/nouveau.c b/nouveau/nouveau.c +deleted file mode 100644 +index 940d933..0000000 +--- a/nouveau/nouveau.c ++++ /dev/null +@@ -1,527 +0,0 @@ +-/* +- * Copyright 2012 Red Hat Inc. +- * +- * 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. +- * +- * Authors: Ben Skeggs +- */ +- +-#ifdef HAVE_CONFIG_H +-#include <config.h> +-#endif +- +-#include <stdio.h> +-#include <stdlib.h> +-#include <stdint.h> +-#include <string.h> +-#include <stdbool.h> +-#include <assert.h> +-#include <errno.h> +-#include <sys/mman.h> +-#include <fcntl.h> +- +-#include <xf86drm.h> +-#include <xf86atomic.h> +-#include "libdrm_lists.h" +-#include "nouveau_drm.h" +- +-#include "nouveau.h" +-#include "private.h" +- +-#ifdef DEBUG +-uint32_t nouveau_debug = 0; +- +-static void +-debug_init(char *args) +-{ +- if (args) { +- int n = strtol(args, NULL, 0); +- if (n >= 0) +- nouveau_debug = n; +- } +-} +-#endif +- +-/* this is the old libdrm's version of nouveau_device_wrap(), the symbol +- * 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 +-nouveau_device_open_existing(struct nouveau_device **pdev, int close, int fd, +- drm_context_t ctx) +-{ +- return -EACCES; +-} +- +-int +-nouveau_device_wrap(int fd, int close, struct nouveau_device **pdev) +-{ +- struct nouveau_device_priv *nvdev = calloc(1, sizeof(*nvdev)); +- struct nouveau_device *dev = &nvdev->base; +- uint64_t chipset, vram, gart, bousage; +- drmVersionPtr ver; +- int ret; +- +-#ifdef DEBUG +- debug_init(getenv("NOUVEAU_LIBDRM_DEBUG")); +-#endif +- +- if (!nvdev) +- return -ENOMEM; +- nvdev->base.fd = fd; +- +- ver = drmGetVersion(fd); +- if (ver) dev->drm_version = (ver->version_major << 24) | +- (ver->version_minor << 8) | +- ver->version_patchlevel; +- drmFreeVersion(ver); +- +- if ( dev->drm_version != 0x00000010 && +- (dev->drm_version < 0x01000000 || +- dev->drm_version >= 0x02000000)) { +- nouveau_device_del(&dev); +- return -EINVAL; +- } +- +- ret = nouveau_getparam(dev, NOUVEAU_GETPARAM_CHIPSET_ID, &chipset); +- if (ret == 0) +- ret = nouveau_getparam(dev, NOUVEAU_GETPARAM_FB_SIZE, &vram); +- if (ret == 0) +- ret = nouveau_getparam(dev, NOUVEAU_GETPARAM_AGP_SIZE, &gart); +- if (ret) { +- nouveau_device_del(&dev); +- return ret; +- } +- +- ret = nouveau_getparam(dev, NOUVEAU_GETPARAM_HAS_BO_USAGE, &bousage); +- if (ret == 0) +- nvdev->have_bo_usage = (bousage != 0); +- +- nvdev->close = close; +- DRMINITLISTHEAD(&nvdev->bo_list); +- nvdev->base.object.oclass = NOUVEAU_DEVICE_CLASS; +- nvdev->base.lib_version = 0x01000000; +- nvdev->base.chipset = chipset; +- nvdev->base.vram_size = vram; +- nvdev->base.gart_size = gart; +- nvdev->base.vram_limit = (nvdev->base.vram_size * 80) / 100; +- nvdev->base.gart_limit = (nvdev->base.gart_size * 80) / 100; +- +- *pdev = &nvdev->base; +- return 0; +-} +- +-int +-nouveau_device_open(const char *busid, struct nouveau_device **pdev) +-{ +- int ret = -ENODEV, fd = drmOpen("nouveau", busid); +- if (fd >= 0) { +- ret = nouveau_device_wrap(fd, 1, pdev); +- if (ret) +- drmClose(fd); -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1trbae-0002o2...@vasks.debian.org