libdrm: Changes to 'debian-experimental'
debian/README.source | 2
debian/changelog | 14
debian/control | 1
debian/libdrm-nouveau1.install | 2
debian/libdrm-nouveau1.symbols | 103 -
debian/patches/03_revert_abi_change.diff | 2118 -------------------------------
debian/patches/series | 1
debian/rules | 2
debian/xsfbs/xsfbs.mk | 35
9 files changed, 85 insertions(+), 2193 deletions(-)
New commits:
commit 0005bf184af82c1e74d372383ac266c8621598a7
Author: Sven Joachim <svenjoac@gmx.de>
Date: Sat May 22 17:13:58 2010 +0200
Include full SONAME in libdrm-nouveau1.install
diff --git a/debian/changelog b/debian/changelog
index 3c3882f..ee6125e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,6 +7,7 @@ libdrm (2.4.20-3) UNRELEASED; urgency=low
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.
-- Sven Joachim <svenjoac@gmx.de> Sat, 22 May 2010 13:47:34 +0200
diff --git a/debian/libdrm-nouveau1.install b/debian/libdrm-nouveau1.install
index 7650858..b19813f 100644
--- a/debian/libdrm-nouveau1.install
+++ b/debian/libdrm-nouveau1.install
@@ -1 +1 @@
-usr/lib/libdrm_nouveau.so.*
+usr/lib/libdrm_nouveau.so.1*
commit e09302a94cf5446ea4539e75fb07b497ac566989
Author: Sven Joachim <svenjoac@gmx.de>
Date: Sat May 22 14:22:31 2010 +0200
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 older xserver-xorg-video-nouveau packages
which would segfault if used with this version of libdrm.
diff --git a/debian/changelog b/debian/changelog
index 6a60758..3c3882f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,12 @@
libdrm (2.4.20-3) UNRELEASED; urgency=low
+ * 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.
* Update xsfbs to 81fc271788605b52e85c2d11635a0371fb44605e0.
-- Sven Joachim <svenjoac@gmx.de> Sat, 22 May 2010 13:47:34 +0200
diff --git a/debian/control b/debian/control
index cf271d8..947dce4 100644
--- a/debian/control
+++ b/debian/control
@@ -99,6 +99,7 @@ Section: libs
Architecture: linux-any
Depends: ${shlibs:Depends},
${misc:Depends},
+Breaks: xserver-xorg-video-nouveau (<< 1:0.0.16)
Description: Userspace interface to nouveau-specific kernel DRM services -- runtime
This library implements the userspace interface to the nouveau-specific kernel
DRM services. DRM stands for "Direct Rendering Manager", which is the
diff --git a/debian/libdrm-nouveau1.symbols b/debian/libdrm-nouveau1.symbols
index 48ce118..e71dbab 100644
--- a/debian/libdrm-nouveau1.symbols
+++ b/debian/libdrm-nouveau1.symbols
@@ -1,59 +1,46 @@
libdrm_nouveau.so.1 libdrm-nouveau1 #MINVER#
-#MISSING: 2.4.12+git20090729.5a73f066# dma@Base 2.4.4
- nouveau_bo_busy@Base 2.4.4
- nouveau_bo_emit_buffer@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_bo_fake@Base 2.4.4
- nouveau_bo_handle_get@Base 2.4.4
- nouveau_bo_handle_ref@Base 2.4.4
- nouveau_bo_init@Base 2.4.4
- nouveau_bo_map@Base 2.4.4
- nouveau_bo_map_flush@Base 2.4.11-1ubuntu1~
- nouveau_bo_map_range@Base 2.4.11-1ubuntu1~
- 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
- 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
- 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~
- nouveau_channel_alloc@Base 2.4.4
- nouveau_channel_free@Base 2.4.4
- nouveau_device_close@Base 2.4.4
- nouveau_device_get_param@Base 2.4.4
- nouveau_device_open@Base 2.4.4
- nouveau_device_open_existing@Base 2.4.4
- nouveau_device_set_param@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_dma_channel_init@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_dma_kickoff@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_dma_wait@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_emit@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_flush@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_new@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_ref@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_signal_cb@Base 2.4.4
-#MISSING: 2.4.12+git20090729.5a73f066# nouveau_fence_wait@Base 2.4.4
- nouveau_grobj_alloc@Base 2.4.4
- nouveau_grobj_autobind@Base 2.4.4
- nouveau_grobj_free@Base 2.4.4
- nouveau_grobj_ref@Base 2.4.4
- nouveau_notifier_alloc@Base 2.4.4
- nouveau_notifier_free@Base 2.4.4
- nouveau_notifier_reset@Base 2.4.4
- nouveau_notifier_return_val@Base 2.4.4
- nouveau_notifier_status@Base 2.4.4
- nouveau_notifier_wait_status@Base 2.4.4
- nouveau_pushbuf_emit_reloc@Base 2.4.4
- nouveau_pushbuf_fini@Base 2.4.17-1ubuntu1~
- nouveau_pushbuf_flush@Base 2.4.4
- nouveau_pushbuf_init@Base 2.4.4
- nouveau_pushbuf_marker_emit@Base 2.4.16
- nouveau_pushbuf_marker_undo@Base 2.4.16
- nouveau_resource_alloc@Base 2.4.4
- nouveau_resource_destroy@Base 2.4.18
- nouveau_resource_free@Base 2.4.4
- nouveau_resource_init@Base 2.4.4
+ nouveau_bo_busy@Base 2.4.20-3~
+ nouveau_bo_emit_buffer@Base 2.4.20-3~
+ nouveau_bo_handle_get@Base 2.4.20-3~
+ nouveau_bo_handle_ref@Base 2.4.20-3~
+ nouveau_bo_init@Base 2.4.20-3~
+ nouveau_bo_map@Base 2.4.20-3~
+ nouveau_bo_map_flush@Base 2.4.20-3~
+ nouveau_bo_map_range@Base 2.4.20-3~
+ nouveau_bo_new@Base 2.4.20-3~
+ nouveau_bo_new_tile@Base 2.4.20-3~
+ nouveau_bo_pending@Base 2.4.20-3~
+ nouveau_bo_ref@Base 2.4.20-3~
+ nouveau_bo_takedown@Base 2.4.20-3~
+ nouveau_bo_unmap@Base 2.4.20-3~
+ nouveau_bo_user@Base 2.4.20-3~
+ nouveau_bo_wrap@Base 2.4.20-3~
+ nouveau_channel_alloc@Base 2.4.20-3~
+ nouveau_channel_free@Base 2.4.20-3~
+ nouveau_device_close@Base 2.4.20-3~
+ nouveau_device_get_param@Base 2.4.20-3~
+ nouveau_device_open@Base 2.4.20-3~
+ nouveau_device_open_existing@Base 2.4.20-3~
+ nouveau_device_set_param@Base 2.4.20-3~
+ nouveau_grobj_alloc@Base 2.4.20-3~
+ nouveau_grobj_autobind@Base 2.4.20-3~
+ nouveau_grobj_free@Base 2.4.20-3~
+ nouveau_grobj_ref@Base 2.4.20-3~
+ nouveau_notifier_alloc@Base 2.4.20-3~
+ nouveau_notifier_free@Base 2.4.20-3~
+ nouveau_notifier_reset@Base 2.4.20-3~
+ nouveau_notifier_return_val@Base 2.4.20-3~
+ nouveau_notifier_status@Base 2.4.20-3~
+ nouveau_notifier_wait_status@Base 2.4.20-3~
+ nouveau_pushbuf_emit_reloc@Base 2.4.20-3~
+ nouveau_pushbuf_fini@Base 2.4.20-3~
+ nouveau_pushbuf_flush@Base 2.4.20-3~
+ nouveau_pushbuf_init@Base 2.4.20-3~
+ nouveau_pushbuf_marker_emit@Base 2.4.20-3~
+ nouveau_pushbuf_marker_undo@Base 2.4.20-3~
+ nouveau_pushbuf_submit@Base 2.4.20-3~
+ nouveau_reloc_emit@Base 2.4.20-3~
+ nouveau_resource_alloc@Base 2.4.20-3~
+ nouveau_resource_destroy@Base 2.4.20-3~
+ nouveau_resource_free@Base 2.4.20-3~
+ nouveau_resource_init@Base 2.4.20-3~
diff --git a/debian/patches/03_revert_abi_change.diff b/debian/patches/03_revert_abi_change.diff
deleted file mode 100644
index 63ddc3c..0000000
--- a/debian/patches/03_revert_abi_change.diff
+++ /dev/null
@@ -1,2118 +0,0 @@
-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
-
-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
-index b6d214a..217b7ef 100644
---- 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
-
-
- 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);
- 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
-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;
-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;
-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
-+#define NV20TCL_TX3_CLIP_PLANE_D(x) (0x0000090c+((x)*16))
-+#define NV20TCL_TX3_CLIP_PLANE_D__SIZE 0x00000004
- #define NV20TCL_FOG_EQUATION_CONSTANT 0x000009c0
- #define NV20TCL_FOG_EQUATION_LINEAR 0x000009c4
- #define NV20TCL_FOG_EQUATION_QUADRATIC 0x000009c8
-@@ -4286,17 +4346,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- #define NV20TCL_LIGHT_BACK_AMBIENT_G__SIZE 0x00000008
- #define NV20TCL_LIGHT_BACK_AMBIENT_B(x) (0x00000c08+((x)*64))
- #define NV20TCL_LIGHT_BACK_AMBIENT_B__SIZE 0x00000008
--#define NV20TCL_LIGHT_BACK_DIFFUSE_R(x) (0x00000c0c+((x)*64))
-+#define NV20TCL_LIGHT_BACK_DIFFUSE_R(x) (0x00000c0c+((x)*128))
- #define NV20TCL_LIGHT_BACK_DIFFUSE_R__SIZE 0x00000008
--#define NV20TCL_LIGHT_BACK_DIFFUSE_G(x) (0x00000c10+((x)*64))
-+#define NV20TCL_LIGHT_BACK_DIFFUSE_G(x) (0x00000c10+((x)*128))
- #define NV20TCL_LIGHT_BACK_DIFFUSE_G__SIZE 0x00000008
--#define NV20TCL_LIGHT_BACK_DIFFUSE_B(x) (0x00000c14+((x)*64))
-+#define NV20TCL_LIGHT_BACK_DIFFUSE_B(x) (0x00000c14+((x)*128))
- #define NV20TCL_LIGHT_BACK_DIFFUSE_B__SIZE 0x00000008
--#define NV20TCL_LIGHT_BACK_SPECULAR_R(x) (0x00000c18+((x)*64))
-+#define NV20TCL_LIGHT_BACK_SPECULAR_R(x) (0x00000c18+((x)*128))
Reply to: