[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libdrm: Changes to 'ubuntu'



 ChangeLog                                                              |  397 +++
 Makefile.am                                                            |    1 
 configure.ac                                                           |   51 
 debian/changelog                                                       |   61 
 debian/control                                                         |   34 
 debian/libdrm-intel1.install                                           |    2 
 debian/libdrm-intel1.symbols                                           |    2 
 debian/libdrm-nouveau1.symbols                                         |    6 
 debian/libdrm-radeon1.symbols                                          |    2 
 debian/libdrm2.install                                                 |    2 
 debian/patches/02_fix_kms_detection_with_linux_backport_modules.diff   |   33 
 debian/patches/03_revert_abi_change.diff                               | 1220 ----------
 debian/patches/04_git_nouveau_fix_sigsegv_in_nouveau_bo_new_tile.patch |   27 
 debian/patches/series                                                  |    3 
 debian/rules                                                           |   15 
 include/drm/Makefile.am                                                |    2 
 include/drm/i915_drm.h                                                 |   56 
 include/drm/radeon_drm.h                                               |    1 
 include/drm/vmwgfx_drm.h                                               |   63 
 intel/Makefile.am                                                      |    3 
 intel/intel_atomic.h                                                   |   93 
 intel/intel_bufmgr.c                                                   |   12 
 intel/intel_bufmgr.h                                                   |    5 
 intel/intel_bufmgr_gem.c                                               |  348 ++
 intel/intel_bufmgr_priv.h                                              |    5 
 intel/intel_chipset.h                                                  |   90 
 intel/libdrm_intel.pc.in                                               |    2 
 libdrm.pc.in                                                           |    2 
 libkms/Makefile.am                                                     |    5 
 libkms/intel.c                                                         |    2 
 libkms/internal.h                                                      |    2 
 libkms/libkms.pc.in                                                    |    2 
 libkms/linux.c                                                         |    4 
 libkms/nouveau.c                                                       |  220 +
 nouveau/Makefile.am                                                    |    2 
 nouveau/libdrm_nouveau.pc.in                                           |    3 
 nouveau/nouveau_bo.c                                                   |    2 
 nouveau/nouveau_channel.c                                              |    2 
 nouveau/nouveau_class.h                                                |  544 ++--
 nouveau/nouveau_private.h                                              |    1 
 nouveau/nouveau_reloc.c                                                |    6 
 radeon/Makefile.am                                                     |    2 
 radeon/libdrm_radeon.pc.in                                             |    2 
 radeon/radeon_bo.h                                                     |    1 
 radeon/radeon_bo_gem.c                                                 |    9 
 radeon/radeon_bo_gem.h                                                 |    1 
 radeon/radeon_cs.c                                                     |    6 
 radeon/radeon_cs.h                                                     |    2 
 radeon/radeon_cs_gem.c                                                 |  129 -
 radeon/radeon_cs_int.h                                                 |    1 
 tests/kmstest/main.c                                                   |    1 
 tests/modeprint/modeprint.c                                            |    4 
 tests/modetest/modetest.c                                              |   29 
 xf86atomic.h                                                           |   99 
 xf86drmMode.h                                                          |    2 
 55 files changed, 1740 insertions(+), 1881 deletions(-)

New commits:
commit 14355c24519c0b8de1d2745c49bb2e01846da3a9
Author: Robert Hooker <sarvatt@ubuntu.com>
Date:   Fri May 14 14:06:03 2010 -0400

    Update changelog.

diff --git a/debian/changelog b/debian/changelog
index 39a47bf..485e71e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,11 @@
 libdrm (2.4.20-2ubuntu1) maverick; urgency=low
 
-  * Merge from debian unstable, remaining changes:
+  * Merge from debian experimental, remaining changes:
     - Dropped patches:
       02_fix_kms_detection_with_linux_backport_modules.diff - Obsolete
       03_revert_abi_change.diff - Obsolete
       04_git_nouveau_fix_sigsegv_in_nouveau_bo_new_tile.patch - Upstream
+  * Refresh libdrm-nouveau1 symbols
 
  -- Robert Hooker <sarvatt@ubuntu.com>  Fri, 14 May 2010 13:47:41 -0400
 

commit 4aff8ba91bc496d688a7342fa5e842aa941fb53d
Author: Robert Hooker <sarvatt@ubuntu.com>
Date:   Fri May 14 14:04:49 2010 -0400

    Refresh libdrm-nouveau1 symbols.

diff --git a/debian/libdrm-nouveau1.symbols b/debian/libdrm-nouveau1.symbols
index 48ce118..52dd5c6 100644
--- a/debian/libdrm-nouveau1.symbols
+++ b/debian/libdrm-nouveau1.symbols
@@ -12,12 +12,12 @@ libdrm_nouveau.so.1 libdrm-nouveau1 #MINVER#
  nouveau_bo_new@Base 2.4.4
  nouveau_bo_new_tile@Base 2.4.11-1ubuntu1~
  nouveau_bo_pending@Base 2.4.16
- nouveau_bo_pin@Base 2.4.4
+#MISSING: 2.4.20# nouveau_bo_pin@Base 2.4.4
  nouveau_bo_ref@Base 2.4.4
  nouveau_bo_takedown@Base 2.4.4
 #MISSING: 2.4.12+git20090729.5a73f066# nouveau_bo_tile@Base 2.4.4
  nouveau_bo_unmap@Base 2.4.4
- nouveau_bo_unpin@Base 2.4.4
+#MISSING: 2.4.20# nouveau_bo_unpin@Base 2.4.4
  nouveau_bo_user@Base 2.4.4
 #MISSING: 2.4.12+git20090729.5a73f066# nouveau_bo_validate_nomm@Base 2.4.4
  nouveau_bo_wrap@Base 2.4.11-1ubuntu1~
@@ -53,6 +53,8 @@ libdrm_nouveau.so.1 libdrm-nouveau1 #MINVER#
  nouveau_pushbuf_init@Base 2.4.4
  nouveau_pushbuf_marker_emit@Base 2.4.16
  nouveau_pushbuf_marker_undo@Base 2.4.16
+ nouveau_pushbuf_submit@Base 2.4.20
+ nouveau_reloc_emit@Base 2.4.20
  nouveau_resource_alloc@Base 2.4.4
  nouveau_resource_destroy@Base 2.4.18
  nouveau_resource_free@Base 2.4.4

commit cfd066312d6e30986f80186003c36ee513fc2367
Author: Robert Hooker <sarvatt@ubuntu.com>
Date:   Fri May 14 13:51:10 2010 -0400

    Update changelog.

diff --git a/debian/changelog b/debian/changelog
index eaab6c4..39a47bf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+libdrm (2.4.20-2ubuntu1) maverick; urgency=low
+
+  * Merge from debian unstable, remaining changes:
+    - Dropped patches:
+      02_fix_kms_detection_with_linux_backport_modules.diff - Obsolete
+      03_revert_abi_change.diff - Obsolete
+      04_git_nouveau_fix_sigsegv_in_nouveau_bo_new_tile.patch - Upstream
+
+ -- Robert Hooker <sarvatt@ubuntu.com>  Fri, 14 May 2010 13:47:41 -0400
+
 libdrm (2.4.20-2) experimental; urgency=low
 
   * Upload again, faking a new upstream version, since a screw-up on

commit 46409ec3c497866231c567110e42dae881b20982
Author: Robert Hooker <sarvatt@ubuntu.com>
Date:   Fri May 14 13:45:17 2010 -0400

    Drop upstream and obsolete patches.

diff --git a/debian/patches/02_fix_kms_detection_with_linux_backport_modules.diff b/debian/patches/02_fix_kms_detection_with_linux_backport_modules.diff
deleted file mode 100644
index b4b2ecc..0000000
--- a/debian/patches/02_fix_kms_detection_with_linux_backport_modules.diff
+++ /dev/null
@@ -1,33 +0,0 @@
-Index: libdrm/xf86drmMode.c
-===================================================================
---- libdrm.orig/xf86drmMode.c	2010-02-01 12:41:44.603591443 +1100
-+++ libdrm/xf86drmMode.c	2010-02-01 12:46:55.943922337 +1100
-@@ -620,6 +620,28 @@
- 			return 0;
- 	}
- 
-+	/* Ubuntu's linux-backports-modules renames the drm module to lbm-drm
-+	   to avoid conflicting with existing drm modules.  We therefore need
-+	   to search in $DIR/lbm-drm as well as $DIR/drm */
-+	sprintf(pci_dev_dir, "/sys/bus/pci/devices/%04x:%02x:%02x.%d/lbm-drm",
-+		domain, bus, dev, func);
-+
-+	sysdir = opendir(pci_dev_dir);
-+	if (sysdir) {
-+		dent = readdir(sysdir);
-+		while (dent) {
-+			if (!strncmp(dent->d_name, "controlD", 8)) {
-+				found = 1;
-+				break;
-+			}
-+
-+			dent = readdir(sysdir);
-+		}
-+		closedir(sysdir);
-+		if (found)
-+			return 0;
-+	}
-+
- 	sprintf(pci_dev_dir, "/sys/bus/pci/devices/%04x:%02x:%02x.%d/",
- 		domain, bus, dev, func);
- 
diff --git a/debian/patches/03_revert_abi_change.diff b/debian/patches/03_revert_abi_change.diff
deleted file mode 100644
index c085405..0000000
--- a/debian/patches/03_revert_abi_change.diff
+++ /dev/null
@@ -1,2158 +0,0 @@
-<<<<<<< HEAD
-=======
-Revert nouveau ABI change to match what is in 2.6.33.
-
-This reverts commits after b496c63143e9a4ca02011582329bce2df99d9b7c
-except those that only touch the build system:
-  e73af7f560c95ba9c665bead7fc8eb1471db9975
-  976e779f9cd0571dd2c218580485b39d37bd18a0
-
->>>>>>> libdrm-2.4.20-2
-diff --git a/include/drm/nouveau_drm.h b/include/drm/nouveau_drm.h
-index a6a9f4a..f745948 100644
---- a/include/drm/nouveau_drm.h
-+++ b/include/drm/nouveau_drm.h
-@@ -25,14 +25,13 @@
- #ifndef __NOUVEAU_DRM_H__
- #define __NOUVEAU_DRM_H__
- 
--#define NOUVEAU_DRM_HEADER_PATCHLEVEL 16
-+#define NOUVEAU_DRM_HEADER_PATCHLEVEL 15
- 
- struct drm_nouveau_channel_alloc {
- 	uint32_t     fb_ctxdma_handle;
- 	uint32_t     tt_ctxdma_handle;
- 
- 	int          channel;
--	uint32_t     pushbuf_domains;
- 
- 	/* Notifier memory */
- 	uint32_t     notifier_handle;
-@@ -110,58 +109,68 @@ struct drm_nouveau_gem_new {
- 	uint32_t align;
- };
- 
--#define NOUVEAU_GEM_MAX_BUFFERS 1024
--struct drm_nouveau_gem_pushbuf_bo_presumed {
--	uint32_t valid;
--	uint32_t domain;
--	uint64_t offset;
--};
--
- struct drm_nouveau_gem_pushbuf_bo {
- 	uint64_t user_priv;
- 	uint32_t handle;
- 	uint32_t read_domains;
- 	uint32_t write_domains;
- 	uint32_t valid_domains;
--	struct drm_nouveau_gem_pushbuf_bo_presumed presumed;
-+	uint32_t presumed_ok;
-+	uint32_t presumed_domain;
-+	uint64_t presumed_offset;
- };
- 
- #define NOUVEAU_GEM_RELOC_LOW  (1 << 0)
- #define NOUVEAU_GEM_RELOC_HIGH (1 << 1)
- #define NOUVEAU_GEM_RELOC_OR   (1 << 2)
--#define NOUVEAU_GEM_MAX_RELOCS 1024
- struct drm_nouveau_gem_pushbuf_reloc {
--	uint32_t reloc_bo_index;
--	uint32_t reloc_bo_offset;
- 	uint32_t bo_index;
-+	uint32_t reloc_index;
- 	uint32_t flags;
- 	uint32_t data;
- 	uint32_t vor;
- 	uint32_t tor;
- };
- 
--#define NOUVEAU_GEM_MAX_PUSH 512
--struct drm_nouveau_gem_pushbuf_push {
--	uint32_t bo_index;
--	uint32_t pad;
--	uint64_t offset;
--	uint64_t length;
--};
-+#define NOUVEAU_GEM_MAX_BUFFERS 1024
-+#define NOUVEAU_GEM_MAX_RELOCS 1024
- 
- struct drm_nouveau_gem_pushbuf {
- 	uint32_t channel;
-+	uint32_t nr_dwords;
- 	uint32_t nr_buffers;
-+	uint32_t nr_relocs;
-+	uint64_t dwords;
- 	uint64_t buffers;
-+	uint64_t relocs;
-+};
-+
-+struct drm_nouveau_gem_pushbuf_call {
-+	uint32_t channel;
-+	uint32_t handle;
-+	uint32_t offset;
-+	uint32_t nr_buffers;
- 	uint32_t nr_relocs;
--	uint32_t nr_push;
-+	uint32_t nr_dwords;
-+	uint64_t buffers;
- 	uint64_t relocs;
--	uint64_t push;
- 	uint32_t suffix0;
- 	uint32_t suffix1;
-+	/* below only accessed for CALL2 */
- 	uint64_t vram_available;
- 	uint64_t gart_available;
- };
- 
-+struct drm_nouveau_gem_pin {
-+	uint32_t handle;
-+	uint32_t domain;
-+	uint64_t offset;
-+};
-+
-+struct drm_nouveau_gem_unpin {
-+	uint32_t handle;
-+};
-+
- #define NOUVEAU_GEM_CPU_PREP_NOWAIT                                  0x00000001
- #define NOUVEAU_GEM_CPU_PREP_NOBLOCK                                 0x00000002
- #define NOUVEAU_GEM_CPU_PREP_WRITE                                   0x00000004
-@@ -174,6 +183,14 @@ struct drm_nouveau_gem_cpu_fini {
- 	uint32_t handle;
- };
- 
-+struct drm_nouveau_gem_tile {
-+	uint32_t handle;
-+	uint32_t offset;
-+	uint32_t size;
-+	uint32_t tile_mode;
-+	uint32_t tile_flags;
-+};
-+
- enum nouveau_bus_type {
- 	NV_AGP     = 0,
- 	NV_PCI     = 1,
-@@ -183,17 +200,22 @@ enum nouveau_bus_type {
- struct drm_nouveau_sarea {
- };
- 
--#define DRM_NOUVEAU_GETPARAM           0x00
--#define DRM_NOUVEAU_SETPARAM           0x01
--#define DRM_NOUVEAU_CHANNEL_ALLOC      0x02
--#define DRM_NOUVEAU_CHANNEL_FREE       0x03
--#define DRM_NOUVEAU_GROBJ_ALLOC        0x04
--#define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC  0x05
--#define DRM_NOUVEAU_GPUOBJ_FREE        0x06
-+#define DRM_NOUVEAU_CARD_INIT          0x00
-+#define DRM_NOUVEAU_GETPARAM           0x01
-+#define DRM_NOUVEAU_SETPARAM           0x02
-+#define DRM_NOUVEAU_CHANNEL_ALLOC      0x03
-+#define DRM_NOUVEAU_CHANNEL_FREE       0x04
-+#define DRM_NOUVEAU_GROBJ_ALLOC        0x05
-+#define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC  0x06
-+#define DRM_NOUVEAU_GPUOBJ_FREE        0x07
- #define DRM_NOUVEAU_GEM_NEW            0x40
- #define DRM_NOUVEAU_GEM_PUSHBUF        0x41
--#define DRM_NOUVEAU_GEM_CPU_PREP       0x42
--#define DRM_NOUVEAU_GEM_CPU_FINI       0x43
--#define DRM_NOUVEAU_GEM_INFO           0x44
-+#define DRM_NOUVEAU_GEM_PUSHBUF_CALL   0x42
-+#define DRM_NOUVEAU_GEM_PIN            0x43 /* !KMS only */
-+#define DRM_NOUVEAU_GEM_UNPIN          0x44 /* !KMS only */
-+#define DRM_NOUVEAU_GEM_CPU_PREP       0x45
-+#define DRM_NOUVEAU_GEM_CPU_FINI       0x46
-+#define DRM_NOUVEAU_GEM_INFO           0x47
-+#define DRM_NOUVEAU_GEM_PUSHBUF_CALL2  0x48
- 
- #endif /* __NOUVEAU_DRM_H__ */
-diff --git a/nouveau/Makefile.am b/nouveau/Makefile.am
-<<<<<<< HEAD
-index 5d759c5..70bbbb2 100644
-=======
-index b6d214a..217b7ef 100644
->>>>>>> libdrm-2.4.20-2
---- a/nouveau/Makefile.am
-+++ b/nouveau/Makefile.am
-@@ -18,8 +18,7 @@ libdrm_nouveau_la_SOURCES = \
- 			    nouveau_notifier.c \
- 			    nouveau_bo.c \
- 			    nouveau_resource.c \
--			    nouveau_private.h \
--			    nouveau_reloc.c
-+			    nouveau_private.h
- 
- libdrm_nouveaucommonincludedir = ${includedir}/nouveau
- libdrm_nouveaucommoninclude_HEADERS = \
-@@ -30,8 +29,7 @@ libdrm_nouveaucommoninclude_HEADERS = \
- 				nouveau_pushbuf.h \
- 				nouveau_bo.h \
- 				nouveau_resource.h \
--				nouveau_class.h \
--				nouveau_reloc.h
-+				nouveau_class.h
- 
- 
-<<<<<<< HEAD
- libdrm_nouveauincludedir = ${includedir}/drm
-diff --git a/nouveau/nouveau_bo.c b/nouveau/nouveau_bo.c
-index 4973636..10cc8a6 100644
---- a/nouveau/nouveau_bo.c
-+++ b/nouveau/nouveau_bo.c
-@@ -201,6 +201,14 @@ nouveau_bo_new_tile(struct nouveau_device *dev, uint32_t flags, int align,
- 			nouveau_bo_ref(NULL, (void *)nvbo);
-=======
- libdrm_nouveauincludedir = ${includedir}/libdrm
-diff --git a/nouveau/nouveau_bo.c b/nouveau/nouveau_bo.c
-index 32b23b6..10cc8a6 100644
---- a/nouveau/nouveau_bo.c
-+++ b/nouveau/nouveau_bo.c
-@@ -198,9 +198,17 @@ nouveau_bo_new_tile(struct nouveau_device *dev, uint32_t flags, int align,
- 	if (flags & (NOUVEAU_BO_VRAM | NOUVEAU_BO_GART)) {
- 		ret = nouveau_bo_kalloc(nvbo, NULL);
- 		if (ret) {
--			nouveau_bo_ref(NULL, (void *)&nvbo);
-+			nouveau_bo_ref(NULL, (void *)nvbo);
->>>>>>> libdrm-2.4.20-2
- 			return ret;
- 		}
-+
-+		if (flags & NOUVEAU_BO_PIN) {
-+			ret = nouveau_bo_pin((void *)nvbo, nvbo->flags);
-+			if (ret) {
-+				nouveau_bo_ref(NULL, (void *)nvbo);
-+				return ret;
-+			}
-+		}
- 	}
- 
- 	*bo = &nvbo->base;
-@@ -211,7 +219,16 @@ int
- nouveau_bo_new(struct nouveau_device *dev, uint32_t flags, int align,
- 	       int size, struct nouveau_bo **bo)
- {
--	return nouveau_bo_new_tile(dev, flags, align, size, 0, 0, bo);
-+	uint32_t tile_flags = 0;
-+
-+	if (flags & NOUVEAU_BO_TILED) {
-+		if (flags & NOUVEAU_BO_ZTILE)
-+			tile_flags = 0x2800;
-+		else
-+			tile_flags = 0x7000;
-+	}
-+
-+	return nouveau_bo_new_tile(dev, flags, align, size, 0, tile_flags, bo);
- }
- 
- int
-@@ -466,6 +483,62 @@ nouveau_bo_unmap(struct nouveau_bo *bo)
- }
- 
- int
-+nouveau_bo_pin(struct nouveau_bo *bo, uint32_t flags)
-+{
-+	struct nouveau_device_priv *nvdev = nouveau_device(bo->device);
-+	struct nouveau_bo_priv *nvbo = nouveau_bo(bo);
-+	struct drm_nouveau_gem_pin req;
-+	int ret;
-+
-+	if (nvbo->pinned)
-+		return 0;
-+
-+	if (!nvbo->handle)
-+		return -EINVAL;
-+
-+	/* Now force it to stay put :) */
-+	req.handle = nvbo->handle;
-+	req.domain = 0;
-+	if (flags & NOUVEAU_BO_VRAM)
-+		req.domain |= NOUVEAU_GEM_DOMAIN_VRAM;
-+	if (flags & NOUVEAU_BO_GART)
-+		req.domain |= NOUVEAU_GEM_DOMAIN_GART;
-+
-+	ret = drmCommandWriteRead(nvdev->fd, DRM_NOUVEAU_GEM_PIN, &req,
-+				  sizeof(struct drm_nouveau_gem_pin));
-+	if (ret)
-+		return ret;
-+	nvbo->offset = req.offset;
-+	nvbo->domain = req.domain;
-+	nvbo->pinned = 1;
-+
-+	/* Fill in public nouveau_bo members */
-+	if (nvbo->domain & NOUVEAU_GEM_DOMAIN_VRAM)
-+		bo->flags = NOUVEAU_BO_VRAM;
-+	if (nvbo->domain & NOUVEAU_GEM_DOMAIN_GART)
-+		bo->flags = NOUVEAU_BO_GART;
-+	bo->offset = nvbo->offset;
-+
-+	return 0;
-+}
-+
-+void
-+nouveau_bo_unpin(struct nouveau_bo *bo)
-+{
-+	struct nouveau_device_priv *nvdev = nouveau_device(bo->device);
-+	struct nouveau_bo_priv *nvbo = nouveau_bo(bo);
-+	struct drm_nouveau_gem_unpin req;
-+
-+	if (!nvbo->pinned)
-+		return;
-+
-+	req.handle = nvbo->handle;
-+	drmCommandWrite(nvdev->fd, DRM_NOUVEAU_GEM_UNPIN, &req, sizeof(req));
-+
-+	nvbo->pinned = bo->offset = bo->flags = 0;
-+}
-+
-+int
- nouveau_bo_busy(struct nouveau_bo *bo, uint32_t access)
- {
- 	return nouveau_bo_wait(bo, (access & NOUVEAU_BO_WR), 1, 1);
-@@ -492,7 +565,7 @@ nouveau_bo_pending(struct nouveau_bo *bo)
- struct drm_nouveau_gem_pushbuf_bo *
- nouveau_bo_emit_buffer(struct nouveau_channel *chan, struct nouveau_bo *bo)
- {
--	struct nouveau_pushbuf_priv *nvpb = &nouveau_channel(chan)->pb;
-+	struct nouveau_pushbuf_priv *nvpb = nouveau_pushbuf(chan->pushbuf);
- 	struct nouveau_bo_priv *nvbo = nouveau_bo(bo);
- 	struct drm_nouveau_gem_pushbuf_bo *pbbo;
- 	struct nouveau_bo *ref = NULL;
-@@ -534,8 +607,8 @@ nouveau_bo_emit_buffer(struct nouveau_channel *chan, struct nouveau_bo *bo)
- 	pbbo->valid_domains = NOUVEAU_GEM_DOMAIN_VRAM | NOUVEAU_GEM_DOMAIN_GART;
- 	pbbo->read_domains = 0;
- 	pbbo->write_domains = 0;
--	pbbo->presumed.domain = nvbo->domain;
--	pbbo->presumed.offset = nvbo->offset;
--	pbbo->presumed.valid = 1;
-+	pbbo->presumed_domain = nvbo->domain;
-+	pbbo->presumed_offset = nvbo->offset;
-+	pbbo->presumed_ok = 1;
- 	return pbbo;
- }
-diff --git a/nouveau/nouveau_bo.h b/nouveau/nouveau_bo.h
-index 1e77ab0..fdad63e 100644
---- a/nouveau/nouveau_bo.h
-+++ b/nouveau/nouveau_bo.h
-@@ -30,9 +30,13 @@
- #define NOUVEAU_BO_WR     (1 << 3)
- #define NOUVEAU_BO_RDWR   (NOUVEAU_BO_RD | NOUVEAU_BO_WR)
- #define NOUVEAU_BO_MAP    (1 << 4)
-+#define NOUVEAU_BO_PIN    (1 << 5)
- #define NOUVEAU_BO_LOW    (1 << 6)
- #define NOUVEAU_BO_HIGH   (1 << 7)
- #define NOUVEAU_BO_OR     (1 << 8)
-+#define NOUVEAU_BO_LOCAL  (1 << 9)
-+#define NOUVEAU_BO_TILED  (1 << 10)
-+#define NOUVEAU_BO_ZTILE  (1 << 11)
- #define NOUVEAU_BO_INVAL  (1 << 12)
- #define NOUVEAU_BO_NOSYNC (1 << 13)
- #define NOUVEAU_BO_NOWAIT (1 << 14)
-@@ -48,6 +52,10 @@ struct nouveau_bo {
- 
- 	uint32_t tile_mode;
- 	uint32_t tile_flags;
-+
-+	/* Available when buffer is pinned *only* */
-+	uint32_t flags;
-+	uint64_t offset;
- };
- 
- int
-@@ -90,6 +98,12 @@ void
- nouveau_bo_unmap(struct nouveau_bo *);
- 
- int
-+nouveau_bo_pin(struct nouveau_bo *, uint32_t flags);
-+
-+void
-+nouveau_bo_unpin(struct nouveau_bo *);
-+
-+int
- nouveau_bo_busy(struct nouveau_bo *, uint32_t access);
- 
- uint32_t
-<<<<<<< HEAD
-=======
-diff --git a/nouveau/nouveau_channel.c b/nouveau/nouveau_channel.c
-index 40a0b34..5622c1d 100644
---- a/nouveau/nouveau_channel.c
-+++ b/nouveau/nouveau_channel.c
-@@ -106,7 +106,7 @@ nouveau_channel_free(struct nouveau_channel **chan)
- 	struct nouveau_channel_priv *nvchan;
- 	struct nouveau_device_priv *nvdev;
- 	struct drm_nouveau_channel_free cf;
--	unsigned i;
-+	int i;
- 
- 	if (!chan || !*chan)
- 		return;
->>>>>>> libdrm-2.4.20-2
-diff --git a/nouveau/nouveau_channel.h b/nouveau/nouveau_channel.h
-index ddcf8e4..294f749 100644
---- a/nouveau/nouveau_channel.h
-+++ b/nouveau/nouveau_channel.h
-@@ -29,12 +29,11 @@ struct nouveau_subchannel {
- };
- 
- struct nouveau_channel {
--	uint32_t *cur;
--	uint32_t *end;
--
- 	struct nouveau_device *device;
- 	int id;
- 
-+	struct nouveau_pushbuf *pushbuf;
-+
- 	struct nouveau_grobj *nullobj;
- 	struct nouveau_grobj *vram;
- 	struct nouveau_grobj *gart;
-<<<<<<< HEAD
-=======
-diff --git a/nouveau/nouveau_class.h b/nouveau/nouveau_class.h
-index 0167cbc..8e7d0ff 100644
---- a/nouveau/nouveau_class.h
-+++ b/nouveau/nouveau_class.h
-@@ -1549,7 +1549,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define    NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_GOURAUD				0x00000080
- #define    NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_PHONG				0x000000c0
- #define   NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE			(1 <<  8)
--#define   NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE					(1 << 12)
-+#define   NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE_SHIFT				12
-+#define   NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE_MASK				0x0000f000
- #define   NV04_TEXTURED_TRIANGLE_BLEND_FOG_ENABLE					(1 << 16)
- #define   NV04_TEXTURED_TRIANGLE_BLEND_BLEND_ENABLE					(1 << 20)
- #define   NV04_TEXTURED_TRIANGLE_BLEND_SRC_SHIFT					24
-@@ -1797,7 +1798,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define    NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_GOURAUD				0x00000080
- #define    NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_PHONG				0x000000c0
- #define   NV04_MULTITEX_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE			(1 <<  8)
--#define   NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE					(1 << 12)
-+#define   NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE_SHIFT				12
-+#define   NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE_MASK				0x0000f000
- #define   NV04_MULTITEX_TRIANGLE_BLEND_FOG_ENABLE					(1 << 16)
- #define   NV04_MULTITEX_TRIANGLE_BLEND_BLEND_ENABLE					(1 << 20)
- #define   NV04_MULTITEX_TRIANGLE_BLEND_SRC_SHIFT					24
-@@ -1961,10 +1963,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define   NV10TCL_TX_FORMAT_DMA1							(1 <<  1)
- #define   NV10TCL_TX_FORMAT_CUBE_MAP							(1 <<  2)
- #define   NV10TCL_TX_FORMAT_FORMAT_SHIFT						7
--#define   NV10TCL_TX_FORMAT_FORMAT_MASK							0x00000f80
-+#define   NV10TCL_TX_FORMAT_FORMAT_MASK							0x00000780
- #define    NV10TCL_TX_FORMAT_FORMAT_L8							0x00000000
- #define    NV10TCL_TX_FORMAT_FORMAT_A8							0x00000080
- #define    NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5						0x00000100
-+#define    NV10TCL_TX_FORMAT_FORMAT_A8_RECT						0x00000180
- #define    NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4						0x00000200
- #define    NV10TCL_TX_FORMAT_FORMAT_R5G6B5						0x00000280
- #define    NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8						0x00000300
-@@ -1976,7 +1979,25 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define    NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT					0x00000800
- #define    NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT						0x00000880
- #define    NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT					0x00000900
--#define    NV10TCL_TX_FORMAT_FORMAT_A8_RECT						0x00000980
-+#define    NV10TCL_TX_FORMAT_FORMAT_L8_RECT						0x00000980
-+#define    NV10TCL_TX_FORMAT_FORMAT_A8L8						0x00000d00
-+#define    NV10TCL_TX_FORMAT_FORMAT_A8_RECT2						0x00000d80
-+#define    NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4_RECT					0x00000e80
-+#define    NV10TCL_TX_FORMAT_FORMAT_R8G8B8_RECT						0x00000f00
-+#define    NV10TCL_TX_FORMAT_FORMAT_L8A8_RECT						0x00001000
-+#define    NV10TCL_TX_FORMAT_FORMAT_DSDT						0x00001400
-+#define    NV10TCL_TX_FORMAT_FORMAT_A16							0x00001900
-+#define    NV10TCL_TX_FORMAT_FORMAT_HILO16						0x00001980
-+#define    NV10TCL_TX_FORMAT_FORMAT_A16_RECT						0x00001a80
-+#define    NV10TCL_TX_FORMAT_FORMAT_HILO16_RECT						0x00001b00
-+#define    NV10TCL_TX_FORMAT_FORMAT_HILO8						0x00002200
-+#define    NV10TCL_TX_FORMAT_FORMAT_SIGNED_HILO8					0x00002280
-+#define    NV10TCL_TX_FORMAT_FORMAT_HILO8_RECT						0x00002300
-+#define    NV10TCL_TX_FORMAT_FORMAT_SIGNED_HILO8_RECT					0x00002380
-+#define    NV10TCL_TX_FORMAT_FORMAT_FLOAT_RGBA16_NV					0x00002500
-+#define    NV10TCL_TX_FORMAT_FORMAT_FLOAT_RGBA32_NV					0x00002580
-+#define    NV10TCL_TX_FORMAT_FORMAT_FLOAT_R32_NV					0x00002600
-+#define   NV10TCL_TX_FORMAT_NPOT							(1 << 11)
- #define   NV10TCL_TX_FORMAT_MIPMAP							(1 << 15)
- #define   NV10TCL_TX_FORMAT_BASE_SIZE_U_SHIFT						16
- #define   NV10TCL_TX_FORMAT_BASE_SIZE_U_MASK						0x000f0000
-@@ -2617,7 +2638,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define    NV10TCL_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY					0xc0000000
- #define    NV10TCL_RC_FINAL1_E_MAPPING_SIGNED_NEGATE					0xe0000000
- #define  NV10TCL_LIGHT_MODEL								0x00000294
--#define   NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR						(1 <<  0)
- #define   NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR						(1 <<  1)
- #define   NV10TCL_LIGHT_MODEL_LOCAL_VIEWER						(1 << 16)
- #define  NV10TCL_COLOR_MATERIAL								0x00000298
-@@ -2866,38 +2886,38 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define    NV10TCL_ENABLED_LIGHTS_7_NONPOSITIONAL					0x00004000
- #define    NV10TCL_ENABLED_LIGHTS_7_POSITIONAL						0x00008000
- #define    NV10TCL_ENABLED_LIGHTS_7_DIRECTIONAL						0x0000c000
--#define  NV10TCL_TX_GEN_MODE_S(x)							(0x000003c0+((x)*16))
--#define  NV10TCL_TX_GEN_MODE_S__SIZE							0x00000002
--#define   NV10TCL_TX_GEN_MODE_S_FALSE							0x00000000
--#define   NV10TCL_TX_GEN_MODE_S_EYE_LINEAR						0x00002400
--#define   NV10TCL_TX_GEN_MODE_S_OBJECT_LINEAR						0x00002401
--#define   NV10TCL_TX_GEN_MODE_S_SPHERE_MAP						0x00002402
--#define   NV10TCL_TX_GEN_MODE_S_NORMAL_MAP						0x00008511
--#define   NV10TCL_TX_GEN_MODE_S_REFLECTION_MAP						0x00008512
--#define  NV10TCL_TX_GEN_MODE_T(x)							(0x000003c4+((x)*16))
--#define  NV10TCL_TX_GEN_MODE_T__SIZE							0x00000002
--#define   NV10TCL_TX_GEN_MODE_T_FALSE							0x00000000
--#define   NV10TCL_TX_GEN_MODE_T_EYE_LINEAR						0x00002400
--#define   NV10TCL_TX_GEN_MODE_T_OBJECT_LINEAR						0x00002401
--#define   NV10TCL_TX_GEN_MODE_T_SPHERE_MAP						0x00002402
--#define   NV10TCL_TX_GEN_MODE_T_NORMAL_MAP						0x00008511
--#define   NV10TCL_TX_GEN_MODE_T_REFLECTION_MAP						0x00008512
--#define  NV10TCL_TX_GEN_MODE_R(x)							(0x000003c8+((x)*16))
--#define  NV10TCL_TX_GEN_MODE_R__SIZE							0x00000002
--#define   NV10TCL_TX_GEN_MODE_R_FALSE							0x00000000
--#define   NV10TCL_TX_GEN_MODE_R_EYE_LINEAR						0x00002400
--#define   NV10TCL_TX_GEN_MODE_R_OBJECT_LINEAR						0x00002401
--#define   NV10TCL_TX_GEN_MODE_R_SPHERE_MAP						0x00002402
--#define   NV10TCL_TX_GEN_MODE_R_NORMAL_MAP						0x00008511
--#define   NV10TCL_TX_GEN_MODE_R_REFLECTION_MAP						0x00008512
--#define  NV10TCL_TX_GEN_MODE_Q(x)							(0x000003cc+((x)*16))
--#define  NV10TCL_TX_GEN_MODE_Q__SIZE							0x00000002
--#define   NV10TCL_TX_GEN_MODE_Q_FALSE							0x00000000
--#define   NV10TCL_TX_GEN_MODE_Q_EYE_LINEAR						0x00002400
--#define   NV10TCL_TX_GEN_MODE_Q_OBJECT_LINEAR						0x00002401
--#define   NV10TCL_TX_GEN_MODE_Q_SPHERE_MAP						0x00002402
--#define   NV10TCL_TX_GEN_MODE_Q_NORMAL_MAP						0x00008511
--#define   NV10TCL_TX_GEN_MODE_Q_REFLECTION_MAP						0x00008512
-+#define  NV10TCL_TX_GEN_S(x)								(0x000003c0+((x)*16))
-+#define  NV10TCL_TX_GEN_S__SIZE								0x00000002
-+#define   NV10TCL_TX_GEN_S_FALSE							0x00000000
-+#define   NV10TCL_TX_GEN_S_EYE_LINEAR							0x00002400
-+#define   NV10TCL_TX_GEN_S_OBJECT_LINEAR						0x00002401
-+#define   NV10TCL_TX_GEN_S_SPHERE_MAP							0x00002402
-+#define   NV10TCL_TX_GEN_S_NORMAL_MAP							0x00008511
-+#define   NV10TCL_TX_GEN_S_REFLECTION_MAP						0x00008512
-+#define  NV10TCL_TX_GEN_T(x)								(0x000003c4+((x)*16))
-+#define  NV10TCL_TX_GEN_T__SIZE								0x00000002
-+#define   NV10TCL_TX_GEN_T_FALSE							0x00000000
-+#define   NV10TCL_TX_GEN_T_EYE_LINEAR							0x00002400
-+#define   NV10TCL_TX_GEN_T_OBJECT_LINEAR						0x00002401
-+#define   NV10TCL_TX_GEN_T_SPHERE_MAP							0x00002402
-+#define   NV10TCL_TX_GEN_T_NORMAL_MAP							0x00008511
-+#define   NV10TCL_TX_GEN_T_REFLECTION_MAP						0x00008512
-+#define  NV10TCL_TX_GEN_R(x)								(0x000003c8+((x)*16))
-+#define  NV10TCL_TX_GEN_R__SIZE								0x00000002
-+#define   NV10TCL_TX_GEN_R_FALSE							0x00000000
-+#define   NV10TCL_TX_GEN_R_EYE_LINEAR							0x00002400
-+#define   NV10TCL_TX_GEN_R_OBJECT_LINEAR						0x00002401
-+#define   NV10TCL_TX_GEN_R_SPHERE_MAP							0x00002402
-+#define   NV10TCL_TX_GEN_R_NORMAL_MAP							0x00008511
-+#define   NV10TCL_TX_GEN_R_REFLECTION_MAP						0x00008512
-+#define  NV10TCL_TX_GEN_Q(x)								(0x000003cc+((x)*16))
-+#define  NV10TCL_TX_GEN_Q__SIZE								0x00000002
-+#define   NV10TCL_TX_GEN_Q_FALSE							0x00000000
-+#define   NV10TCL_TX_GEN_Q_EYE_LINEAR							0x00002400
-+#define   NV10TCL_TX_GEN_Q_OBJECT_LINEAR						0x00002401
-+#define   NV10TCL_TX_GEN_Q_SPHERE_MAP							0x00002402
-+#define   NV10TCL_TX_GEN_Q_NORMAL_MAP							0x00008511
-+#define   NV10TCL_TX_GEN_Q_REFLECTION_MAP						0x00008512
- #define  NV10TCL_TX_MATRIX_ENABLE(x)							(0x000003e0+((x)*4))
- #define  NV10TCL_TX_MATRIX_ENABLE__SIZE							0x00000002
- #define  NV10TCL_VIEW_MATRIX_ENABLE							0x000003e8
-@@ -2919,38 +2939,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define  NV10TCL_TX0_MATRIX__SIZE							0x00000010
- #define  NV10TCL_TX1_MATRIX(x)								(0x00000580+((x)*4))
- #define  NV10TCL_TX1_MATRIX__SIZE							0x00000010
--#define  NV10TCL_TX_GEN_COEFF_S_A(x)							(0x00000600+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_S_A__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_S_B(x)							(0x00000604+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_S_B__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_S_C(x)							(0x00000608+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_S_C__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_S_D(x)							(0x0000060c+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_S_D__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_T_A(x)							(0x00000610+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_T_A__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_T_B(x)							(0x00000614+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_T_B__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_T_C(x)							(0x00000618+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_T_C__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_T_D(x)							(0x0000061c+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_T_D__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_R_A(x)							(0x00000620+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_R_A__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_R_B(x)							(0x00000624+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_R_B__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_R_C(x)							(0x00000628+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_R_C__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_R_D(x)							(0x0000062c+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_R_D__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_Q_A(x)							(0x00000630+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_Q_A__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_Q_B(x)							(0x00000634+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_Q_B__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_Q_C(x)							(0x00000638+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_Q_C__SIZE							0x00000002
--#define  NV10TCL_TX_GEN_COEFF_Q_D(x)							(0x0000063c+((x)*64))
--#define  NV10TCL_TX_GEN_COEFF_Q_D__SIZE							0x00000002
-+#define  NV10TCL_CLIP_PLANE_A(x)							(0x00000600+((x)*16))
-+#define  NV10TCL_CLIP_PLANE_A__SIZE							0x00000008
-+#define  NV10TCL_CLIP_PLANE_B(x)							(0x00000604+((x)*16))
-+#define  NV10TCL_CLIP_PLANE_B__SIZE							0x00000008
-+#define  NV10TCL_CLIP_PLANE_C(x)							(0x00000608+((x)*16))
-+#define  NV10TCL_CLIP_PLANE_C__SIZE							0x00000008
-+#define  NV10TCL_CLIP_PLANE_D(x)							(0x0000060c+((x)*16))
-+#define  NV10TCL_CLIP_PLANE_D__SIZE							0x00000008
- #define  NV10TCL_FOG_EQUATION_CONSTANT							0x00000680
- #define  NV10TCL_FOG_EQUATION_LINEAR							0x00000684
- #define  NV10TCL_FOG_EQUATION_QUADRATIC							0x00000688
-@@ -3126,6 +3122,70 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define   NV10TCL_VTXFMT_STRIDE_SHIFT							8
- #define   NV10TCL_VTXFMT_STRIDE_MASK							0x0000ff00
- #define   NV10TCL_VTXFMT_POS_HOMOGENEOUS						(1 << 24)
-+#define  NV10TCL_VERTEX_ARRAY_OFFSET_POS						0x00000d00
-+#define  NV10TCL_VERTEX_ARRAY_FORMAT_POS						0x00000d04
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_POS_TYPE_SHIFT					0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_POS_TYPE_MASK					0x0000000f
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_POS_FIELDS_SHIFT					4
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_POS_FIELDS_MASK					0x000000f0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_POS_STRIDE_SHIFT					8
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_POS_STRIDE_MASK					0x0000ff00
-+#define  NV10TCL_VERTEX_ARRAY_OFFSET_COL						0x00000d08
-+#define  NV10TCL_VERTEX_ARRAY_FORMAT_COL						0x00000d0c
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL_TYPE_SHIFT					0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL_TYPE_MASK					0x0000000f
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL_FIELDS_SHIFT					4
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL_FIELDS_MASK					0x000000f0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL_STRIDE_SHIFT					8
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL_STRIDE_MASK					0x0000ff00
-+#define  NV10TCL_VERTEX_ARRAY_OFFSET_COL2						0x00000d10
-+#define  NV10TCL_VERTEX_ARRAY_FORMAT_COL2						0x00000d14
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL2_TYPE_SHIFT					0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL2_TYPE_MASK					0x0000000f
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL2_FIELDS_SHIFT					4
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL2_FIELDS_MASK					0x000000f0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL2_STRIDE_SHIFT					8
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_COL2_STRIDE_MASK					0x0000ff00
-+#define  NV10TCL_VERTEX_ARRAY_OFFSET_TX0						0x00000d18
-+#define  NV10TCL_VERTEX_ARRAY_FORMAT_TX0						0x00000d1c
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX0_TYPE_SHIFT					0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX0_TYPE_MASK					0x0000000f
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX0_FIELDS_SHIFT					4
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX0_FIELDS_MASK					0x000000f0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX0_STRIDE_SHIFT					8
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX0_STRIDE_MASK					0x0000ff00
-+#define  NV10TCL_VERTEX_ARRAY_OFFSET_TX1						0x00000d20
-+#define  NV10TCL_VERTEX_ARRAY_FORMAT_TX1						0x00000d24
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX1_TYPE_SHIFT					0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX1_TYPE_MASK					0x0000000f
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX1_FIELDS_SHIFT					4
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX1_FIELDS_MASK					0x000000f0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX1_STRIDE_SHIFT					8
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_TX1_STRIDE_MASK					0x0000ff00
-+#define  NV10TCL_VERTEX_ARRAY_OFFSET_NOR						0x00000d28
-+#define  NV10TCL_VERTEX_ARRAY_FORMAT_NOR						0x00000d2c
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_NOR_TYPE_SHIFT					0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_NOR_TYPE_MASK					0x0000000f
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_NOR_FIELDS_SHIFT					4
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_NOR_FIELDS_MASK					0x000000f0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_NOR_STRIDE_SHIFT					8
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_NOR_STRIDE_MASK					0x0000ff00
-+#define  NV10TCL_VERTEX_ARRAY_OFFSET_WGH						0x00000d30
-+#define  NV10TCL_VERTEX_ARRAY_FORMAT_WGH						0x00000d34
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_WGH_TYPE_SHIFT					0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_WGH_TYPE_MASK					0x0000000f
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_WGH_FIELDS_SHIFT					4
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_WGH_FIELDS_MASK					0x000000f0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_WGH_STRIDE_SHIFT					8
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_WGH_STRIDE_MASK					0x0000ff00
-+#define  NV10TCL_VERTEX_ARRAY_OFFSET_FOG						0x00000d38
-+#define  NV10TCL_VERTEX_ARRAY_FORMAT_FOG						0x00000d3c
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_FOG_TYPE_SHIFT					0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_FOG_TYPE_MASK					0x0000000f
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_FOG_FIELDS_SHIFT					4
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_FOG_FIELDS_MASK					0x000000f0
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_FOG_STRIDE_SHIFT					8
-+#define   NV10TCL_VERTEX_ARRAY_FORMAT_FOG_STRIDE_MASK					0x0000ff00
- #define  NV10TCL_VERTEX_BEGIN_END							0x00000dfc
- #define   NV10TCL_VERTEX_BEGIN_END_STOP							0x00000000
- #define   NV10TCL_VERTEX_BEGIN_END_POINTS						0x00000001
-@@ -3965,38 +4025,38 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define    NV20TCL_ENABLED_LIGHTS_7_NONPOSITIONAL					0x00004000
- #define    NV20TCL_ENABLED_LIGHTS_7_POSITIONAL						0x00008000
- #define    NV20TCL_ENABLED_LIGHTS_7_DIRECTIONAL						0x0000c000
--#define  NV20TCL_TX_GEN_MODE_S(x)							(0x000003c0+((x)*16))
--#define  NV20TCL_TX_GEN_MODE_S__SIZE							0x00000004
--#define   NV20TCL_TX_GEN_MODE_S_FALSE							0x00000000
--#define   NV20TCL_TX_GEN_MODE_S_EYE_LINEAR						0x00002400
--#define   NV20TCL_TX_GEN_MODE_S_OBJECT_LINEAR						0x00002401
--#define   NV20TCL_TX_GEN_MODE_S_SPHERE_MAP						0x00002402
--#define   NV20TCL_TX_GEN_MODE_S_NORMAL_MAP						0x00008511
--#define   NV20TCL_TX_GEN_MODE_S_REFLECTION_MAP						0x00008512
--#define  NV20TCL_TX_GEN_MODE_T(x)							(0x000003c4+((x)*16))
--#define  NV20TCL_TX_GEN_MODE_T__SIZE							0x00000004
--#define   NV20TCL_TX_GEN_MODE_T_FALSE							0x00000000
--#define   NV20TCL_TX_GEN_MODE_T_EYE_LINEAR						0x00002400
--#define   NV20TCL_TX_GEN_MODE_T_OBJECT_LINEAR						0x00002401
--#define   NV20TCL_TX_GEN_MODE_T_SPHERE_MAP						0x00002402
--#define   NV20TCL_TX_GEN_MODE_T_NORMAL_MAP						0x00008511
--#define   NV20TCL_TX_GEN_MODE_T_REFLECTION_MAP						0x00008512
--#define  NV20TCL_TX_GEN_MODE_R(x)							(0x000003c8+((x)*16))
--#define  NV20TCL_TX_GEN_MODE_R__SIZE							0x00000004
--#define   NV20TCL_TX_GEN_MODE_R_FALSE							0x00000000
--#define   NV20TCL_TX_GEN_MODE_R_EYE_LINEAR						0x00002400
--#define   NV20TCL_TX_GEN_MODE_R_OBJECT_LINEAR						0x00002401
--#define   NV20TCL_TX_GEN_MODE_R_SPHERE_MAP						0x00002402
--#define   NV20TCL_TX_GEN_MODE_R_NORMAL_MAP						0x00008511
--#define   NV20TCL_TX_GEN_MODE_R_REFLECTION_MAP						0x00008512
--#define  NV20TCL_TX_GEN_MODE_Q(x)							(0x000003cc+((x)*16))
--#define  NV20TCL_TX_GEN_MODE_Q__SIZE							0x00000004
--#define   NV20TCL_TX_GEN_MODE_Q_FALSE							0x00000000
--#define   NV20TCL_TX_GEN_MODE_Q_EYE_LINEAR						0x00002400
--#define   NV20TCL_TX_GEN_MODE_Q_OBJECT_LINEAR						0x00002401
--#define   NV20TCL_TX_GEN_MODE_Q_SPHERE_MAP						0x00002402
--#define   NV20TCL_TX_GEN_MODE_Q_NORMAL_MAP						0x00008511
--#define   NV20TCL_TX_GEN_MODE_Q_REFLECTION_MAP						0x00008512
-+#define  NV20TCL_TX_GEN_S(x)								(0x000003c0+((x)*16))
-+#define  NV20TCL_TX_GEN_S__SIZE								0x00000004
-+#define   NV20TCL_TX_GEN_S_FALSE							0x00000000
-+#define   NV20TCL_TX_GEN_S_EYE_LINEAR							0x00002400
-+#define   NV20TCL_TX_GEN_S_OBJECT_LINEAR						0x00002401
-+#define   NV20TCL_TX_GEN_S_SPHERE_MAP							0x00002402
-+#define   NV20TCL_TX_GEN_S_NORMAL_MAP							0x00008511
-+#define   NV20TCL_TX_GEN_S_REFLECTION_MAP						0x00008512
-+#define  NV20TCL_TX_GEN_T(x)								(0x000003c4+((x)*16))
-+#define  NV20TCL_TX_GEN_T__SIZE								0x00000004
-+#define   NV20TCL_TX_GEN_T_FALSE							0x00000000
-+#define   NV20TCL_TX_GEN_T_EYE_LINEAR							0x00002400
-+#define   NV20TCL_TX_GEN_T_OBJECT_LINEAR						0x00002401
-+#define   NV20TCL_TX_GEN_T_SPHERE_MAP							0x00002402
-+#define   NV20TCL_TX_GEN_T_NORMAL_MAP							0x00008511
-+#define   NV20TCL_TX_GEN_T_REFLECTION_MAP						0x00008512
-+#define  NV20TCL_TX_GEN_R(x)								(0x000003c8+((x)*16))
-+#define  NV20TCL_TX_GEN_R__SIZE								0x00000004
-+#define   NV20TCL_TX_GEN_R_FALSE							0x00000000
-+#define   NV20TCL_TX_GEN_R_EYE_LINEAR							0x00002400
-+#define   NV20TCL_TX_GEN_R_OBJECT_LINEAR						0x00002401
-+#define   NV20TCL_TX_GEN_R_SPHERE_MAP							0x00002402
-+#define   NV20TCL_TX_GEN_R_NORMAL_MAP							0x00008511
-+#define   NV20TCL_TX_GEN_R_REFLECTION_MAP						0x00008512
-+#define  NV20TCL_TX_GEN_Q(x)								(0x000003cc+((x)*16))
-+#define  NV20TCL_TX_GEN_Q__SIZE								0x00000004
-+#define   NV20TCL_TX_GEN_Q_FALSE							0x00000000
-+#define   NV20TCL_TX_GEN_Q_EYE_LINEAR							0x00002400
-+#define   NV20TCL_TX_GEN_Q_OBJECT_LINEAR						0x00002401
-+#define   NV20TCL_TX_GEN_Q_SPHERE_MAP							0x00002402
-+#define   NV20TCL_TX_GEN_Q_NORMAL_MAP							0x00008511
-+#define   NV20TCL_TX_GEN_Q_REFLECTION_MAP						0x00008512
- #define  NV20TCL_TX_MATRIX_ENABLE(x)							(0x00000420+((x)*4))
- #define  NV20TCL_TX_MATRIX_ENABLE__SIZE							0x00000004
- #define  NV20TCL_POINT_SIZE								0x0000043c
-@@ -4026,38 +4086,38 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define  NV20TCL_TX2_MATRIX__SIZE							0x00000010
- #define  NV20TCL_TX3_MATRIX(x)								(0x00000780+((x)*4))
- #define  NV20TCL_TX3_MATRIX__SIZE							0x00000010
--#define  NV20TCL_TX_GEN_COEFF_S_A(x)							(0x00000840+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_S_A__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_S_B(x)							(0x00000844+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_S_B__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_S_C(x)							(0x00000848+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_S_C__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_S_D(x)							(0x0000084c+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_S_D__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_T_A(x)							(0x00000850+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_T_A__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_T_B(x)							(0x00000854+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_T_B__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_T_C(x)							(0x00000858+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_T_C__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_T_D(x)							(0x0000085c+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_T_D__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_R_A(x)							(0x00000860+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_R_A__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_R_B(x)							(0x00000864+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_R_B__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_R_C(x)							(0x00000868+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_R_C__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_R_D(x)							(0x0000086c+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_R_D__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_Q_A(x)							(0x00000870+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_Q_A__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_Q_B(x)							(0x00000874+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_Q_B__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_Q_C(x)							(0x00000878+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_Q_C__SIZE							0x00000004
--#define  NV20TCL_TX_GEN_COEFF_Q_D(x)							(0x0000087c+((x)*64))
--#define  NV20TCL_TX_GEN_COEFF_Q_D__SIZE							0x00000004
-+#define  NV20TCL_TX0_CLIP_PLANE_A(x)							(0x00000840+((x)*16))
-+#define  NV20TCL_TX0_CLIP_PLANE_A__SIZE							0x00000004
-+#define  NV20TCL_TX0_CLIP_PLANE_B(x)							(0x00000844+((x)*16))
-+#define  NV20TCL_TX0_CLIP_PLANE_B__SIZE							0x00000004
-+#define  NV20TCL_TX0_CLIP_PLANE_C(x)							(0x00000848+((x)*16))
-+#define  NV20TCL_TX0_CLIP_PLANE_C__SIZE							0x00000004
-+#define  NV20TCL_TX0_CLIP_PLANE_D(x)							(0x0000084c+((x)*16))
-+#define  NV20TCL_TX0_CLIP_PLANE_D__SIZE							0x00000004
-+#define  NV20TCL_TX1_CLIP_PLANE_A(x)							(0x00000880+((x)*16))
-+#define  NV20TCL_TX1_CLIP_PLANE_A__SIZE							0x00000004
-+#define  NV20TCL_TX1_CLIP_PLANE_B(x)							(0x00000884+((x)*16))
-+#define  NV20TCL_TX1_CLIP_PLANE_B__SIZE							0x00000004
-+#define  NV20TCL_TX1_CLIP_PLANE_C(x)							(0x00000888+((x)*16))
-+#define  NV20TCL_TX1_CLIP_PLANE_C__SIZE							0x00000004
-+#define  NV20TCL_TX1_CLIP_PLANE_D(x)							(0x0000088c+((x)*16))
-+#define  NV20TCL_TX1_CLIP_PLANE_D__SIZE							0x00000004
-+#define  NV20TCL_TX2_CLIP_PLANE_A(x)							(0x000008c0+((x)*16))
-+#define  NV20TCL_TX2_CLIP_PLANE_A__SIZE							0x00000004
-+#define  NV20TCL_TX2_CLIP_PLANE_B(x)							(0x000008c4+((x)*16))
-+#define  NV20TCL_TX2_CLIP_PLANE_B__SIZE							0x00000004
-+#define  NV20TCL_TX2_CLIP_PLANE_C(x)							(0x000008c8+((x)*16))
-+#define  NV20TCL_TX2_CLIP_PLANE_C__SIZE							0x00000004
-+#define  NV20TCL_TX2_CLIP_PLANE_D(x)							(0x000008cc+((x)*16))
-+#define  NV20TCL_TX2_CLIP_PLANE_D__SIZE							0x00000004
-+#define  NV20TCL_TX3_CLIP_PLANE_A(x)							(0x00000900+((x)*16))
-+#define  NV20TCL_TX3_CLIP_PLANE_A__SIZE							0x00000004
-+#define  NV20TCL_TX3_CLIP_PLANE_B(x)							(0x00000904+((x)*16))
-+#define  NV20TCL_TX3_CLIP_PLANE_B__SIZE							0x00000004
-+#define  NV20TCL_TX3_CLIP_PLANE_C(x)							(0x00000908+((x)*16))
-+#define  NV20TCL_TX3_CLIP_PLANE_C__SIZE							0x00000004


Reply to: