All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC/PATCH] Switch dri driver to use rules-ng-ng headers
@ 2010-11-01  0:26 Viktor Novotný
       [not found] ` <1288571171-8102-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: Viktor Novotný @ 2010-11-01  0:26 UTC (permalink / raw)
  To: nouveau, nouveau

From: Viktor Novotný <noviktor@seznam.cz>

Hi,

following patches make the dri driver use rules-ng-ng(rnn) generated register definitions instead of renouveau generated ones.
First set of 5 patches is for mesa repository, second set of 4 patches is for rnn and consists of changes ported from renouveau.

One thing I do not understand is, why rnn does not generate NV20_3D_TEX_ENABLE__LEN(should be 4), so any pointers on what to 
do are welcome, as are any other comments, suggestions etc.

Regards
	Viktor
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 1/5] dri/nouveau: Import headers from rules-ng-ng
       [not found] ` <1288571171-8102-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
@ 2010-11-01  0:26   ` Viktor Novotný
  2010-11-01  0:26   ` [PATCH 2/5] dri/nouveau: nv04: Use rules-ng-ng headers Viktor Novotný
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 9+ messages in thread
From: Viktor Novotný @ 2010-11-01  0:26 UTC (permalink / raw)
  To: nouveau

From: Viktor Novotný <noviktor@seznam.cz>

---
 src/mesa/drivers/dri/nouveau/nv01_2d.xml.h   | 1343 +++++++++++++++++
 src/mesa/drivers/dri/nouveau/nv04_3d.xml.h   |  738 +++++++++
 src/mesa/drivers/dri/nouveau/nv10_3d.xml.h   | 1616 ++++++++++++++++++++
 src/mesa/drivers/dri/nouveau/nv20_3d.xml.h   | 2085 ++++++++++++++++++++++++++
 src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h   |  155 ++
 src/mesa/drivers/dri/nouveau/nv_object.xml.h |  268 ++++
 6 files changed, 6205 insertions(+), 0 deletions(-)
 create mode 100644 src/mesa/drivers/dri/nouveau/nv01_2d.xml.h
 create mode 100644 src/mesa/drivers/dri/nouveau/nv04_3d.xml.h
 create mode 100644 src/mesa/drivers/dri/nouveau/nv10_3d.xml.h
 create mode 100644 src/mesa/drivers/dri/nouveau/nv20_3d.xml.h
 create mode 100644 src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h
 create mode 100644 src/mesa/drivers/dri/nouveau/nv_object.xml.h

diff --git a/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h b/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h
new file mode 100644
index 0000000..2f0a886
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h
@@ -0,0 +1,1343 @@
+#ifndef NV01_2D_XML
+#define NV01_2D_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv01_2d.xml    (  33509 bytes, from 2010-10-30 13:36:57)
+- copyright.xml  (   6498 bytes, from 2010-10-24 16:03:07)
+- nv_defs.xml    (   4437 bytes, from 2010-10-24 16:03:07)
+- nv_object.xml  (  11547 bytes, from 2010-10-27 16:17:46)
+- nvchipsets.xml (   2991 bytes, from 2010-10-30 09:54:12)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro, curro_, currojerez)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+
+#define NV01_CONTEXT_BETA1_DMA_NOTIFY				0x00000180
+
+#define NV01_CONTEXT_BETA1_BETA_1D31				0x00000300
+
+
+#define NV04_BETA_SOLID_DMA_NOTIFY				0x00000180
+
+#define NV04_BETA_SOLID_BETA_FACTOR				0x00000300
+
+
+#define NV01_CONTEXT_COLOR_KEY_DMA_NOTIFY			0x00000180
+
+#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT			0x00000300
+#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A16R5G6B5		0x00000001
+#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A1R5G5B5		0x00000002
+#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A8R8G8B8		0x00000003
+
+#define NV01_CONTEXT_COLOR_KEY_COLOR				0x00000304
+
+
+#define NV01_CONTEXT_PATTERN_DMA_NOTIFY				0x00000180
+
+#define NV01_CONTEXT_PATTERN_COLOR_FORMAT			0x00000300
+
+#define NV01_CONTEXT_PATTERN_MONOCHROME_FORMAT			0x00000304
+
+#define NV01_CONTEXT_PATTERN_SHAPE				0x00000308
+
+#define NV01_CONTEXT_PATTERN_COLOR(i0)			       (0x00000310 + 0x4*(i0))
+#define NV01_CONTEXT_PATTERN_COLOR__ESIZE			0x00000004
+#define NV01_CONTEXT_PATTERN_COLOR__LEN				0x00000002
+
+#define NV01_CONTEXT_PATTERN_PATTERN(i0)		       (0x00000318 + 0x4*(i0))
+#define NV01_CONTEXT_PATTERN_PATTERN__ESIZE			0x00000004
+#define NV01_CONTEXT_PATTERN_PATTERN__LEN			0x00000002
+
+
+#define NV01_CONTEXT_CLIP_RECTANGLE_DMA_NOTIFY			0x00000180
+
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT			0x00000300
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X__MASK		0x0000ffff
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X__SHIFT		0
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y__MASK		0xffff0000
+#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y__SHIFT		16
+
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE			0x00000304
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W__MASK		0x0000ffff
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W__SHIFT		0
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H__MASK		0xffff0000
+#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H__SHIFT		16
+
+
+#define NV04_CONTEXT_SURFACES_2D_DMA_NOTIFY			0x00000180
+
+#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_SOURCE		0x00000184
+
+#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_DESTIN		0x00000188
+
+
+#define NV50_CONTEXT_SURFACES_2D_SRC_LINEAR			0x00000200
+
+#define NV50_CONTEXT_SURFACES_2D_SRC_TILE_MODE			0x00000204
+
+#define NV50_CONTEXT_SURFACES_2D_SRC_WIDTH			0x00000208
+
+#define NV50_CONTEXT_SURFACES_2D_SRC_HEIGHT			0x0000020c
+
+#define NV50_CONTEXT_SURFACES_2D_UNK0210			0x00000210
+
+#define NV50_CONTEXT_SURFACES_2D_UNK0214			0x00000214
+
+#define NV50_CONTEXT_SURFACES_2D_DST_LINEAR			0x00000218
+
+#define NV50_CONTEXT_SURFACES_2D_DST_TILE_MODE			0x0000021c
+
+#define NV50_CONTEXT_SURFACES_2D_DST_WIDTH			0x00000220
+
+#define NV50_CONTEXT_SURFACES_2D_DST_HEIGHT			0x00000224
+
+#define NV50_CONTEXT_SURFACES_2D_UNK0228			0x00000228
+
+#define NV50_CONTEXT_SURFACES_2D_UNK022C			0x0000022c
+
+#define NV50_CONTEXT_SURFACES_2D_OFFSET_SOURCE_HIGH		0x00000230
+
+#define NV50_CONTEXT_SURFACES_2D_OFFSET_DESTIN_HIGH		0x00000234
+
+#define NV04_CONTEXT_SURFACES_2D_FORMAT				0x00000300
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y8			0x00000001
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_Z1R5G5B5	0x00000002
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_X1R5G5B5	0x00000003
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_R5G6B5			0x00000004
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y16			0x00000005
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_Z8R8G8B8	0x00000006
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_X8R8G8B8	0x00000007
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_Z1A7R8G8B8	0x00000008
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_X1A7R8G8B8	0x00000009
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_A8R8G8B8		0x0000000a
+#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y32			0x0000000b
+
+#define NV04_CONTEXT_SURFACES_2D_PITCH				0x00000304
+#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE__MASK		0x0000ffff
+#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE__SHIFT		0
+#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN__MASK		0xffff0000
+#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN__SHIFT		16
+
+#define NV04_CONTEXT_SURFACES_2D_OFFSET_SOURCE			0x00000308
+
+#define NV04_CONTEXT_SURFACES_2D_OFFSET_DESTIN			0x0000030c
+
+
+#define NV04_SWIZZLED_SURFACE_DMA_NOTIFY			0x00000180
+
+#define NV04_SWIZZLED_SURFACE_DMA_IMAGE				0x00000184
+
+#define NV04_SWIZZLED_SURFACE_FORMAT				0x00000300
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR__MASK		0x000000ff
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR__SHIFT		0
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y8			0x00000001
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5	0x00000002
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_X1R5G5B5	0x00000003
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_R5G6B5		0x00000004
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y16			0x00000005
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8	0x00000006
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_X8R8G8B8	0x00000007
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8	0x00000008
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8	0x00000009
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_A8R8G8B8		0x0000000a
+#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y32			0x0000000b
+#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U__MASK		0x00ff0000
+#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U__SHIFT		16
+#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V__MASK		0xff000000
+#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V__SHIFT		24
+
+#define NV04_SWIZZLED_SURFACE_OFFSET				0x00000304
+
+
+#define NV03_CONTEXT_ROP_DMA_NOTIFY				0x00000180
+
+#define NV03_CONTEXT_ROP_ROP					0x00000300
+
+
+#define NV04_IMAGE_PATTERN_DMA_NOTIFY				0x00000180
+
+#define NV04_IMAGE_PATTERN_COLOR_FORMAT				0x00000300
+#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A16R5G6B5		0x00000001
+#define NV04_IMAGE_PATTERN_COLOR_FORMAT_X16A1R5G5B5		0x00000002
+#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A8R8G8B8		0x00000003
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT			0x00000304
+#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_CGA6		0x00000001
+#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_LE			0x00000002
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE			0x00000308
+#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_8X8			0x00000000
+#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_64X1		0x00000001
+#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_1X64		0x00000002
+
+#define NV04_IMAGE_PATTERN_PATTERN_SELECT			0x0000030c
+#define NV04_IMAGE_PATTERN_PATTERN_SELECT_MONO			0x00000001
+#define NV04_IMAGE_PATTERN_PATTERN_SELECT_COLOR			0x00000002
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR0			0x00000310
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR1			0x00000314
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN0			0x00000318
+
+#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN1			0x0000031c
+
+#define NV04_IMAGE_PATTERN_PATTERN_Y8(i0)		       (0x00000400 + 0x4*(i0))
+#define NV04_IMAGE_PATTERN_PATTERN_Y8__ESIZE			0x00000004
+#define NV04_IMAGE_PATTERN_PATTERN_Y8__LEN			0x00000010
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0__MASK			0x000000ff
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0__SHIFT			0
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1__MASK			0x0000ff00
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1__SHIFT			8
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2__MASK			0x00ff0000
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2__SHIFT			16
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3__MASK			0xff000000
+#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3__SHIFT			24
+
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5(i0)		       (0x00000500 + 0x4*(i0))
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__ESIZE		0x00000004
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__LEN			0x00000020
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0__MASK		0x0000001f
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0__SHIFT		0
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0__MASK		0x000007e0
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0__SHIFT		5
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0__MASK		0x0000f800
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0__SHIFT		11
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1__MASK		0x001f0000
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1__SHIFT		16
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1__MASK		0x07e00000
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1__SHIFT		21
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1__MASK		0xf8000000
+#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1__SHIFT		27
+
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5(i0)		       (0x00000600 + 0x4*(i0))
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__ESIZE		0x00000004
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__LEN		0x00000020
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0__MASK		0x0000001f
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0__SHIFT		0
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0__MASK		0x000003e0
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0__SHIFT		5
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0__MASK		0x00007c00
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0__SHIFT		10
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1__MASK		0x001f0000
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1__SHIFT		16
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1__MASK		0x03e00000
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1__SHIFT		21
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1__MASK		0x7c000000
+#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1__SHIFT		26
+
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8(i0)		       (0x00000700 + 0x4*(i0))
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__ESIZE		0x00000004
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__LEN		0x00000040
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B__MASK		0x000000ff
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B__SHIFT		0
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G__MASK		0x0000ff00
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G__SHIFT		8
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R__MASK		0x00ff0000
+#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R__SHIFT		16
+
+
+#define NV01_RENDER_SOLID_LINE_PATCH				0x0000010c
+
+#define NV01_RENDER_SOLID_LINE_DMA_NOTIFY			0x00000180
+
+#define NV01_RENDER_SOLID_LINE_CLIP_RECTANGLE			0x00000184
+
+#define NV01_RENDER_SOLID_LINE_PATTERN				0x00000188
+
+#define NV04_RENDER_SOLID_LINE_PATTERN				0x00000188
+
+#define NV01_RENDER_SOLID_LINE_ROP				0x0000018c
+
+#define NV01_RENDER_SOLID_LINE_BETA1				0x00000190
+
+#define NV01_RENDER_SOLID_LINE_SURFACE_DST			0x00000194
+
+
+#define NV04_RENDER_SOLID_LINE_BETA4				0x00000194
+
+#define NV04_RENDER_SOLID_LINE_SURFACE				0x00000198
+
+#define NV01_RENDER_SOLID_LINE_OPERATION			0x000002fc
+#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_AND		0x00000000
+#define NV01_RENDER_SOLID_LINE_OPERATION_ROP_AND		0x00000001
+#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_AND		0x00000002
+#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY		0x00000003
+#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_PREMULT	0x00000004
+#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_PREMULT		0x00000005
+
+#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT			0x00000300
+#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A16R5G6B5		0x00000001
+#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A1R5G5B5		0x00000002
+#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A8R8G8B8		0x00000003
+
+#define NV01_RENDER_SOLID_LINE_COLOR				0x00000304
+
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0(i0)		       (0x00000400 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0__ESIZE		0x00000008
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0__LEN			0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X__MASK		0x0000ffff
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X__SHIFT		0
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y__MASK		0xffff0000
+#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y__SHIFT		16
+
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1(i0)		       (0x00000404 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1__ESIZE		0x00000008
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1__LEN			0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X__MASK		0x0000ffff
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X__SHIFT		0
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y__MASK		0xffff0000
+#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y__SHIFT		16
+
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X(i0)	       (0x00000480 + 0x10*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__ESIZE		0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__LEN		0x00000010
+
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y(i0)	       (0x00000484 + 0x10*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__ESIZE		0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__LEN		0x00000010
+
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X(i0)	       (0x00000488 + 0x10*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__ESIZE		0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__LEN		0x00000010
+
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y(i0)	       (0x0000048c + 0x10*(i0))
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__ESIZE		0x00000010
+#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__LEN		0x00000010
+
+#define NV01_RENDER_SOLID_LINE_POLYLINE(i0)		       (0x00000500 + 0x4*(i0))
+#define NV01_RENDER_SOLID_LINE_POLYLINE__ESIZE			0x00000004
+#define NV01_RENDER_SOLID_LINE_POLYLINE__LEN			0x00000020
+#define NV01_RENDER_SOLID_LINE_POLYLINE_X__MASK			0x0000ffff
+#define NV01_RENDER_SOLID_LINE_POLYLINE_X__SHIFT		0
+#define NV01_RENDER_SOLID_LINE_POLYLINE_Y__MASK			0xffff0000
+#define NV01_RENDER_SOLID_LINE_POLYLINE_Y__SHIFT		16
+
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X(i0)	       (0x00000580 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__ESIZE	0x00000008
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__LEN		0x00000010
+
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y(i0)	       (0x00000584 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__ESIZE	0x00000008
+#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__LEN		0x00000010
+
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR(i0)	       (0x00000600 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__ESIZE		0x00000008
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__LEN		0x00000010
+
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT(i0)	       (0x00000604 + 0x8*(i0))
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__ESIZE		0x00000008
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__LEN		0x00000010
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X__MASK		0x0000ffff
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X__SHIFT		0
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y__MASK		0xffff0000
+#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y__SHIFT		16
+
+
+#define NV01_RENDER_SOLID_TRIANGLE_PATCH			0x0000010c
+
+#define NV01_RENDER_SOLID_TRIANGLE_DMA_NOTIFY			0x00000180
+
+#define NV01_RENDER_SOLID_TRIANGLE_CLIP_RECTANGLE		0x00000184
+
+#define NV01_RENDER_SOLID_TRIANGLE_PATTERN			0x00000188
+
+#define NV04_RENDER_SOLID_TRIANGLE_PATTERN			0x00000188
+
+#define NV01_RENDER_SOLID_TRIANGLE_ROP				0x0000018c
+
+#define NV01_RENDER_SOLID_TRIANGLE_BETA1			0x00000190
+
+#define NV01_RENDER_SOLID_TRIANGLE_SURFACE_DST			0x00000194
+
+
+#define NV04_RENDER_SOLID_TRIANGLE_BETA4			0x00000194
+
+#define NV04_RENDER_SOLID_TRIANGLE_SURFACE			0x00000198
+
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION			0x000002fc
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_AND	0x00000000
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_ROP_AND		0x00000001
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_AND		0x00000002
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY		0x00000003
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_PREMULT	0x00000004
+#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_PREMULT	0x00000005
+
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT			0x00000300
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_A16R5G6B5	0x00000001
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_X16A1R5G5B5	0x00000002
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_A8R8G8B8	0x00000003
+
+#define NV01_RENDER_SOLID_TRIANGLE_COLOR			0x00000304
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0		0x00000310
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X__MASK	0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X__SHIFT	0
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y__MASK	0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y__SHIFT	16
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1		0x00000314
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X__MASK	0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X__SHIFT	0
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y__MASK	0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y__SHIFT	16
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2		0x00000318
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X__MASK	0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X__SHIFT	0
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y__MASK	0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y__SHIFT	16
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_X		0x00000320
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_Y		0x00000324
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_X		0x00000328
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_Y		0x0000032c
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_X		0x00000330
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_Y		0x00000334
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH(i0)		       (0x00000400 + 0x4*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__ESIZE		0x00000004
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__LEN			0x00000020
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X__MASK		0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X__SHIFT		0
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y__MASK		0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y__SHIFT		16
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X(i0)       (0x00000480 + 0x8*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__ESIZE	0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__LEN	0x00000010
+
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y(i0)       (0x00000484 + 0x8*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__ESIZE	0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__LEN	0x00000010
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR(i0)	       (0x00000500 + 0x10*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__ESIZE	0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__LEN		0x00000008
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0(i0)	       (0x00000504 + 0x10*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__ESIZE	0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__LEN	0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X__MASK	0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X__SHIFT	0
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y__MASK	0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y__SHIFT	16
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1(i0)	       (0x00000508 + 0x10*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__ESIZE	0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__LEN	0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X__MASK	0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X__SHIFT	0
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y__MASK	0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y__SHIFT	16
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2(i0)	       (0x0000050c + 0x10*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__ESIZE	0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__LEN	0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X__MASK	0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X__SHIFT	0
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y__MASK	0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y__SHIFT	16
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR(i0)	       (0x00000580 + 0x8*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__ESIZE	0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__LEN		0x00000010
+
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT(i0)	       (0x00000584 + 0x8*(i0))
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__ESIZE	0x00000008
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__LEN		0x00000010
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X__MASK	0x0000ffff
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X__SHIFT	0
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y__MASK	0xffff0000
+#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y__SHIFT	16
+
+
+#define NV01_RENDER_SOLID_RECTANGLE_PATCH			0x0000010c
+
+#define NV01_RENDER_SOLID_RECTANGLE_DMA_NOTIFY			0x00000180
+
+#define NV01_RENDER_SOLID_RECTANGLE_CLIP_RECTANGLE		0x00000184
+
+#define NV01_RENDER_SOLID_RECTANGLE_PATTERN			0x00000188
+
+#define NV04_RENDER_SOLID_RECTANGLE_PATTERN			0x00000188
+
+#define NV01_RENDER_SOLID_RECTANGLE_ROP				0x0000018c
+
+#define NV01_RENDER_SOLID_RECTANGLE_BETA1			0x00000190
+
+#define NV01_RENDER_SOLID_RECTANGLE_SURFACE_DST			0x00000194
+
+
+#define NV04_RENDER_SOLID_RECTANGLE_BETA4			0x00000194
+
+#define NV04_RENDER_SOLID_RECTANGLE_SURFACE			0x00000198
+
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION			0x000002fc
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_AND	0x00000000
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_ROP_AND		0x00000001
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_AND		0x00000002
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY		0x00000003
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_PREMULT	0x00000004
+#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_PREMULT	0x00000005
+
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT		0x00000300
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_A16R5G6B5	0x00000001
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_X16A1R5G5B5	0x00000002
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_A8R8G8B8	0x00000003
+
+#define NV01_RENDER_SOLID_RECTANGLE_COLOR			0x00000304
+
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT(i0)	       (0x00000400 + 0x8*(i0))
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__ESIZE	0x00000008
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__LEN	0x00000010
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X__MASK	0x0000ffff
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X__SHIFT	0
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y__MASK	0xffff0000
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y__SHIFT	16
+
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE(i0)	       (0x00000404 + 0x8*(i0))
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__ESIZE	0x00000008
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__LEN		0x00000010
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W__MASK	0x0000ffff
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W__SHIFT	0
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H__MASK	0xffff0000
+#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H__SHIFT	16
+
+
+#define NV01_IMAGE_BLIT_PATCH					0x0000010c
+
+
+#define NV11_IMAGE_BLIT_WAIT_FOR_IDLE				0x00000108
+
+#define NV11_IMAGE_BLIT_FLIP_SET_READ				0x00000120
+
+#define NV11_IMAGE_BLIT_FLIP_SET_WRITE				0x00000124
+
+#define NV11_IMAGE_BLIT_FLIP_MAX				0x00000128
+
+#define NV11_IMAGE_BLIT_FLIP_INCR_WRITE				0x0000012c
+
+#define NV11_IMAGE_BLIT_FLIP_WAIT				0x00000130
+
+#define NV11_IMAGE_BLIT_FLIP_CRTC_INCR_READ			0x00000134
+
+#define NV01_IMAGE_BLIT_DMA_NOTIFY				0x00000180
+
+#define NV01_IMAGE_BLIT_COLOR_KEY				0x00000184
+
+#define NV04_IMAGE_BLIT_COLOR_KEY				0x00000184
+
+#define NV01_IMAGE_BLIT_CLIP_RECTANGLE				0x00000188
+
+#define NV01_IMAGE_BLIT_PATTERN					0x0000018c
+
+#define NV04_IMAGE_BLIT_PATTERN					0x0000018c
+
+#define NV01_IMAGE_BLIT_ROP					0x00000190
+
+#define NV01_IMAGE_BLIT_BETA1					0x00000194
+
+
+#define NV01_IMAGE_BLIT_SURFACE_SRC				0x00000198
+
+#define NV01_IMAGE_BLIT_SURFACE_DST				0x0000019c
+
+
+#define NV04_IMAGE_BLIT_BETA4					0x00000198
+
+#define NV04_IMAGE_BLIT_SURFACES				0x0000019c
+
+#define NV01_IMAGE_BLIT_OPERATION				0x000002fc
+#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_AND			0x00000000
+#define NV01_IMAGE_BLIT_OPERATION_ROP_AND			0x00000001
+#define NV01_IMAGE_BLIT_OPERATION_BLEND_AND			0x00000002
+#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY			0x00000003
+#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_PREMULT		0x00000004
+#define NV01_IMAGE_BLIT_OPERATION_BLEND_PREMULT			0x00000005
+
+#define NV01_IMAGE_BLIT_POINT_IN				0x00000300
+#define NV01_IMAGE_BLIT_POINT_IN_X__MASK			0x0000ffff
+#define NV01_IMAGE_BLIT_POINT_IN_X__SHIFT			0
+#define NV01_IMAGE_BLIT_POINT_IN_Y__MASK			0xffff0000
+#define NV01_IMAGE_BLIT_POINT_IN_Y__SHIFT			16
+
+#define NV01_IMAGE_BLIT_POINT_OUT				0x00000304
+#define NV01_IMAGE_BLIT_POINT_OUT_X__MASK			0x0000ffff
+#define NV01_IMAGE_BLIT_POINT_OUT_X__SHIFT			0
+#define NV01_IMAGE_BLIT_POINT_OUT_Y__MASK			0xffff0000
+#define NV01_IMAGE_BLIT_POINT_OUT_Y__SHIFT			16
+
+#define NV01_IMAGE_BLIT_SIZE					0x00000308
+#define NV01_IMAGE_BLIT_SIZE_W__MASK				0x0000ffff
+#define NV01_IMAGE_BLIT_SIZE_W__SHIFT				0
+#define NV01_IMAGE_BLIT_SIZE_H__MASK				0xffff0000
+#define NV01_IMAGE_BLIT_SIZE_H__SHIFT				16
+
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_PATCH			0x0000010c
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_NOTIFY			0x00000180
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_LUT			0x00000184
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_KEY			0x00000188
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_CLIP_RECTANGLE		0x0000018c
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_PATTERN			0x00000190
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_ROP				0x00000194
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_BETA1			0x00000198
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_BETA4			0x0000019c
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_SURFACE			0x000001a0
+
+#define NV05_INDEXED_IMAGE_FROM_CPU_SURFACE			0x000001a0
+
+#define NV05_INDEXED_IMAGE_FROM_CPU_COLOR_CONVERSION		0x000003e0
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_OPERATION			0x000003e4
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_FORMAT		0x000003e8
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_INDEX_FORMAT		0x000003ec
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_LUT_OFFSET			0x000003f0
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_POINT			0x000003f4
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_OUT			0x000003f8
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_IN			0x000003fc
+
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR(i0)		       (0x00000400 + 0x4*(i0))
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__ESIZE		0x00000004
+#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__LEN			0x00000700
+
+
+#define NV10_IMAGE_FROM_CPU_WAIT_FOR_IDLE			0x00000108
+
+#define NV01_IMAGE_FROM_CPU_PATCH				0x0000010c
+
+#define NV01_IMAGE_FROM_CPU_DMA_NOTIFY				0x00000180
+
+#define NV01_IMAGE_FROM_CPU_COLOR_KEY				0x00000184
+
+#define NV04_IMAGE_FROM_CPU_COLOR_KEY				0x00000184
+
+#define NV01_IMAGE_FROM_CPU_CLIP_RECTANGLE			0x00000188
+
+#define NV01_IMAGE_FROM_CPU_PATTERN				0x0000018c
+
+#define NV04_IMAGE_FROM_CPU_PATTERN				0x0000018c
+
+#define NV01_IMAGE_FROM_CPU_ROP					0x00000190
+
+#define NV01_IMAGE_FROM_CPU_BETA1				0x00000194
+
+
+#define NV01_IMAGE_FROM_CPU_SURFACE_DST				0x00000198
+
+
+#define NV04_IMAGE_FROM_CPU_BETA4				0x00000198
+
+#define NV04_IMAGE_FROM_CPU_SURFACE				0x0000019c
+
+#define NV05_IMAGE_FROM_CPU_COLOR_CONVERSION			0x000002f8
+
+#define NV01_IMAGE_FROM_CPU_OPERATION				0x000002fc
+#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_AND		0x00000000
+#define NV01_IMAGE_FROM_CPU_OPERATION_ROP_AND			0x00000001
+#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_AND			0x00000002
+#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY			0x00000003
+#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_PREMULT		0x00000004
+#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_PREMULT		0x00000005
+
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT			0x00000300
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_R5G6G5			0x00000001
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A1R5G5B5		0x00000002
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X1R5G5B5		0x00000003
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A8R8G8B8		0x00000004
+#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X8R8G8B8		0x00000005
+
+#define NV01_IMAGE_FROM_CPU_POINT				0x00000304
+#define NV01_IMAGE_FROM_CPU_POINT_X__MASK			0x0000ffff
+#define NV01_IMAGE_FROM_CPU_POINT_X__SHIFT			0
+#define NV01_IMAGE_FROM_CPU_POINT_Y__MASK			0xffff0000
+#define NV01_IMAGE_FROM_CPU_POINT_Y__SHIFT			16
+
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT				0x00000308
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W__MASK			0x0000ffff
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W__SHIFT			0
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H__MASK			0xffff0000
+#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H__SHIFT			16
+
+#define NV01_IMAGE_FROM_CPU_SIZE_IN				0x0000030c
+#define NV01_IMAGE_FROM_CPU_SIZE_IN_W__MASK			0x0000ffff
+#define NV01_IMAGE_FROM_CPU_SIZE_IN_W__SHIFT			0
+#define NV01_IMAGE_FROM_CPU_SIZE_IN_H__MASK			0xffff0000
+#define NV01_IMAGE_FROM_CPU_SIZE_IN_H__SHIFT			16
+
+#define NV01_IMAGE_FROM_CPU_COLOR(i0)			       (0x00000400 + 0x4*(i0))
+#define NV01_IMAGE_FROM_CPU_COLOR__ESIZE			0x00000004
+#define NV01_IMAGE_FROM_CPU_COLOR__LEN				0x00000020
+
+#define NV04_IMAGE_FROM_CPU_COLOR(i0)			       (0x00000400 + 0x4*(i0))
+#define NV04_IMAGE_FROM_CPU_COLOR__ESIZE			0x00000004
+#define NV04_IMAGE_FROM_CPU_COLOR__LEN				0x00000700
+
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_PATCH			0x0000010c
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_DMA_NOTIFY		0x00000180
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY			0x00000184
+
+#define NV04_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY			0x00000184
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_PATTERN			0x00000188
+
+#define NV04_STRETCHED_IMAGE_FROM_CPU_PATTERN			0x00000188
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_ROP			0x0000018c
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_BETA1			0x00000190
+
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SURFACE_DST		0x00000194
+
+
+#define NV04_STRETCHED_IMAGE_FROM_CPU_BETA4			0x00000194
+
+#define NV04_STRETCHED_IMAGE_FROM_CPU_SURFACE			0x00000198
+
+#define NV05_STRETCHED_IMAGE_FROM_CPU_COLOR_CONVERSION		0x000002f8
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_OPERATION			0x000002fc
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_FORMAT		0x00000300
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN			0x00000304
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W__MASK		0x0000ffff
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W__SHIFT		0
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H__MASK		0xffff0000
+#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H__SHIFT		16
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_DX_DU			0x00000308
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_DY_DV			0x0000030c
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT		0x00000310
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X__MASK	0x0000ffff
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X__SHIFT	0
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y__MASK	0xffff0000
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y__SHIFT	16
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE			0x00000314
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W__MASK		0x0000ffff
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W__SHIFT	0
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H__MASK		0xffff0000
+#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H__SHIFT	16
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4			0x00000318
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X__MASK		0x0000ffff
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X__SHIFT	0
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y__MASK		0xffff0000
+#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y__SHIFT	16
+
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR(i0)		       (0x00000400 + 0x4*(i0))
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__ESIZE		0x00000004
+#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__LEN		0x00000700
+
+
+#define NV10_SCALED_IMAGE_FROM_MEMORY_WAIT_FOR_IDLE		0x00000108
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_NOTIFY		0x00000180
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_IMAGE			0x00000184
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_PATTERN			0x00000188
+
+#define NV04_SCALED_IMAGE_FROM_MEMORY_PATTERN			0x00000188
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_ROP			0x0000018c
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_BETA1			0x00000190
+
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SURFACE_DST		0x00000194
+
+
+#define NV04_SCALED_IMAGE_FROM_MEMORY_BETA4			0x00000194
+
+#define NV04_SCALED_IMAGE_FROM_MEMORY_SURFACE			0x00000198
+
+#define NV05_SCALED_IMAGE_FROM_MEMORY_SURFACE			0x00000198
+
+#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION		0x000002fc
+#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_DITHER	0x00000000
+#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_TRUNCATE	0x00000001
+#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_SUBTR_TRUNCATE	0x00000002
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT		0x00000300
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A1R5G5B5	0x00000001
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X1R5G5B5	0x00000002
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A8R8G8B8	0x00000003
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X8R8G8B8	0x00000004
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_V8YB8U8YA8	0x00000005
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_YB8V8YA8U8	0x00000006
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_R5G6B5	0x00000007
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_Y8		0x00000008
+#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_AY8		0x00000009
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION			0x00000304
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_AND	0x00000000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_ROP_AND		0x00000001
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_AND	0x00000002
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY		0x00000003
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_PREMULT	0x00000004
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_PREMULT	0x00000005
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT		0x00000308
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X__MASK	0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X__SHIFT	0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y__MASK	0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y__SHIFT	16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE			0x0000030c
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W__MASK		0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W__SHIFT	0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H__MASK		0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H__SHIFT	16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT			0x00000310
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X__MASK		0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X__SHIFT	0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y__MASK		0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y__SHIFT	16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE			0x00000314
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W__MASK		0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W__SHIFT		0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H__MASK		0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H__SHIFT		16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_DU_DX			0x00000318
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_DV_DY			0x0000031c
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE			0x00000400
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W__MASK		0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W__SHIFT		0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H__MASK		0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H__SHIFT		16
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT			0x00000404
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH__MASK	0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH__SHIFT	0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN__MASK	0x00ff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN__SHIFT	16
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CENTER	0x00010000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CORNER	0x00020000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER__MASK	0xff000000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER__SHIFT	24
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_POINT_SAMPLE	0x00000000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_BILINEAR	0x01000000
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_OFFSET			0x00000408
+
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT			0x0000040c
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U__MASK		0x0000ffff
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U__SHIFT		0
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V__MASK		0xffff0000
+#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V__SHIFT		16
+
+
+#define NV50_SCALED_IMAGE_FROM_MEMORY_OFFSET_HIGH		0x00000410
+
+#define NV50_SCALED_IMAGE_FROM_MEMORY_SRC_LINEAR		0x00000414
+
+#define NV50_SCALED_IMAGE_FROM_MEMORY_SRC_TILE_MODE		0x00000418
+
+
+#define NV03_GDI_RECTANGLE_TEXT_DMA_NOTIFY			0x00000180
+
+#define NV03_GDI_RECTANGLE_TEXT_PATTERN				0x00000184
+
+#define NV03_GDI_RECTANGLE_TEXT_ROP				0x00000188
+
+#define NV03_GDI_RECTANGLE_TEXT_BETA1				0x0000019c
+
+#define NV03_GDI_RECTANGLE_TEXT_SURFACE_DST			0x00000190
+
+#define NV03_GDI_RECTANGLE_TEXT_OPERATION			0x000002fc
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR_FORMAT			0x00000300
+
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT		0x00000304
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_A			0x000003fc
+
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT	0x00000400
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__MASK	0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__SHIFT	0
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__MASK	0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__SHIFT	16
+
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE	0x00000404
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__MASK	0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__SHIFT	0
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__MASK	0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__SHIFT	16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B			0x000007f4
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B			0x000007f8
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_B			0x000007fc
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0	0x00000800
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__MASK	0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__SHIFT	0
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__MASK	0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__SHIFT	16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1	0x00000804
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__MASK	0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__SHIFT	0
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__MASK	0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__SHIFT	16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0			0x00000bec
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1			0x00000bf0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_C			0x00000bf4
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C				0x00000bf8
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W__MASK			0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W__SHIFT			0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H__MASK			0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H__SHIFT			16
+
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C				0x00000bfc
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X__MASK			0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y__MASK			0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(i0)	       (0x00000c00 + 0x4*(i0))
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__ESIZE	0x00000004
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__LEN	0x00000020
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0			0x00000fe8
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1			0x00000fec
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_D			0x00000ff0
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D			0x00000ff4
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D			0x00000ff8
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D				0x00000ffc
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X__MASK			0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y__MASK			0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D(i0)	       (0x00001000 + 0x4*(i0))
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__ESIZE	0x00000004
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__LEN	0x00000020
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0			0x000013e4
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1			0x000013e8
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR0_E			0x000013ec
+
+#define NV03_GDI_RECTANGLE_TEXT_COLOR1_E			0x000013f0
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E			0x000013f4
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E			0x000013f8
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__MASK		0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__MASK		0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E				0x000013fc
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X__MASK			0x0000ffff
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X__SHIFT		0
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y__MASK			0xffff0000
+#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y__SHIFT		16
+
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(i0)       (0x00001400 + 0x4*(i0))
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__ESIZE	0x00000004
+#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__LEN	0x00000020
+
+
+#define NV04_GDI_RECTANGLE_TEXT_PATCH				0x0000010c
+
+#define NV04_GDI_RECTANGLE_TEXT_DMA_NOTIFY			0x00000180
+
+#define NV04_GDI_RECTANGLE_TEXT_DMA_FONTS			0x00000184
+
+#define NV04_GDI_RECTANGLE_TEXT_PATTERN				0x00000188
+
+#define NV04_GDI_RECTANGLE_TEXT_ROP				0x0000018c
+
+#define NV04_GDI_RECTANGLE_TEXT_BETA1				0x00000190
+
+#define NV04_GDI_RECTANGLE_TEXT_BETA4				0x00000194
+
+#define NV04_GDI_RECTANGLE_TEXT_SURFACE				0x00000198
+
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION			0x000002fc
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_AND		0x00000000
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_ROP_AND		0x00000001
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_AND		0x00000002
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY		0x00000003
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_PREMULT	0x00000004
+#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_PREMULT		0x00000005
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT			0x00000300
+#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A16R5G6B5		0x00000001
+#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_X16A1R5G5B5	0x00000002
+#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A8R8G8B8		0x00000003
+
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT		0x00000304
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_CGA6		0x00000001
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_LE		0x00000002
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_A			0x000003fc
+
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT(i0)  (0x00000400 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__ESIZE	0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__LEN	0x00000020
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__MASK	0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__SHIFT	0
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__MASK	0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__SHIFT	16
+
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE(i0)   (0x00000404 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__ESIZE	0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__LEN	0x00000020
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__MASK	0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__SHIFT	0
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__MASK	0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__SHIFT	16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0			0x000005f4
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1			0x000005f8
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_B			0x000005fc
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0(i0)  (0x00000600 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__ESIZE	0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__LEN	0x00000020
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__MASK	0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__SHIFT	0
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__MASK	0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__SHIFT	16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1(i0)  (0x00000604 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__ESIZE	0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__LEN	0x00000020
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__MASK	0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__SHIFT	0
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__MASK	0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__SHIFT	16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0			0x000007ec
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1			0x000007f0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_C			0x000007f4
+
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C				0x000007f8
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W__MASK			0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W__SHIFT			0
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H__MASK			0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H__SHIFT			16
+
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C				0x000007fc
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X__MASK			0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y__MASK			0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(i0)	       (0x00000800 + 0x4*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__ESIZE	0x00000004
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__LEN	0x00000080
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0			0x00000be4
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1			0x00000be8
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR0_E			0x00000bec
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_E			0x00000bf0
+
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E			0x00000bf4
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E			0x00000bf8
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E				0x00000bfc
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X__MASK			0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y__MASK			0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(i0)       (0x00000c00 + 0x4*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__ESIZE	0x00000004
+#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__LEN	0x00000080
+
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F				0x00000ff0
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET__MASK		0x0fffffff
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH__MASK		0xf0000000
+#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH__SHIFT		28
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0			0x00000ff4
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1			0x00000ff8
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_F			0x00000ffc
+
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F(i0)	       (0x00001000 + 0x4*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__ESIZE	0x00000004
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__LEN		0x00000100
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX__MASK	0x000000ff
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX__SHIFT	0
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X__MASK	0x000fff00
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X__SHIFT	8
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y__MASK	0xfff00000
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y__SHIFT	20
+
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G				0x000017f0
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET__MASK		0x0fffffff
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH__MASK		0xf0000000
+#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH__SHIFT		28
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0			0x000017f4
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1			0x000017f8
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R__MASK		0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R__SHIFT		0
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B__MASK		0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B__SHIFT		16
+
+#define NV04_GDI_RECTANGLE_TEXT_COLOR1_G			0x000017fc
+
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT(i0)   (0x00001800 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__ESIZE	0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__LEN	0x00000100
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X__MASK	0x0000ffff
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X__SHIFT	0
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y__MASK	0xffff0000
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y__SHIFT	16
+
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX(i0)   (0x00001804 + 0x8*(i0))
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__ESIZE	0x00000008
+#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__LEN	0x00000100
+
+
+#define NV10_TEXTURE_FROM_CPU_WAIT_FOR_IDLE			0x00000108
+
+#define NV10_TEXTURE_FROM_CPU_DMA_NOTIFY			0x00000180
+
+#define NV10_TEXTURE_FROM_CPU_SURFACE				0x00000184
+
+#define NV10_TEXTURE_FROM_CPU_COLOR_FORMAT			0x00000300
+
+#define NV10_TEXTURE_FROM_CPU_POINT				0x00000304
+#define NV10_TEXTURE_FROM_CPU_POINT_X__MASK			0x0000ffff
+#define NV10_TEXTURE_FROM_CPU_POINT_X__SHIFT			0
+#define NV10_TEXTURE_FROM_CPU_POINT_Y__MASK			0xffff0000
+#define NV10_TEXTURE_FROM_CPU_POINT_Y__SHIFT			16
+
+#define NV10_TEXTURE_FROM_CPU_SIZE				0x00000308
+#define NV10_TEXTURE_FROM_CPU_SIZE_W__MASK			0x0000ffff
+#define NV10_TEXTURE_FROM_CPU_SIZE_W__SHIFT			0
+#define NV10_TEXTURE_FROM_CPU_SIZE_H__MASK			0xffff0000
+#define NV10_TEXTURE_FROM_CPU_SIZE_H__SHIFT			16
+
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL			0x0000030c
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X__MASK		0x0000ffff
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X__SHIFT		0
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W__MASK		0xffff0000
+#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W__SHIFT		16
+
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL			0x00000310
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y__MASK		0x0000ffff
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y__SHIFT		0
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H__MASK		0xffff0000
+#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H__SHIFT		16
+
+#define NV10_TEXTURE_FROM_CPU_COLOR(i0)			       (0x00000400 + 0x4*(i0))
+#define NV10_TEXTURE_FROM_CPU_COLOR__ESIZE			0x00000004
+#define NV10_TEXTURE_FROM_CPU_COLOR__LEN			0x00000700
+
+
+#endif /* NV01_2D_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h
new file mode 100644
index 0000000..f6205c2
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h
@@ -0,0 +1,738 @@
+#ifndef NV04_3D_XML
+#define NV04_3D_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv04_3d.xml    (  17839 bytes, from 2010-10-24 16:03:07)
+- copyright.xml  (   6498 bytes, from 2010-10-24 16:03:07)
+- nv_object.xml  (  11547 bytes, from 2010-10-27 16:17:46)
+- nvchipsets.xml (   2907 bytes, from 2010-10-24 16:03:07)
+- nv_defs.xml    (   4437 bytes, from 2010-10-24 16:03:07)
+- nv_3ddefs.xml  (  16394 bytes, from 2010-10-24 16:03:07)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro, curro_, currojerez)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+
+#define NV04_CONTEXT_SURFACES_3D_DMA_NOTIFY			0x00000180
+
+#define NV04_CONTEXT_SURFACES_3D_DMA_COLOR			0x00000184
+
+#define NV04_CONTEXT_SURFACES_3D_DMA_ZETA			0x00000188
+
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL		0x000002f8
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X__MASK	0x0000ffff
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X__SHIFT	0
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W__MASK	0xffff0000
+#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W__SHIFT	16
+
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL			0x000002fc
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y__MASK		0x0000ffff
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y__SHIFT		0
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H__MASK		0xffff0000
+#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H__SHIFT		16
+
+#define NV04_CONTEXT_SURFACES_3D_FORMAT				0x00000300
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR__MASK		0x000000ff
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR__SHIFT		0
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5	0x00000001
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_X1R5G5B5	0x00000002
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5		0x00000003
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8	0x00000004
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8	0x00000005
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8	0x00000006
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8	0x00000007
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8		0x00000008
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE__MASK		0x0000ff00
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE__SHIFT		8
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_PITCH		0x00000100
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SWIZZLE		0x00000200
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U__MASK	0x00ff0000
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U__SHIFT	16
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V__MASK	0xff000000
+#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V__SHIFT	24
+
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE			0x00000304
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W__MASK		0x0000ffff
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W__SHIFT		0
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H__MASK		0xffff0000
+#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H__SHIFT		16
+
+#define NV04_CONTEXT_SURFACES_3D_PITCH				0x00000308
+#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR__MASK		0x0000ffff
+#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR__SHIFT		0
+#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA__MASK		0xffff0000
+#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA__SHIFT		16
+
+#define NV04_CONTEXT_SURFACES_3D_OFFSET_COLOR			0x0000030c
+
+#define NV04_CONTEXT_SURFACES_3D_OFFSET_ZETA			0x00000310
+
+
+#define NV04_TEXTURED_TRIANGLE_DMA_NOTIFY			0x00000180
+
+#define NV04_TEXTURED_TRIANGLE_DMA_A				0x00000184
+
+#define NV04_TEXTURED_TRIANGLE_DMA_B				0x00000188
+
+#define NV04_TEXTURED_TRIANGLE_SURFACES				0x0000018c
+
+#define NV04_TEXTURED_TRIANGLE_COLORKEY				0x00000300
+
+#define NV04_TEXTURED_TRIANGLE_OFFSET				0x00000304
+
+#define NV04_TEXTURED_TRIANGLE_FORMAT				0x00000308
+#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_A			0x00000001
+#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_B			0x00000002
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_ENABLE		0x00000004
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH__MASK		0x00000030
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH__SHIFT		4
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER		0x00000010
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER		0x00000020
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH__MASK		0x000000c0
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH__SHIFT		6
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER		0x00000040
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER		0x00000080
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR__MASK		0x00000f00
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR__SHIFT		8
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_Y8			0x00000100
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A1R5G5B5		0x00000200
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X1R5G5B5		0x00000300
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A4R4G4B4		0x00000400
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_R5G6B5		0x00000500
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A8R8G8B8		0x00000600
+#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X8R8G8B8		0x00000700
+#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS__MASK	0x0000f000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS__SHIFT	12
+#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U__MASK		0x000f0000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U__SHIFT	16
+#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V__MASK		0x00f00000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V__SHIFT	20
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU__MASK		0x07000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU__SHIFT		24
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_REPEAT		0x01000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT	0x02000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE	0x03000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER	0x04000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPU			0x08000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV__MASK		0x70000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV__SHIFT		28
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_REPEAT		0x10000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT	0x20000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE	0x30000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER	0x40000000
+#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPV			0x80000000
+
+#define NV04_TEXTURED_TRIANGLE_FILTER				0x0000030c
+#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X__MASK	0x000000ff
+#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X__SHIFT	0
+#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y__MASK	0x00007f00
+#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y__SHIFT	8
+#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE	0x00008000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS__MASK	0x00ff0000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS__SHIFT	16
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY__MASK		0x07000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY__SHIFT		24
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST		0x01000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR		0x02000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST	0x03000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST	0x04000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR	0x05000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR	0x06000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE	0x08000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY__MASK		0x70000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY__SHIFT		28
+#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST		0x10000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR		0x20000000
+#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE	0x80000000
+
+#define NV04_TEXTURED_TRIANGLE_BLEND				0x00000310
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP__MASK		0x0000000f
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP__SHIFT		0
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECAL		0x00000001
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATE	0x00000002
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECALALPHA	0x00000003
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATEALPHA	0x00000004
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECALMASK	0x00000005
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATEMASK	0x00000006
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_COPY		0x00000007
+#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_ADD		0x00000008
+#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT__MASK		0x00000030
+#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT__SHIFT		4
+#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_LSB		0x00000010
+#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_MSB		0x00000020
+#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE__MASK		0x000000c0
+#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE__SHIFT		6
+#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_FLAT		0x00000040
+#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	0x00000100
+#define NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE		0x00001000
+#define NV04_TEXTURED_TRIANGLE_BLEND_FOG_ENABLE			0x00010000
+#define NV04_TEXTURED_TRIANGLE_BLEND_BLEND_ENABLE		0x00100000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC__MASK			0x0f000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC__SHIFT			24
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ZERO			0x01000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE			0x02000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_COLOR		0x03000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_COLOR	0x04000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_ALPHA		0x05000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_ALPHA	0x06000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_DST_ALPHA		0x07000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_ALPHA	0x08000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_DST_COLOR		0x09000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_COLOR	0x0a000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_ALPHA_SATURATE	0x0b000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST__MASK			0xf0000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST__SHIFT			28
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ZERO			0x10000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE			0x20000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_COLOR		0x30000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_COLOR	0x40000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_ALPHA		0x50000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_ALPHA	0x60000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_DST_ALPHA		0x70000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_DST_ALPHA	0x80000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_DST_COLOR		0x90000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_DST_COLOR	0xa0000000
+#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_ALPHA_SATURATE	0xb0000000
+
+#define NV04_TEXTURED_TRIANGLE_CONTROL				0x00000314
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF__MASK		0x000000ff
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF__SHIFT		0
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC__MASK		0x00000f00
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC__SHIFT	8
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_NEVER		0x00000100
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_LESS		0x00000200
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_EQUAL		0x00000300
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_LEQUAL	0x00000400
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_GREATER	0x00000500
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_NOTEQUAL	0x00000600
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_GEQUAL	0x00000700
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_ALWAYS	0x00000800
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_ENABLE		0x00001000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN__MASK		0x00002000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN__SHIFT		13
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CENTER		0x00000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CORNER		0x00002000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_ENABLE			0x00004000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC__MASK		0x000f0000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC__SHIFT		16
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_NEVER		0x00010000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_LESS		0x00020000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_EQUAL		0x00030000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_LEQUAL		0x00040000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_GREATER		0x00050000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_NOTEQUAL		0x00060000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_GEQUAL		0x00070000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_ALWAYS		0x00080000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE__MASK		0x00300000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE__SHIFT		20
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_BOTH		0x00000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_NONE		0x00100000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CW		0x00200000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CCW		0x00300000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_DITHER_ENABLE		0x00400000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_PERSPECTIVE_ENABLE	0x00800000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_WRITE			0x01000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT__MASK		0xc0000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT__SHIFT		30
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_FIXED		0x40000000
+#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_FLOAT		0x80000000
+
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR				0x00000318
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B__MASK			0x000000ff
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B__SHIFT		0
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G__MASK			0x0000ff00
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G__SHIFT		8
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R__MASK			0x00ff0000
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R__SHIFT		16
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A__MASK			0xff000000
+#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A__SHIFT		24
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX(i0)		       (0x00000400 + 0x20*(i0))
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX__ESIZE			0x00000020
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX__LEN			0x00000010
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX(i0)		       (0x00000400 + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY(i0)		       (0x00000404 + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ(i0)		       (0x00000408 + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW(i0)		       (0x0000040c + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR(i0)	       (0x00000410 + 0x20*(i0))
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B__MASK		0x000000ff
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B__SHIFT		0
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G__MASK		0x0000ff00
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G__SHIFT		8
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R__MASK		0x00ff0000
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R__SHIFT		16
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A__MASK		0xff000000
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A__SHIFT		24
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(i0)	       (0x00000414 + 0x20*(i0))
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B__MASK	0x000000ff
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B__SHIFT	0
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G__MASK	0x0000ff00
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G__SHIFT	8
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R__MASK	0x00ff0000
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R__SHIFT	16
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG__MASK	0xff000000
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG__SHIFT	24
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU(i0)		       (0x00000418 + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV(i0)		       (0x0000041c + 0x20*(i0))
+
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE(i0)	       (0x00000600 + 0x4*(i0))
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__ESIZE		0x00000004
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__LEN		0x00000040
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0__MASK		0x0000000f
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0__SHIFT		0
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1__MASK		0x000000f0
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1__SHIFT		4
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2__MASK		0x00000f00
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2__SHIFT		8
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3__MASK		0x0000f000
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3__SHIFT		12
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4__MASK		0x000f0000
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4__SHIFT		16
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5__MASK		0x00f00000
+#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5__SHIFT		20
+
+
+#define NV04_MULTITEX_TRIANGLE_DMA_NOTIFY			0x00000180
+
+#define NV04_MULTITEX_TRIANGLE_DMA_A				0x00000184
+
+#define NV04_MULTITEX_TRIANGLE_DMA_B				0x00000188
+
+#define NV04_MULTITEX_TRIANGLE_SURFACES				0x0000018c
+
+#define NV04_MULTITEX_TRIANGLE_OFFSET(i0)		       (0x00000308 + 0x4*(i0))
+#define NV04_MULTITEX_TRIANGLE_OFFSET__ESIZE			0x00000004
+#define NV04_MULTITEX_TRIANGLE_OFFSET__LEN			0x00000002
+
+#define NV04_MULTITEX_TRIANGLE_FORMAT(i0)		       (0x00000310 + 0x4*(i0))
+#define NV04_MULTITEX_TRIANGLE_FORMAT__ESIZE			0x00000004
+#define NV04_MULTITEX_TRIANGLE_FORMAT__LEN			0x00000002
+#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_A			0x00000001
+#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_B			0x00000002
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH__MASK		0x00000030
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH__SHIFT		4
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER		0x00000010
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER		0x00000020
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH__MASK		0x000000c0
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH__SHIFT		6
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER		0x00000040
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER		0x00000080
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR__MASK		0x00000f00
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR__SHIFT		8
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_Y8			0x00000100
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A1R5G5B5		0x00000200
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_X1R5G5B5		0x00000300
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A4R4G4B4		0x00000400
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_R5G6B5		0x00000500
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A8R8G8B8		0x00000600
+#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_X8R8G8B8		0x00000700
+#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS__MASK	0x0000f000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS__SHIFT	12
+#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U__MASK		0x000f0000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U__SHIFT	16
+#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V__MASK		0x00f00000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V__SHIFT	20
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU__MASK		0x07000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU__SHIFT		24
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_REPEAT		0x01000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT	0x02000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE	0x03000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER	0x04000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPU			0x08000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV__MASK		0x70000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV__SHIFT		28
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_REPEAT		0x10000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT	0x20000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE	0x30000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER	0x40000000
+#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPV			0x80000000
+
+#define NV04_MULTITEX_TRIANGLE_FILTER(i0)		       (0x00000318 + 0x4*(i0))
+#define NV04_MULTITEX_TRIANGLE_FILTER__ESIZE			0x00000004
+#define NV04_MULTITEX_TRIANGLE_FILTER__LEN			0x00000002
+#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X__MASK	0x000000ff
+#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X__SHIFT	0
+#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y__MASK	0x00007f00
+#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y__SHIFT	8
+#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE	0x00008000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS__MASK	0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS__SHIFT	16
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY__MASK		0x07000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY__SHIFT		24
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST		0x01000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR		0x02000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST	0x03000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST	0x04000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR	0x05000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR	0x06000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE	0x08000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY__MASK		0x70000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY__SHIFT		28
+#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_NEAREST		0x10000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_LINEAR		0x20000000
+#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE	0x80000000
+
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA(i0)	       (0x00000320 + 0xc*(i0))
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__ESIZE		0x0000000c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__LEN		0x00000002
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE0		0x00000001
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0__MASK	0x000000fc
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0__SHIFT	2
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_ZERO	0x00000004
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_CONSTANT	0x00000008
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PRIMARY_COLOR	0x0000000c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PREVIOUS	0x00000010
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE0	0x00000014
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE1	0x00000018
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURELOD	0x0000001c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE1		0x00000100
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1__MASK	0x0000fc00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1__SHIFT	10
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_ZERO	0x00000400
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_CONSTANT	0x00000800
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PRIMARY_COLOR	0x00000c00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PREVIOUS	0x00001000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE0	0x00001400
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE1	0x00001800
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURELOD	0x00001c00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE2		0x00010000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2__MASK	0x00fc0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2__SHIFT	18
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_ZERO	0x00040000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_CONSTANT	0x00080000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PRIMARY_COLOR	0x000c0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PREVIOUS	0x00100000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE0	0x00140000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE1	0x00180000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURELOD	0x001c0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE3		0x01000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3__MASK	0x1c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3__SHIFT	26
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_ZERO	0x04000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_CONSTANT	0x08000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PRIMARY_COLOR	0x0c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PREVIOUS	0x10000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE0	0x14000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE1	0x18000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURELOD	0x1c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP__MASK		0xe0000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP__SHIFT		29
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_IDENTITY	0x20000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE2		0x40000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE4		0x60000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS		0x80000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS_SCALE2	0xe0000000
+
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR(i0)	       (0x00000324 + 0xc*(i0))
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__ESIZE		0x0000000c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__LEN		0x00000002
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE0		0x00000001
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA0		0x00000002
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__MASK	0x000000fc
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__SHIFT	2
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_ZERO	0x00000004
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_CONSTANT	0x00000008
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PRIMARY_COLOR	0x0000000c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PREVIOUS	0x00000010
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE0	0x00000014
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE1	0x00000018
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURELOD	0x0000001c
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE1		0x00000100
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA1		0x00000200
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1__MASK	0x0000fc00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1__SHIFT	10
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_ZERO	0x00000400
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_CONSTANT	0x00000800
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PRIMARY_COLOR	0x00000c00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PREVIOUS	0x00001000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE0	0x00001400
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE1	0x00001800
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURELOD	0x00001c00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE2		0x00010000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA2		0x00020000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2__MASK	0x00fc0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2__SHIFT	18
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_ZERO	0x00040000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_CONSTANT	0x00080000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PRIMARY_COLOR	0x000c0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PREVIOUS	0x00100000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE0	0x00140000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE1	0x00180000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURELOD	0x001c0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE3		0x01000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA3		0x02000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3__MASK	0x1c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3__SHIFT	26
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_ZERO	0x04000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_CONSTANT	0x08000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PRIMARY_COLOR	0x0c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PREVIOUS	0x10000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE0	0x14000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE1	0x18000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURELOD	0x1c000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP__MASK		0xe0000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP__SHIFT		29
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_IDENTITY	0x20000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE2		0x40000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE4		0x60000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS		0x80000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS_SCALE2	0xe0000000
+
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR			0x00000334
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B__MASK		0x000000ff
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B__SHIFT		0
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G__MASK		0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G__SHIFT		8
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R__MASK		0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R__SHIFT		16
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A__MASK		0xff000000
+#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A__SHIFT		24
+
+#define NV04_MULTITEX_TRIANGLE_BLEND				0x00000338
+#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT__MASK		0x00000030
+#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT__SHIFT		4
+#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_LSB		0x00000010
+#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_MSB		0x00000020
+#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE__MASK		0x000000c0
+#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE__SHIFT		6
+#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_FLAT		0x00000040
+#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	0x00000100
+#define NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE		0x00001000
+#define NV04_MULTITEX_TRIANGLE_BLEND_FOG_ENABLE			0x00010000
+#define NV04_MULTITEX_TRIANGLE_BLEND_BLEND_ENABLE		0x00100000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC__MASK			0x0f000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC__SHIFT			24
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ZERO			0x01000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE			0x02000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_COLOR		0x03000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_COLOR	0x04000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_ALPHA		0x05000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_ALPHA	0x06000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_DST_ALPHA		0x07000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_ALPHA	0x08000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_DST_COLOR		0x09000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_COLOR	0x0a000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_ALPHA_SATURATE	0x0b000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST__MASK			0xf0000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST__SHIFT			28
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ZERO			0x10000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE			0x20000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_COLOR		0x30000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_COLOR	0x40000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_ALPHA		0x50000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_ALPHA	0x60000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_DST_ALPHA		0x70000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_DST_ALPHA	0x80000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_DST_COLOR		0x90000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_DST_COLOR	0xa0000000
+#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_ALPHA_SATURATE	0xb0000000
+
+#define NV04_MULTITEX_TRIANGLE_CONTROL0				0x0000033c
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF__MASK		0x000000ff
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF__SHIFT	0
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC__MASK	0x00000f00
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC__SHIFT	8
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_NEVER	0x00000100
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_LESS		0x00000200
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_EQUAL	0x00000300
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_LEQUAL	0x00000400
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_GREATER	0x00000500
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_NOTEQUAL	0x00000600
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_GEQUAL	0x00000700
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_ALWAYS	0x00000800
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_ENABLE		0x00001000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN__MASK		0x00002000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN__SHIFT		13
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CENTER		0x00000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CORNER		0x00002000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_ENABLE		0x00004000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC__MASK		0x000f0000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC__SHIFT		16
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_NEVER		0x00010000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_LESS		0x00020000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_EQUAL		0x00030000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_LEQUAL		0x00040000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_GREATER		0x00050000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_NOTEQUAL		0x00060000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_GEQUAL		0x00070000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_ALWAYS		0x00080000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE__MASK		0x00300000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE__SHIFT	20
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_BOTH		0x00000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_NONE		0x00100000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CW		0x00200000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CCW		0x00300000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_DITHER_ENABLE		0x00400000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_PERSPECTIVE_ENABLE	0x00800000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_WRITE			0x01000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_STENCIL_WRITE		0x02000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_WRITE		0x04000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_RED_WRITE		0x08000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_GREEN_WRITE		0x10000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_BLUE_WRITE		0x20000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT__MASK		0xc0000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT__SHIFT		30
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_FIXED		0x40000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_FLOAT		0x80000000
+
+#define NV04_MULTITEX_TRIANGLE_CONTROL1				0x00000340
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_ENABLE		0x00000001
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC__MASK	0x000000f0
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC__SHIFT	4
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF__MASK	0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF__SHIFT	8
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ__MASK	0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ__SHIFT	16
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE__MASK	0xff000000
+#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE__SHIFT	24
+
+#define NV04_MULTITEX_TRIANGLE_CONTROL2				0x00000344
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL__MASK	0x0000000f
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL__SHIFT	0
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL__MASK	0x000000f0
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL__SHIFT	4
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS__MASK	0x00000f00
+#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS__SHIFT	8
+
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR				0x00000348
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B__MASK			0x000000ff
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B__SHIFT		0
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G__MASK			0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G__SHIFT		8
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R__MASK			0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R__SHIFT		16
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A__MASK			0xff000000
+#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A__SHIFT		24
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX(i0)		       (0x00000400 + 0x28*(i0))
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX__ESIZE		0x00000028
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX__LEN			0x00000008
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX(i0)	       (0x00000400 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY(i0)	       (0x00000404 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ(i0)	       (0x00000408 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW(i0)	       (0x0000040c + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR(i0)	       (0x00000410 + 0x28*(i0))
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B__MASK		0x000000ff
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B__SHIFT	0
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G__MASK		0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G__SHIFT	8
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R__MASK		0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R__SHIFT	16
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A__MASK		0xff000000
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A__SHIFT	24
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR(i0)	       (0x00000414 + 0x28*(i0))
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B__MASK	0x000000ff
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B__SHIFT	0
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G__MASK	0x0000ff00
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G__SHIFT	8
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R__MASK	0x00ff0000
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R__SHIFT	16
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG__MASK	0xff000000
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG__SHIFT	24
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0(i0)	       (0x00000418 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0(i0)	       (0x0000041c + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1(i0)	       (0x00000420 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1(i0)	       (0x00000424 + 0x28*(i0))
+
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE(i0)	       (0x00000540 + 0x4*(i0))
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__ESIZE		0x00000004
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__LEN		0x00000030
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0__MASK		0x0000000f
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0__SHIFT		0
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1__MASK		0x000000f0
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1__SHIFT		4
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2__MASK		0x00000f00
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2__SHIFT		8
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3__MASK		0x0000f000
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3__SHIFT		12
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4__MASK		0x000f0000
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4__SHIFT		16
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5__MASK		0x00f00000
+#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5__SHIFT		20
+
+
+#endif /* NV04_3D_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h
new file mode 100644
index 0000000..0c963c8
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h
@@ -0,0 +1,1616 @@
+#ifndef NV10_3D_XML
+#define NV10_3D_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv10_3d.xml    (  18508 bytes, from 2010-10-30 13:50:34)
+- copyright.xml  (   6498 bytes, from 2010-10-24 16:03:07)
+- nv_defs.xml    (   4437 bytes, from 2010-10-24 16:03:07)
+- nv_3ddefs.xml  (  16394 bytes, from 2010-10-24 16:03:07)
+- nv_object.xml  (  11547 bytes, from 2010-10-27 16:17:46)
+- nvchipsets.xml (   2991 bytes, from 2010-10-30 09:54:12)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro, curro_, currojerez)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+#define NV10_VERTEX_ATTR_POS					0x00000000
+#define NV10_VERTEX_ATTR_COLOR0					0x00000001
+#define NV10_VERTEX_ATTR_COLOR1					0x00000002
+#define NV10_VERTEX_ATTR_TEX0					0x00000003
+#define NV10_VERTEX_ATTR_TEX1					0x00000004
+#define NV10_VERTEX_ATTR_NORMAL					0x00000005
+#define NV10_VERTEX_ATTR_WEIGHT					0x00000006
+#define NV10_VERTEX_ATTR_FOG					0x00000007
+
+
+
+#define NV11_3D_FLIP_SET_READ					0x00000120
+
+#define NV11_3D_FLIP_SET_WRITE					0x00000124
+
+#define NV11_3D_FLIP_MAX					0x00000128
+
+#define NV11_3D_FLIP_INCR_WRITE					0x0000012c
+
+#define NV11_3D_FLIP_WAIT					0x00000130
+
+#define NV10_3D_DMA_NOTIFY					0x00000180
+
+#define NV10_3D_DMA_TEXTURE0					0x00000184
+
+#define NV10_3D_DMA_TEXTURE1					0x00000188
+
+#define NV10_3D_DMA_COLOR					0x00000194
+
+#define NV10_3D_DMA_ZETA					0x00000198
+
+#define NV10_3D_RT_HORIZ					0x00000200
+#define NV10_3D_RT_HORIZ_X__MASK				0x0000ffff
+#define NV10_3D_RT_HORIZ_X__SHIFT				0
+#define NV10_3D_RT_HORIZ_W__MASK				0xffff0000
+#define NV10_3D_RT_HORIZ_W__SHIFT				16
+
+#define NV10_3D_RT_VERT						0x00000204
+#define NV10_3D_RT_VERT_Y__MASK					0x0000ffff
+#define NV10_3D_RT_VERT_Y__SHIFT				0
+#define NV10_3D_RT_VERT_H__MASK					0xffff0000
+#define NV10_3D_RT_VERT_H__SHIFT				16
+
+#define NV10_3D_RT_FORMAT					0x00000208
+#define NV10_3D_RT_FORMAT_TYPE__MASK				0x00000f00
+#define NV10_3D_RT_FORMAT_TYPE__SHIFT				8
+#define NV10_3D_RT_FORMAT_TYPE_LINEAR				0x00000100
+#define NV10_3D_RT_FORMAT_TYPE_SWIZZLED				0x00000200
+#define NV10_3D_RT_FORMAT_DEPTH__MASK				0x00000030
+#define NV10_3D_RT_FORMAT_DEPTH__SHIFT				4
+#define NV10_3D_RT_FORMAT_DEPTH_Z24S8				0x00000000
+#define NV10_3D_RT_FORMAT_DEPTH_Z16				0x00000010
+#define NV10_3D_RT_FORMAT_COLOR__MASK				0x0000000f
+#define NV10_3D_RT_FORMAT_COLOR__SHIFT				0
+#define NV10_3D_RT_FORMAT_COLOR_R5G6B5				0x00000003
+#define NV10_3D_RT_FORMAT_COLOR_X8R8G8B8			0x00000005
+#define NV10_3D_RT_FORMAT_COLOR_A8R8G8B8			0x00000008
+#define NV10_3D_RT_FORMAT_COLOR_B8				0x00000009
+
+#define NV10_3D_RT_PITCH					0x0000020c
+#define NV10_3D_RT_PITCH_COLOR_PITCH__MASK			0x0000ffff
+#define NV10_3D_RT_PITCH_COLOR_PITCH__SHIFT			0
+#define NV10_3D_RT_PITCH_ZETA_PITCH__MASK			0xffff0000
+#define NV10_3D_RT_PITCH_ZETA_PITCH__SHIFT			16
+
+#define NV10_3D_COLOR_OFFSET					0x00000210
+
+#define NV10_3D_ZETA_OFFSET					0x00000214
+
+#define NV10_3D_UNK0290						0x00000290
+
+#define NV10_3D_VIEWPORT_CLIP_MODE				0x000002b4
+
+#define NV10_3D_VIEWPORT_CLIP_HORIZ(i0)			       (0x000002c0 + 0x4*(i0))
+#define NV10_3D_VIEWPORT_CLIP_HORIZ__ESIZE			0x00000004
+#define NV10_3D_VIEWPORT_CLIP_HORIZ__LEN			0x00000008
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__MASK		0x000007ff
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__SHIFT		0
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_LEFT_ENABLE		0x00000800
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__MASK		0x07ff0000
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__SHIFT		16
+#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_RIGHT_ENABLE		0x08000000
+
+#define NV10_3D_VIEWPORT_CLIP_VERT(i0)			       (0x000002e0 + 0x4*(i0))
+#define NV10_3D_VIEWPORT_CLIP_VERT__ESIZE			0x00000004
+#define NV10_3D_VIEWPORT_CLIP_VERT__LEN				0x00000008
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_T__MASK			0x000007ff
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_T__SHIFT		0
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_TOP_ENABLE		0x00000800
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_B__MASK			0x07ff0000
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_B__SHIFT		16
+#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_BOTTOM_ENABLE		0x08000000
+
+#define NV10_3D_ALPHA_FUNC_ENABLE				0x00000300
+
+#define NV10_3D_BLEND_FUNC_ENABLE				0x00000304
+
+#define NV10_3D_CULL_FACE_ENABLE				0x00000308
+
+#define NV10_3D_DEPTH_TEST_ENABLE				0x0000030c
+
+#define NV10_3D_DITHER_ENABLE					0x00000310
+
+#define NV10_3D_LIGHTING_ENABLE					0x00000314
+
+#define NV10_3D_POINT_PARAMETERS_ENABLE				0x00000318
+
+#define NV10_3D_POINT_SMOOTH_ENABLE				0x0000031c
+
+#define NV10_3D_LINE_SMOOTH_ENABLE				0x00000320
+
+#define NV10_3D_POLYGON_SMOOTH_ENABLE				0x00000324
+
+#define NV10_3D_STENCIL_ENABLE					0x0000032c
+
+#define NV10_3D_POLYGON_OFFSET_POINT_ENABLE			0x00000330
+
+#define NV10_3D_POLYGON_OFFSET_LINE_ENABLE			0x00000334
+
+#define NV10_3D_POLYGON_OFFSET_FILL_ENABLE			0x00000338
+
+#define NV10_3D_ALPHA_FUNC_FUNC					0x0000033c
+#define NV10_3D_ALPHA_FUNC_FUNC_NEVER				0x00000200
+#define NV10_3D_ALPHA_FUNC_FUNC_LESS				0x00000201
+#define NV10_3D_ALPHA_FUNC_FUNC_EQUAL				0x00000202
+#define NV10_3D_ALPHA_FUNC_FUNC_LEQUAL				0x00000203
+#define NV10_3D_ALPHA_FUNC_FUNC_GREATER				0x00000204
+#define NV10_3D_ALPHA_FUNC_FUNC_NOTEQUAL			0x00000205
+#define NV10_3D_ALPHA_FUNC_FUNC_GEQUAL				0x00000206
+#define NV10_3D_ALPHA_FUNC_FUNC_ALWAYS				0x00000207
+
+#define NV10_3D_ALPHA_FUNC_REF					0x00000340
+
+#define NV10_3D_BLEND_FUNC_SRC					0x00000344
+#define NV10_3D_BLEND_FUNC_SRC_ZERO				0x00000000
+#define NV10_3D_BLEND_FUNC_SRC_ONE				0x00000001
+#define NV10_3D_BLEND_FUNC_SRC_SRC_COLOR			0x00000300
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR		0x00000301
+#define NV10_3D_BLEND_FUNC_SRC_SRC_ALPHA			0x00000302
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA		0x00000303
+#define NV10_3D_BLEND_FUNC_SRC_DST_ALPHA			0x00000304
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA		0x00000305
+#define NV10_3D_BLEND_FUNC_SRC_DST_COLOR			0x00000306
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR		0x00000307
+#define NV10_3D_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE		0x00000308
+#define NV10_3D_BLEND_FUNC_SRC_CONSTANT_COLOR			0x00008001
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR		0x00008002
+#define NV10_3D_BLEND_FUNC_SRC_CONSTANT_ALPHA			0x00008003
+#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA		0x00008004
+
+#define NV10_3D_BLEND_FUNC_DST					0x00000348
+#define NV10_3D_BLEND_FUNC_DST_ZERO				0x00000000
+#define NV10_3D_BLEND_FUNC_DST_ONE				0x00000001
+#define NV10_3D_BLEND_FUNC_DST_SRC_COLOR			0x00000300
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR		0x00000301
+#define NV10_3D_BLEND_FUNC_DST_SRC_ALPHA			0x00000302
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA		0x00000303
+#define NV10_3D_BLEND_FUNC_DST_DST_ALPHA			0x00000304
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA		0x00000305
+#define NV10_3D_BLEND_FUNC_DST_DST_COLOR			0x00000306
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR		0x00000307
+#define NV10_3D_BLEND_FUNC_DST_SRC_ALPHA_SATURATE		0x00000308
+#define NV10_3D_BLEND_FUNC_DST_CONSTANT_COLOR			0x00008001
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR		0x00008002
+#define NV10_3D_BLEND_FUNC_DST_CONSTANT_ALPHA			0x00008003
+#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA		0x00008004
+
+#define NV10_3D_BLEND_COLOR					0x0000034c
+#define NV10_3D_BLEND_COLOR_B__MASK				0x000000ff
+#define NV10_3D_BLEND_COLOR_B__SHIFT				0
+#define NV10_3D_BLEND_COLOR_G__MASK				0x0000ff00
+#define NV10_3D_BLEND_COLOR_G__SHIFT				8
+#define NV10_3D_BLEND_COLOR_R__MASK				0x00ff0000
+#define NV10_3D_BLEND_COLOR_R__SHIFT				16
+#define NV10_3D_BLEND_COLOR_A__MASK				0xff000000
+#define NV10_3D_BLEND_COLOR_A__SHIFT				24
+
+#define NV10_3D_BLEND_EQUATION					0x00000350
+#define NV10_3D_BLEND_EQUATION_FUNC_ADD				0x00008006
+#define NV10_3D_BLEND_EQUATION_MIN				0x00008007
+#define NV10_3D_BLEND_EQUATION_MAX				0x00008008
+#define NV10_3D_BLEND_EQUATION_FUNC_SUBTRACT			0x0000800a
+#define NV10_3D_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT		0x0000800b
+
+#define NV10_3D_DEPTH_FUNC					0x00000354
+#define NV10_3D_DEPTH_FUNC_NEVER				0x00000200
+#define NV10_3D_DEPTH_FUNC_LESS					0x00000201
+#define NV10_3D_DEPTH_FUNC_EQUAL				0x00000202
+#define NV10_3D_DEPTH_FUNC_LEQUAL				0x00000203
+#define NV10_3D_DEPTH_FUNC_GREATER				0x00000204
+#define NV10_3D_DEPTH_FUNC_NOTEQUAL				0x00000205
+#define NV10_3D_DEPTH_FUNC_GEQUAL				0x00000206
+#define NV10_3D_DEPTH_FUNC_ALWAYS				0x00000207
+
+#define NV10_3D_COLOR_MASK					0x00000358
+#define NV10_3D_COLOR_MASK_B					0x00000001
+#define NV10_3D_COLOR_MASK_G					0x00000100
+#define NV10_3D_COLOR_MASK_R					0x00010000
+#define NV10_3D_COLOR_MASK_A					0x01000000
+
+#define NV10_3D_DEPTH_WRITE_ENABLE				0x0000035c
+
+#define NV10_3D_STENCIL_MASK					0x00000360
+
+#define NV10_3D_STENCIL_FUNC_FUNC				0x00000364
+#define NV10_3D_STENCIL_FUNC_FUNC_NEVER				0x00000200
+#define NV10_3D_STENCIL_FUNC_FUNC_LESS				0x00000201
+#define NV10_3D_STENCIL_FUNC_FUNC_EQUAL				0x00000202
+#define NV10_3D_STENCIL_FUNC_FUNC_LEQUAL			0x00000203
+#define NV10_3D_STENCIL_FUNC_FUNC_GREATER			0x00000204
+#define NV10_3D_STENCIL_FUNC_FUNC_NOTEQUAL			0x00000205
+#define NV10_3D_STENCIL_FUNC_FUNC_GEQUAL			0x00000206
+#define NV10_3D_STENCIL_FUNC_FUNC_ALWAYS			0x00000207
+
+#define NV10_3D_STENCIL_FUNC_REF				0x00000368
+
+#define NV10_3D_STENCIL_FUNC_MASK				0x0000036c
+
+#define NV10_3D_STENCIL_OP_FAIL					0x00000370
+#define NV10_3D_STENCIL_OP_FAIL_ZERO				0x00000000
+#define NV10_3D_STENCIL_OP_FAIL_INVERT				0x0000150a
+#define NV10_3D_STENCIL_OP_FAIL_KEEP				0x00001e00
+#define NV10_3D_STENCIL_OP_FAIL_REPLACE				0x00001e01
+#define NV10_3D_STENCIL_OP_FAIL_INCR				0x00001e02
+#define NV10_3D_STENCIL_OP_FAIL_DECR				0x00001e03
+#define NV10_3D_STENCIL_OP_FAIL_INCR_WRAP			0x00008507
+#define NV10_3D_STENCIL_OP_FAIL_DECR_WRAP			0x00008508
+
+#define NV10_3D_STENCIL_OP_ZFAIL				0x00000374
+#define NV10_3D_STENCIL_OP_ZFAIL_ZERO				0x00000000
+#define NV10_3D_STENCIL_OP_ZFAIL_INVERT				0x0000150a
+#define NV10_3D_STENCIL_OP_ZFAIL_KEEP				0x00001e00
+#define NV10_3D_STENCIL_OP_ZFAIL_REPLACE			0x00001e01
+#define NV10_3D_STENCIL_OP_ZFAIL_INCR				0x00001e02
+#define NV10_3D_STENCIL_OP_ZFAIL_DECR				0x00001e03
+#define NV10_3D_STENCIL_OP_ZFAIL_INCR_WRAP			0x00008507
+#define NV10_3D_STENCIL_OP_ZFAIL_DECR_WRAP			0x00008508
+
+#define NV10_3D_STENCIL_OP_ZPASS				0x00000378
+#define NV10_3D_STENCIL_OP_ZPASS_ZERO				0x00000000
+#define NV10_3D_STENCIL_OP_ZPASS_INVERT				0x0000150a
+#define NV10_3D_STENCIL_OP_ZPASS_KEEP				0x00001e00
+#define NV10_3D_STENCIL_OP_ZPASS_REPLACE			0x00001e01
+#define NV10_3D_STENCIL_OP_ZPASS_INCR				0x00001e02
+#define NV10_3D_STENCIL_OP_ZPASS_DECR				0x00001e03
+#define NV10_3D_STENCIL_OP_ZPASS_INCR_WRAP			0x00008507
+#define NV10_3D_STENCIL_OP_ZPASS_DECR_WRAP			0x00008508
+
+#define NV10_3D_SHADE_MODEL					0x0000037c
+#define NV10_3D_SHADE_MODEL_FLAT				0x00001d00
+#define NV10_3D_SHADE_MODEL_SMOOTH				0x00001d01
+
+#define NV10_3D_LINE_WIDTH					0x00000380
+
+#define NV10_3D_POLYGON_OFFSET_FACTOR				0x00000384
+
+#define NV10_3D_POLYGON_OFFSET_UNITS				0x00000388
+
+#define NV10_3D_POLYGON_MODE_FRONT				0x0000038c
+#define NV10_3D_POLYGON_MODE_FRONT_POINT			0x00001b00
+#define NV10_3D_POLYGON_MODE_FRONT_LINE				0x00001b01
+#define NV10_3D_POLYGON_MODE_FRONT_FILL				0x00001b02
+
+#define NV10_3D_POLYGON_MODE_BACK				0x00000390
+#define NV10_3D_POLYGON_MODE_BACK_POINT				0x00001b00
+#define NV10_3D_POLYGON_MODE_BACK_LINE				0x00001b01
+#define NV10_3D_POLYGON_MODE_BACK_FILL				0x00001b02
+
+#define NV10_3D_DEPTH_RANGE_NEAR				0x00000394
+
+#define NV10_3D_DEPTH_RANGE_FAR					0x00000398
+
+#define NV10_3D_CULL_FACE					0x0000039c
+#define NV10_3D_CULL_FACE_FRONT					0x00000404
+#define NV10_3D_CULL_FACE_BACK					0x00000405
+#define NV10_3D_CULL_FACE_FRONT_AND_BACK			0x00000408
+
+#define NV10_3D_FRONT_FACE					0x000003a0
+#define NV10_3D_FRONT_FACE_CW					0x00000900
+#define NV10_3D_FRONT_FACE_CCW					0x00000901
+
+
+#define NV10_3D_VERTEX_POS_3F					0x00000c00
+
+
+#define NV10_3D_VERTEX_POS_3F_X					0x00000c00
+
+#define NV10_3D_VERTEX_POS_3F_Y					0x00000c04
+
+#define NV10_3D_VERTEX_POS_3F_Z					0x00000c08
+
+#define NV10_3D_VERTEX_POS_4F					0x00000c18
+
+
+#define NV10_3D_VERTEX_POS_4F_X					0x00000c18
+
+#define NV10_3D_VERTEX_POS_4F_Y					0x00000c1c
+
+#define NV10_3D_VERTEX_POS_4F_Z					0x00000c20
+
+#define NV10_3D_VERTEX_POS_4F_W					0x00000c24
+
+#define NV10_3D_VERTEX_NOR_3F					0x00000c30
+
+
+#define NV10_3D_VERTEX_NOR_3F_X					0x00000c30
+
+#define NV10_3D_VERTEX_NOR_3F_Y					0x00000c34
+
+#define NV10_3D_VERTEX_NOR_3F_Z					0x00000c38
+
+#define NV10_3D_VERTEX_NOR_3I					0x00000c30
+
+
+#define NV10_3D_VERTEX_NOR_3I_XY				0x00000c30
+#define NV10_3D_VERTEX_NOR_3I_XY_X__MASK			0x0000ffff
+#define NV10_3D_VERTEX_NOR_3I_XY_X__SHIFT			0
+#define NV10_3D_VERTEX_NOR_3I_XY_Y__MASK			0xffff0000
+#define NV10_3D_VERTEX_NOR_3I_XY_Y__SHIFT			16
+
+#define NV10_3D_VERTEX_NOR_3I_Z					0x00000c34
+#define NV10_3D_VERTEX_NOR_3I_Z_Z__MASK				0x0000ffff
+#define NV10_3D_VERTEX_NOR_3I_Z_Z__SHIFT			0
+
+#define NV10_3D_VERTEX_COL_4F					0x00000c50
+
+
+#define NV10_3D_VERTEX_COL_4F_R					0x00000c50
+
+#define NV10_3D_VERTEX_COL_4F_G					0x00000c54
+
+#define NV10_3D_VERTEX_COL_4F_B					0x00000c58
+
+#define NV10_3D_VERTEX_COL_4F_A					0x00000c5c
+
+#define NV10_3D_VERTEX_COL_3F					0x00000c60
+
+
+#define NV10_3D_VERTEX_COL_3F_R					0x00000c60
+
+#define NV10_3D_VERTEX_COL_3F_G					0x00000c64
+
+#define NV10_3D_VERTEX_COL_3F_B					0x00000c68
+
+#define NV10_3D_VERTEX_COL_4I					0x00000c6c
+#define NV10_3D_VERTEX_COL_4I_R__MASK				0x000000ff
+#define NV10_3D_VERTEX_COL_4I_R__SHIFT				0
+#define NV10_3D_VERTEX_COL_4I_G__MASK				0x0000ff00
+#define NV10_3D_VERTEX_COL_4I_G__SHIFT				8
+#define NV10_3D_VERTEX_COL_4I_B__MASK				0x00ff0000
+#define NV10_3D_VERTEX_COL_4I_B__SHIFT				16
+#define NV10_3D_VERTEX_COL_4I_A__MASK				0xff000000
+#define NV10_3D_VERTEX_COL_4I_A__SHIFT				24
+
+#define NV10_3D_VERTEX_COL2_3F					0x00000c80
+
+
+#define NV10_3D_VERTEX_COL2_3F_R				0x00000c80
+
+#define NV10_3D_VERTEX_COL2_3F_G				0x00000c84
+
+#define NV10_3D_VERTEX_COL2_3F_B				0x00000c88
+
+#define NV10_3D_VERTEX_COL2_3I					0x00000c8c
+#define NV10_3D_VERTEX_COL2_3I_R__MASK				0x000000ff
+#define NV10_3D_VERTEX_COL2_3I_R__SHIFT				0
+#define NV10_3D_VERTEX_COL2_3I_G__MASK				0x0000ff00
+#define NV10_3D_VERTEX_COL2_3I_G__SHIFT				8
+#define NV10_3D_VERTEX_COL2_3I_B__MASK				0x00ff0000
+#define NV10_3D_VERTEX_COL2_3I_B__SHIFT				16
+
+#define NV10_3D_VERTEX_TX0_2F					0x00000c90
+
+
+#define NV10_3D_VERTEX_TX0_2F_S					0x00000c90
+
+#define NV10_3D_VERTEX_TX0_2F_T					0x00000c94
+
+#define NV10_3D_VERTEX_TX0_2I					0x00000c98
+#define NV10_3D_VERTEX_TX0_2I_S__MASK				0x0000ffff
+#define NV10_3D_VERTEX_TX0_2I_S__SHIFT				0
+#define NV10_3D_VERTEX_TX0_2I_T__MASK				0xffff0000
+#define NV10_3D_VERTEX_TX0_2I_T__SHIFT				16
+
+#define NV10_3D_VERTEX_TX0_4F					0x00000ca0
+
+
+#define NV10_3D_VERTEX_TX0_4F_S					0x00000ca0
+
+#define NV10_3D_VERTEX_TX0_4F_T					0x00000ca4
+
+#define NV10_3D_VERTEX_TX0_4F_R					0x00000ca8
+
+#define NV10_3D_VERTEX_TX0_4F_Q					0x00000cac
+
+#define NV10_3D_VERTEX_TX0_4I					0x00000cb0
+
+
+#define NV10_3D_VERTEX_TX0_4I_ST				0x00000cb0
+#define NV10_3D_VERTEX_TX0_4I_ST_S__MASK			0x0000ffff
+#define NV10_3D_VERTEX_TX0_4I_ST_S__SHIFT			0
+#define NV10_3D_VERTEX_TX0_4I_ST_T__MASK			0xffff0000
+#define NV10_3D_VERTEX_TX0_4I_ST_T__SHIFT			16
+
+#define NV10_3D_VERTEX_TX0_4I_RQ				0x00000cb4
+#define NV10_3D_VERTEX_TX0_4I_RQ_R__MASK			0x0000ffff
+#define NV10_3D_VERTEX_TX0_4I_RQ_R__SHIFT			0
+#define NV10_3D_VERTEX_TX0_4I_RQ_Q__MASK			0xffff0000
+#define NV10_3D_VERTEX_TX0_4I_RQ_Q__SHIFT			16
+
+#define NV10_3D_VERTEX_TX1_2F					0x00000cb8
+
+
+#define NV10_3D_VERTEX_TX1_2F_S					0x00000cb8
+
+#define NV10_3D_VERTEX_TX1_2F_T					0x00000cbc
+
+#define NV10_3D_VERTEX_TX1_2I					0x00000cc0
+#define NV10_3D_VERTEX_TX1_2I_S__MASK				0x0000ffff
+#define NV10_3D_VERTEX_TX1_2I_S__SHIFT				0
+#define NV10_3D_VERTEX_TX1_2I_T__MASK				0xffff0000
+#define NV10_3D_VERTEX_TX1_2I_T__SHIFT				16
+
+#define NV10_3D_VERTEX_TX1_4F					0x00000cc8
+
+
+#define NV10_3D_VERTEX_TX1_4F_S					0x00000cc8
+
+#define NV10_3D_VERTEX_TX1_4F_T					0x00000ccc
+
+#define NV10_3D_VERTEX_TX1_4F_R					0x00000cd0
+
+#define NV10_3D_VERTEX_TX1_4F_Q					0x00000cd4
+
+#define NV10_3D_VERTEX_TX1_4I					0x00000cd8
+
+
+#define NV10_3D_VERTEX_TX1_4I_ST				0x00000cd8
+#define NV10_3D_VERTEX_TX1_4I_ST_S__MASK			0x0000ffff
+#define NV10_3D_VERTEX_TX1_4I_ST_S__SHIFT			0
+#define NV10_3D_VERTEX_TX1_4I_ST_T__MASK			0xffff0000
+#define NV10_3D_VERTEX_TX1_4I_ST_T__SHIFT			16
+
+#define NV10_3D_VERTEX_TX1_4I_RQ				0x00000cdc
+#define NV10_3D_VERTEX_TX1_4I_RQ_R__MASK			0x0000ffff
+#define NV10_3D_VERTEX_TX1_4I_RQ_R__SHIFT			0
+#define NV10_3D_VERTEX_TX1_4I_RQ_Q__MASK			0xffff0000
+#define NV10_3D_VERTEX_TX1_4I_RQ_Q__SHIFT			16
+
+#define NV10_3D_VERTEX_FOG_1F					0x00000ce0
+
+#define NV10_3D_VERTEX_WGH_1F					0x00000ce4
+
+#define NV10_3D_EDGEFLAG_ENABLE					0x00000cec
+
+
+#define NV10_3D_DMA_VTXBUF					0x0000018c
+
+#define NV10_3D_VTXBUF_VALIDATE					0x00000cf0
+
+
+#define NV10_3D_VTXBUF_OFFSET(i0)			       (0x00000d00 + 0x8*(i0))
+
+#define NV10_3D_VTXBUF_FMT(i0)				       (0x00000d04 + 0x8*(i0))
+#define NV10_3D_VTXBUF_FMT_TYPE__MASK				0x0000000f
+#define NV10_3D_VTXBUF_FMT_TYPE__SHIFT				0
+#define NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM			0x00000000
+#define NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM			0x00000001
+#define NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT			0x00000002
+#define NV10_3D_VTXBUF_FMT_TYPE_U8_UNORM			0x00000004
+#define NV10_3D_VTXBUF_FMT_FIELDS__MASK				0x000000f0
+#define NV10_3D_VTXBUF_FMT_FIELDS__SHIFT			4
+#define NV10_3D_VTXBUF_FMT_STRIDE__MASK				0x0000ff00
+#define NV10_3D_VTXBUF_FMT_STRIDE__SHIFT			8
+#define NV10_3D_VTXBUF_FMT_POS_HOMOGENEOUS			0x01000000
+
+#define NV10_3D_VERTEX_BEGIN_END				0x00000dfc
+#define NV10_3D_VERTEX_BEGIN_END_STOP				0x00000000
+#define NV10_3D_VERTEX_BEGIN_END_POINTS				0x00000001
+#define NV10_3D_VERTEX_BEGIN_END_LINES				0x00000002
+#define NV10_3D_VERTEX_BEGIN_END_LINE_LOOP			0x00000003
+#define NV10_3D_VERTEX_BEGIN_END_LINE_STRIP			0x00000004
+#define NV10_3D_VERTEX_BEGIN_END_TRIANGLES			0x00000005
+#define NV10_3D_VERTEX_BEGIN_END_TRIANGLE_STRIP			0x00000006
+#define NV10_3D_VERTEX_BEGIN_END_TRIANGLE_FAN			0x00000007
+#define NV10_3D_VERTEX_BEGIN_END_QUADS				0x00000008
+#define NV10_3D_VERTEX_BEGIN_END_QUAD_STRIP			0x00000009
+#define NV10_3D_VERTEX_BEGIN_END_POLYGON			0x0000000a
+
+#define NV10_3D_VTXBUF_ELEMENT_U16				0x00000e00
+#define NV10_3D_VTXBUF_ELEMENT_U16_I0__MASK			0x0000ffff
+#define NV10_3D_VTXBUF_ELEMENT_U16_I0__SHIFT			0
+#define NV10_3D_VTXBUF_ELEMENT_U16_I1__MASK			0xffff0000
+#define NV10_3D_VTXBUF_ELEMENT_U16_I1__SHIFT			16
+
+#define NV10_3D_VTXBUF_ELEMENT_U32				0x00001100
+
+#define NV10_3D_VTXBUF_BEGIN_END				0x000013fc
+#define NV10_3D_VTXBUF_BEGIN_END_STOP				0x00000000
+#define NV10_3D_VTXBUF_BEGIN_END_POINTS				0x00000001
+#define NV10_3D_VTXBUF_BEGIN_END_LINES				0x00000002
+#define NV10_3D_VTXBUF_BEGIN_END_LINE_LOOP			0x00000003
+#define NV10_3D_VTXBUF_BEGIN_END_LINE_STRIP			0x00000004
+#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLES			0x00000005
+#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLE_STRIP			0x00000006
+#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLE_FAN			0x00000007
+#define NV10_3D_VTXBUF_BEGIN_END_QUADS				0x00000008
+#define NV10_3D_VTXBUF_BEGIN_END_QUAD_STRIP			0x00000009
+#define NV10_3D_VTXBUF_BEGIN_END_POLYGON			0x0000000a
+
+#define NV10_3D_VTXBUF_BATCH					0x00001400
+#define NV10_3D_VTXBUF_BATCH_FIRST__MASK			0x0000ffff
+#define NV10_3D_VTXBUF_BATCH_FIRST__SHIFT			0
+#define NV10_3D_VTXBUF_BATCH_LAST__MASK				0xff000000
+#define NV10_3D_VTXBUF_BATCH_LAST__SHIFT			24
+
+#define NV10_3D_VTXBUF_DATA					0x00001800
+
+
+#define NV10_3D_VERTEX_WEIGHT_ENABLE				0x00000328
+
+#define NV10_3D_VIEW_MATRIX_ENABLE				0x000003e8
+#define NV10_3D_VIEW_MATRIX_ENABLE_MODELVIEW1			0x00000001
+#define NV10_3D_VIEW_MATRIX_ENABLE_MODELVIEW0			0x00000002
+#define NV10_3D_VIEW_MATRIX_ENABLE_PROJECTION			0x00000004
+
+
+#define NV10_3D_MODELVIEW_MATRIX(i0, i1)		       (0x00000400 + 0x40*(i0) + 0x4*(i1))
+#define NV10_3D_MODELVIEW_MATRIX__ESIZE				0x00000004
+#define NV10_3D_MODELVIEW_MATRIX__LEN				0x00000010
+
+#define NV10_3D_INVERSE_MODELVIEW_MATRIX(i0, i1)	       (0x00000480 + 0x40*(i0) + 0x4*(i1))
+#define NV10_3D_INVERSE_MODELVIEW_MATRIX__ESIZE			0x00000004
+#define NV10_3D_INVERSE_MODELVIEW_MATRIX__LEN			0x0000000c
+
+#define NV10_3D_PROJECTION_MATRIX(i0)			       (0x00000500 + 0x4*(i0))
+#define NV10_3D_PROJECTION_MATRIX__ESIZE			0x00000004
+#define NV10_3D_PROJECTION_MATRIX__LEN				0x00000010
+
+#define NV10_3D_VIEWPORT_TRANSLATE				0x000006e8
+
+
+#define NV10_3D_VIEWPORT_TRANSLATE_X				0x000006e8
+
+#define NV10_3D_VIEWPORT_TRANSLATE_Y				0x000006ec
+
+#define NV10_3D_VIEWPORT_TRANSLATE_Z				0x000006f0
+
+#define NV10_3D_VIEWPORT_TRANSLATE_W				0x000006f4
+
+
+#define NV10_3D_LIGHT_MODEL					0x00000294
+#define NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR			0x00000001
+#define NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR			0x00000002
+#define NV10_3D_LIGHT_MODEL_LOCAL_VIEWER			0x00010000
+
+#define NV10_3D_COLOR_MATERIAL					0x00000298
+#define NV10_3D_COLOR_MATERIAL_EMISSION				0x00000001
+#define NV10_3D_COLOR_MATERIAL_AMBIENT				0x00000002
+#define NV10_3D_COLOR_MATERIAL_DIFFUSE				0x00000004
+#define NV10_3D_COLOR_MATERIAL_SPECULAR				0x00000008
+
+#define NV10_3D_MATERIAL_FACTOR					0x000003a8
+
+
+#define NV10_3D_MATERIAL_FACTOR_R				0x000003a8
+
+#define NV10_3D_MATERIAL_FACTOR_G				0x000003ac
+
+#define NV10_3D_MATERIAL_FACTOR_B				0x000003b0
+
+#define NV10_3D_MATERIAL_FACTOR_A				0x000003b4
+
+#define NV10_3D_NORMALIZE_ENABLE				0x000003a4
+
+#define NV10_3D_SEPARATE_SPECULAR_ENABLE			0x000003b8
+
+#define NV10_3D_ENABLED_LIGHTS					0x000003bc
+#define NV10_3D_ENABLED_LIGHTS_0__MASK				0x00000003
+#define NV10_3D_ENABLED_LIGHTS_0__SHIFT				0
+#define NV10_3D_ENABLED_LIGHTS_0_DISABLED			0x00000000
+#define NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL			0x00000001
+#define NV10_3D_ENABLED_LIGHTS_0_POSITIONAL			0x00000002
+#define NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL			0x00000003
+#define NV10_3D_ENABLED_LIGHTS_1__MASK				0x0000000c
+#define NV10_3D_ENABLED_LIGHTS_1__SHIFT				2
+#define NV10_3D_ENABLED_LIGHTS_1_DISABLED			0x00000000
+#define NV10_3D_ENABLED_LIGHTS_1_NONPOSITIONAL			0x00000004
+#define NV10_3D_ENABLED_LIGHTS_1_POSITIONAL			0x00000008
+#define NV10_3D_ENABLED_LIGHTS_1_DIRECTIONAL			0x0000000c
+#define NV10_3D_ENABLED_LIGHTS_2__MASK				0x00000030
+#define NV10_3D_ENABLED_LIGHTS_2__SHIFT				4
+#define NV10_3D_ENABLED_LIGHTS_2_DISABLED			0x00000000
+#define NV10_3D_ENABLED_LIGHTS_2_NONPOSITIONAL			0x00000010
+#define NV10_3D_ENABLED_LIGHTS_2_POSITIONAL			0x00000020
+#define NV10_3D_ENABLED_LIGHTS_2_DIRECTIONAL			0x00000030
+#define NV10_3D_ENABLED_LIGHTS_3__MASK				0x000000c0
+#define NV10_3D_ENABLED_LIGHTS_3__SHIFT				6
+#define NV10_3D_ENABLED_LIGHTS_3_DISABLED			0x00000000
+#define NV10_3D_ENABLED_LIGHTS_3_NONPOSITIONAL			0x00000040
+#define NV10_3D_ENABLED_LIGHTS_3_POSITIONAL			0x00000080
+#define NV10_3D_ENABLED_LIGHTS_3_DIRECTIONAL			0x000000c0
+#define NV10_3D_ENABLED_LIGHTS_4__MASK				0x00000300
+#define NV10_3D_ENABLED_LIGHTS_4__SHIFT				8
+#define NV10_3D_ENABLED_LIGHTS_4_DISABLED			0x00000000
+#define NV10_3D_ENABLED_LIGHTS_4_NONPOSITIONAL			0x00000100
+#define NV10_3D_ENABLED_LIGHTS_4_POSITIONAL			0x00000200
+#define NV10_3D_ENABLED_LIGHTS_4_DIRECTIONAL			0x00000300
+#define NV10_3D_ENABLED_LIGHTS_5__MASK				0x00000c00
+#define NV10_3D_ENABLED_LIGHTS_5__SHIFT				10
+#define NV10_3D_ENABLED_LIGHTS_5_DISABLED			0x00000000
+#define NV10_3D_ENABLED_LIGHTS_5_NONPOSITIONAL			0x00000400
+#define NV10_3D_ENABLED_LIGHTS_5_POSITIONAL			0x00000800
+#define NV10_3D_ENABLED_LIGHTS_5_DIRECTIONAL			0x00000c00
+#define NV10_3D_ENABLED_LIGHTS_6__MASK				0x00003000
+#define NV10_3D_ENABLED_LIGHTS_6__SHIFT				12
+#define NV10_3D_ENABLED_LIGHTS_6_DISABLED			0x00000000
+#define NV10_3D_ENABLED_LIGHTS_6_NONPOSITIONAL			0x00001000
+#define NV10_3D_ENABLED_LIGHTS_6_POSITIONAL			0x00002000
+#define NV10_3D_ENABLED_LIGHTS_6_DIRECTIONAL			0x00003000
+#define NV10_3D_ENABLED_LIGHTS_7__MASK				0x0000c000
+#define NV10_3D_ENABLED_LIGHTS_7__SHIFT				14
+#define NV10_3D_ENABLED_LIGHTS_7_DISABLED			0x00000000
+#define NV10_3D_ENABLED_LIGHTS_7_NONPOSITIONAL			0x00004000
+#define NV10_3D_ENABLED_LIGHTS_7_POSITIONAL			0x00008000
+#define NV10_3D_ENABLED_LIGHTS_7_DIRECTIONAL			0x0000c000
+
+#define NV10_3D_MATERIAL_SHININESS(i0)			       (0x000006a0 + 0x4*(i0))
+#define NV10_3D_MATERIAL_SHININESS__ESIZE			0x00000004
+#define NV10_3D_MATERIAL_SHININESS__LEN				0x00000006
+
+#define NV10_3D_LIGHT_MODEL_AMBIENT				0x000006c4
+
+
+#define NV10_3D_LIGHT_MODEL_AMBIENT_R				0x000006c4
+
+#define NV10_3D_LIGHT_MODEL_AMBIENT_G				0x000006c8
+
+#define NV10_3D_LIGHT_MODEL_AMBIENT_B				0x000006cc
+
+#define NV10_3D_LIGHT(i0)				       (0x00000800 + 0x80*(i0))
+#define NV10_3D_LIGHT__ESIZE					0x00000080
+#define NV10_3D_LIGHT__LEN					0x00000008
+
+#define NV10_3D_LIGHT_AMBIENT(i0)			       (0x00000800 + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_AMBIENT_R(i0)			       (0x00000800 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_AMBIENT_G(i0)			       (0x00000804 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_AMBIENT_B(i0)			       (0x00000808 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIFFUSE(i0)			       (0x0000080c + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_DIFFUSE_R(i0)			       (0x0000080c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIFFUSE_G(i0)			       (0x00000810 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIFFUSE_B(i0)			       (0x00000814 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_SPECULAR(i0)			       (0x00000818 + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_SPECULAR_R(i0)			       (0x00000818 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_SPECULAR_G(i0)			       (0x0000081c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_SPECULAR_B(i0)			       (0x00000820 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_HALF_VECTOR(i0)			       (0x00000828 + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_HALF_VECTOR_X(i0)			       (0x00000828 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_HALF_VECTOR_Y(i0)			       (0x0000082c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_HALF_VECTOR_Z(i0)			       (0x00000830 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIRECTION(i0)			       (0x00000834 + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_DIRECTION_X(i0)			       (0x00000834 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIRECTION_Y(i0)			       (0x00000838 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_DIRECTION_Z(i0)			       (0x0000083c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_SPOT_CUTOFF(i0, i1)		       (0x00000840 + 0x80*(i0) + 0x4*(i1))
+#define NV10_3D_LIGHT_SPOT_CUTOFF__ESIZE			0x00000004
+#define NV10_3D_LIGHT_SPOT_CUTOFF__LEN				0x00000007
+
+#define NV10_3D_LIGHT_POSITION(i0)			       (0x0000085c + 0x80*(i0))
+
+
+#define NV10_3D_LIGHT_POSITION_X(i0)			       (0x0000085c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_POSITION_Y(i0)			       (0x00000860 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_POSITION_Z(i0)			       (0x00000864 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_ATTENUATION(i0)			       (0x00000868 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_ATTENUATION_CONSTANT(i0)		       (0x00000868 + 0x80*(i0))
+
+#define NV10_3D_LIGHT_ATTENUATION_LINEAR(i0)		       (0x0000086c + 0x80*(i0))
+
+#define NV10_3D_LIGHT_ATTENUATION_QUADRATIC(i0)		       (0x00000870 + 0x80*(i0))
+
+
+#define NV10_3D_FOG_MODE					0x0000029c
+#define NV10_3D_FOG_MODE_LINEAR					0x00002601
+#define NV10_3D_FOG_MODE_EXP					0x00000800
+#define NV10_3D_FOG_MODE_EXP_ABS				0x00000802
+#define NV10_3D_FOG_MODE_EXP2					0x00000803
+
+#define NV10_3D_FOG_COORD					0x000002a0
+#define NV10_3D_FOG_COORD_FOG					0x00000000
+#define NV10_3D_FOG_COORD_DIST_RADIAL				0x00000001
+#define NV10_3D_FOG_COORD_DIST_ORTHOGONAL			0x00000002
+#define NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS			0x00000003
+
+#define NV10_3D_FOG_ENABLE					0x000002a4
+
+#define NV10_3D_FOG_COLOR					0x000002a8
+#define NV10_3D_FOG_COLOR_R__MASK				0x000000ff
+#define NV10_3D_FOG_COLOR_R__SHIFT				0
+#define NV10_3D_FOG_COLOR_G__MASK				0x0000ff00
+#define NV10_3D_FOG_COLOR_G__SHIFT				8
+#define NV10_3D_FOG_COLOR_B__MASK				0x00ff0000
+#define NV10_3D_FOG_COLOR_B__SHIFT				16
+#define NV10_3D_FOG_COLOR_A__MASK				0xff000000
+#define NV10_3D_FOG_COLOR_A__SHIFT				24
+
+#define NV10_3D_FOG_COEFF(i0)				       (0x00000680 + 0x4*(i0))
+#define NV10_3D_FOG_COEFF__ESIZE				0x00000004
+#define NV10_3D_FOG_COEFF__LEN					0x00000003
+
+
+
+#define NV10_3D_TEX_GEN_MODE(i0, i1)			       (0x000003c0 + 0x10*(i0) + 0x4*(i1))
+#define NV10_3D_TEX_GEN_MODE__ESIZE				0x00000004
+#define NV10_3D_TEX_GEN_MODE__LEN				0x00000004
+#define NV10_3D_TEX_GEN_MODE_FALSE				0x00000000
+#define NV10_3D_TEX_GEN_MODE_EYE_LINEAR				0x00002400
+#define NV10_3D_TEX_GEN_MODE_OBJECT_LINEAR			0x00002401
+#define NV10_3D_TEX_GEN_MODE_SPHERE_MAP				0x00002402
+#define NV10_3D_TEX_GEN_MODE_NORMAL_MAP				0x00008511
+#define NV10_3D_TEX_GEN_MODE_REFLECTION_MAP			0x00008512
+
+
+#define NV10_3D_TEX_GEN_COEFF(i0, i1)			       (0x00000600 + 0x40*(i0) + 0x10*(i1))
+#define NV10_3D_TEX_GEN_COEFF__ESIZE				0x00000010
+#define NV10_3D_TEX_GEN_COEFF__LEN				0x00000004
+
+#define NV10_3D_TEX_GEN_COEFF_A(i0, i1)			       (0x00000600 + 0x40*(i0) + 0x10*(i1))
+
+#define NV10_3D_TEX_GEN_COEFF_B(i0, i1)			       (0x00000604 + 0x40*(i0) + 0x10*(i1))
+
+#define NV10_3D_TEX_GEN_COEFF_C(i0, i1)			       (0x00000608 + 0x40*(i0) + 0x10*(i1))
+
+#define NV10_3D_TEX_GEN_COEFF_D(i0, i1)			       (0x0000060c + 0x40*(i0) + 0x10*(i1))
+
+#define NV10_3D_TEX_MATRIX_ENABLE(i0)			       (0x000003e0 + 0x4*(i0))
+#define NV10_3D_TEX_MATRIX_ENABLE__ESIZE			0x00000004
+#define NV10_3D_TEX_MATRIX_ENABLE__LEN				0x00000002
+
+
+#define NV10_3D_TEX_MATRIX(i0, i1)			       (0x00000540 + 0x40*(i0) + 0x4*(i1))
+#define NV10_3D_TEX_MATRIX__ESIZE				0x00000004
+#define NV10_3D_TEX_MATRIX__LEN					0x00000010
+
+
+#define NV10_3D_TEX_OFFSET(i0)				       (0x00000218 + 0x4*(i0))
+
+#define NV10_3D_TEX_FORMAT(i0)				       (0x00000220 + 0x4*(i0))
+#define NV10_3D_TEX_FORMAT_DMA0					0x00000001
+#define NV10_3D_TEX_FORMAT_DMA1					0x00000002
+#define NV10_3D_TEX_FORMAT_CUBE_MAP				0x00000004
+#define NV10_3D_TEX_FORMAT_FORMAT__MASK				0x00000f80
+#define NV10_3D_TEX_FORMAT_FORMAT__SHIFT			7
+#define NV10_3D_TEX_FORMAT_FORMAT_L8				0x00000000
+#define NV10_3D_TEX_FORMAT_FORMAT_I8				0x00000080
+#define NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5			0x00000100
+#define NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4			0x00000200
+#define NV10_3D_TEX_FORMAT_FORMAT_R5G6B5			0x00000280
+#define NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8			0x00000300
+#define NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8			0x00000380
+#define NV10_3D_TEX_FORMAT_FORMAT_INDEX8			0x00000580
+#define NV10_3D_TEX_FORMAT_FORMAT_DXT1				0x00000600
+#define NV10_3D_TEX_FORMAT_FORMAT_DXT3				0x00000700
+#define NV10_3D_TEX_FORMAT_FORMAT_DXT5				0x00000780
+#define NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT			0x00000800
+#define NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT			0x00000880
+#define NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT			0x00000900
+#define NV10_3D_TEX_FORMAT_FORMAT_I8_RECT			0x00000980
+#define NV10_3D_TEX_FORMAT_MIPMAP				0x00008000
+#define NV10_3D_TEX_FORMAT_BASE_SIZE_U__MASK			0x000f0000
+#define NV10_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT			16
+#define NV10_3D_TEX_FORMAT_BASE_SIZE_V__MASK			0x00f00000
+#define NV10_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT			20
+#define NV10_3D_TEX_FORMAT_WRAP_S__MASK				0x0f000000
+#define NV10_3D_TEX_FORMAT_WRAP_S__SHIFT			24
+#define NV10_3D_TEX_FORMAT_WRAP_S_REPEAT			0x01000000
+#define NV10_3D_TEX_FORMAT_WRAP_S_MIRRORED_REPEAT		0x02000000
+#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP_TO_EDGE			0x03000000
+#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP_TO_BORDER		0x04000000
+#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP				0x05000000
+#define NV10_3D_TEX_FORMAT_WRAP_T__MASK				0xf0000000
+#define NV10_3D_TEX_FORMAT_WRAP_T__SHIFT			28
+#define NV10_3D_TEX_FORMAT_WRAP_T_REPEAT			0x10000000
+#define NV10_3D_TEX_FORMAT_WRAP_T_MIRRORED_REPEAT		0x20000000
+#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP_TO_EDGE			0x30000000
+#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP_TO_BORDER		0x40000000
+#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP				0x50000000
+
+#define NV10_3D_TEX_ENABLE(i0)				       (0x00000228 + 0x4*(i0))
+#define NV10_3D_TEX_ENABLE_CULL__MASK				0x0000000f
+#define NV10_3D_TEX_ENABLE_CULL__SHIFT				0
+#define NV10_3D_TEX_ENABLE_CULL_DISABLED			0x00000000
+#define NV10_3D_TEX_ENABLE_CULL_TEST_ALL			0x00000003
+#define NV10_3D_TEX_ENABLE_CULL_TEST_ALPHA			0x00000004
+#define NV10_3D_TEX_ENABLE_ANISOTROPY__MASK			0x00000030
+#define NV10_3D_TEX_ENABLE_ANISOTROPY__SHIFT			4
+#define NV10_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK			0x0003c000
+#define NV10_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT		14
+#define NV10_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK			0x3c000000
+#define NV10_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT		26
+#define NV10_3D_TEX_ENABLE_ENABLE				0x40000000
+
+#define NV10_3D_TEX_NPOT_PITCH(i0)			       (0x00000230 + 0x4*(i0))
+#define NV10_3D_TEX_NPOT_PITCH_PITCH__MASK			0xffff0000
+#define NV10_3D_TEX_NPOT_PITCH_PITCH__SHIFT			16
+
+#define NV10_3D_TEX_NPOT_SIZE(i0)			       (0x00000240 + 0x4*(i0))
+#define NV10_3D_TEX_NPOT_SIZE_H__MASK				0x0000ffff
+#define NV10_3D_TEX_NPOT_SIZE_H__SHIFT				0
+#define NV10_3D_TEX_NPOT_SIZE_W__MASK				0xffff0000
+#define NV10_3D_TEX_NPOT_SIZE_W__SHIFT				16
+
+#define NV10_3D_TEX_FILTER(i0)				       (0x00000248 + 0x4*(i0))
+#define NV10_3D_TEX_FILTER_LOD_BIAS__MASK			0x00000f00
+#define NV10_3D_TEX_FILTER_LOD_BIAS__SHIFT			8
+#define NV10_3D_TEX_FILTER_MINIFY__MASK				0x0f000000
+#define NV10_3D_TEX_FILTER_MINIFY__SHIFT			24
+#define NV10_3D_TEX_FILTER_MINIFY_NEAREST			0x01000000
+#define NV10_3D_TEX_FILTER_MINIFY_LINEAR			0x02000000
+#define NV10_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST	0x03000000
+#define NV10_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST		0x04000000
+#define NV10_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR		0x05000000
+#define NV10_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR		0x06000000
+#define NV10_3D_TEX_FILTER_MAGNIFY__MASK			0xf0000000
+#define NV10_3D_TEX_FILTER_MAGNIFY__SHIFT			28
+#define NV10_3D_TEX_FILTER_MAGNIFY_NEAREST			0x10000000
+#define NV10_3D_TEX_FILTER_MAGNIFY_LINEAR			0x20000000
+
+#define NV10_3D_TEX_PALETTE_OFFSET(i0)			       (0x00000250 + 0x4*(i0))
+
+
+
+#define NV10_3D_RC_IN_ALPHA(i0)				       (0x00000260 + 0x4*(i0))
+#define NV10_3D_RC_IN_ALPHA_D_INPUT__MASK			0x0000000f
+#define NV10_3D_RC_IN_ALPHA_D_INPUT__SHIFT			0
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_ZERO			0x00000000
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0		0x00000001
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1		0x00000002
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_FOG				0x00000003
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR		0x00000004
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR		0x00000005
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE0			0x00000008
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE1			0x00000009
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE2			0x0000000a
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE3			0x0000000b
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE0			0x0000000c
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE1			0x0000000d
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV10_3D_RC_IN_ALPHA_D_INPUT_E_TIMES_F			0x0000000f
+#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__MASK		0x00000010
+#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__SHIFT		4
+#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE		0x00000000
+#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA		0x00000010
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING__MASK			0x000000e0
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING__SHIFT			5
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT		0x00000020
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL		0x00000040
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE		0x00000060
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL		0x00000080
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE		0x000000a0
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY		0x000000c0
+#define NV10_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE		0x000000e0
+#define NV10_3D_RC_IN_ALPHA_C_INPUT__MASK			0x00000f00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT__SHIFT			8
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_ZERO			0x00000000
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0		0x00000100
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1		0x00000200
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_FOG				0x00000300
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR		0x00000400
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR		0x00000500
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE0			0x00000800
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE1			0x00000900
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE2			0x00000a00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE3			0x00000b00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE0			0x00000c00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE1			0x00000d00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV10_3D_RC_IN_ALPHA_C_INPUT_E_TIMES_F			0x00000f00
+#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__MASK		0x00001000
+#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__SHIFT		12
+#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE		0x00000000
+#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA		0x00001000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING__MASK			0x0000e000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING__SHIFT			13
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT		0x00002000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL		0x00004000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE		0x00006000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL		0x00008000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE		0x0000a000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY		0x0000c000
+#define NV10_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE		0x0000e000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT__MASK			0x000f0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT__SHIFT			16
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_ZERO			0x00000000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0		0x00010000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1		0x00020000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_FOG				0x00030000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR		0x00040000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR		0x00050000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE0			0x00080000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE1			0x00090000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE2			0x000a0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE3			0x000b0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE0			0x000c0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE1			0x000d0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000e0000
+#define NV10_3D_RC_IN_ALPHA_B_INPUT_E_TIMES_F			0x000f0000
+#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__MASK		0x00100000
+#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__SHIFT		20
+#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE		0x00000000
+#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA		0x00100000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING__MASK			0x00e00000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING__SHIFT			21
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT		0x00200000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL		0x00400000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE		0x00600000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL		0x00800000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE		0x00a00000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY		0x00c00000
+#define NV10_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE		0x00e00000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT__MASK			0x0f000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT__SHIFT			24
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_ZERO			0x00000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0		0x01000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1		0x02000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_FOG				0x03000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR		0x04000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR		0x05000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE0			0x08000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE1			0x09000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE2			0x0a000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE3			0x0b000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE0			0x0c000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE1			0x0d000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0e000000
+#define NV10_3D_RC_IN_ALPHA_A_INPUT_E_TIMES_F			0x0f000000
+#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__MASK		0x10000000
+#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__SHIFT		28
+#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE		0x00000000
+#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA		0x10000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING__MASK			0xe0000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING__SHIFT			29
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT		0x20000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL		0x40000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE		0x60000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL		0x80000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE		0xa0000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY		0xc0000000
+#define NV10_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE		0xe0000000
+
+#define NV10_3D_RC_IN_RGB(i0)				       (0x00000268 + 0x4*(i0))
+#define NV10_3D_RC_IN_RGB_D_INPUT__MASK				0x0000000f
+#define NV10_3D_RC_IN_RGB_D_INPUT__SHIFT			0
+#define NV10_3D_RC_IN_RGB_D_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0		0x00000001
+#define NV10_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1		0x00000002
+#define NV10_3D_RC_IN_RGB_D_INPUT_FOG				0x00000003
+#define NV10_3D_RC_IN_RGB_D_INPUT_PRIMARY_COLOR			0x00000004
+#define NV10_3D_RC_IN_RGB_D_INPUT_SECONDARY_COLOR		0x00000005
+#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE0			0x00000008
+#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE1			0x00000009
+#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE2			0x0000000a
+#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE3			0x0000000b
+#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE0			0x0000000c
+#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE1			0x0000000d
+#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV10_3D_RC_IN_RGB_D_INPUT_E_TIMES_F			0x0000000f
+#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE__MASK		0x00000010
+#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE__SHIFT		4
+#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA		0x00000010
+#define NV10_3D_RC_IN_RGB_D_MAPPING__MASK			0x000000e0
+#define NV10_3D_RC_IN_RGB_D_MAPPING__SHIFT			5
+#define NV10_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT		0x00000020
+#define NV10_3D_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL		0x00000040
+#define NV10_3D_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE		0x00000060
+#define NV10_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL		0x00000080
+#define NV10_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE		0x000000a0
+#define NV10_3D_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY		0x000000c0
+#define NV10_3D_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE		0x000000e0
+#define NV10_3D_RC_IN_RGB_C_INPUT__MASK				0x00000f00
+#define NV10_3D_RC_IN_RGB_C_INPUT__SHIFT			8
+#define NV10_3D_RC_IN_RGB_C_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0		0x00000100
+#define NV10_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1		0x00000200
+#define NV10_3D_RC_IN_RGB_C_INPUT_FOG				0x00000300
+#define NV10_3D_RC_IN_RGB_C_INPUT_PRIMARY_COLOR			0x00000400
+#define NV10_3D_RC_IN_RGB_C_INPUT_SECONDARY_COLOR		0x00000500
+#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE0			0x00000800
+#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE1			0x00000900
+#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE2			0x00000a00
+#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE3			0x00000b00
+#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE0			0x00000c00
+#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE1			0x00000d00
+#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV10_3D_RC_IN_RGB_C_INPUT_E_TIMES_F			0x00000f00
+#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE__MASK		0x00001000
+#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE__SHIFT		12
+#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA		0x00001000
+#define NV10_3D_RC_IN_RGB_C_MAPPING__MASK			0x0000e000
+#define NV10_3D_RC_IN_RGB_C_MAPPING__SHIFT			13
+#define NV10_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT		0x00002000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL		0x00004000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE		0x00006000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL		0x00008000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE		0x0000a000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY		0x0000c000
+#define NV10_3D_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE		0x0000e000
+#define NV10_3D_RC_IN_RGB_B_INPUT__MASK				0x000f0000
+#define NV10_3D_RC_IN_RGB_B_INPUT__SHIFT			16
+#define NV10_3D_RC_IN_RGB_B_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0		0x00010000
+#define NV10_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1		0x00020000
+#define NV10_3D_RC_IN_RGB_B_INPUT_FOG				0x00030000
+#define NV10_3D_RC_IN_RGB_B_INPUT_PRIMARY_COLOR			0x00040000
+#define NV10_3D_RC_IN_RGB_B_INPUT_SECONDARY_COLOR		0x00050000
+#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE0			0x00080000
+#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE1			0x00090000
+#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE2			0x000a0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE3			0x000b0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE0			0x000c0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE1			0x000d0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000e0000
+#define NV10_3D_RC_IN_RGB_B_INPUT_E_TIMES_F			0x000f0000
+#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE__MASK		0x00100000
+#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE__SHIFT		20
+#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA		0x00100000
+#define NV10_3D_RC_IN_RGB_B_MAPPING__MASK			0x00e00000
+#define NV10_3D_RC_IN_RGB_B_MAPPING__SHIFT			21
+#define NV10_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT		0x00200000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL		0x00400000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE		0x00600000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL		0x00800000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE		0x00a00000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY		0x00c00000
+#define NV10_3D_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE		0x00e00000
+#define NV10_3D_RC_IN_RGB_A_INPUT__MASK				0x0f000000
+#define NV10_3D_RC_IN_RGB_A_INPUT__SHIFT			24
+#define NV10_3D_RC_IN_RGB_A_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0		0x01000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1		0x02000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_FOG				0x03000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_PRIMARY_COLOR			0x04000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_SECONDARY_COLOR		0x05000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE0			0x08000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE1			0x09000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE2			0x0a000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE3			0x0b000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE0			0x0c000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE1			0x0d000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0e000000
+#define NV10_3D_RC_IN_RGB_A_INPUT_E_TIMES_F			0x0f000000
+#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE__MASK		0x10000000
+#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE__SHIFT		28
+#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA		0x10000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING__MASK			0xe0000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING__SHIFT			29
+#define NV10_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT		0x20000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL		0x40000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE		0x60000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL		0x80000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE		0xa0000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY		0xc0000000
+#define NV10_3D_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE		0xe0000000
+
+#define NV10_3D_RC_COLOR(i0)				       (0x00000270 + 0x4*(i0))
+#define NV10_3D_RC_COLOR_B__MASK				0x000000ff
+#define NV10_3D_RC_COLOR_B__SHIFT				0
+#define NV10_3D_RC_COLOR_G__MASK				0x0000ff00
+#define NV10_3D_RC_COLOR_G__SHIFT				8
+#define NV10_3D_RC_COLOR_R__MASK				0x00ff0000
+#define NV10_3D_RC_COLOR_R__SHIFT				16
+#define NV10_3D_RC_COLOR_A__MASK				0xff000000
+#define NV10_3D_RC_COLOR_A__SHIFT				24
+
+#define NV10_3D_RC_OUT_ALPHA(i0)			       (0x00000278 + 0x4*(i0))
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT__MASK			0x0000000f
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT__SHIFT			0
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_ZERO			0x00000000
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0		0x00000001
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1		0x00000002
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_FOG			0x00000003
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR		0x00000004
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR		0x00000005
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0			0x00000008
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1			0x00000009
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2			0x0000000a
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3			0x0000000b
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0			0x0000000c
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE1			0x0000000d
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F		0x0000000f
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT__MASK			0x000000f0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT__SHIFT			4
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_ZERO			0x00000000
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0		0x00000010
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1		0x00000020
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_FOG			0x00000030
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR		0x00000040
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR		0x00000050
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0			0x00000080
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1			0x00000090
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2			0x000000a0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3			0x000000b0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0			0x000000c0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE1			0x000000d0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000000e0
+#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F		0x000000f0
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT__MASK			0x00000f00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT__SHIFT			8
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_ZERO			0x00000000
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0		0x00000100
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1		0x00000200
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_FOG			0x00000300
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR		0x00000400
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR		0x00000500
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0		0x00000800
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1		0x00000900
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2		0x00000a00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3		0x00000b00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0			0x00000c00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1			0x00000d00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F		0x00000f00
+#define NV10_3D_RC_OUT_ALPHA_CD_DOT_PRODUCT			0x00001000
+#define NV10_3D_RC_OUT_ALPHA_AB_DOT_PRODUCT			0x00002000
+#define NV10_3D_RC_OUT_ALPHA_MUX_SUM				0x00004000
+#define NV10_3D_RC_OUT_ALPHA_BIAS__MASK				0x00008000
+#define NV10_3D_RC_OUT_ALPHA_BIAS__SHIFT			15
+#define NV10_3D_RC_OUT_ALPHA_BIAS_NONE				0x00000000
+#define NV10_3D_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF	0x00008000
+#define NV10_3D_RC_OUT_ALPHA_SCALE__MASK			0x00030000
+#define NV10_3D_RC_OUT_ALPHA_SCALE__SHIFT			16
+#define NV10_3D_RC_OUT_ALPHA_SCALE_NONE				0x00000000
+#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO			0x00010000
+#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR		0x00020000
+#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF		0x00030000
+
+#define NV10_3D_RC_OUT_RGB(i0)				       (0x00000280 + 0x4*(i0))
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT__MASK			0x0000000f
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT__SHIFT			0
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_ZERO			0x00000000
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0		0x00000001
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1		0x00000002
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_FOG			0x00000003
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR		0x00000004
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR		0x00000005
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE0			0x00000008
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE1			0x00000009
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE2			0x0000000a
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE3			0x0000000b
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0			0x0000000c
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE1			0x0000000d
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F			0x0000000f
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT__MASK			0x000000f0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT__SHIFT			4
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_ZERO			0x00000000
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0		0x00000010
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1		0x00000020
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_FOG			0x00000030
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR		0x00000040
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR		0x00000050
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE0			0x00000080
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE1			0x00000090
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE2			0x000000a0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE3			0x000000b0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0			0x000000c0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE1			0x000000d0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000000e0
+#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F			0x000000f0
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT__MASK			0x00000f00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT__SHIFT			8
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_ZERO			0x00000000
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0		0x00000100
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1		0x00000200
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_FOG			0x00000300
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR		0x00000400
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR		0x00000500
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0			0x00000800
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1			0x00000900
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2			0x00000a00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3			0x00000b00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0			0x00000c00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE1			0x00000d00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F			0x00000f00
+#define NV10_3D_RC_OUT_RGB_CD_DOT_PRODUCT			0x00001000
+#define NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT			0x00002000
+#define NV10_3D_RC_OUT_RGB_MUX_SUM				0x00004000
+#define NV10_3D_RC_OUT_RGB_BIAS__MASK				0x00008000
+#define NV10_3D_RC_OUT_RGB_BIAS__SHIFT				15
+#define NV10_3D_RC_OUT_RGB_BIAS_NONE				0x00000000
+#define NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF	0x00008000
+#define NV10_3D_RC_OUT_RGB_SCALE__MASK				0x00030000
+#define NV10_3D_RC_OUT_RGB_SCALE__SHIFT				16
+#define NV10_3D_RC_OUT_RGB_SCALE_NONE				0x00000000
+#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO			0x00010000
+#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR			0x00020000
+#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF		0x00030000
+#define NV10_3D_RC_OUT_RGB_OPERATION__MASK			0x38000000
+#define NV10_3D_RC_OUT_RGB_OPERATION__SHIFT			27
+
+#define NV10_3D_RC_FINAL0					0x00000288
+#define NV10_3D_RC_FINAL0_D_INPUT__MASK				0x0000000f
+#define NV10_3D_RC_FINAL0_D_INPUT__SHIFT			0
+#define NV10_3D_RC_FINAL0_D_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR0		0x00000001
+#define NV10_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR1		0x00000002
+#define NV10_3D_RC_FINAL0_D_INPUT_FOG				0x00000003
+#define NV10_3D_RC_FINAL0_D_INPUT_PRIMARY_COLOR			0x00000004
+#define NV10_3D_RC_FINAL0_D_INPUT_SECONDARY_COLOR		0x00000005
+#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE0			0x00000008
+#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE1			0x00000009
+#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE2			0x0000000a
+#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE3			0x0000000b
+#define NV10_3D_RC_FINAL0_D_INPUT_SPARE0			0x0000000c
+#define NV10_3D_RC_FINAL0_D_INPUT_SPARE1			0x0000000d
+#define NV10_3D_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV10_3D_RC_FINAL0_D_INPUT_E_TIMES_F			0x0000000f
+#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE__MASK		0x00000010
+#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE__SHIFT		4
+#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE_ALPHA		0x00000010
+#define NV10_3D_RC_FINAL0_D_MAPPING__MASK			0x000000e0
+#define NV10_3D_RC_FINAL0_D_MAPPING__SHIFT			5
+#define NV10_3D_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT		0x00000020
+#define NV10_3D_RC_FINAL0_D_MAPPING_EXPAND_NORMAL		0x00000040
+#define NV10_3D_RC_FINAL0_D_MAPPING_EXPAND_NEGATE		0x00000060
+#define NV10_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL		0x00000080
+#define NV10_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE		0x000000a0
+#define NV10_3D_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY		0x000000c0
+#define NV10_3D_RC_FINAL0_D_MAPPING_SIGNED_NEGATE		0x000000e0
+#define NV10_3D_RC_FINAL0_C_INPUT__MASK				0x00000f00
+#define NV10_3D_RC_FINAL0_C_INPUT__SHIFT			8
+#define NV10_3D_RC_FINAL0_C_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR0		0x00000100
+#define NV10_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR1		0x00000200
+#define NV10_3D_RC_FINAL0_C_INPUT_FOG				0x00000300
+#define NV10_3D_RC_FINAL0_C_INPUT_PRIMARY_COLOR			0x00000400
+#define NV10_3D_RC_FINAL0_C_INPUT_SECONDARY_COLOR		0x00000500
+#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE0			0x00000800
+#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE1			0x00000900
+#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE2			0x00000a00
+#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE3			0x00000b00
+#define NV10_3D_RC_FINAL0_C_INPUT_SPARE0			0x00000c00
+#define NV10_3D_RC_FINAL0_C_INPUT_SPARE1			0x00000d00
+#define NV10_3D_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV10_3D_RC_FINAL0_C_INPUT_E_TIMES_F			0x00000f00
+#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE__MASK		0x00001000
+#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE__SHIFT		12
+#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE_ALPHA		0x00001000
+#define NV10_3D_RC_FINAL0_C_MAPPING__MASK			0x0000e000
+#define NV10_3D_RC_FINAL0_C_MAPPING__SHIFT			13
+#define NV10_3D_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT		0x00002000
+#define NV10_3D_RC_FINAL0_C_MAPPING_EXPAND_NORMAL		0x00004000
+#define NV10_3D_RC_FINAL0_C_MAPPING_EXPAND_NEGATE		0x00006000
+#define NV10_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL		0x00008000
+#define NV10_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE		0x0000a000
+#define NV10_3D_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY		0x0000c000
+#define NV10_3D_RC_FINAL0_C_MAPPING_SIGNED_NEGATE		0x0000e000
+#define NV10_3D_RC_FINAL0_B_INPUT__MASK				0x000f0000
+#define NV10_3D_RC_FINAL0_B_INPUT__SHIFT			16
+#define NV10_3D_RC_FINAL0_B_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR0		0x00010000
+#define NV10_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR1		0x00020000
+#define NV10_3D_RC_FINAL0_B_INPUT_FOG				0x00030000
+#define NV10_3D_RC_FINAL0_B_INPUT_PRIMARY_COLOR			0x00040000
+#define NV10_3D_RC_FINAL0_B_INPUT_SECONDARY_COLOR		0x00050000
+#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE0			0x00080000
+#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE1			0x00090000
+#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE2			0x000a0000
+#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE3			0x000b0000
+#define NV10_3D_RC_FINAL0_B_INPUT_SPARE0			0x000c0000
+#define NV10_3D_RC_FINAL0_B_INPUT_SPARE1			0x000d0000
+#define NV10_3D_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000e0000
+#define NV10_3D_RC_FINAL0_B_INPUT_E_TIMES_F			0x000f0000
+#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE__MASK		0x00100000
+#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE__SHIFT		20
+#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE_ALPHA		0x00100000
+#define NV10_3D_RC_FINAL0_B_MAPPING__MASK			0x00e00000
+#define NV10_3D_RC_FINAL0_B_MAPPING__SHIFT			21
+#define NV10_3D_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT		0x00200000
+#define NV10_3D_RC_FINAL0_B_MAPPING_EXPAND_NORMAL		0x00400000
+#define NV10_3D_RC_FINAL0_B_MAPPING_EXPAND_NEGATE		0x00600000
+#define NV10_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL		0x00800000
+#define NV10_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE		0x00a00000
+#define NV10_3D_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY		0x00c00000
+#define NV10_3D_RC_FINAL0_B_MAPPING_SIGNED_NEGATE		0x00e00000
+#define NV10_3D_RC_FINAL0_A_INPUT__MASK				0x0f000000
+#define NV10_3D_RC_FINAL0_A_INPUT__SHIFT			24
+#define NV10_3D_RC_FINAL0_A_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR0		0x01000000
+#define NV10_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR1		0x02000000
+#define NV10_3D_RC_FINAL0_A_INPUT_FOG				0x03000000
+#define NV10_3D_RC_FINAL0_A_INPUT_PRIMARY_COLOR			0x04000000
+#define NV10_3D_RC_FINAL0_A_INPUT_SECONDARY_COLOR		0x05000000
+#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE0			0x08000000
+#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE1			0x09000000
+#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE2			0x0a000000
+#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE3			0x0b000000
+#define NV10_3D_RC_FINAL0_A_INPUT_SPARE0			0x0c000000
+#define NV10_3D_RC_FINAL0_A_INPUT_SPARE1			0x0d000000
+#define NV10_3D_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0e000000
+#define NV10_3D_RC_FINAL0_A_INPUT_E_TIMES_F			0x0f000000
+#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE__MASK		0x10000000
+#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE__SHIFT		28
+#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE_ALPHA		0x10000000
+#define NV10_3D_RC_FINAL0_A_MAPPING__MASK			0xe0000000
+#define NV10_3D_RC_FINAL0_A_MAPPING__SHIFT			29
+#define NV10_3D_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT		0x20000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_EXPAND_NORMAL		0x40000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_EXPAND_NEGATE		0x60000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL		0x80000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE		0xa0000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY		0xc0000000
+#define NV10_3D_RC_FINAL0_A_MAPPING_SIGNED_NEGATE		0xe0000000
+
+#define NV10_3D_RC_FINAL1					0x0000028c
+#define NV10_3D_RC_FINAL1_COLOR_SUM_CLAMP			0x00000080
+#define NV10_3D_RC_FINAL1_G_INPUT__MASK				0x00000f00
+#define NV10_3D_RC_FINAL1_G_INPUT__SHIFT			8
+#define NV10_3D_RC_FINAL1_G_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR0		0x00000100
+#define NV10_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR1		0x00000200
+#define NV10_3D_RC_FINAL1_G_INPUT_FOG				0x00000300
+#define NV10_3D_RC_FINAL1_G_INPUT_PRIMARY_COLOR			0x00000400
+#define NV10_3D_RC_FINAL1_G_INPUT_SECONDARY_COLOR		0x00000500
+#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE0			0x00000800
+#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE1			0x00000900
+#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE2			0x00000a00
+#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE3			0x00000b00
+#define NV10_3D_RC_FINAL1_G_INPUT_SPARE0			0x00000c00
+#define NV10_3D_RC_FINAL1_G_INPUT_SPARE1			0x00000d00
+#define NV10_3D_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV10_3D_RC_FINAL1_G_INPUT_E_TIMES_F			0x00000f00
+#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE__MASK		0x00001000
+#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE__SHIFT		12
+#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE_ALPHA		0x00001000
+#define NV10_3D_RC_FINAL1_G_MAPPING__MASK			0x0000e000
+#define NV10_3D_RC_FINAL1_G_MAPPING__SHIFT			13
+#define NV10_3D_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT		0x00002000
+#define NV10_3D_RC_FINAL1_G_MAPPING_EXPAND_NORMAL		0x00004000
+#define NV10_3D_RC_FINAL1_G_MAPPING_EXPAND_NEGATE		0x00006000
+#define NV10_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL		0x00008000
+#define NV10_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE		0x0000a000
+#define NV10_3D_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY		0x0000c000
+#define NV10_3D_RC_FINAL1_G_MAPPING_SIGNED_NEGATE		0x0000e000
+#define NV10_3D_RC_FINAL1_F_INPUT__MASK				0x000f0000
+#define NV10_3D_RC_FINAL1_F_INPUT__SHIFT			16
+#define NV10_3D_RC_FINAL1_F_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR0		0x00010000
+#define NV10_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR1		0x00020000
+#define NV10_3D_RC_FINAL1_F_INPUT_FOG				0x00030000
+#define NV10_3D_RC_FINAL1_F_INPUT_PRIMARY_COLOR			0x00040000
+#define NV10_3D_RC_FINAL1_F_INPUT_SECONDARY_COLOR		0x00050000
+#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE0			0x00080000
+#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE1			0x00090000
+#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE2			0x000a0000
+#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE3			0x000b0000
+#define NV10_3D_RC_FINAL1_F_INPUT_SPARE0			0x000c0000
+#define NV10_3D_RC_FINAL1_F_INPUT_SPARE1			0x000d0000
+#define NV10_3D_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000e0000
+#define NV10_3D_RC_FINAL1_F_INPUT_E_TIMES_F			0x000f0000
+#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE__MASK		0x00100000
+#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE__SHIFT		20
+#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE_ALPHA		0x00100000
+#define NV10_3D_RC_FINAL1_F_MAPPING__MASK			0x00e00000
+#define NV10_3D_RC_FINAL1_F_MAPPING__SHIFT			21
+#define NV10_3D_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT		0x00200000
+#define NV10_3D_RC_FINAL1_F_MAPPING_EXPAND_NORMAL		0x00400000
+#define NV10_3D_RC_FINAL1_F_MAPPING_EXPAND_NEGATE		0x00600000
+#define NV10_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL		0x00800000
+#define NV10_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE		0x00a00000
+#define NV10_3D_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY		0x00c00000
+#define NV10_3D_RC_FINAL1_F_MAPPING_SIGNED_NEGATE		0x00e00000
+#define NV10_3D_RC_FINAL1_E_INPUT__MASK				0x0f000000
+#define NV10_3D_RC_FINAL1_E_INPUT__SHIFT			24
+#define NV10_3D_RC_FINAL1_E_INPUT_ZERO				0x00000000
+#define NV10_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR0		0x01000000
+#define NV10_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR1		0x02000000
+#define NV10_3D_RC_FINAL1_E_INPUT_FOG				0x03000000
+#define NV10_3D_RC_FINAL1_E_INPUT_PRIMARY_COLOR			0x04000000
+#define NV10_3D_RC_FINAL1_E_INPUT_SECONDARY_COLOR		0x05000000
+#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE0			0x08000000
+#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE1			0x09000000
+#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE2			0x0a000000
+#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE3			0x0b000000
+#define NV10_3D_RC_FINAL1_E_INPUT_SPARE0			0x0c000000
+#define NV10_3D_RC_FINAL1_E_INPUT_SPARE1			0x0d000000
+#define NV10_3D_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0e000000
+#define NV10_3D_RC_FINAL1_E_INPUT_E_TIMES_F			0x0f000000
+#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE__MASK		0x10000000
+#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE__SHIFT		28
+#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE_RGB			0x00000000
+#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE_ALPHA		0x10000000
+#define NV10_3D_RC_FINAL1_E_MAPPING__MASK			0xe0000000
+#define NV10_3D_RC_FINAL1_E_MAPPING__SHIFT			29
+#define NV10_3D_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT		0x20000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_EXPAND_NORMAL		0x40000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_EXPAND_NEGATE		0x60000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL		0x80000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE		0xa0000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY		0xc0000000
+#define NV10_3D_RC_FINAL1_E_MAPPING_SIGNED_NEGATE		0xe0000000
+
+
+#define NV17_3D_DMA_LMA_DEPTH					0x000001b0
+
+#define NV17_3D_LMA_DEPTH_BUFFER_PITCH				0x00000d5c
+
+#define NV17_3D_LMA_DEPTH_BUFFER_OFFSET				0x00000d60
+
+#define NV17_3D_LMA_DEPTH_FILL_VALUE				0x00000d68
+
+#define NV17_3D_LMA_DEPTH_BUFFER_CLEAR				0x00000d6c
+
+#define NV17_3D_UNK0D74						0x00000d74
+
+#define NV17_3D_UNK0D84						0x00000d84
+
+
+#define NV17_3D_LMA_DEPTH_WINDOW				0x00001638
+
+
+#define NV17_3D_LMA_DEPTH_WINDOW_X				0x00001638
+
+#define NV17_3D_LMA_DEPTH_WINDOW_Y				0x0000163c
+
+#define NV17_3D_LMA_DEPTH_WINDOW_Z				0x00001640
+
+#define NV17_3D_LMA_DEPTH_WINDOW_W				0x00001644
+
+#define NV17_3D_LMA_DEPTH_ENABLE				0x00001658
+
+
+#define NV17_3D_UNK01AC						0x000001ac
+
+#define NV17_3D_UNK0258						0x00000258
+
+#define NV17_3D_UNK025C						0x0000025c
+
+#define NV10_3D_UNK0290						0x00000290
+
+#define NV17_3D_COLOR_MASK_ENABLE				0x000002bc
+
+#define NV10_3D_UNK03F0						0x000003f0
+
+#define NV10_3D_UNK03F4						0x000003f4
+
+#define NV17_3D_ZCLEAR_ENABLE					0x000003f8
+
+#define NV17_3D_ZCLEAR_VALUE					0x000003fc
+#define NV17_3D_ZCLEAR_VALUE_DEPTH__MASK			0xffffff00
+#define NV17_3D_ZCLEAR_VALUE_DEPTH__SHIFT			8
+#define NV17_3D_ZCLEAR_VALUE_SEQUENCE__MASK			0x000000ff
+#define NV17_3D_ZCLEAR_VALUE_SEQUENCE__SHIFT			0
+
+#define NV10_3D_POINT_SIZE					0x000003ec
+
+#define NV10_3D_POINT_PARAMETER(i0)			       (0x000006f8 + 0x4*(i0))
+#define NV10_3D_POINT_PARAMETER__ESIZE				0x00000004
+#define NV10_3D_POINT_PARAMETER__LEN				0x00000008
+
+#define NV11_3D_COLOR_LOGIC_OP					0x00000d40
+
+#define NV11_3D_COLOR_LOGIC_OP_ENABLE				0x00000d40
+
+#define NV11_3D_COLOR_LOGIC_OP_OP				0x00000d44
+#define NV11_3D_COLOR_LOGIC_OP_OP_CLEAR				0x00001500
+#define NV11_3D_COLOR_LOGIC_OP_OP_AND				0x00001501
+#define NV11_3D_COLOR_LOGIC_OP_OP_AND_REVERSE			0x00001502
+#define NV11_3D_COLOR_LOGIC_OP_OP_COPY				0x00001503
+#define NV11_3D_COLOR_LOGIC_OP_OP_AND_INVERTED			0x00001504
+#define NV11_3D_COLOR_LOGIC_OP_OP_NOOP				0x00001505
+#define NV11_3D_COLOR_LOGIC_OP_OP_XOR				0x00001506
+#define NV11_3D_COLOR_LOGIC_OP_OP_OR				0x00001507
+#define NV11_3D_COLOR_LOGIC_OP_OP_NOR				0x00001508
+#define NV11_3D_COLOR_LOGIC_OP_OP_EQUIV				0x00001509
+#define NV11_3D_COLOR_LOGIC_OP_OP_INVERT			0x0000150a
+#define NV11_3D_COLOR_LOGIC_OP_OP_OR_REVERSE			0x0000150b
+#define NV11_3D_COLOR_LOGIC_OP_OP_COPY_INVERTED			0x0000150c
+#define NV11_3D_COLOR_LOGIC_OP_OP_OR_INVERTED			0x0000150d
+#define NV11_3D_COLOR_LOGIC_OP_OP_NAND				0x0000150e
+#define NV11_3D_COLOR_LOGIC_OP_OP_SET				0x0000150f
+
+
+#endif /* NV10_3D_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h
new file mode 100644
index 0000000..2fed846
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h
@@ -0,0 +1,2085 @@
+#ifndef NV20_3D_XML
+#define NV20_3D_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv20_3d.xml    (  21289 bytes, from 2010-10-30 15:45:10)
+- copyright.xml  (   6498 bytes, from 2010-10-24 16:03:07)
+- nv10_3d.xml    (  18508 bytes, from 2010-10-30 15:39:22)
+- nv_defs.xml    (   4437 bytes, from 2010-10-24 16:03:07)
+- nv_3ddefs.xml  (  16394 bytes, from 2010-10-30 15:15:23)
+- nv_object.xml  (  11547 bytes, from 2010-10-27 16:17:46)
+- nvchipsets.xml (   2991 bytes, from 2010-10-30 09:54:12)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro, curro_, currojerez)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+#define NV20_VERTEX_ATTR_POS					0x00000000
+#define NV20_VERTEX_ATTR_NORMAL					0x00000002
+#define NV20_VERTEX_ATTR_COLOR0					0x00000003
+#define NV20_VERTEX_ATTR_COLOR1					0x00000004
+#define NV20_VERTEX_ATTR_FOG					0x00000005
+#define NV20_VERTEX_ATTR_TEX0					0x00000009
+#define NV20_VERTEX_ATTR_TEX1					0x0000000a
+#define NV20_VERTEX_ATTR_TEX2					0x0000000b
+#define NV20_VERTEX_ATTR_TEX3					0x0000000c
+
+
+
+#define NV20_3D_FLIP_SET_READ					0x00000120
+
+#define NV20_3D_FLIP_SET_WRITE					0x00000124
+
+#define NV20_3D_FLIP_MAX					0x00000128
+
+#define NV20_3D_FLIP_INCR_WRITE					0x0000012c
+
+#define NV20_3D_FLIP_WAIT					0x00000130
+
+#define NV20_3D_DMA_NOTIFY					0x00000180
+
+#define NV20_3D_DMA_TEXTURE0					0x00000184
+
+#define NV20_3D_DMA_TEXTURE1					0x00000188
+
+#define NV20_3D_DMA_COLOR					0x00000194
+
+#define NV20_3D_DMA_ZETA					0x00000198
+
+#define NV20_3D_RT_HORIZ					0x00000200
+#define NV20_3D_RT_HORIZ_X__MASK				0x0000ffff
+#define NV20_3D_RT_HORIZ_X__SHIFT				0
+#define NV20_3D_RT_HORIZ_W__MASK				0xffff0000
+#define NV20_3D_RT_HORIZ_W__SHIFT				16
+
+#define NV20_3D_RT_VERT						0x00000204
+#define NV20_3D_RT_VERT_Y__MASK					0x0000ffff
+#define NV20_3D_RT_VERT_Y__SHIFT				0
+#define NV20_3D_RT_VERT_H__MASK					0xffff0000
+#define NV20_3D_RT_VERT_H__SHIFT				16
+
+#define NV20_3D_RT_FORMAT					0x00000208
+#define NV20_3D_RT_FORMAT_TYPE__MASK				0x00000f00
+#define NV20_3D_RT_FORMAT_TYPE__SHIFT				8
+#define NV20_3D_RT_FORMAT_TYPE_LINEAR				0x00000100
+#define NV20_3D_RT_FORMAT_TYPE_SWIZZLED				0x00000200
+#define NV20_3D_RT_FORMAT_DEPTH__MASK				0x00000030
+#define NV20_3D_RT_FORMAT_DEPTH__SHIFT				4
+#define NV20_3D_RT_FORMAT_DEPTH_Z16				0x00000010
+#define NV20_3D_RT_FORMAT_DEPTH_Z24S8				0x00000020
+#define NV20_3D_RT_FORMAT_COLOR__MASK				0x0000000f
+#define NV20_3D_RT_FORMAT_COLOR__SHIFT				0
+#define NV20_3D_RT_FORMAT_COLOR_R5G6B5				0x00000003
+#define NV20_3D_RT_FORMAT_COLOR_X8R8G8B8			0x00000005
+#define NV20_3D_RT_FORMAT_COLOR_A8R8G8B8			0x00000008
+#define NV20_3D_RT_FORMAT_COLOR_B8				0x00000009
+
+#define NV20_3D_RT_PITCH					0x0000020c
+#define NV20_3D_RT_PITCH_COLOR_PITCH__MASK			0x0000ffff
+#define NV20_3D_RT_PITCH_COLOR_PITCH__SHIFT			0
+#define NV20_3D_RT_PITCH_ZETA_PITCH__MASK			0xffff0000
+#define NV20_3D_RT_PITCH_ZETA_PITCH__SHIFT			16
+
+#define NV20_3D_COLOR_OFFSET					0x00000210
+
+#define NV20_3D_ZETA_OFFSET					0x00000214
+
+#define NV20_3D_UNK0290						0x00000290
+
+#define NV20_3D_VIEWPORT_CLIP_MODE				0x000002b4
+
+#define NV20_3D_VIEWPORT_CLIP_HORIZ(i0)			       (0x000002c0 + 0x4*(i0))
+#define NV20_3D_VIEWPORT_CLIP_HORIZ__ESIZE			0x00000004
+#define NV20_3D_VIEWPORT_CLIP_HORIZ__LEN			0x00000008
+#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__MASK		0x000007ff
+#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__SHIFT		0
+#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__MASK		0x07ff0000
+#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__SHIFT		16
+
+#define NV20_3D_VIEWPORT_CLIP_VERT(i0)			       (0x000002e0 + 0x4*(i0))
+#define NV20_3D_VIEWPORT_CLIP_VERT__ESIZE			0x00000004
+#define NV20_3D_VIEWPORT_CLIP_VERT__LEN				0x00000008
+#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_T__MASK			0x000007ff
+#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_T__SHIFT		0
+#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_B__MASK			0x07ff0000
+#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_B__SHIFT		16
+
+#define NV20_3D_ALPHA_FUNC_ENABLE				0x00000300
+
+#define NV20_3D_BLEND_FUNC_ENABLE				0x00000304
+
+#define NV20_3D_CULL_FACE_ENABLE				0x00000308
+
+#define NV20_3D_DEPTH_TEST_ENABLE				0x0000030c
+
+#define NV20_3D_DITHER_ENABLE					0x00000310
+
+#define NV20_3D_LIGHTING_ENABLE					0x00000314
+
+#define NV20_3D_POINT_PARAMETERS_ENABLE				0x00000318
+
+#define NV20_3D_POINT_SMOOTH_ENABLE				0x0000031c
+
+#define NV20_3D_LINE_SMOOTH_ENABLE				0x00000320
+
+#define NV20_3D_POLYGON_SMOOTH_ENABLE				0x00000324
+
+#define NV20_3D_STENCIL_ENABLE					0x0000032c
+
+#define NV20_3D_POLYGON_OFFSET_POINT_ENABLE			0x00000330
+
+#define NV20_3D_POLYGON_OFFSET_LINE_ENABLE			0x00000334
+
+#define NV20_3D_POLYGON_OFFSET_FILL_ENABLE			0x00000338
+
+#define NV20_3D_ALPHA_FUNC_FUNC					0x0000033c
+#define NV20_3D_ALPHA_FUNC_FUNC_NEVER				0x00000200
+#define NV20_3D_ALPHA_FUNC_FUNC_LESS				0x00000201
+#define NV20_3D_ALPHA_FUNC_FUNC_EQUAL				0x00000202
+#define NV20_3D_ALPHA_FUNC_FUNC_LEQUAL				0x00000203
+#define NV20_3D_ALPHA_FUNC_FUNC_GREATER				0x00000204
+#define NV20_3D_ALPHA_FUNC_FUNC_NOTEQUAL			0x00000205
+#define NV20_3D_ALPHA_FUNC_FUNC_GEQUAL				0x00000206
+#define NV20_3D_ALPHA_FUNC_FUNC_ALWAYS				0x00000207
+
+#define NV20_3D_ALPHA_FUNC_REF					0x00000340
+
+#define NV20_3D_BLEND_FUNC_SRC					0x00000344
+#define NV20_3D_BLEND_FUNC_SRC_ZERO				0x00000000
+#define NV20_3D_BLEND_FUNC_SRC_ONE				0x00000001
+#define NV20_3D_BLEND_FUNC_SRC_SRC_COLOR			0x00000300
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR		0x00000301
+#define NV20_3D_BLEND_FUNC_SRC_SRC_ALPHA			0x00000302
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA		0x00000303
+#define NV20_3D_BLEND_FUNC_SRC_DST_ALPHA			0x00000304
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA		0x00000305
+#define NV20_3D_BLEND_FUNC_SRC_DST_COLOR			0x00000306
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR		0x00000307
+#define NV20_3D_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE		0x00000308
+#define NV20_3D_BLEND_FUNC_SRC_CONSTANT_COLOR			0x00008001
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR		0x00008002
+#define NV20_3D_BLEND_FUNC_SRC_CONSTANT_ALPHA			0x00008003
+#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA		0x00008004
+
+#define NV20_3D_BLEND_FUNC_DST					0x00000348
+#define NV20_3D_BLEND_FUNC_DST_ZERO				0x00000000
+#define NV20_3D_BLEND_FUNC_DST_ONE				0x00000001
+#define NV20_3D_BLEND_FUNC_DST_SRC_COLOR			0x00000300
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR		0x00000301
+#define NV20_3D_BLEND_FUNC_DST_SRC_ALPHA			0x00000302
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA		0x00000303
+#define NV20_3D_BLEND_FUNC_DST_DST_ALPHA			0x00000304
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA		0x00000305
+#define NV20_3D_BLEND_FUNC_DST_DST_COLOR			0x00000306
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR		0x00000307
+#define NV20_3D_BLEND_FUNC_DST_SRC_ALPHA_SATURATE		0x00000308
+#define NV20_3D_BLEND_FUNC_DST_CONSTANT_COLOR			0x00008001
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR		0x00008002
+#define NV20_3D_BLEND_FUNC_DST_CONSTANT_ALPHA			0x00008003
+#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA		0x00008004
+
+#define NV20_3D_BLEND_COLOR					0x0000034c
+#define NV20_3D_BLEND_COLOR_B__MASK				0x000000ff
+#define NV20_3D_BLEND_COLOR_B__SHIFT				0
+#define NV20_3D_BLEND_COLOR_G__MASK				0x0000ff00
+#define NV20_3D_BLEND_COLOR_G__SHIFT				8
+#define NV20_3D_BLEND_COLOR_R__MASK				0x00ff0000
+#define NV20_3D_BLEND_COLOR_R__SHIFT				16
+#define NV20_3D_BLEND_COLOR_A__MASK				0xff000000
+#define NV20_3D_BLEND_COLOR_A__SHIFT				24
+
+#define NV20_3D_BLEND_EQUATION					0x00000350
+#define NV20_3D_BLEND_EQUATION_FUNC_ADD				0x00008006
+#define NV20_3D_BLEND_EQUATION_MIN				0x00008007
+#define NV20_3D_BLEND_EQUATION_MAX				0x00008008
+#define NV20_3D_BLEND_EQUATION_FUNC_SUBTRACT			0x0000800a
+#define NV20_3D_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT		0x0000800b
+
+#define NV20_3D_DEPTH_FUNC					0x00000354
+#define NV20_3D_DEPTH_FUNC_NEVER				0x00000200
+#define NV20_3D_DEPTH_FUNC_LESS					0x00000201
+#define NV20_3D_DEPTH_FUNC_EQUAL				0x00000202
+#define NV20_3D_DEPTH_FUNC_LEQUAL				0x00000203
+#define NV20_3D_DEPTH_FUNC_GREATER				0x00000204
+#define NV20_3D_DEPTH_FUNC_NOTEQUAL				0x00000205
+#define NV20_3D_DEPTH_FUNC_GEQUAL				0x00000206
+#define NV20_3D_DEPTH_FUNC_ALWAYS				0x00000207
+
+#define NV20_3D_COLOR_MASK					0x00000358
+#define NV20_3D_COLOR_MASK_B					0x00000001
+#define NV20_3D_COLOR_MASK_G					0x00000100
+#define NV20_3D_COLOR_MASK_R					0x00010000
+#define NV20_3D_COLOR_MASK_A					0x01000000
+
+#define NV20_3D_DEPTH_WRITE_ENABLE				0x0000035c
+
+#define NV20_3D_STENCIL_MASK					0x00000360
+
+#define NV20_3D_STENCIL_FUNC_FUNC				0x00000364
+#define NV20_3D_STENCIL_FUNC_FUNC_NEVER				0x00000200
+#define NV20_3D_STENCIL_FUNC_FUNC_LESS				0x00000201
+#define NV20_3D_STENCIL_FUNC_FUNC_EQUAL				0x00000202
+#define NV20_3D_STENCIL_FUNC_FUNC_LEQUAL			0x00000203
+#define NV20_3D_STENCIL_FUNC_FUNC_GREATER			0x00000204
+#define NV20_3D_STENCIL_FUNC_FUNC_NOTEQUAL			0x00000205
+#define NV20_3D_STENCIL_FUNC_FUNC_GEQUAL			0x00000206
+#define NV20_3D_STENCIL_FUNC_FUNC_ALWAYS			0x00000207
+
+#define NV20_3D_STENCIL_FUNC_REF				0x00000368
+
+#define NV20_3D_STENCIL_FUNC_MASK				0x0000036c
+
+#define NV20_3D_STENCIL_OP_FAIL					0x00000370
+#define NV20_3D_STENCIL_OP_FAIL_ZERO				0x00000000
+#define NV20_3D_STENCIL_OP_FAIL_INVERT				0x0000150a
+#define NV20_3D_STENCIL_OP_FAIL_KEEP				0x00001e00
+#define NV20_3D_STENCIL_OP_FAIL_REPLACE				0x00001e01
+#define NV20_3D_STENCIL_OP_FAIL_INCR				0x00001e02
+#define NV20_3D_STENCIL_OP_FAIL_DECR				0x00001e03
+#define NV20_3D_STENCIL_OP_FAIL_INCR_WRAP			0x00008507
+#define NV20_3D_STENCIL_OP_FAIL_DECR_WRAP			0x00008508
+
+#define NV20_3D_STENCIL_OP_ZFAIL				0x00000374
+#define NV20_3D_STENCIL_OP_ZFAIL_ZERO				0x00000000
+#define NV20_3D_STENCIL_OP_ZFAIL_INVERT				0x0000150a
+#define NV20_3D_STENCIL_OP_ZFAIL_KEEP				0x00001e00
+#define NV20_3D_STENCIL_OP_ZFAIL_REPLACE			0x00001e01
+#define NV20_3D_STENCIL_OP_ZFAIL_INCR				0x00001e02
+#define NV20_3D_STENCIL_OP_ZFAIL_DECR				0x00001e03
+#define NV20_3D_STENCIL_OP_ZFAIL_INCR_WRAP			0x00008507
+#define NV20_3D_STENCIL_OP_ZFAIL_DECR_WRAP			0x00008508
+
+#define NV20_3D_STENCIL_OP_ZPASS				0x00000378
+#define NV20_3D_STENCIL_OP_ZPASS_ZERO				0x00000000
+#define NV20_3D_STENCIL_OP_ZPASS_INVERT				0x0000150a
+#define NV20_3D_STENCIL_OP_ZPASS_KEEP				0x00001e00
+#define NV20_3D_STENCIL_OP_ZPASS_REPLACE			0x00001e01
+#define NV20_3D_STENCIL_OP_ZPASS_INCR				0x00001e02
+#define NV20_3D_STENCIL_OP_ZPASS_DECR				0x00001e03
+#define NV20_3D_STENCIL_OP_ZPASS_INCR_WRAP			0x00008507
+#define NV20_3D_STENCIL_OP_ZPASS_DECR_WRAP			0x00008508
+
+#define NV20_3D_SHADE_MODEL					0x0000037c
+#define NV20_3D_SHADE_MODEL_FLAT				0x00001d00
+#define NV20_3D_SHADE_MODEL_SMOOTH				0x00001d01
+
+#define NV20_3D_LINE_WIDTH					0x00000380
+
+#define NV20_3D_POLYGON_OFFSET_FACTOR				0x00000384
+
+#define NV20_3D_POLYGON_OFFSET_UNITS				0x00000388
+
+#define NV20_3D_POLYGON_MODE_FRONT				0x0000038c
+#define NV20_3D_POLYGON_MODE_FRONT_POINT			0x00001b00
+#define NV20_3D_POLYGON_MODE_FRONT_LINE				0x00001b01
+#define NV20_3D_POLYGON_MODE_FRONT_FILL				0x00001b02
+
+#define NV20_3D_POLYGON_MODE_BACK				0x00000390
+#define NV20_3D_POLYGON_MODE_BACK_POINT				0x00001b00
+#define NV20_3D_POLYGON_MODE_BACK_LINE				0x00001b01
+#define NV20_3D_POLYGON_MODE_BACK_FILL				0x00001b02
+
+#define NV20_3D_DEPTH_RANGE_NEAR				0x00000394
+
+#define NV20_3D_DEPTH_RANGE_FAR					0x00000398
+
+#define NV20_3D_CULL_FACE					0x0000039c
+#define NV20_3D_CULL_FACE_FRONT					0x00000404
+#define NV20_3D_CULL_FACE_BACK					0x00000405
+#define NV20_3D_CULL_FACE_FRONT_AND_BACK			0x00000408
+
+#define NV20_3D_FRONT_FACE					0x000003a0
+#define NV20_3D_FRONT_FACE_CW					0x00000900
+#define NV20_3D_FRONT_FACE_CCW					0x00000901
+
+#define NV20_3D_DMA_FENCE					0x000001a4
+
+#define NV20_3D_DMA_QUERY					0x000001a8
+
+
+#define NV20_3D_VERTEX_POS_3F					0x00001500
+
+
+#define NV20_3D_VERTEX_POS_3F_X					0x00001500
+
+#define NV20_3D_VERTEX_POS_3F_Y					0x00001504
+
+#define NV20_3D_VERTEX_POS_3F_Z					0x00001508
+
+#define NV20_3D_VERTEX_POS_4F					0x00001518
+
+
+#define NV20_3D_VERTEX_POS_4F_X					0x00001518
+
+#define NV20_3D_VERTEX_POS_4F_Y					0x0000151c
+
+#define NV20_3D_VERTEX_POS_4F_Z					0x00001520
+
+#define NV20_3D_VERTEX_POS_4F_W					0x00001524
+
+#define NV20_3D_VERTEX_POS_3I					0x00001528
+
+
+#define NV20_3D_VERTEX_POS_3I_XY				0x00001528
+#define NV20_3D_VERTEX_POS_3I_XY_X__MASK			0x0000ffff
+#define NV20_3D_VERTEX_POS_3I_XY_X__SHIFT			0
+#define NV20_3D_VERTEX_POS_3I_XY_Y__MASK			0xffff0000
+#define NV20_3D_VERTEX_POS_3I_XY_Y__SHIFT			16
+
+#define NV20_3D_VERTEX_POS_3I_Z					0x0000152c
+#define NV20_3D_VERTEX_POS_3I_Z_Z__MASK				0x0000ffff
+#define NV20_3D_VERTEX_POS_3I_Z_Z__SHIFT			0
+
+#define NV20_3D_VERTEX_NOR_3F					0x00001530
+
+
+#define NV20_3D_VERTEX_NOR_3F_X					0x00001530
+
+#define NV20_3D_VERTEX_NOR_3F_Y					0x00001534
+
+#define NV20_3D_VERTEX_NOR_3F_Z					0x00001538
+
+#define NV20_3D_VERTEX_NOR_3I					0x00001540
+
+
+#define NV20_3D_VERTEX_NOR_3I_XY				0x00001540
+#define NV20_3D_VERTEX_NOR_3I_XY_X__MASK			0x0000ffff
+#define NV20_3D_VERTEX_NOR_3I_XY_X__SHIFT			0
+#define NV20_3D_VERTEX_NOR_3I_XY_Y__MASK			0xffff0000
+#define NV20_3D_VERTEX_NOR_3I_XY_Y__SHIFT			16
+
+#define NV20_3D_VERTEX_NOR_3I_Z					0x00001544
+#define NV20_3D_VERTEX_NOR_3I_Z_Z__MASK				0x0000ffff
+#define NV20_3D_VERTEX_NOR_3I_Z_Z__SHIFT			0
+
+#define NV20_3D_VERTEX_COL_4F					0x00001550
+
+
+#define NV20_3D_VERTEX_COL_4F_R					0x00001550
+
+#define NV20_3D_VERTEX_COL_4F_G					0x00001554
+
+#define NV20_3D_VERTEX_COL_4F_B					0x00001558
+
+#define NV20_3D_VERTEX_COL_4F_A					0x0000155c
+
+#define NV20_3D_VERTEX_COL_3F					0x00001560
+
+
+#define NV20_3D_VERTEX_COL_3F_R					0x00001560
+
+#define NV20_3D_VERTEX_COL_3F_G					0x00001564
+
+#define NV20_3D_VERTEX_COL_3F_B					0x00001568
+
+#define NV20_3D_VERTEX_COL_4I					0x0000156c
+#define NV20_3D_VERTEX_COL_4I_R__MASK				0x000000ff
+#define NV20_3D_VERTEX_COL_4I_R__SHIFT				0
+#define NV20_3D_VERTEX_COL_4I_G__MASK				0x0000ff00
+#define NV20_3D_VERTEX_COL_4I_G__SHIFT				8
+#define NV20_3D_VERTEX_COL_4I_B__MASK				0x00ff0000
+#define NV20_3D_VERTEX_COL_4I_B__SHIFT				16
+#define NV20_3D_VERTEX_COL_4I_A__MASK				0xff000000
+#define NV20_3D_VERTEX_COL_4I_A__SHIFT				24
+
+#define NV20_3D_VERTEX_COL2_3F					0x00001580
+
+
+#define NV20_3D_VERTEX_COL2_3F_R				0x00001580
+
+#define NV20_3D_VERTEX_COL2_3F_G				0x00001584
+
+#define NV20_3D_VERTEX_COL2_3F_B				0x00001588
+
+#define NV20_3D_VERTEX_COL2_3I					0x0000158c
+#define NV20_3D_VERTEX_COL2_3I_R__MASK				0x000000ff
+#define NV20_3D_VERTEX_COL2_3I_R__SHIFT				0
+#define NV20_3D_VERTEX_COL2_3I_G__MASK				0x0000ff00
+#define NV20_3D_VERTEX_COL2_3I_G__SHIFT				8
+#define NV20_3D_VERTEX_COL2_3I_B__MASK				0x00ff0000
+#define NV20_3D_VERTEX_COL2_3I_B__SHIFT				16
+
+#define NV20_3D_VERTEX_TX0_2F					0x00001590
+
+
+#define NV20_3D_VERTEX_TX0_2F_S					0x00001590
+
+#define NV20_3D_VERTEX_TX0_2F_T					0x00001594
+
+#define NV20_3D_VERTEX_TX0_2I					0x00001598
+#define NV20_3D_VERTEX_TX0_2I_S__MASK				0x0000ffff
+#define NV20_3D_VERTEX_TX0_2I_S__SHIFT				0
+#define NV20_3D_VERTEX_TX0_2I_T__MASK				0xffff0000
+#define NV20_3D_VERTEX_TX0_2I_T__SHIFT				16
+
+#define NV20_3D_VERTEX_TX0_4F					0x000015a0
+
+
+#define NV20_3D_VERTEX_TX0_4F_S					0x000015a0
+
+#define NV20_3D_VERTEX_TX0_4F_T					0x000015a4
+
+#define NV20_3D_VERTEX_TX0_4F_R					0x000015a8
+
+#define NV20_3D_VERTEX_TX0_4F_Q					0x000015ac
+
+#define NV20_3D_VERTEX_TX0_4I					0x000015b0
+
+
+#define NV20_3D_VERTEX_TX0_4I_ST				0x000015b0
+#define NV20_3D_VERTEX_TX0_4I_ST_S__MASK			0x0000ffff
+#define NV20_3D_VERTEX_TX0_4I_ST_S__SHIFT			0
+#define NV20_3D_VERTEX_TX0_4I_ST_T__MASK			0xffff0000
+#define NV20_3D_VERTEX_TX0_4I_ST_T__SHIFT			16
+
+#define NV20_3D_VERTEX_TX0_4I_RQ				0x000015b4
+#define NV20_3D_VERTEX_TX0_4I_RQ_R__MASK			0x0000ffff
+#define NV20_3D_VERTEX_TX0_4I_RQ_R__SHIFT			0
+#define NV20_3D_VERTEX_TX0_4I_RQ_Q__MASK			0xffff0000
+#define NV20_3D_VERTEX_TX0_4I_RQ_Q__SHIFT			16
+
+#define NV20_3D_VERTEX_TX1_2F					0x000015b8
+
+
+#define NV20_3D_VERTEX_TX1_2F_S					0x000015b8
+
+#define NV20_3D_VERTEX_TX1_2F_T					0x000015bc
+
+#define NV20_3D_VERTEX_TX1_2I					0x000015c0
+#define NV20_3D_VERTEX_TX1_2I_S__MASK				0x0000ffff
+#define NV20_3D_VERTEX_TX1_2I_S__SHIFT				0
+#define NV20_3D_VERTEX_TX1_2I_T__MASK				0xffff0000
+#define NV20_3D_VERTEX_TX1_2I_T__SHIFT				16
+
+#define NV20_3D_VERTEX_TX1_4F					0x000015c8
+
+
+#define NV20_3D_VERTEX_TX1_4F_S					0x000015c8
+
+#define NV20_3D_VERTEX_TX1_4F_T					0x000015cc
+
+#define NV20_3D_VERTEX_TX1_4F_R					0x000015d0
+
+#define NV20_3D_VERTEX_TX1_4F_Q					0x000015d4
+
+#define NV20_3D_VERTEX_TX1_4I					0x000015d8
+
+
+#define NV20_3D_VERTEX_TX1_4I_ST				0x000015d8
+#define NV20_3D_VERTEX_TX1_4I_ST_S__MASK			0x0000ffff
+#define NV20_3D_VERTEX_TX1_4I_ST_S__SHIFT			0
+#define NV20_3D_VERTEX_TX1_4I_ST_T__MASK			0xffff0000
+#define NV20_3D_VERTEX_TX1_4I_ST_T__SHIFT			16
+
+#define NV20_3D_VERTEX_TX1_4I_RQ				0x000015dc
+#define NV20_3D_VERTEX_TX1_4I_RQ_R__MASK			0x0000ffff
+#define NV20_3D_VERTEX_TX1_4I_RQ_R__SHIFT			0
+#define NV20_3D_VERTEX_TX1_4I_RQ_Q__MASK			0xffff0000
+#define NV20_3D_VERTEX_TX1_4I_RQ_Q__SHIFT			16
+
+#define NV20_3D_VERTEX_TX2_2F					0x000015e0
+
+
+#define NV20_3D_VERTEX_TX2_2F_S					0x000015e0
+
+#define NV20_3D_VERTEX_TX2_2F_T					0x000015e4
+
+#define NV20_3D_VERTEX_TX2_2I					0x000015e8
+#define NV20_3D_VERTEX_TX2_2I_S__MASK				0x0000ffff
+#define NV20_3D_VERTEX_TX2_2I_S__SHIFT				0
+#define NV20_3D_VERTEX_TX2_2I_T__MASK				0xffff0000
+#define NV20_3D_VERTEX_TX2_2I_T__SHIFT				16
+
+#define NV20_3D_VERTEX_TX2_4F					0x000015f0
+
+
+#define NV20_3D_VERTEX_TX2_4F_S					0x000015f0
+
+#define NV20_3D_VERTEX_TX2_4F_T					0x000015f4
+
+#define NV20_3D_VERTEX_TX2_4F_R					0x000015f8
+
+#define NV20_3D_VERTEX_TX2_4F_Q					0x000015fc
+
+#define NV20_3D_VERTEX_TX2_4I					0x00001600
+
+
+#define NV20_3D_VERTEX_TX2_4I_ST				0x00001600
+#define NV20_3D_VERTEX_TX2_4I_ST_S__MASK			0x0000ffff
+#define NV20_3D_VERTEX_TX2_4I_ST_S__SHIFT			0
+#define NV20_3D_VERTEX_TX2_4I_ST_T__MASK			0xffff0000
+#define NV20_3D_VERTEX_TX2_4I_ST_T__SHIFT			16
+
+#define NV20_3D_VERTEX_TX2_4I_RQ				0x00001604
+#define NV20_3D_VERTEX_TX2_4I_RQ_R__MASK			0x0000ffff
+#define NV20_3D_VERTEX_TX2_4I_RQ_R__SHIFT			0
+#define NV20_3D_VERTEX_TX2_4I_RQ_Q__MASK			0xffff0000
+#define NV20_3D_VERTEX_TX2_4I_RQ_Q__SHIFT			16
+
+#define NV20_3D_VERTEX_TX3_2F					0x00001608
+
+
+#define NV20_3D_VERTEX_TX3_2F_S					0x00001608
+
+#define NV20_3D_VERTEX_TX3_2F_T					0x0000160c
+
+#define NV20_3D_VERTEX_TX3_2I					0x00001610
+#define NV20_3D_VERTEX_TX3_2I_S__MASK				0x0000ffff
+#define NV20_3D_VERTEX_TX3_2I_S__SHIFT				0
+#define NV20_3D_VERTEX_TX3_2I_T__MASK				0xffff0000
+#define NV20_3D_VERTEX_TX3_2I_T__SHIFT				16
+
+#define NV20_3D_VERTEX_TX3_4F					0x00001620
+
+
+#define NV20_3D_VERTEX_TX3_4F_S					0x00001620
+
+#define NV20_3D_VERTEX_TX3_4F_T					0x00001624
+
+#define NV20_3D_VERTEX_TX3_4F_R					0x00001628
+
+#define NV20_3D_VERTEX_TX3_4F_Q					0x0000162c
+
+#define NV20_3D_VERTEX_TX3_4I					0x00001630
+
+
+#define NV20_3D_VERTEX_TX3_4I_ST				0x00001630
+#define NV20_3D_VERTEX_TX3_4I_ST_S__MASK			0x0000ffff
+#define NV20_3D_VERTEX_TX3_4I_ST_S__SHIFT			0
+#define NV20_3D_VERTEX_TX3_4I_ST_T__MASK			0xffff0000
+#define NV20_3D_VERTEX_TX3_4I_ST_T__SHIFT			16
+
+#define NV20_3D_VERTEX_TX3_4I_RQ				0x00001634
+#define NV20_3D_VERTEX_TX3_4I_RQ_R__MASK			0x0000ffff
+#define NV20_3D_VERTEX_TX3_4I_RQ_R__SHIFT			0
+#define NV20_3D_VERTEX_TX3_4I_RQ_Q__MASK			0xffff0000
+#define NV20_3D_VERTEX_TX3_4I_RQ_Q__SHIFT			16
+
+#define NV20_3D_VERTEX_FOG_1F					0x00001698
+
+#define NV20_3D_EDGEFLAG_ENABLE					0x000016bc
+
+#define NV20_3D_VERTEX_ATTR_4F(i0)			       (0x00001a00 + 0x10*(i0))
+#define NV20_3D_VERTEX_ATTR_4F__ESIZE				0x00000010
+#define NV20_3D_VERTEX_ATTR_4F__LEN				0x00000010
+
+
+#define NV20_3D_VERTEX_ATTR_4F_X(i0)			       (0x00001a00 + 0x10*(i0))
+
+#define NV20_3D_VERTEX_ATTR_4F_Y(i0)			       (0x00001a04 + 0x10*(i0))
+
+#define NV20_3D_VERTEX_ATTR_4F_Z(i0)			       (0x00001a08 + 0x10*(i0))
+
+#define NV20_3D_VERTEX_ATTR_4F_W(i0)			       (0x00001a0c + 0x10*(i0))
+
+
+#define NV20_3D_DMA_VTXBUF0					0x0000019c
+
+#define NV20_3D_DMA_VTXBUF1					0x000001a0
+
+#define NV20_3D_VTXBUF_VALIDATE					0x00001710
+
+
+#define NV20_3D_VTXBUF_OFFSET(i0)			       (0x00001720 + 0x4*(i0))
+#define NV20_3D_VTXBUF_OFFSET_DMA1				0x80000000
+#define NV20_3D_VTXBUF_OFFSET_OFFSET__MASK			0x0fffffff
+#define NV20_3D_VTXBUF_OFFSET_OFFSET__SHIFT			0
+
+#define NV20_3D_VTXBUF_FMT(i0)				       (0x00001760 + 0x4*(i0))
+#define NV20_3D_VTXBUF_FMT_TYPE__MASK				0x0000000f
+#define NV20_3D_VTXBUF_FMT_TYPE__SHIFT				0
+#define NV20_3D_VTXBUF_FMT_TYPE_FLOAT				0x00000002
+#define NV20_3D_VTXBUF_FMT_TYPE_UBYTE				0x00000004
+#define NV20_3D_VTXBUF_FMT_TYPE_USHORT				0x00000005
+#define NV20_3D_VTXBUF_FMT_SIZE__MASK				0x000000f0
+#define NV20_3D_VTXBUF_FMT_SIZE__SHIFT				4
+#define NV20_3D_VTXBUF_FMT_STRIDE__MASK				0x0000ff00
+#define NV20_3D_VTXBUF_FMT_STRIDE__SHIFT			8
+
+#define NV20_3D_VERTEX_BEGIN_END				0x000017fc
+#define NV20_3D_VERTEX_BEGIN_END_STOP				0x00000000
+#define NV20_3D_VERTEX_BEGIN_END_POINTS				0x00000001
+#define NV20_3D_VERTEX_BEGIN_END_LINES				0x00000002
+#define NV20_3D_VERTEX_BEGIN_END_LINE_LOOP			0x00000003
+#define NV20_3D_VERTEX_BEGIN_END_LINE_STRIP			0x00000004
+#define NV20_3D_VERTEX_BEGIN_END_TRIANGLES			0x00000005
+#define NV20_3D_VERTEX_BEGIN_END_TRIANGLE_STRIP			0x00000006
+#define NV20_3D_VERTEX_BEGIN_END_TRIANGLE_FAN			0x00000007
+#define NV20_3D_VERTEX_BEGIN_END_QUADS				0x00000008
+#define NV20_3D_VERTEX_BEGIN_END_QUAD_STRIP			0x00000009
+#define NV20_3D_VERTEX_BEGIN_END_POLYGON			0x0000000a
+
+#define NV20_3D_VTXBUF_ELEMENT_U16				0x00001800
+#define NV20_3D_VTXBUF_ELEMENT_U16_I0__MASK			0x0000ffff
+#define NV20_3D_VTXBUF_ELEMENT_U16_I0__SHIFT			0
+#define NV20_3D_VTXBUF_ELEMENT_U16_I1__MASK			0xffff0000
+#define NV20_3D_VTXBUF_ELEMENT_U16_I1__SHIFT			16
+
+#define NV20_3D_VTXBUF_ELEMENT_U32				0x00001808
+
+#define NV20_3D_VTXBUF_BATCH					0x00001810
+#define NV20_3D_VTXBUF_BATCH_OFFSET__MASK			0x00ffffff
+#define NV20_3D_VTXBUF_BATCH_OFFSET__SHIFT			0
+#define NV20_3D_VTXBUF_BATCH_COUNT__MASK			0xff000000
+#define NV20_3D_VTXBUF_BATCH_COUNT__SHIFT			24
+
+#define NV20_3D_VTXBUF_DATA					0x00001818
+
+
+#define NV20_3D_ENGINE						0x00001e94
+#define NV20_3D_ENGINE_VP					0x00000002
+#define NV20_3D_ENGINE_FIXED					0x00000004
+
+#define NV20_3D_VP_UPLOAD_INST(i0)			       (0x00000b00 + 0x4*(i0))
+#define NV20_3D_VP_UPLOAD_INST__ESIZE				0x00000004
+#define NV20_3D_VP_UPLOAD_INST__LEN				0x00000004
+
+#define NV20_3D_VP_UPLOAD_CONST(i0)			       (0x00000b80 + 0x4*(i0))
+#define NV20_3D_VP_UPLOAD_CONST__ESIZE				0x00000004
+#define NV20_3D_VP_UPLOAD_CONST__LEN				0x00000004
+
+#define NV20_3D_VP_UPLOAD_FROM_ID				0x00001e9c
+
+#define NV20_3D_VP_START_FROM_ID				0x00001ea0
+
+#define NV20_3D_VP_UPLOAD_CONST_ID				0x00001ea4
+
+
+
+#define NV20_3D_MODELVIEW_MATRIX(i0, i1)		       (0x00000480 + 0x40*(i0) + 0x4*(i1))
+#define NV20_3D_MODELVIEW_MATRIX__ESIZE				0x00000004
+#define NV20_3D_MODELVIEW_MATRIX__LEN				0x00000010
+
+#define NV20_3D_INVERSE_MODELVIEW_MATRIX(i0, i1)	       (0x00000580 + 0x40*(i0) + 0x4*(i1))
+#define NV20_3D_INVERSE_MODELVIEW_MATRIX__ESIZE			0x00000004
+#define NV20_3D_INVERSE_MODELVIEW_MATRIX__LEN			0x00000010
+
+#define NV20_3D_PROJECTION_MATRIX(i0)			       (0x00000680 + 0x4*(i0))
+#define NV20_3D_PROJECTION_MATRIX__ESIZE			0x00000004
+#define NV20_3D_PROJECTION_MATRIX__LEN				0x00000010
+
+#define NV20_3D_VIEWPORT_TRANSLATE				0x00000a20
+
+
+#define NV20_3D_VIEWPORT_TRANSLATE_X				0x00000a20
+
+#define NV20_3D_VIEWPORT_TRANSLATE_Y				0x00000a24
+
+#define NV20_3D_VIEWPORT_TRANSLATE_Z				0x00000a28
+
+#define NV20_3D_VIEWPORT_TRANSLATE_W				0x00000a2c
+
+#define NV20_3D_VIEWPORT_SCALE					0x00000af0
+
+
+#define NV20_3D_VIEWPORT_SCALE_X				0x00000af0
+
+#define NV20_3D_VIEWPORT_SCALE_Y				0x00000af4
+
+#define NV20_3D_VIEWPORT_SCALE_Z				0x00000af8
+
+#define NV20_3D_VIEWPORT_SCALE_W				0x00000afc
+
+
+#define NV20_3D_NORMALIZE_ENABLE				0x000003a4
+
+#define NV20_3D_SEPARATE_SPECULAR_ENABLE			0x000003b8
+
+#define NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE			0x000017c4
+
+#define NV20_3D_LIGHT_MODEL					0x00000294
+#define NV20_3D_LIGHT_MODEL_VIEWER__MASK			0x00030000
+#define NV20_3D_LIGHT_MODEL_VIEWER__SHIFT			16
+#define NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL			0x00020000
+#define NV20_3D_LIGHT_MODEL_VIEWER_LOCAL			0x00030000
+#define NV20_3D_LIGHT_MODEL_SEPARATE_SPECULAR			0x00000001
+
+#define NV20_3D_ENABLED_LIGHTS					0x000003bc
+#define NV20_3D_ENABLED_LIGHTS_0__MASK				0x00000003
+#define NV20_3D_ENABLED_LIGHTS_0__SHIFT				0
+#define NV20_3D_ENABLED_LIGHTS_0_DISABLED			0x00000000
+#define NV20_3D_ENABLED_LIGHTS_0_NONPOSITIONAL			0x00000001
+#define NV20_3D_ENABLED_LIGHTS_0_POSITIONAL			0x00000002
+#define NV20_3D_ENABLED_LIGHTS_0_DIRECTIONAL			0x00000003
+#define NV20_3D_ENABLED_LIGHTS_1__MASK				0x0000000c
+#define NV20_3D_ENABLED_LIGHTS_1__SHIFT				2
+#define NV20_3D_ENABLED_LIGHTS_1_DISABLED			0x00000000
+#define NV20_3D_ENABLED_LIGHTS_1_NONPOSITIONAL			0x00000004
+#define NV20_3D_ENABLED_LIGHTS_1_POSITIONAL			0x00000008
+#define NV20_3D_ENABLED_LIGHTS_1_DIRECTIONAL			0x0000000c
+#define NV20_3D_ENABLED_LIGHTS_2__MASK				0x00000030
+#define NV20_3D_ENABLED_LIGHTS_2__SHIFT				4
+#define NV20_3D_ENABLED_LIGHTS_2_DISABLED			0x00000000
+#define NV20_3D_ENABLED_LIGHTS_2_NONPOSITIONAL			0x00000010
+#define NV20_3D_ENABLED_LIGHTS_2_POSITIONAL			0x00000020
+#define NV20_3D_ENABLED_LIGHTS_2_DIRECTIONAL			0x00000030
+#define NV20_3D_ENABLED_LIGHTS_3__MASK				0x000000c0
+#define NV20_3D_ENABLED_LIGHTS_3__SHIFT				6
+#define NV20_3D_ENABLED_LIGHTS_3_DISABLED			0x00000000
+#define NV20_3D_ENABLED_LIGHTS_3_NONPOSITIONAL			0x00000040
+#define NV20_3D_ENABLED_LIGHTS_3_POSITIONAL			0x00000080
+#define NV20_3D_ENABLED_LIGHTS_3_DIRECTIONAL			0x000000c0
+#define NV20_3D_ENABLED_LIGHTS_4__MASK				0x00000300
+#define NV20_3D_ENABLED_LIGHTS_4__SHIFT				8
+#define NV20_3D_ENABLED_LIGHTS_4_DISABLED			0x00000000
+#define NV20_3D_ENABLED_LIGHTS_4_NONPOSITIONAL			0x00000100
+#define NV20_3D_ENABLED_LIGHTS_4_POSITIONAL			0x00000200
+#define NV20_3D_ENABLED_LIGHTS_4_DIRECTIONAL			0x00000300
+#define NV20_3D_ENABLED_LIGHTS_5__MASK				0x00000c00
+#define NV20_3D_ENABLED_LIGHTS_5__SHIFT				10
+#define NV20_3D_ENABLED_LIGHTS_5_DISABLED			0x00000000
+#define NV20_3D_ENABLED_LIGHTS_5_NONPOSITIONAL			0x00000400
+#define NV20_3D_ENABLED_LIGHTS_5_POSITIONAL			0x00000800
+#define NV20_3D_ENABLED_LIGHTS_5_DIRECTIONAL			0x00000c00
+#define NV20_3D_ENABLED_LIGHTS_6__MASK				0x00003000
+#define NV20_3D_ENABLED_LIGHTS_6__SHIFT				12
+#define NV20_3D_ENABLED_LIGHTS_6_DISABLED			0x00000000
+#define NV20_3D_ENABLED_LIGHTS_6_NONPOSITIONAL			0x00001000
+#define NV20_3D_ENABLED_LIGHTS_6_POSITIONAL			0x00002000
+#define NV20_3D_ENABLED_LIGHTS_6_DIRECTIONAL			0x00003000
+#define NV20_3D_ENABLED_LIGHTS_7__MASK				0x0000c000
+#define NV20_3D_ENABLED_LIGHTS_7__SHIFT				14
+#define NV20_3D_ENABLED_LIGHTS_7_DISABLED			0x00000000
+#define NV20_3D_ENABLED_LIGHTS_7_NONPOSITIONAL			0x00004000
+#define NV20_3D_ENABLED_LIGHTS_7_POSITIONAL			0x00008000
+#define NV20_3D_ENABLED_LIGHTS_7_DIRECTIONAL			0x0000c000
+
+#define NV20_3D_COLOR_MATERIAL					0x00000298
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION__MASK		0x00000003
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION__SHIFT		0
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_OFF		0x00000000
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL1		0x00000001
+#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL2		0x00000002
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT__MASK		0x0000000c
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT__SHIFT		2
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_OFF		0x00000000
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL1		0x00000004
+#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL2		0x00000008
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE__MASK		0x00000030
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE__SHIFT		4
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_OFF		0x00000000
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL1		0x00000010
+#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL2		0x00000020
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR__MASK		0x000000c0
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR__SHIFT		6
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_OFF		0x00000000
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL1		0x00000040
+#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL2		0x00000080
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION__MASK		0x00000300
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION__SHIFT		8
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_OFF		0x00000000
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL1		0x00000100
+#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL2		0x00000200
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT__MASK		0x00000c00
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT__SHIFT		10
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_OFF			0x00000000
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL1		0x00000400
+#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL2		0x00000800
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE__MASK		0x00003000
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE__SHIFT		12
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_OFF			0x00000000
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL1		0x00001000
+#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL2		0x00002000
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR__MASK		0x0000c000
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR__SHIFT		14
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_OFF		0x00000000
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL1		0x00004000
+#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL2		0x00008000
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT				0x000003a8
+
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT_R				0x000003a8
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT_G				0x000003ac
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT_B				0x000003b0
+
+#define NV20_3D_MATERIAL_FACTOR_BACK				0x000017b0
+
+
+#define NV20_3D_MATERIAL_FACTOR_BACK_R				0x000017b0
+
+#define NV20_3D_MATERIAL_FACTOR_BACK_G				0x000017b4
+
+#define NV20_3D_MATERIAL_FACTOR_BACK_B				0x000017b8
+
+#define NV20_3D_MATERIAL_FACTOR_FRONT_A				0x000003b4
+
+#define NV20_3D_MATERIAL_FACTOR_BACK_A				0x000017ac
+
+#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT			0x00000a10
+
+
+#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_R			0x00000a10
+
+#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_G			0x00000a14
+
+#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_B			0x00000a18
+
+#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT			0x000017a0
+
+
+#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_R			0x000017a0
+
+#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_G			0x000017a4
+
+#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_B			0x000017a8
+
+#define NV20_3D_FRONT_MATERIAL_SHININESS(i0)		       (0x000009e0 + 0x4*(i0))
+#define NV20_3D_FRONT_MATERIAL_SHININESS__ESIZE			0x00000004
+#define NV20_3D_FRONT_MATERIAL_SHININESS__LEN			0x00000006
+
+#define NV20_3D_BACK_MATERIAL_SHININESS(i0)		       (0x00001e28 + 0x4*(i0))
+#define NV20_3D_BACK_MATERIAL_SHININESS__ESIZE			0x00000004
+#define NV20_3D_BACK_MATERIAL_SHININESS__LEN			0x00000006
+
+
+
+#define NV20_3D_LIGHT_FRONT_AMBIENT(i0)			       (0x00001000 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_FRONT_AMBIENT_R(i0)		       (0x00001000 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_AMBIENT_G(i0)		       (0x00001004 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_AMBIENT_B(i0)		       (0x00001008 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_DIFFUSE(i0)			       (0x0000100c + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_FRONT_DIFFUSE_R(i0)		       (0x0000100c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_DIFFUSE_G(i0)		       (0x00001010 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_DIFFUSE_B(i0)		       (0x00001014 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_SPECULAR(i0)		       (0x00001018 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_FRONT_SPECULAR_R(i0)		       (0x00001018 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_SPECULAR_G(i0)		       (0x0000101c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_FRONT_SPECULAR_B(i0)		       (0x00001020 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_BACK_AMBIENT(i0)			       (0x00000c00 + 0x40*(i0))
+
+
+#define NV20_3D_LIGHT_BACK_AMBIENT_R(i0)		       (0x00000c00 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_AMBIENT_G(i0)		       (0x00000c04 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_AMBIENT_B(i0)		       (0x00000c08 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_DIFFUSE(i0)			       (0x00000c0c + 0x40*(i0))
+
+
+#define NV20_3D_LIGHT_BACK_DIFFUSE_R(i0)		       (0x00000c0c + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_DIFFUSE_G(i0)		       (0x00000c10 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_DIFFUSE_B(i0)		       (0x00000c14 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_SPECULAR(i0)			       (0x00000c18 + 0x40*(i0))
+
+
+#define NV20_3D_LIGHT_BACK_SPECULAR_R(i0)		       (0x00000c18 + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_SPECULAR_G(i0)		       (0x00000c1c + 0x40*(i0))
+
+#define NV20_3D_LIGHT_BACK_SPECULAR_B(i0)		       (0x00000c20 + 0x40*(i0))
+
+
+#define NV20_3D_LIGHT_HALF_VECTOR(i0)			       (0x00001028 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_HALF_VECTOR_X(i0)			       (0x00001028 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_HALF_VECTOR_Y(i0)			       (0x0000102c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_HALF_VECTOR_Z(i0)			       (0x00001030 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_DIRECTION(i0)			       (0x00001034 + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_DIRECTION_X(i0)			       (0x00001034 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_DIRECTION_Y(i0)			       (0x00001038 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_DIRECTION_Z(i0)			       (0x0000103c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_SPOT_CUTOFF(i0, i1)		       (0x00001040 + 0x80*(i0) + 0x4*(i1))
+#define NV20_3D_LIGHT_SPOT_CUTOFF__ESIZE			0x00000004
+#define NV20_3D_LIGHT_SPOT_CUTOFF__LEN				0x00000007
+
+#define NV20_3D_LIGHT_POSITION(i0)			       (0x0000105c + 0x80*(i0))
+
+
+#define NV20_3D_LIGHT_POSITION_X(i0)			       (0x0000105c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_POSITION_Y(i0)			       (0x00001060 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_POSITION_Z(i0)			       (0x00001064 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_ATTENUATION(i0)			       (0x00001068 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_ATTENUATION_CONSTANT(i0)		       (0x00001068 + 0x80*(i0))
+
+#define NV20_3D_LIGHT_ATTENUATION_LINEAR(i0)		       (0x0000106c + 0x80*(i0))
+
+#define NV20_3D_LIGHT_ATTENUATION_QUADRATIC(i0)		       (0x00001070 + 0x80*(i0))
+
+
+#define NV20_3D_FOG_MODE					0x0000029c
+#define NV20_3D_FOG_MODE_LINEAR_UNSIGNED			0x00000804
+#define NV20_3D_FOG_MODE_LINEAR_SIGNED				0x00002601
+#define NV20_3D_FOG_MODE_EXP_UNSIGNED				0x00000802
+#define NV20_3D_FOG_MODE_EXP_SIGNED				0x00000800
+#define NV20_3D_FOG_MODE_EXP2_UNSIGNED				0x00000803
+#define NV20_3D_FOG_MODE_EXP2_SIGNED				0x00000801
+
+#define NV20_3D_FOG_COORD					0x000002a0
+#define NV20_3D_FOG_COORD_DIST_RADIAL				0x00000001
+#define NV20_3D_FOG_COORD_DIST_ORTHOGONAL			0x00000002
+#define NV20_3D_FOG_COORD_DIST_ORTHOGONAL_ABS			0x00000003
+#define NV20_3D_FOG_COORD_FOG					0x00000006
+
+#define NV20_3D_FOG_ENABLE					0x000002a4
+
+#define NV20_3D_FOG_COLOR					0x000002a8
+#define NV20_3D_FOG_COLOR_R__MASK				0x000000ff
+#define NV20_3D_FOG_COLOR_R__SHIFT				0
+#define NV20_3D_FOG_COLOR_G__MASK				0x0000ff00
+#define NV20_3D_FOG_COLOR_G__SHIFT				8
+#define NV20_3D_FOG_COLOR_B__MASK				0x00ff0000
+#define NV20_3D_FOG_COLOR_B__SHIFT				16
+#define NV20_3D_FOG_COLOR_A__MASK				0xff000000
+#define NV20_3D_FOG_COLOR_A__SHIFT				24
+
+#define NV20_3D_FOG_COEFF(i0)				       (0x000009c0 + 0x4*(i0))
+#define NV20_3D_FOG_COEFF__ESIZE				0x00000004
+#define NV20_3D_FOG_COEFF__LEN					0x00000003
+
+
+
+#define NV20_3D_TEX_GEN_MODE(i0, i1)			       (0x000003c0 + 0x10*(i0) + 0x4*(i1))
+#define NV20_3D_TEX_GEN_MODE__ESIZE				0x00000004
+#define NV20_3D_TEX_GEN_MODE__LEN				0x00000004
+#define NV20_3D_TEX_GEN_MODE_FALSE				0x00000000
+#define NV20_3D_TEX_GEN_MODE_EYE_LINEAR				0x00002400
+#define NV20_3D_TEX_GEN_MODE_OBJECT_LINEAR			0x00002401
+#define NV20_3D_TEX_GEN_MODE_SPHERE_MAP				0x00002402
+#define NV20_3D_TEX_GEN_MODE_NORMAL_MAP				0x00008511
+#define NV20_3D_TEX_GEN_MODE_REFLECTION_MAP			0x00008512
+
+
+#define NV20_3D_TEX_GEN_COEFF(i0, i1)			       (0x00000840 + 0x40*(i0) + 0x10*(i1))
+#define NV20_3D_TEX_GEN_COEFF__ESIZE				0x00000010
+#define NV20_3D_TEX_GEN_COEFF__LEN				0x00000004
+
+#define NV20_3D_TEX_GEN_COEFF_A(i0, i1)			       (0x00000840 + 0x40*(i0) + 0x10*(i1))
+
+#define NV20_3D_TEX_GEN_COEFF_B(i0, i1)			       (0x00000844 + 0x40*(i0) + 0x10*(i1))
+
+#define NV20_3D_TEX_GEN_COEFF_C(i0, i1)			       (0x00000848 + 0x40*(i0) + 0x10*(i1))
+
+#define NV20_3D_TEX_GEN_COEFF_D(i0, i1)			       (0x0000084c + 0x40*(i0) + 0x10*(i1))
+
+#define NV20_3D_TEX_MATRIX_ENABLE(i0)			       (0x00000420 + 0x4*(i0))
+#define NV20_3D_TEX_MATRIX_ENABLE__ESIZE			0x00000004
+#define NV20_3D_TEX_MATRIX_ENABLE__LEN				0x00000004
+
+
+#define NV20_3D_TEX_MATRIX(i0, i1)			       (0x000006c0 + 0x40*(i0) + 0x4*(i1))
+#define NV20_3D_TEX_MATRIX__ESIZE				0x00000004
+#define NV20_3D_TEX_MATRIX__LEN					0x00000010
+
+#define NV20_3D_TEX_SHADER_CULL_MODE				0x000017f8
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S__MASK		0x00000001
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S__SHIFT		0
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S_LESS			0x00000001
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T__MASK		0x00000002
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T__SHIFT		1
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T_LESS			0x00000002
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R__MASK		0x00000004
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R__SHIFT		2
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R_LESS			0x00000004
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q__MASK		0x00000008
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q__SHIFT		3
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q_LESS			0x00000008
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S__MASK		0x00000010
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S__SHIFT		4
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S_LESS			0x00000010
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T__MASK		0x00000020
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T__SHIFT		5
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T_LESS			0x00000020
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R__MASK		0x00000040
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R__SHIFT		6
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R_LESS			0x00000040
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q__MASK		0x00000080
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q__SHIFT		7
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q_LESS			0x00000080
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S__MASK		0x00000100
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S__SHIFT		8
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S_LESS			0x00000100
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T__MASK		0x00000200
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T__SHIFT		9
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T_LESS			0x00000200
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R__MASK		0x00000400
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R__SHIFT		10
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R_LESS			0x00000400
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q__MASK		0x00000800
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q__SHIFT		11
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q_LESS			0x00000800
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S__MASK		0x00001000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S__SHIFT		12
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S_LESS			0x00001000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T__MASK		0x00002000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T__SHIFT		13
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T_LESS			0x00002000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R__MASK		0x00004000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R__SHIFT		14
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R_LESS			0x00004000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q__MASK		0x00008000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q__SHIFT		15
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q_GEQUAL		0x00000000
+#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q_LESS			0x00008000
+
+#define NV20_3D_TEX_SHADER_CONST_EYE				0x0000181c
+
+
+#define NV20_3D_TEX_SHADER_CONST_EYE_X				0x0000181c
+
+#define NV20_3D_TEX_SHADER_CONST_EYE_Y				0x00001820
+
+#define NV20_3D_TEX_SHADER_CONST_EYE_Z				0x00001824
+
+
+#define NV20_3D_TEX_SHADER_OFFSET_MATRIX(i0, i1)	       (0x00001b28 + 0x40*(i0) + 0x4*(i1))
+#define NV20_3D_TEX_SHADER_OFFSET_MATRIX__ESIZE			0x00000004
+#define NV20_3D_TEX_SHADER_OFFSET_MATRIX__LEN			0x00000004
+
+#define NV20_3D_TEX_RCOMP					0x00001e6c
+#define NV20_3D_TEX_RCOMP_NEVER					0x00000000
+#define NV20_3D_TEX_RCOMP_GREATER				0x00000001
+#define NV20_3D_TEX_RCOMP_EQUAL					0x00000002
+#define NV20_3D_TEX_RCOMP_GEQUAL				0x00000003
+#define NV20_3D_TEX_RCOMP_LESS					0x00000004
+#define NV20_3D_TEX_RCOMP_NOTEQUAL				0x00000005
+#define NV20_3D_TEX_RCOMP_LEQUAL				0x00000006
+#define NV20_3D_TEX_RCOMP_ALWAYS				0x00000007
+
+#define NV20_3D_TEX_SHADER_OP					0x00001e70
+#define NV20_3D_TEX_SHADER_OP_TX0__MASK				0x0000001f
+#define NV20_3D_TEX_SHADER_OP_TX0__SHIFT			0
+#define NV20_3D_TEX_SHADER_OP_TX0_NONE				0x00000000
+#define NV20_3D_TEX_SHADER_OP_TX0_TEXTURE_2D			0x00000001
+#define NV20_3D_TEX_SHADER_OP_TX0_PASS_THROUGH			0x00000004
+#define NV20_3D_TEX_SHADER_OP_TX0_CULL_FRAGMENT			0x00000005
+#define NV20_3D_TEX_SHADER_OP_TX0_OFFSET_TEXTURE_2D		0x00000006
+#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT_TEXTURE_2D	0x00000009
+#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT_DEPTH_REPLACE	0x0000000a
+#define NV20_3D_TEX_SHADER_OP_TX0_DEPENDANT_AR_TEXTURE_2D	0x0000000f
+#define NV20_3D_TEX_SHADER_OP_TX0_DEPENDANT_GB_TEXTURE_2D	0x00000010
+#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT			0x00000011
+#define NV20_3D_TEX_SHADER_OP_TX1__MASK				0x000003e0
+#define NV20_3D_TEX_SHADER_OP_TX1__SHIFT			5
+#define NV20_3D_TEX_SHADER_OP_TX1_NONE				0x00000000
+#define NV20_3D_TEX_SHADER_OP_TX1_TEXTURE_2D			0x00000020
+#define NV20_3D_TEX_SHADER_OP_TX1_PASS_THROUGH			0x00000080
+#define NV20_3D_TEX_SHADER_OP_TX1_CULL_FRAGMENT			0x000000a0
+#define NV20_3D_TEX_SHADER_OP_TX1_OFFSET_TEXTURE_2D		0x000000c0
+#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT_TEXTURE_2D	0x00000120
+#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT_DEPTH_REPLACE	0x00000140
+#define NV20_3D_TEX_SHADER_OP_TX1_DEPENDANT_AR_TEXTURE_2D	0x000001e0
+#define NV20_3D_TEX_SHADER_OP_TX1_DEPENDANT_GB_TEXTURE_2D	0x00000200
+#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT			0x00000220
+#define NV20_3D_TEX_SHADER_OP_TX2__MASK				0x00007c00
+#define NV20_3D_TEX_SHADER_OP_TX2__SHIFT			10
+#define NV20_3D_TEX_SHADER_OP_TX2_NONE				0x00000000
+#define NV20_3D_TEX_SHADER_OP_TX2_TEXTURE_2D			0x00000400
+#define NV20_3D_TEX_SHADER_OP_TX2_PASS_THROUGH			0x00001000
+#define NV20_3D_TEX_SHADER_OP_TX2_CULL_FRAGMENT			0x00001400
+#define NV20_3D_TEX_SHADER_OP_TX2_OFFSET_TEXTURE_2D		0x00001800
+#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT_TEXTURE_2D	0x00002400
+#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT_DEPTH_REPLACE	0x00002800
+#define NV20_3D_TEX_SHADER_OP_TX2_DEPENDANT_AR_TEXTURE_2D	0x00003c00
+#define NV20_3D_TEX_SHADER_OP_TX2_DEPENDANT_GB_TEXTURE_2D	0x00004000
+#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT			0x00004400
+#define NV20_3D_TEX_SHADER_OP_TX3__MASK				0x000f8000
+#define NV20_3D_TEX_SHADER_OP_TX3__SHIFT			15
+#define NV20_3D_TEX_SHADER_OP_TX3_NONE				0x00000000
+#define NV20_3D_TEX_SHADER_OP_TX3_TEXTURE_2D			0x00008000
+#define NV20_3D_TEX_SHADER_OP_TX3_PASS_THROUGH			0x00020000
+#define NV20_3D_TEX_SHADER_OP_TX3_CULL_FRAGMENT			0x00028000
+#define NV20_3D_TEX_SHADER_OP_TX3_OFFSET_TEXTURE_2D		0x00030000
+#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT_TEXTURE_2D	0x00048000
+#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT_DEPTH_REPLACE	0x00050000
+#define NV20_3D_TEX_SHADER_OP_TX3_DEPENDANT_AR_TEXTURE_2D	0x00078000
+#define NV20_3D_TEX_SHADER_OP_TX3_DEPENDANT_GB_TEXTURE_2D	0x00080000
+#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT			0x00088000
+
+#define NV20_3D_TEX_SHADER_DOTMAPPING				0x00001e74
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX0__MASK			0x0000000f
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX0__SHIFT		0
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX1__MASK			0x000000f0
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX1__SHIFT		4
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX2__MASK			0x00000f00
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX2__SHIFT		8
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX3__MASK			0x0000f000
+#define NV20_3D_TEX_SHADER_DOTMAPPING_TX3__SHIFT		12
+
+#define NV20_3D_TEX_SHADER_PREVIOUS				0x00001e78
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX0__MASK			0x00000f00
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX0__SHIFT			8
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX1__MASK			0x0000f000
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX1__SHIFT			12
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX2__MASK			0x00030000
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX2__SHIFT			16
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX3__MASK			0x00300000
+#define NV20_3D_TEX_SHADER_PREVIOUS_TX3__SHIFT			20
+
+
+#define NV20_3D_TEX_OFFSET(i0)				       (0x00001b00 + 0x40*(i0))
+
+#define NV20_3D_TEX_FORMAT(i0)				       (0x00001b04 + 0x40*(i0))
+#define NV20_3D_TEX_FORMAT_DMA0					0x00000001
+#define NV20_3D_TEX_FORMAT_DMA1					0x00000002
+#define NV20_3D_TEX_FORMAT_CUBIC				0x00000004
+#define NV20_3D_TEX_FORMAT_NO_BORDER				0x00000008
+#define NV20_3D_TEX_FORMAT_DIMS__MASK				0x000000f0
+#define NV20_3D_TEX_FORMAT_DIMS__SHIFT				4
+#define NV20_3D_TEX_FORMAT_DIMS_1D				0x00000010
+#define NV20_3D_TEX_FORMAT_DIMS_2D				0x00000020
+#define NV20_3D_TEX_FORMAT_DIMS_3D				0x00000030
+#define NV20_3D_TEX_FORMAT_FORMAT__MASK				0x0000ff00
+#define NV20_3D_TEX_FORMAT_FORMAT__SHIFT			8
+#define NV20_3D_TEX_FORMAT_FORMAT_L8				0x00000000
+#define NV20_3D_TEX_FORMAT_FORMAT_I8				0x00000100
+#define NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5			0x00000200
+#define NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4			0x00000400
+#define NV20_3D_TEX_FORMAT_FORMAT_R5G6B5			0x00000500
+#define NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8			0x00000600
+#define NV20_3D_TEX_FORMAT_FORMAT_X8R8G8B8			0x00000700
+#define NV20_3D_TEX_FORMAT_FORMAT_INDEX8			0x00000b00
+#define NV20_3D_TEX_FORMAT_FORMAT_DXT1				0x00000c00
+#define NV20_3D_TEX_FORMAT_FORMAT_DXT3				0x00000e00
+#define NV20_3D_TEX_FORMAT_FORMAT_DXT5				0x00000f00
+#define NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT			0x00001000
+#define NV20_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT			0x00001100
+#define NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT			0x00001200
+#define NV20_3D_TEX_FORMAT_FORMAT_L8_RECT			0x00001300
+#define NV20_3D_TEX_FORMAT_FORMAT_DSDT8_RECT			0x00001700
+#define NV20_3D_TEX_FORMAT_FORMAT_A8L8				0x00001a00
+#define NV20_3D_TEX_FORMAT_FORMAT_I8_RECT			0x00001b00
+#define NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4_RECT			0x00001d00
+#define NV20_3D_TEX_FORMAT_FORMAT_R8G8B8_RECT			0x00001e00
+#define NV20_3D_TEX_FORMAT_FORMAT_A8L8_RECT			0x00002000
+#define NV20_3D_TEX_FORMAT_FORMAT_Z24				0x00002a00
+#define NV20_3D_TEX_FORMAT_FORMAT_Z24_RECT			0x00002b00
+#define NV20_3D_TEX_FORMAT_FORMAT_Z16				0x00002c00
+#define NV20_3D_TEX_FORMAT_FORMAT_Z16_RECT			0x00002d00
+#define NV20_3D_TEX_FORMAT_FORMAT_DSDT8				0x00002800
+#define NV20_3D_TEX_FORMAT_FORMAT_HILO16			0x00003300
+#define NV20_3D_TEX_FORMAT_FORMAT_HILO16_RECT			0x00003600
+#define NV20_3D_TEX_FORMAT_FORMAT_HILO8				0x00004400
+#define NV20_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8			0x00004500
+#define NV20_3D_TEX_FORMAT_FORMAT_HILO8_RECT			0x00004600
+#define NV20_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8_RECT		0x00004700
+#define NV20_3D_TEX_FORMAT_MIPMAP				0x00080000
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_U__MASK			0x00f00000
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT			20
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_V__MASK			0x0f000000
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT			24
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_W__MASK			0xf0000000
+#define NV20_3D_TEX_FORMAT_BASE_SIZE_W__SHIFT			28
+
+#define NV20_3D_TEX_WRAP(i0)				       (0x00001b08 + 0x40*(i0))
+#define NV20_3D_TEX_WRAP_S__MASK				0x000000ff
+#define NV20_3D_TEX_WRAP_S__SHIFT				0
+#define NV20_3D_TEX_WRAP_S_REPEAT				0x00000001
+#define NV20_3D_TEX_WRAP_S_MIRRORED_REPEAT			0x00000002
+#define NV20_3D_TEX_WRAP_S_CLAMP_TO_EDGE			0x00000003
+#define NV20_3D_TEX_WRAP_S_CLAMP_TO_BORDER			0x00000004
+#define NV20_3D_TEX_WRAP_S_CLAMP				0x00000005
+#define NV20_3D_TEX_WRAP_T__MASK				0x00000f00
+#define NV20_3D_TEX_WRAP_T__SHIFT				8
+#define NV20_3D_TEX_WRAP_T_REPEAT				0x00000100
+#define NV20_3D_TEX_WRAP_T_MIRRORED_REPEAT			0x00000200
+#define NV20_3D_TEX_WRAP_T_CLAMP_TO_EDGE			0x00000300
+#define NV20_3D_TEX_WRAP_T_CLAMP_TO_BORDER			0x00000400
+#define NV20_3D_TEX_WRAP_T_CLAMP				0x00000500
+#define NV20_3D_TEX_WRAP_R__MASK				0x000f0000
+#define NV20_3D_TEX_WRAP_R__SHIFT				16
+#define NV20_3D_TEX_WRAP_R_REPEAT				0x00010000
+#define NV20_3D_TEX_WRAP_R_MIRRORED_REPEAT			0x00020000
+#define NV20_3D_TEX_WRAP_R_CLAMP_TO_EDGE			0x00030000
+#define NV20_3D_TEX_WRAP_R_CLAMP_TO_BORDER			0x00040000
+#define NV20_3D_TEX_WRAP_R_CLAMP				0x00050000
+
+#define NV20_3D_TEX_ENABLE(i0)				       (0x00001b0c + 0x40*(i0))
+#define NV20_3D_TEX_ENABLE_ANISO__MASK				0x00000030
+#define NV20_3D_TEX_ENABLE_ANISO__SHIFT				4
+#define NV20_3D_TEX_ENABLE_ANISO_NONE				0x00000000
+#define NV20_3D_TEX_ENABLE_ANISO_2X				0x00000010
+#define NV20_3D_TEX_ENABLE_ANISO_4X				0x00000020
+#define NV20_3D_TEX_ENABLE_ANISO_8X				0x00000030
+#define NV20_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK			0x0003c000
+#define NV20_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT		14
+#define NV20_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK			0x3c000000
+#define NV20_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT		26
+#define NV20_3D_TEX_ENABLE_ENABLE				0x40000000
+
+#define NV20_3D_TEX_NPOT_PITCH(i0)			       (0x00001b10 + 0x40*(i0))
+#define NV20_3D_TEX_NPOT_PITCH_PITCH__MASK			0xffff0000
+#define NV20_3D_TEX_NPOT_PITCH_PITCH__SHIFT			16
+
+#define NV20_3D_TEX_FILTER(i0)				       (0x00001b14 + 0x40*(i0))
+#define NV20_3D_TEX_FILTER_LOD_BIAS__MASK			0x00000f00
+#define NV20_3D_TEX_FILTER_LOD_BIAS__SHIFT			8
+#define NV20_3D_TEX_FILTER_MINIFY__MASK				0x000f0000
+#define NV20_3D_TEX_FILTER_MINIFY__SHIFT			16
+#define NV20_3D_TEX_FILTER_MINIFY_NEAREST			0x00010000
+#define NV20_3D_TEX_FILTER_MINIFY_LINEAR			0x00020000
+#define NV20_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST	0x00030000
+#define NV20_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST		0x00040000
+#define NV20_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR		0x00050000
+#define NV20_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR		0x00060000
+#define NV20_3D_TEX_FILTER_MAGNIFY__MASK			0x0f000000
+#define NV20_3D_TEX_FILTER_MAGNIFY__SHIFT			24
+#define NV20_3D_TEX_FILTER_MAGNIFY_NEAREST			0x01000000
+#define NV20_3D_TEX_FILTER_MAGNIFY_LINEAR			0x02000000
+
+#define NV20_3D_TEX_NPOT_SIZE(i0)			       (0x00001b1c + 0x40*(i0))
+#define NV20_3D_TEX_NPOT_SIZE_H__MASK				0x0000ffff
+#define NV20_3D_TEX_NPOT_SIZE_H__SHIFT				0
+#define NV20_3D_TEX_NPOT_SIZE_W__MASK				0xffff0000
+#define NV20_3D_TEX_NPOT_SIZE_W__SHIFT				16
+
+#define NV20_3D_TEX_PALETTE_OFFSET(i0)			       (0x00001b20 + 0x40*(i0))
+
+#define NV20_3D_TEX_BORDER_COLOR(i0)			       (0x00001b24 + 0x40*(i0))
+#define NV20_3D_TEX_BORDER_COLOR_B__MASK			0x000000ff
+#define NV20_3D_TEX_BORDER_COLOR_B__SHIFT			0
+#define NV20_3D_TEX_BORDER_COLOR_G__MASK			0x0000ff00
+#define NV20_3D_TEX_BORDER_COLOR_G__SHIFT			8
+#define NV20_3D_TEX_BORDER_COLOR_R__MASK			0x00ff0000
+#define NV20_3D_TEX_BORDER_COLOR_R__SHIFT			16
+#define NV20_3D_TEX_BORDER_COLOR_A__MASK			0xff000000
+#define NV20_3D_TEX_BORDER_COLOR_A__SHIFT			24
+
+
+
+#define NV20_3D_RC_IN_ALPHA(i0)				       (0x00000260 + 0x4*(i0))
+#define NV20_3D_RC_IN_ALPHA_D_INPUT__MASK			0x0000000f
+#define NV20_3D_RC_IN_ALPHA_D_INPUT__SHIFT			0
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_ZERO			0x00000000
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0		0x00000001
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1		0x00000002
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_FOG				0x00000003
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR		0x00000004
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR		0x00000005
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE0			0x00000008
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE1			0x00000009
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE2			0x0000000a
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE3			0x0000000b
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE0			0x0000000c
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE1			0x0000000d
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV20_3D_RC_IN_ALPHA_D_INPUT_E_TIMES_F			0x0000000f
+#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__MASK		0x00000010
+#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__SHIFT		4
+#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE		0x00000000
+#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA		0x00000010
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING__MASK			0x000000e0
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING__SHIFT			5
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT		0x00000020
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL		0x00000040
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE		0x00000060
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL		0x00000080
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE		0x000000a0
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY		0x000000c0
+#define NV20_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE		0x000000e0
+#define NV20_3D_RC_IN_ALPHA_C_INPUT__MASK			0x00000f00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT__SHIFT			8
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_ZERO			0x00000000
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0		0x00000100
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1		0x00000200
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_FOG				0x00000300
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR		0x00000400
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR		0x00000500
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE0			0x00000800
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE1			0x00000900
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE2			0x00000a00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE3			0x00000b00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE0			0x00000c00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE1			0x00000d00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV20_3D_RC_IN_ALPHA_C_INPUT_E_TIMES_F			0x00000f00
+#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__MASK		0x00001000
+#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__SHIFT		12
+#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE		0x00000000
+#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA		0x00001000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING__MASK			0x0000e000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING__SHIFT			13
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT		0x00002000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL		0x00004000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE		0x00006000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL		0x00008000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE		0x0000a000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY		0x0000c000
+#define NV20_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE		0x0000e000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT__MASK			0x000f0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT__SHIFT			16
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_ZERO			0x00000000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0		0x00010000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1		0x00020000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_FOG				0x00030000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR		0x00040000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR		0x00050000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE0			0x00080000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE1			0x00090000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE2			0x000a0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE3			0x000b0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE0			0x000c0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE1			0x000d0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000e0000
+#define NV20_3D_RC_IN_ALPHA_B_INPUT_E_TIMES_F			0x000f0000
+#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__MASK		0x00100000
+#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__SHIFT		20
+#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE		0x00000000
+#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA		0x00100000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING__MASK			0x00e00000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING__SHIFT			21
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT		0x00200000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL		0x00400000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE		0x00600000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL		0x00800000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE		0x00a00000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY		0x00c00000
+#define NV20_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE		0x00e00000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT__MASK			0x0f000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT__SHIFT			24
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_ZERO			0x00000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0		0x01000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1		0x02000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_FOG				0x03000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR		0x04000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR		0x05000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE0			0x08000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE1			0x09000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE2			0x0a000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE3			0x0b000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE0			0x0c000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE1			0x0d000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0e000000
+#define NV20_3D_RC_IN_ALPHA_A_INPUT_E_TIMES_F			0x0f000000
+#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__MASK		0x10000000
+#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__SHIFT		28
+#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE		0x00000000
+#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA		0x10000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING__MASK			0xe0000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING__SHIFT			29
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT		0x20000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL		0x40000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE		0x60000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL		0x80000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE		0xa0000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY		0xc0000000
+#define NV20_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE		0xe0000000
+
+#define NV20_3D_RC_IN_RGB(i0)				       (0x00000ac0 + 0x4*(i0))
+#define NV20_3D_RC_IN_RGB_D_INPUT__MASK				0x0000000f
+#define NV20_3D_RC_IN_RGB_D_INPUT__SHIFT			0
+#define NV20_3D_RC_IN_RGB_D_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0		0x00000001
+#define NV20_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1		0x00000002
+#define NV20_3D_RC_IN_RGB_D_INPUT_FOG				0x00000003
+#define NV20_3D_RC_IN_RGB_D_INPUT_PRIMARY_COLOR			0x00000004
+#define NV20_3D_RC_IN_RGB_D_INPUT_SECONDARY_COLOR		0x00000005
+#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE0			0x00000008
+#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE1			0x00000009
+#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE2			0x0000000a
+#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE3			0x0000000b
+#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE0			0x0000000c
+#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE1			0x0000000d
+#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV20_3D_RC_IN_RGB_D_INPUT_E_TIMES_F			0x0000000f
+#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE__MASK		0x00000010
+#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE__SHIFT		4
+#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA		0x00000010
+#define NV20_3D_RC_IN_RGB_D_MAPPING__MASK			0x000000e0
+#define NV20_3D_RC_IN_RGB_D_MAPPING__SHIFT			5
+#define NV20_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT		0x00000020
+#define NV20_3D_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL		0x00000040
+#define NV20_3D_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE		0x00000060
+#define NV20_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL		0x00000080
+#define NV20_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE		0x000000a0
+#define NV20_3D_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY		0x000000c0
+#define NV20_3D_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE		0x000000e0
+#define NV20_3D_RC_IN_RGB_C_INPUT__MASK				0x00000f00
+#define NV20_3D_RC_IN_RGB_C_INPUT__SHIFT			8
+#define NV20_3D_RC_IN_RGB_C_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0		0x00000100
+#define NV20_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1		0x00000200
+#define NV20_3D_RC_IN_RGB_C_INPUT_FOG				0x00000300
+#define NV20_3D_RC_IN_RGB_C_INPUT_PRIMARY_COLOR			0x00000400
+#define NV20_3D_RC_IN_RGB_C_INPUT_SECONDARY_COLOR		0x00000500
+#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE0			0x00000800
+#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE1			0x00000900
+#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE2			0x00000a00
+#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE3			0x00000b00
+#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE0			0x00000c00
+#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE1			0x00000d00
+#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV20_3D_RC_IN_RGB_C_INPUT_E_TIMES_F			0x00000f00
+#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE__MASK		0x00001000
+#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE__SHIFT		12
+#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA		0x00001000
+#define NV20_3D_RC_IN_RGB_C_MAPPING__MASK			0x0000e000
+#define NV20_3D_RC_IN_RGB_C_MAPPING__SHIFT			13
+#define NV20_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT		0x00002000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL		0x00004000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE		0x00006000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL		0x00008000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE		0x0000a000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY		0x0000c000
+#define NV20_3D_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE		0x0000e000
+#define NV20_3D_RC_IN_RGB_B_INPUT__MASK				0x000f0000
+#define NV20_3D_RC_IN_RGB_B_INPUT__SHIFT			16
+#define NV20_3D_RC_IN_RGB_B_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0		0x00010000
+#define NV20_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1		0x00020000
+#define NV20_3D_RC_IN_RGB_B_INPUT_FOG				0x00030000
+#define NV20_3D_RC_IN_RGB_B_INPUT_PRIMARY_COLOR			0x00040000
+#define NV20_3D_RC_IN_RGB_B_INPUT_SECONDARY_COLOR		0x00050000
+#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE0			0x00080000
+#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE1			0x00090000
+#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE2			0x000a0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE3			0x000b0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE0			0x000c0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE1			0x000d0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000e0000
+#define NV20_3D_RC_IN_RGB_B_INPUT_E_TIMES_F			0x000f0000
+#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE__MASK		0x00100000
+#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE__SHIFT		20
+#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA		0x00100000
+#define NV20_3D_RC_IN_RGB_B_MAPPING__MASK			0x00e00000
+#define NV20_3D_RC_IN_RGB_B_MAPPING__SHIFT			21
+#define NV20_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT		0x00200000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL		0x00400000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE		0x00600000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL		0x00800000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE		0x00a00000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY		0x00c00000
+#define NV20_3D_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE		0x00e00000
+#define NV20_3D_RC_IN_RGB_A_INPUT__MASK				0x0f000000
+#define NV20_3D_RC_IN_RGB_A_INPUT__SHIFT			24
+#define NV20_3D_RC_IN_RGB_A_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0		0x01000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1		0x02000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_FOG				0x03000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_PRIMARY_COLOR			0x04000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_SECONDARY_COLOR		0x05000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE0			0x08000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE1			0x09000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE2			0x0a000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE3			0x0b000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE0			0x0c000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE1			0x0d000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0e000000
+#define NV20_3D_RC_IN_RGB_A_INPUT_E_TIMES_F			0x0f000000
+#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE__MASK		0x10000000
+#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE__SHIFT		28
+#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA		0x10000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING__MASK			0xe0000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING__SHIFT			29
+#define NV20_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT		0x20000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL		0x40000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE		0x60000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL		0x80000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE		0xa0000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY		0xc0000000
+#define NV20_3D_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE		0xe0000000
+
+#define NV20_3D_RC_CONSTANT_COLOR0(i0)			       (0x00000a60 + 0x4*(i0))
+#define NV20_3D_RC_CONSTANT_COLOR0_B__MASK			0x000000ff
+#define NV20_3D_RC_CONSTANT_COLOR0_B__SHIFT			0
+#define NV20_3D_RC_CONSTANT_COLOR0_G__MASK			0x0000ff00
+#define NV20_3D_RC_CONSTANT_COLOR0_G__SHIFT			8
+#define NV20_3D_RC_CONSTANT_COLOR0_R__MASK			0x00ff0000
+#define NV20_3D_RC_CONSTANT_COLOR0_R__SHIFT			16
+#define NV20_3D_RC_CONSTANT_COLOR0_A__MASK			0xff000000
+#define NV20_3D_RC_CONSTANT_COLOR0_A__SHIFT			24
+
+#define NV20_3D_RC_CONSTANT_COLOR1(i0)			       (0x00000a80 + 0x4*(i0))
+#define NV20_3D_RC_CONSTANT_COLOR1_B__MASK			0x000000ff
+#define NV20_3D_RC_CONSTANT_COLOR1_B__SHIFT			0
+#define NV20_3D_RC_CONSTANT_COLOR1_G__MASK			0x0000ff00
+#define NV20_3D_RC_CONSTANT_COLOR1_G__SHIFT			8
+#define NV20_3D_RC_CONSTANT_COLOR1_R__MASK			0x00ff0000
+#define NV20_3D_RC_CONSTANT_COLOR1_R__SHIFT			16
+#define NV20_3D_RC_CONSTANT_COLOR1_A__MASK			0xff000000
+#define NV20_3D_RC_CONSTANT_COLOR1_A__SHIFT			24
+
+#define NV20_3D_RC_OUT_ALPHA(i0)			       (0x00000aa0 + 0x4*(i0))
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT__MASK			0x0000000f
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT__SHIFT			0
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_ZERO			0x00000000
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0		0x00000001
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1		0x00000002
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_FOG			0x00000003
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR		0x00000004
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR		0x00000005
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0			0x00000008
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1			0x00000009
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2			0x0000000a
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3			0x0000000b
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0			0x0000000c
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE1			0x0000000d
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F		0x0000000f
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT__MASK			0x000000f0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT__SHIFT			4
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_ZERO			0x00000000
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0		0x00000010
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1		0x00000020
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_FOG			0x00000030
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR		0x00000040
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR		0x00000050
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0			0x00000080
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1			0x00000090
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2			0x000000a0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3			0x000000b0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0			0x000000c0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE1			0x000000d0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000000e0
+#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F		0x000000f0
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT__MASK			0x00000f00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT__SHIFT			8
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_ZERO			0x00000000
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0		0x00000100
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1		0x00000200
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_FOG			0x00000300
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR		0x00000400
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR		0x00000500
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0		0x00000800
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1		0x00000900
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2		0x00000a00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3		0x00000b00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0			0x00000c00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1			0x00000d00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F		0x00000f00
+#define NV20_3D_RC_OUT_ALPHA_CD_DOT_PRODUCT			0x00001000
+#define NV20_3D_RC_OUT_ALPHA_AB_DOT_PRODUCT			0x00002000
+#define NV20_3D_RC_OUT_ALPHA_MUX_SUM				0x00004000
+#define NV20_3D_RC_OUT_ALPHA_BIAS__MASK				0x00008000
+#define NV20_3D_RC_OUT_ALPHA_BIAS__SHIFT			15
+#define NV20_3D_RC_OUT_ALPHA_BIAS_NONE				0x00000000
+#define NV20_3D_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF	0x00008000
+#define NV20_3D_RC_OUT_ALPHA_SCALE__MASK			0x00030000
+#define NV20_3D_RC_OUT_ALPHA_SCALE__SHIFT			16
+#define NV20_3D_RC_OUT_ALPHA_SCALE_NONE				0x00000000
+#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO			0x00010000
+#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR		0x00020000
+#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF		0x00030000
+
+#define NV20_3D_RC_OUT_RGB(i0)				       (0x00001e40 + 0x4*(i0))
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT__MASK			0x0000000f
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT__SHIFT			0
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_ZERO			0x00000000
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0		0x00000001
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1		0x00000002
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_FOG			0x00000003
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR		0x00000004
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR		0x00000005
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE0			0x00000008
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE1			0x00000009
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE2			0x0000000a
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE3			0x0000000b
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0			0x0000000c
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE1			0x0000000d
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F			0x0000000f
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT__MASK			0x000000f0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT__SHIFT			4
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_ZERO			0x00000000
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0		0x00000010
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1		0x00000020
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_FOG			0x00000030
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR		0x00000040
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR		0x00000050
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE0			0x00000080
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE1			0x00000090
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE2			0x000000a0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE3			0x000000b0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0			0x000000c0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE1			0x000000d0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000000e0
+#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F			0x000000f0
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT__MASK			0x00000f00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT__SHIFT			8
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_ZERO			0x00000000
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0		0x00000100
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1		0x00000200
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_FOG			0x00000300
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR		0x00000400
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR		0x00000500
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0			0x00000800
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1			0x00000900
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2			0x00000a00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3			0x00000b00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0			0x00000c00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE1			0x00000d00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F			0x00000f00
+#define NV20_3D_RC_OUT_RGB_CD_DOT_PRODUCT			0x00001000
+#define NV20_3D_RC_OUT_RGB_AB_DOT_PRODUCT			0x00002000
+#define NV20_3D_RC_OUT_RGB_MUX_SUM				0x00004000
+#define NV20_3D_RC_OUT_RGB_BIAS__MASK				0x00008000
+#define NV20_3D_RC_OUT_RGB_BIAS__SHIFT				15
+#define NV20_3D_RC_OUT_RGB_BIAS_NONE				0x00000000
+#define NV20_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF	0x00008000
+#define NV20_3D_RC_OUT_RGB_SCALE__MASK				0x00030000
+#define NV20_3D_RC_OUT_RGB_SCALE__SHIFT				16
+#define NV20_3D_RC_OUT_RGB_SCALE_NONE				0x00000000
+#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO			0x00010000
+#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR			0x00020000
+#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF		0x00030000
+
+#define NV20_3D_RC_FINAL0					0x00000288
+#define NV20_3D_RC_FINAL0_D_INPUT__MASK				0x0000000f
+#define NV20_3D_RC_FINAL0_D_INPUT__SHIFT			0
+#define NV20_3D_RC_FINAL0_D_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR0		0x00000001
+#define NV20_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR1		0x00000002
+#define NV20_3D_RC_FINAL0_D_INPUT_FOG				0x00000003
+#define NV20_3D_RC_FINAL0_D_INPUT_PRIMARY_COLOR			0x00000004
+#define NV20_3D_RC_FINAL0_D_INPUT_SECONDARY_COLOR		0x00000005
+#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE0			0x00000008
+#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE1			0x00000009
+#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE2			0x0000000a
+#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE3			0x0000000b
+#define NV20_3D_RC_FINAL0_D_INPUT_SPARE0			0x0000000c
+#define NV20_3D_RC_FINAL0_D_INPUT_SPARE1			0x0000000d
+#define NV20_3D_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0000000e
+#define NV20_3D_RC_FINAL0_D_INPUT_E_TIMES_F			0x0000000f
+#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE__MASK		0x00000010
+#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE__SHIFT		4
+#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE_ALPHA		0x00000010
+#define NV20_3D_RC_FINAL0_D_MAPPING__MASK			0x000000e0
+#define NV20_3D_RC_FINAL0_D_MAPPING__SHIFT			5
+#define NV20_3D_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT		0x00000020
+#define NV20_3D_RC_FINAL0_D_MAPPING_EXPAND_NORMAL		0x00000040
+#define NV20_3D_RC_FINAL0_D_MAPPING_EXPAND_NEGATE		0x00000060
+#define NV20_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL		0x00000080
+#define NV20_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE		0x000000a0
+#define NV20_3D_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY		0x000000c0
+#define NV20_3D_RC_FINAL0_D_MAPPING_SIGNED_NEGATE		0x000000e0
+#define NV20_3D_RC_FINAL0_C_INPUT__MASK				0x00000f00
+#define NV20_3D_RC_FINAL0_C_INPUT__SHIFT			8
+#define NV20_3D_RC_FINAL0_C_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR0		0x00000100
+#define NV20_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR1		0x00000200
+#define NV20_3D_RC_FINAL0_C_INPUT_FOG				0x00000300
+#define NV20_3D_RC_FINAL0_C_INPUT_PRIMARY_COLOR			0x00000400
+#define NV20_3D_RC_FINAL0_C_INPUT_SECONDARY_COLOR		0x00000500
+#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE0			0x00000800
+#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE1			0x00000900
+#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE2			0x00000a00
+#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE3			0x00000b00
+#define NV20_3D_RC_FINAL0_C_INPUT_SPARE0			0x00000c00
+#define NV20_3D_RC_FINAL0_C_INPUT_SPARE1			0x00000d00
+#define NV20_3D_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV20_3D_RC_FINAL0_C_INPUT_E_TIMES_F			0x00000f00
+#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE__MASK		0x00001000
+#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE__SHIFT		12
+#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE_ALPHA		0x00001000
+#define NV20_3D_RC_FINAL0_C_MAPPING__MASK			0x0000e000
+#define NV20_3D_RC_FINAL0_C_MAPPING__SHIFT			13
+#define NV20_3D_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT		0x00002000
+#define NV20_3D_RC_FINAL0_C_MAPPING_EXPAND_NORMAL		0x00004000
+#define NV20_3D_RC_FINAL0_C_MAPPING_EXPAND_NEGATE		0x00006000
+#define NV20_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL		0x00008000
+#define NV20_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE		0x0000a000
+#define NV20_3D_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY		0x0000c000
+#define NV20_3D_RC_FINAL0_C_MAPPING_SIGNED_NEGATE		0x0000e000
+#define NV20_3D_RC_FINAL0_B_INPUT__MASK				0x000f0000
+#define NV20_3D_RC_FINAL0_B_INPUT__SHIFT			16
+#define NV20_3D_RC_FINAL0_B_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR0		0x00010000
+#define NV20_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR1		0x00020000
+#define NV20_3D_RC_FINAL0_B_INPUT_FOG				0x00030000
+#define NV20_3D_RC_FINAL0_B_INPUT_PRIMARY_COLOR			0x00040000
+#define NV20_3D_RC_FINAL0_B_INPUT_SECONDARY_COLOR		0x00050000
+#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE0			0x00080000
+#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE1			0x00090000
+#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE2			0x000a0000
+#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE3			0x000b0000
+#define NV20_3D_RC_FINAL0_B_INPUT_SPARE0			0x000c0000
+#define NV20_3D_RC_FINAL0_B_INPUT_SPARE1			0x000d0000
+#define NV20_3D_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000e0000
+#define NV20_3D_RC_FINAL0_B_INPUT_E_TIMES_F			0x000f0000
+#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE__MASK		0x00100000
+#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE__SHIFT		20
+#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE_ALPHA		0x00100000
+#define NV20_3D_RC_FINAL0_B_MAPPING__MASK			0x00e00000
+#define NV20_3D_RC_FINAL0_B_MAPPING__SHIFT			21
+#define NV20_3D_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT		0x00200000
+#define NV20_3D_RC_FINAL0_B_MAPPING_EXPAND_NORMAL		0x00400000
+#define NV20_3D_RC_FINAL0_B_MAPPING_EXPAND_NEGATE		0x00600000
+#define NV20_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL		0x00800000
+#define NV20_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE		0x00a00000
+#define NV20_3D_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY		0x00c00000
+#define NV20_3D_RC_FINAL0_B_MAPPING_SIGNED_NEGATE		0x00e00000
+#define NV20_3D_RC_FINAL0_A_INPUT__MASK				0x0f000000
+#define NV20_3D_RC_FINAL0_A_INPUT__SHIFT			24
+#define NV20_3D_RC_FINAL0_A_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR0		0x01000000
+#define NV20_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR1		0x02000000
+#define NV20_3D_RC_FINAL0_A_INPUT_FOG				0x03000000
+#define NV20_3D_RC_FINAL0_A_INPUT_PRIMARY_COLOR			0x04000000
+#define NV20_3D_RC_FINAL0_A_INPUT_SECONDARY_COLOR		0x05000000
+#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE0			0x08000000
+#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE1			0x09000000
+#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE2			0x0a000000
+#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE3			0x0b000000
+#define NV20_3D_RC_FINAL0_A_INPUT_SPARE0			0x0c000000
+#define NV20_3D_RC_FINAL0_A_INPUT_SPARE1			0x0d000000
+#define NV20_3D_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0e000000
+#define NV20_3D_RC_FINAL0_A_INPUT_E_TIMES_F			0x0f000000
+#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE__MASK		0x10000000
+#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE__SHIFT		28
+#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE_ALPHA		0x10000000
+#define NV20_3D_RC_FINAL0_A_MAPPING__MASK			0xe0000000
+#define NV20_3D_RC_FINAL0_A_MAPPING__SHIFT			29
+#define NV20_3D_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT		0x20000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_EXPAND_NORMAL		0x40000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_EXPAND_NEGATE		0x60000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL		0x80000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE		0xa0000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY		0xc0000000
+#define NV20_3D_RC_FINAL0_A_MAPPING_SIGNED_NEGATE		0xe0000000
+
+#define NV20_3D_RC_FINAL1					0x0000028c
+#define NV20_3D_RC_FINAL1_COLOR_SUM_CLAMP			0x00000080
+#define NV20_3D_RC_FINAL1_G_INPUT__MASK				0x00000f00
+#define NV20_3D_RC_FINAL1_G_INPUT__SHIFT			8
+#define NV20_3D_RC_FINAL1_G_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR0		0x00000100
+#define NV20_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR1		0x00000200
+#define NV20_3D_RC_FINAL1_G_INPUT_FOG				0x00000300
+#define NV20_3D_RC_FINAL1_G_INPUT_PRIMARY_COLOR			0x00000400
+#define NV20_3D_RC_FINAL1_G_INPUT_SECONDARY_COLOR		0x00000500
+#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE0			0x00000800
+#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE1			0x00000900
+#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE2			0x00000a00
+#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE3			0x00000b00
+#define NV20_3D_RC_FINAL1_G_INPUT_SPARE0			0x00000c00
+#define NV20_3D_RC_FINAL1_G_INPUT_SPARE1			0x00000d00
+#define NV20_3D_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x00000e00
+#define NV20_3D_RC_FINAL1_G_INPUT_E_TIMES_F			0x00000f00
+#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE__MASK		0x00001000
+#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE__SHIFT		12
+#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE_ALPHA		0x00001000
+#define NV20_3D_RC_FINAL1_G_MAPPING__MASK			0x0000e000
+#define NV20_3D_RC_FINAL1_G_MAPPING__SHIFT			13
+#define NV20_3D_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT		0x00002000
+#define NV20_3D_RC_FINAL1_G_MAPPING_EXPAND_NORMAL		0x00004000
+#define NV20_3D_RC_FINAL1_G_MAPPING_EXPAND_NEGATE		0x00006000
+#define NV20_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL		0x00008000
+#define NV20_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE		0x0000a000
+#define NV20_3D_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY		0x0000c000
+#define NV20_3D_RC_FINAL1_G_MAPPING_SIGNED_NEGATE		0x0000e000
+#define NV20_3D_RC_FINAL1_F_INPUT__MASK				0x000f0000
+#define NV20_3D_RC_FINAL1_F_INPUT__SHIFT			16
+#define NV20_3D_RC_FINAL1_F_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR0		0x00010000
+#define NV20_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR1		0x00020000
+#define NV20_3D_RC_FINAL1_F_INPUT_FOG				0x00030000
+#define NV20_3D_RC_FINAL1_F_INPUT_PRIMARY_COLOR			0x00040000
+#define NV20_3D_RC_FINAL1_F_INPUT_SECONDARY_COLOR		0x00050000
+#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE0			0x00080000
+#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE1			0x00090000
+#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE2			0x000a0000
+#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE3			0x000b0000
+#define NV20_3D_RC_FINAL1_F_INPUT_SPARE0			0x000c0000
+#define NV20_3D_RC_FINAL1_F_INPUT_SPARE1			0x000d0000
+#define NV20_3D_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x000e0000
+#define NV20_3D_RC_FINAL1_F_INPUT_E_TIMES_F			0x000f0000
+#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE__MASK		0x00100000
+#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE__SHIFT		20
+#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE_ALPHA		0x00100000
+#define NV20_3D_RC_FINAL1_F_MAPPING__MASK			0x00e00000
+#define NV20_3D_RC_FINAL1_F_MAPPING__SHIFT			21
+#define NV20_3D_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT		0x00200000
+#define NV20_3D_RC_FINAL1_F_MAPPING_EXPAND_NORMAL		0x00400000
+#define NV20_3D_RC_FINAL1_F_MAPPING_EXPAND_NEGATE		0x00600000
+#define NV20_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL		0x00800000
+#define NV20_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE		0x00a00000
+#define NV20_3D_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY		0x00c00000
+#define NV20_3D_RC_FINAL1_F_MAPPING_SIGNED_NEGATE		0x00e00000
+#define NV20_3D_RC_FINAL1_E_INPUT__MASK				0x0f000000
+#define NV20_3D_RC_FINAL1_E_INPUT__SHIFT			24
+#define NV20_3D_RC_FINAL1_E_INPUT_ZERO				0x00000000
+#define NV20_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR0		0x01000000
+#define NV20_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR1		0x02000000
+#define NV20_3D_RC_FINAL1_E_INPUT_FOG				0x03000000
+#define NV20_3D_RC_FINAL1_E_INPUT_PRIMARY_COLOR			0x04000000
+#define NV20_3D_RC_FINAL1_E_INPUT_SECONDARY_COLOR		0x05000000
+#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE0			0x08000000
+#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE1			0x09000000
+#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE2			0x0a000000
+#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE3			0x0b000000
+#define NV20_3D_RC_FINAL1_E_INPUT_SPARE0			0x0c000000
+#define NV20_3D_RC_FINAL1_E_INPUT_SPARE1			0x0d000000
+#define NV20_3D_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR	0x0e000000
+#define NV20_3D_RC_FINAL1_E_INPUT_E_TIMES_F			0x0f000000
+#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE__MASK		0x10000000
+#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE__SHIFT		28
+#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE_RGB			0x00000000
+#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE_ALPHA		0x10000000
+#define NV20_3D_RC_FINAL1_E_MAPPING__MASK			0xe0000000
+#define NV20_3D_RC_FINAL1_E_MAPPING__SHIFT			29
+#define NV20_3D_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY		0x00000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT		0x20000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_EXPAND_NORMAL		0x40000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_EXPAND_NEGATE		0x60000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL		0x80000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE		0xa0000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY		0xc0000000
+#define NV20_3D_RC_FINAL1_E_MAPPING_SIGNED_NEGATE		0xe0000000
+
+#define NV20_3D_RC_COLOR0					0x00001e20
+#define NV20_3D_RC_COLOR0_B__MASK				0x000000ff
+#define NV20_3D_RC_COLOR0_B__SHIFT				0
+#define NV20_3D_RC_COLOR0_G__MASK				0x0000ff00
+#define NV20_3D_RC_COLOR0_G__SHIFT				8
+#define NV20_3D_RC_COLOR0_R__MASK				0x00ff0000
+#define NV20_3D_RC_COLOR0_R__SHIFT				16
+#define NV20_3D_RC_COLOR0_A__MASK				0xff000000
+#define NV20_3D_RC_COLOR0_A__SHIFT				24
+
+#define NV20_3D_RC_COLOR1					0x00001e24
+#define NV20_3D_RC_COLOR1_B__MASK				0x000000ff
+#define NV20_3D_RC_COLOR1_B__SHIFT				0
+#define NV20_3D_RC_COLOR1_G__MASK				0x0000ff00
+#define NV20_3D_RC_COLOR1_G__SHIFT				8
+#define NV20_3D_RC_COLOR1_R__MASK				0x00ff0000
+#define NV20_3D_RC_COLOR1_R__SHIFT				16
+#define NV20_3D_RC_COLOR1_A__MASK				0xff000000
+#define NV20_3D_RC_COLOR1_A__SHIFT				24
+
+#define NV20_3D_RC_ENABLE					0x00001e60
+#define NV20_3D_RC_ENABLE_NUM_COMBINERS__MASK			0x0000000f
+#define NV20_3D_RC_ENABLE_NUM_COMBINERS__SHIFT			0
+
+
+#define NV20_3D_POINT_SIZE					0x0000043c
+
+#define NV20_3D_POINT_PARAMETER(i0)			       (0x00000a30 + 0x4*(i0))
+#define NV20_3D_POINT_PARAMETER__ESIZE				0x00000004
+#define NV20_3D_POINT_PARAMETER__LEN				0x00000008
+
+#define NV20_3D_POLYGON_STIPPLE_ENABLE				0x0000147c
+
+#define NV20_3D_POLYGON_STIPPLE_PATTERN(i0)		       (0x00001480 + 0x4*(i0))
+#define NV20_3D_POLYGON_STIPPLE_PATTERN__ESIZE			0x00000004
+#define NV20_3D_POLYGON_STIPPLE_PATTERN__LEN			0x00000020
+
+#define NV20_3D_COLOR_LOGIC_OP_ENABLE				0x000017bc
+
+#define NV20_3D_COLOR_LOGIC_OP_OP				0x000017c0
+#define NV20_3D_COLOR_LOGIC_OP_OP_CLEAR				0x00001500
+#define NV20_3D_COLOR_LOGIC_OP_OP_AND				0x00001501
+#define NV20_3D_COLOR_LOGIC_OP_OP_AND_REVERSE			0x00001502
+#define NV20_3D_COLOR_LOGIC_OP_OP_COPY				0x00001503
+#define NV20_3D_COLOR_LOGIC_OP_OP_AND_INVERTED			0x00001504
+#define NV20_3D_COLOR_LOGIC_OP_OP_NOOP				0x00001505
+#define NV20_3D_COLOR_LOGIC_OP_OP_XOR				0x00001506
+#define NV20_3D_COLOR_LOGIC_OP_OP_OR				0x00001507
+#define NV20_3D_COLOR_LOGIC_OP_OP_NOR				0x00001508
+#define NV20_3D_COLOR_LOGIC_OP_OP_EQUIV				0x00001509
+#define NV20_3D_COLOR_LOGIC_OP_OP_INVERT			0x0000150a
+#define NV20_3D_COLOR_LOGIC_OP_OP_OR_REVERSE			0x0000150b
+#define NV20_3D_COLOR_LOGIC_OP_OP_COPY_INVERTED			0x0000150c
+#define NV20_3D_COLOR_LOGIC_OP_OP_OR_INVERTED			0x0000150d
+#define NV20_3D_COLOR_LOGIC_OP_OP_NAND				0x0000150e
+#define NV20_3D_COLOR_LOGIC_OP_OP_SET				0x0000150f
+
+#define NV20_3D_DEPTH_CLAMP					0x00001d78
+
+#define NV20_3D_MULTISAMPLE_CONTROL				0x00001d7c
+
+
+#define NV20_3D_CLEAR_DEPTH_VALUE				0x00001d8c
+
+#define NV20_3D_CLEAR_VALUE					0x00001d90
+
+#define NV20_3D_CLEAR_BUFFERS					0x00001d94
+#define NV20_3D_CLEAR_BUFFERS_COLOR_A				0x00000080
+#define NV20_3D_CLEAR_BUFFERS_COLOR_B				0x00000040
+#define NV20_3D_CLEAR_BUFFERS_COLOR_G				0x00000020
+#define NV20_3D_CLEAR_BUFFERS_COLOR_R				0x00000010
+#define NV20_3D_CLEAR_BUFFERS_STENCIL				0x00000002
+#define NV20_3D_CLEAR_BUFFERS_DEPTH				0x00000001
+
+
+#define NV25_3D_DMA_LMA_DEPTH					0x000001b0
+
+#define NV25_3D_LMA_DEPTH_BUFFER_PITCH				0x0000022c
+
+#define NV25_3D_LMA_DEPTH_BUFFER_OFFSET				0x00000230
+
+
+#define NV25_3D_LMA_DEPTH_WINDOW				0x00001f00
+
+
+#define NV25_3D_LMA_DEPTH_WINDOW_X				0x00001f00
+
+#define NV25_3D_LMA_DEPTH_WINDOW_Y				0x00001f04
+
+#define NV25_3D_LMA_DEPTH_WINDOW_Z				0x00001f08
+
+#define NV25_3D_LMA_DEPTH_WINDOW_W				0x00001f0c
+
+#define NV20_3D_UNK09F8						0x000009f8
+
+#define NV20_3D_UNK09FC						0x000009fc
+
+#define NV20_3D_UNK17CC						0x000017cc
+
+#define NV20_3D_UNK17E0						0x000017e0
+
+#define NV20_3D_UNK17E4						0x000017e4
+
+#define NV20_3D_UNK17E8						0x000017e8
+
+#define NV20_3D_UNK17EC						0x000017ec
+
+#define NV20_3D_UNK17F0						0x000017f0
+
+#define NV20_3D_UNK17F4						0x000017f4
+
+#define NV20_3D_UNK1D80						0x00001d80
+
+#define NV20_3D_UNK1D84						0x00001d84
+
+#define NV20_3D_UNK1E68						0x00001e68
+
+#define NV20_3D_UNK1E98						0x00001e98
+
+
+#define NV25_3D_UNK01AC						0x000001ac
+
+#define NV25_3D_UNK0A1C						0x00000a1c
+
+#define NV25_3D_UNK1D88						0x00001d88
+
+#define NV25_3D_UNK1DA4						0x00001da4
+
+
+#endif /* NV20_3D_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h b/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h
new file mode 100644
index 0000000..0738baf
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h
@@ -0,0 +1,155 @@
+#ifndef NV_M2MF_XML
+#define NV_M2MF_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv_m2mf.xml    (   2710 bytes, from 2010-10-24 16:03:07)
+- copyright.xml  (   6498 bytes, from 2010-10-24 16:03:07)
+- nv_object.xml  (  11547 bytes, from 2010-10-27 16:17:46)
+- nvchipsets.xml (   2907 bytes, from 2010-10-24 16:03:07)
+- nv_defs.xml    (   4437 bytes, from 2010-10-24 16:03:07)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro, curro_, currojerez)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+
+#define NV04_M2MF_DMA_NOTIFY					0x00000180
+
+#define NV04_M2MF_DMA_BUFFER_IN					0x00000184
+
+#define NV04_M2MF_DMA_BUFFER_OUT				0x00000188
+
+
+#define NV50_M2MF_LINEAR_IN					0x00000200
+
+#define NV50_M2MF_TILING_MODE_IN				0x00000204
+
+#define NV50_M2MF_TILING_PITCH_IN				0x00000208
+
+#define NV50_M2MF_TILING_HEIGHT_IN				0x0000020c
+
+#define NV50_M2MF_TILING_DEPTH_IN				0x00000210
+
+#define NV50_M2MF_TILING_POSITION_IN_Z				0x00000214
+
+#define NV50_M2MF_TILING_POSITION_IN				0x00000218
+#define NV50_M2MF_TILING_POSITION_IN_X__MASK			0x0000ffff
+#define NV50_M2MF_TILING_POSITION_IN_X__SHIFT			0
+#define NV50_M2MF_TILING_POSITION_IN_Y__MASK			0xffff0000
+#define NV50_M2MF_TILING_POSITION_IN_Y__SHIFT			16
+
+#define NV50_M2MF_LINEAR_OUT					0x0000021c
+
+#define NV50_M2MF_TILING_MODE_OUT				0x00000220
+
+#define NV50_M2MF_TILING_PITCH_OUT				0x00000224
+
+#define NV50_M2MF_TILING_HEIGHT_OUT				0x00000228
+
+#define NV50_M2MF_TILING_DEPTH_OUT				0x0000022c
+
+#define NV50_M2MF_TILING_POSITION_OUT_Z				0x00000230
+
+#define NV50_M2MF_TILING_POSITION_OUT				0x00000234
+#define NV50_M2MF_TILING_POSITION_OUT_X__MASK			0x0000ffff
+#define NV50_M2MF_TILING_POSITION_OUT_X__SHIFT			0
+#define NV50_M2MF_TILING_POSITION_OUT_Y__MASK			0xffff0000
+#define NV50_M2MF_TILING_POSITION_OUT_Y__SHIFT			16
+
+#define NV50_M2MF_OFFSET_IN_HIGH				0x00000238
+
+#define NV50_M2MF_OFFSET_OUT_HIGH				0x0000023c
+
+#define NV04_M2MF_OFFSET_IN					0x0000030c
+
+#define NV04_M2MF_OFFSET_OUT					0x00000310
+
+#define NV04_M2MF_PITCH_IN					0x00000314
+
+#define NV04_M2MF_PITCH_OUT					0x00000318
+
+#define NV04_M2MF_LINE_LENGTH_IN				0x0000031c
+
+#define NV04_M2MF_LINE_COUNT					0x00000320
+
+#define NV04_M2MF_FORMAT					0x00000324
+#define NV04_M2MF_FORMAT_INPUT_INC__MASK			0x000000ff
+#define NV04_M2MF_FORMAT_INPUT_INC__SHIFT			0
+#define NV04_M2MF_FORMAT_INPUT_INC_1				0x00000001
+#define NV04_M2MF_FORMAT_INPUT_INC_2				0x00000002
+#define NV04_M2MF_FORMAT_INPUT_INC_4				0x00000004
+#define NV50_M2MF_FORMAT_INPUT_INC_8				0x00000008
+#define NV50_M2MF_FORMAT_INPUT_INC_16				0x00000010
+#define NV04_M2MF_FORMAT_OUTPUT_INC__MASK			0x0000ff00
+#define NV04_M2MF_FORMAT_OUTPUT_INC__SHIFT			8
+#define NV04_M2MF_FORMAT_OUTPUT_INC_1				0x00000100
+#define NV04_M2MF_FORMAT_OUTPUT_INC_2				0x00000200
+#define NV04_M2MF_FORMAT_OUTPUT_INC_4				0x00000400
+#define NV50_M2MF_FORMAT_OUTPUT_INC_8				0x00000800
+#define NV50_M2MF_FORMAT_OUTPUT_INC_16				0x00001000
+
+#define NV04_M2MF_BUF_NOTIFY					0x00000328
+
+
+#endif /* NV_M2MF_XML */
diff --git a/src/mesa/drivers/dri/nouveau/nv_object.xml.h b/src/mesa/drivers/dri/nouveau/nv_object.xml.h
new file mode 100644
index 0000000..86add5d
--- /dev/null
+++ b/src/mesa/drivers/dri/nouveau/nv_object.xml.h
@@ -0,0 +1,268 @@
+#ifndef NV_OBJECT_XML
+#define NV_OBJECT_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv_object.xml  (  11547 bytes, from 2010-10-31 18:33:58)
+- copyright.xml  (   6498 bytes, from 2010-10-24 16:03:07)
+- nvchipsets.xml (   2991 bytes, from 2010-10-30 09:54:12)
+- nv_defs.xml    (   4437 bytes, from 2010-10-24 16:03:07)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro, curro_, currojerez)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Kościelnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <patmandin@gmail.com> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+#define NV01_ROOT						0x00000001
+#define NV01_CONTEXT_DMA					0x00000002
+#define NV01_DEVICE						0x00000003
+#define NV01_TIMER						0x00000004
+#define NV01_NULL						0x00000030
+#define NV01_MEMORY_LOCAL_BANKED				0x0000003d
+#define NV01_MAPPING_SYSTEM					0x0000003e
+#define NV03_MEMORY_LOCAL_CURSOR				0x0000003f
+#define NV01_MEMORY_LOCAL_LINEAR				0x00000040
+#define NV01_MAPPING_LOCAL					0x00000041
+#define NV03_VIDEO_LUT_CURSOR_DAC				0x00000046
+#define NV03_CHANNEL_PIO					0x0000006a
+#define NV03_CHANNEL_DMA					0x0000006b
+#define NV10_VIDEO_DISPLAY					0x0000007c
+#define NV01_CONTEXT_BETA1					0x00000012
+#define NV04_BETA_SOLID						0x00000072
+#define NV01_CONTEXT_COLOR_KEY					0x00000017
+#define NV04_CONTEXT_COLOR_KEY					0x00000057
+#define NV01_CONTEXT_PATTERN					0x00000018
+#define NV01_CONTEXT_CLIP_RECTANGLE				0x00000019
+#define NV03_CONTEXT_ROP					0x00000043
+#define NV04_IMAGE_PATTERN					0x00000044
+#define NV01_RENDER_SOLID_LINE					0x0000001c
+#define NV04_RENDER_SOLID_LINE					0x0000005c
+#define NV30_RENDER_SOLID_LINE					0x0000035c
+#define NV40_RENDER_SOLID_LINE					0x0000305c
+#define NV01_RENDER_SOLID_TRIANGLE				0x0000001d
+#define NV04_RENDER_SOLID_TRIANGLE				0x0000005d
+#define NV01_RENDER_SOLID_RECTANGLE				0x0000001e
+#define NV04_RENDER_SOLID_RECTANGLE				0x0000005e
+#define NV01_IMAGE_BLIT						0x0000001f
+#define NV04_IMAGE_BLIT						0x0000005f
+#define NV11_IMAGE_BLIT						0x0000009f
+#define NV01_IMAGE_FROM_CPU					0x00000021
+#define NV04_IMAGE_FROM_CPU					0x00000061
+#define NV05_IMAGE_FROM_CPU					0x00000065
+#define NV10_IMAGE_FROM_CPU					0x0000008a
+#define NV30_IMAGE_FROM_CPU					0x0000038a
+#define NV40_IMAGE_FROM_CPU					0x0000308a
+#define NV03_STRETCHED_IMAGE_FROM_CPU				0x00000036
+#define NV04_STRETCHED_IMAGE_FROM_CPU				0x00000076
+#define NV05_STRETCHED_IMAGE_FROM_CPU				0x00000066
+#define NV30_STRETCHED_IMAGE_FROM_CPU				0x00000366
+#define NV40_STRETCHED_IMAGE_FROM_CPU				0x00003066
+#define NV03_SCALED_IMAGE_FROM_MEMORY				0x00000037
+#define NV04_SCALED_IMAGE_FROM_MEMORY				0x00000077
+#define NV05_SCALED_IMAGE_FROM_MEMORY				0x00000063
+#define NV10_SCALED_IMAGE_FROM_MEMORY				0x00000089
+#define NV30_SCALED_IMAGE_FROM_MEMORY				0x00000389
+#define NV40_SCALED_IMAGE_FROM_MEMORY				0x00003089
+#define NV50_SCALED_IMAGE_FROM_MEMORY				0x00005089
+#define NV04_DVD_SUBPICTURE					0x00000038
+#define NV10_DVD_SUBPICTURE					0x00000088
+#define NV03_GDI_RECTANGLE_TEXT					0x0000004b
+#define NV04_GDI_RECTANGLE_TEXT					0x0000004a
+#define NV04_SWIZZLED_SURFACE					0x00000052
+#define NV20_SWIZZLED_SURFACE					0x0000009e
+#define NV30_SWIZZLED_SURFACE					0x0000039e
+#define NV40_SWIZZLED_SURFACE					0x0000309e
+#define NV03_CONTEXT_SURFACE_DST				0x00000058
+#define NV03_CONTEXT_SURFACE_SRC				0x00000059
+#define NV04_CONTEXT_SURFACES_2D				0x00000042
+#define NV10_CONTEXT_SURFACES_2D				0x00000062
+#define NV30_CONTEXT_SURFACES_2D				0x00000362
+#define NV40_CONTEXT_SURFACES_2D				0x00003062
+#define NV50_CONTEXT_SURFACES_2D				0x00005062
+#define NV04_INDEXED_IMAGE_FROM_CPU				0x00000060
+#define NV05_INDEXED_IMAGE_FROM_CPU				0x00000064
+#define NV30_INDEXED_IMAGE_FROM_CPU				0x00000364
+#define NV40_INDEXED_IMAGE_FROM_CPU				0x00003064
+#define NV10_TEXTURE_FROM_CPU					0x0000007b
+#define NV30_TEXTURE_FROM_CPU					0x0000037b
+#define NV40_TEXTURE_FROM_CPU					0x0000307b
+#define NV04_M2MF						0x00000039
+#define NV50_M2MF						0x00005039
+#define NVC0_M2MF						0x00009039
+#define NV03_TEXTURED_TRIANGLE					0x00000048
+#define NV04_TEXTURED_TRIANGLE					0x00000054
+#define NV10_TEXTURED_TRIANGLE					0x00000094
+#define NV04_MULTITEX_TRIANGLE					0x00000055
+#define NV10_MULTITEX_TRIANGLE					0x00000095
+#define NV03_CONTEXT_SURFACE_COLOR				0x0000005a
+#define NV03_CONTEXT_SURFACE_ZETA				0x0000005b
+#define NV04_CONTEXT_SURFACES_3D				0x00000053
+#define NV10_CONTEXT_SURFACES_3D				0x00000093
+#define NV10_3D							0x00000056
+#define NV11_3D							0x00000096
+#define NV17_3D							0x00000099
+#define NV20_3D							0x00000097
+#define NV25_3D							0x00000597
+#define NV30_3D							0x00000397
+#define NV35_3D							0x00000497
+#define NV34_3D							0x00000697
+#define NV40_3D							0x00004097
+#define NV44_3D							0x00004497
+#define NV50_3D							0x00005097
+#define NV84_3D							0x00008297
+#define NVA0_3D							0x00008397
+#define NVA3_3D							0x00008597
+#define NVAF_3D							0x00008697
+#define NVC0_3D							0x00009097
+#define NV50_2D							0x0000502d
+#define NVC0_2D							0x0000902d
+#define NV50_COMPUTE						0x000050c0
+#define NVA3_COMPUTE						0x000085c0
+#define NVC0_COMPUTE						0x000090c0
+#define NV84_CRYPT						0x000074c1
+#define NV01_SUBCHAN__SIZE					0x00002000
+#define NV01_SUBCHAN						0x00000000
+
+#define NV01_SUBCHAN_OBJECT					0x00000000
+
+
+#define NV84_SUBCHAN_QUERY_ADDRESS_HIGH				0x00000010
+
+#define NV84_SUBCHAN_QUERY_ADDRESS_LOW				0x00000014
+
+#define NV84_SUBCHAN_QUERY_COUNTER				0x00000018
+
+#define NV84_SUBCHAN_QUERY_GET					0x0000001c
+
+#define NV84_SUBCHAN_QUERY_INTR					0x00000020
+
+#define NV84_SUBCHAN_WRCACHE_FLUSH				0x00000024
+
+#define NV10_SUBCHAN_REF_CNT					0x00000050
+
+
+#define NV11_SUBCHAN_DMA_SEMAPHORE				0x00000060
+
+#define NV11_SUBCHAN_SEMAPHORE_OFFSET				0x00000064
+
+#define NV11_SUBCHAN_SEMAPHORE_ACQUIRE				0x00000068
+
+#define NV11_SUBCHAN_SEMAPHORE_RELEASE				0x0000006c
+
+#define NV40_SUBCHAN_YIELD					0x00000080
+
+#define NV01_GRAPH						0x00000000
+
+#define NV04_GRAPH_NOP						0x00000100
+
+#define NV01_GRAPH_NOTIFY					0x00000104
+#define NV01_GRAPH_NOTIFY_WRITE					0x00000000
+#define NV01_GRAPH_NOTIFY_WRITE_AND_AWAKEN			0x00000001
+
+#define NV50_GRAPH_WAIT_FOR_IDLE				0x00000110
+
+#define NVA3_GRAPH_UNK0120					0x00000120
+
+#define NVA3_GRAPH_UNK0124					0x00000124
+
+#define NV40_GRAPH_PM_TRIGGER					0x00000140
+
+#define NVC0_SUBCHAN__SIZE					0x00008000
+#define NVC0_SUBCHAN						0x00000000
+
+#define NVC0_SUBCHAN_OBJECT					0x00000000
+
+
+#define NVC0_SUBCHAN_QUERY_ADDRESS_HIGH				0x00000010
+
+#define NVC0_SUBCHAN_QUERY_ADDRESS_LOW				0x00000014
+
+#define NVC0_SUBCHAN_QUERY_SEQUENCE				0x00000018
+
+#define NVC0_SUBCHAN_QUERY_GET					0x0000001c
+
+#define NVC0_SUBCHAN_REF_CNT					0x00000050
+
+#define NVC0_GRAPH						0x00000000
+
+#define NVC0_GRAPH_NOP						0x00000100
+
+#define NVC0_GRAPH_NOTIFY_ADDRESS_HIGH				0x00000104
+
+#define NVC0_GRAPH_NOTIFY_ADDRESS_LOW				0x00000108
+
+#define NVC0_GRAPH_NOTIFY					0x0000010c
+#define NVC0_GRAPH_NOTIFY_WRITE					0x00000000
+#define NVC0_GRAPH_NOTIFY_WRITE_AND_AWAKEN			0x00000001
+
+#define NVC0_GRAPH_SERIALIZE					0x00000110
+
+#define NVC0_GRAPH_MACRO_UPLOAD_POS				0x00000114
+
+#define NVC0_GRAPH_MACRO_UPLOAD_DATA				0x00000118
+
+#define NVC0_GRAPH_MACRO_ID					0x0000011c
+
+#define NVC0_GRAPH_MACRO_POS					0x00000120
+
+
+#endif /* NV_OBJECT_XML */
-- 
1.7.3.2

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 2/5] dri/nouveau: nv04: Use rules-ng-ng headers
       [not found] ` <1288571171-8102-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
  2010-11-01  0:26   ` [PATCH 1/5] dri/nouveau: Import headers from rules-ng-ng Viktor Novotný
@ 2010-11-01  0:26   ` Viktor Novotný
  2010-11-01  0:26   ` [PATCH 3/5] dri/nouveau: nv10: " Viktor Novotný
  2010-11-01  1:59   ` [RFC/PATCH] Switch dri driver to use " Marcin Kościelnicki
  3 siblings, 0 replies; 9+ messages in thread
From: Viktor Novotný @ 2010-11-01  0:26 UTC (permalink / raw)
  To: nouveau

From: Viktor Novotný <noviktor@seznam.cz>

---
 src/mesa/drivers/dri/nouveau/nv04_context.c      |    3 ++-
 src/mesa/drivers/dri/nouveau/nv04_render.c       |    3 ++-
 src/mesa/drivers/dri/nouveau/nv04_state_fb.c     |    2 +-
 src/mesa/drivers/dri/nouveau/nv04_state_frag.c   |    7 ++++---
 src/mesa/drivers/dri/nouveau/nv04_state_raster.c |    7 ++++---
 src/mesa/drivers/dri/nouveau/nv04_state_tex.c    |    3 ++-
 src/mesa/drivers/dri/nouveau/nv04_surface.c      |   15 +++++++++------
 7 files changed, 24 insertions(+), 16 deletions(-)

diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c
index 8683343..17d6280 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_context.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_context.c
@@ -28,7 +28,8 @@
 #include "nouveau_context.h"
 #include "nouveau_fbo.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv04_3d.xml.h"
 #include "nv04_driver.h"
 
 static GLboolean
diff --git a/src/mesa/drivers/dri/nouveau/nv04_render.c b/src/mesa/drivers/dri/nouveau/nv04_render.c
index 47bad24..448211c 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_render.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_render.c
@@ -27,7 +27,8 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv04_3d.xml.h"
 #include "nv04_driver.h"
 
 #include "tnl/tnl.h"
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c
index a3e3436..730f91f 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c
@@ -28,7 +28,7 @@
 #include "nouveau_context.h"
 #include "nouveau_fbo.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv04_3d.xml.h"
 #include "nv04_driver.h"
 
 static inline unsigned
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c
index 658b23a..21478de 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c
@@ -27,12 +27,13 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv04_3d.xml.h"
 #include "nv04_driver.h"
 
 #define COMBINER_SHIFT(in)						\
-	(NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT##in##_SHIFT	\
-	 - NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_SHIFT)
+	(NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT##in##__SHIFT	\
+	 - NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__SHIFT)
 #define COMBINER_SOURCE(reg)					\
 	NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_##reg
 #define COMBINER_INVERT					\
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c
index a114f44..98f2f98 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c
@@ -27,7 +27,8 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv04_3d.xml.h"
 #include "nv04_driver.h"
 
 static unsigned
@@ -142,7 +143,7 @@ nv04_emit_control(struct gl_context *ctx, int emit)
 		int cull_mode = ctx->Polygon.CullFaceMode;
 		int front_face = ctx->Polygon.FrontFace;
 		uint32_t ctrl0 = 1 << 30 |
-			NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN;
+			NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CORNER;
 		uint32_t ctrl1 = 0, ctrl2 = 0;
 
 		/* Color mask. */
@@ -210,7 +211,7 @@ nv04_emit_control(struct gl_context *ctx, int emit)
 		int cull_mode = ctx->Polygon.CullFaceMode;
 		int front_face = ctx->Polygon.FrontFace;
 		uint32_t ctrl = 1 << 30 |
-			NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN;
+			NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CORNER;
 
 		/* Dithering. */
 		if (ctx->Color.DitherFlag)
diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
index 1fe47a3..5ed8b14 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c
@@ -29,7 +29,8 @@
 #include "nouveau_texture.h"
 #include "nouveau_util.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv04_3d.xml.h"
 #include "nv04_driver.h"
 
 static uint32_t
diff --git a/src/mesa/drivers/dri/nouveau/nv04_surface.c b/src/mesa/drivers/dri/nouveau/nv04_surface.c
index 6d3ffa2..b073932 100644
--- a/src/mesa/drivers/dri/nouveau/nv04_surface.c
+++ b/src/mesa/drivers/dri/nouveau/nv04_surface.c
@@ -25,7 +25,10 @@
  */
 
 #include "nouveau_driver.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv_m2mf.xml.h"
+#include "nv01_2d.xml.h"
+#include "nv04_3d.xml.h"
 #include "nouveau_context.h"
 #include "nouveau_util.h"
 #include "nv04_driver.h"
@@ -283,9 +286,9 @@ nv04_surface_copy_m2mf(struct gl_context *ctx,
 	unsigned dst_offset = dst->offset + dy * dst->pitch + dx * dst->cpp;
 	unsigned src_offset = src->offset + sy * src->pitch + sx * src->cpp;
 
-	nouveau_bo_marko(bctx, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_IN,
+	nouveau_bo_marko(bctx, m2mf, NV04_M2MF_DMA_BUFFER_IN,
 			 src->bo, bo_flags | NOUVEAU_BO_RD);
-	nouveau_bo_marko(bctx, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_OUT,
+	nouveau_bo_marko(bctx, m2mf, NV04_M2MF_DMA_BUFFER_OUT,
 			 dst->bo, bo_flags | NOUVEAU_BO_WR);
 
 	while (h) {
@@ -293,7 +296,7 @@ nv04_surface_copy_m2mf(struct gl_context *ctx,
 
 		MARK_RING(chan, 9, 2);
 
-		BEGIN_RING(chan, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8);
+		BEGIN_RING(chan, m2mf, NV04_M2MF_OFFSET_IN, 8);
 		OUT_RELOCl(chan, src->bo, src_offset,
 			   bo_flags | NOUVEAU_BO_RD);
 		OUT_RELOCl(chan, dst->bo, dst_offset,
@@ -488,12 +491,12 @@ nv04_surface_init(struct gl_context *ctx)
 		goto fail;
 
 	/* Memory to memory format. */
-	ret = nouveau_grobj_alloc(chan, handle++, NV04_MEMORY_TO_MEMORY_FORMAT,
+	ret = nouveau_grobj_alloc(chan, handle++, NV04_M2MF,
 				  &hw->m2mf);
 	if (ret)
 		goto fail;
 
-	BEGIN_RING(chan, hw->m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY, 1);
+	BEGIN_RING(chan, hw->m2mf, NV04_M2MF_DMA_NOTIFY, 1);
 	OUT_RING  (chan, hw->ntfy->handle);
 
 	/* Context surfaces 2D. */
-- 
1.7.3.2

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/5] dri/nouveau: nv10: Use rules-ng-ng headers
       [not found] ` <1288571171-8102-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
  2010-11-01  0:26   ` [PATCH 1/5] dri/nouveau: Import headers from rules-ng-ng Viktor Novotný
  2010-11-01  0:26   ` [PATCH 2/5] dri/nouveau: nv04: Use rules-ng-ng headers Viktor Novotný
@ 2010-11-01  0:26   ` Viktor Novotný
  2010-11-01  1:59   ` [RFC/PATCH] Switch dri driver to use " Marcin Kościelnicki
  3 siblings, 0 replies; 9+ messages in thread
From: Viktor Novotný @ 2010-11-01  0:26 UTC (permalink / raw)
  To: nouveau

From: Viktor Novotný <noviktor@seznam.cz>

---
 src/mesa/drivers/dri/nouveau/nv10_context.c       |  127 +++++++++++----------
 src/mesa/drivers/dri/nouveau/nv10_render.c        |   42 ++++----
 src/mesa/drivers/dri/nouveau/nv10_state_fb.c      |   33 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_frag.c    |   36 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_polygon.c |   32 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_raster.c  |   38 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_tex.c     |   64 +++++------
 src/mesa/drivers/dri/nouveau/nv10_state_tnl.c     |   82 +++++++-------
 8 files changed, 226 insertions(+), 228 deletions(-)

diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c
index 78be401..f90faa0 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_context.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_context.c
@@ -29,7 +29,8 @@
 #include "nouveau_context.h"
 #include "nouveau_fbo.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv10_3d.xml.h"
 #include "nv04_driver.h"
 #include "nv10_driver.h"
 
@@ -157,9 +158,9 @@ nv17_zclear(struct gl_context *ctx, GLbitfield *buffers)
 		nfb->base._DepthBuffer->Wrapped)->surface;
 
 	/* Clear the hierarchical depth buffer */
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_FILL_VALUE, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_FILL_VALUE, 1);
 	OUT_RING(chan, pack_zs_f(s->format, ctx->Depth.Clear, 0));
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_CLEAR, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_BUFFER_CLEAR, 1);
 	OUT_RING(chan, 1);
 
 	/* Mark the depth buffer as cleared */
@@ -201,33 +202,33 @@ nv10_hwctx_init(struct gl_context *ctx)
 	struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw;
 	int i;
 
-	BEGIN_RING(chan, celsius, NV10TCL_DMA_NOTIFY, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DMA_NOTIFY, 1);
 	OUT_RING(chan, hw->ntfy->handle);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY0, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_DMA_TEXTURE0, 3);
 	OUT_RING(chan, chan->vram->handle);
 	OUT_RING(chan, chan->gart->handle);
 	OUT_RING(chan, chan->gart->handle);
-	BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY2, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_DMA_COLOR, 2);
 	OUT_RING(chan, chan->vram->handle);
 	OUT_RING(chan, chan->vram->handle);
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1);
 	OUT_RING(chan, 0x7ff << 16 | 0x800);
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1);
 	OUT_RING(chan, 0x7ff << 16 | 0x800);
 
 	for (i = 1; i < 8; i++) {
-		BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(i), 1);
 		OUT_RING(chan, 0);
-		BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(i), 1);
 		OUT_RING(chan, 0);
 	}
 
@@ -236,18 +237,18 @@ nv10_hwctx_init(struct gl_context *ctx)
 	BEGIN_RING(chan, celsius, 0x3f4, 1);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius,  NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
 	if (context_chipset(ctx) >= 0x17) {
-		BEGIN_RING(chan, celsius, NV17TCL_DMA_IN_MEMORY4, 2);
+		BEGIN_RING(chan, celsius, NV17_3D_UNK01AC, 2);
 		OUT_RING(chan, chan->vram->handle);
 		OUT_RING(chan, chan->vram->handle);
 
 		BEGIN_RING(chan, celsius, 0xd84, 1);
 		OUT_RING(chan, 0x3);
 
-		BEGIN_RING(chan, celsius, NV17TCL_COLOR_MASK_ENABLE, 1);
+		BEGIN_RING(chan, celsius, NV17_3D_COLOR_MASK_ENABLE, 1);
 		OUT_RING(chan, 1);
 	}
 
@@ -257,41 +258,41 @@ nv10_hwctx_init(struct gl_context *ctx)
 		OUT_RING(chan, 1);
 		OUT_RING(chan, 2);
 
-		BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+		BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
 		OUT_RING(chan, 0);
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius,  NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
 	/* Set state */
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2);
 	OUT_RING(chan, 0x207);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(0), 2);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(0), 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 2);
 	OUT_RING(chan, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_WEIGHT_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_WEIGHT_ENABLE, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 4);
 	OUT_RING(chan, 1);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0x8006);
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 8);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 8);
 	OUT_RING(chan, 0xff);
 	OUT_RING(chan, 0x207);
 	OUT_RING(chan, 0);
@@ -300,105 +301,105 @@ nv10_hwctx_init(struct gl_context *ctx)
 	OUT_RING(chan, 0x1e00);
 	OUT_RING(chan, 0x1e00);
 	OUT_RING(chan, 0x1d01);
-	BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1);
 	OUT_RING(chan, 0x201);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1);
 	OUT_RING(chan, 8);
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_PARAMETERS_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_PARAMETERS_ENABLE, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1);
 	OUT_RING(chan, 8);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2);
 	OUT_RING(chan, 0x1b02);
 	OUT_RING(chan, 0x1b02);
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 2);
 	OUT_RING(chan, 0x405);
 	OUT_RING(chan, 0x901);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_TX_GEN_MODE_S(0), 8);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(0, 0), 8);
 	for (i = 0; i < 8; i++)
 		OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(0), 2);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(0), 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3);
 	OUT_RING(chan, 0x3fc00000);	/* -1.50 */
 	OUT_RING(chan, 0xbdb8aa0a);	/* -0.09 */
 	OUT_RING(chan, 0);		/*  0.00 */
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius,  NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 2);
 	OUT_RING(chan, 0x802);
 	OUT_RING(chan, 2);
 	/* for some reason VIEW_MATRIX_ENABLE need to be 6 instead of 4 when
 	 * using texturing, except when using the texture matrix
 	 */
-	BEGIN_RING(chan, celsius, NV10TCL_VIEW_MATRIX_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEW_MATRIX_ENABLE, 1);
 	OUT_RING(chan, 6);
-	BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1);
 	OUT_RING(chan, 0x01010101);
 
 	/* Set vertex component */
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL_4F_R, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL_4F_R, 4);
 	OUT_RINGf(chan, 1.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL2_3F_R, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL2_3F_R, 3);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_NOR_3F_X, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_NOR_3F_X, 3);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX0_4F_S, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX0_4F_S, 4);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX1_4F_S, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX1_4F_S, 4);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_FOG_1F, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_FOG_1F, 1);
 	OUT_RINGf(chan, 0.0);
-	BEGIN_RING(chan, celsius, NV10TCL_EDGEFLAG_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_EDGEFLAG_ENABLE, 1);
 	OUT_RING(chan, 1);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 16777216.0);
 
@@ -455,11 +456,11 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua
 
 	/* 3D engine. */
 	if (context_chipset(ctx) >= 0x17)
-		celsius_class = NV17TCL;
+		celsius_class = NV17_3D;
 	else if (context_chipset(ctx) >= 0x11)
-		celsius_class = NV11TCL;
+		celsius_class = NV11_3D;
 	else
-		celsius_class = NV10TCL;
+		celsius_class = NV10_3D;
 
 	ret = nouveau_grobj_alloc(context_chan(ctx), 0xbeef0001, celsius_class,
 				  &nctx->hw.eng3d);
diff --git a/src/mesa/drivers/dri/nouveau/nv10_render.c b/src/mesa/drivers/dri/nouveau/nv10_render.c
index 94ff3ed..71496c1 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_render.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_render.c
@@ -26,7 +26,7 @@
 
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 #define NUM_VERTEX_ATTRS 8
@@ -39,37 +39,37 @@ nv10_emit_material(struct gl_context *ctx, struct nouveau_array *a,
 static struct nouveau_attr_info nv10_vertex_attrs[VERT_ATTRIB_MAX] = {
 	[VERT_ATTRIB_POS] = {
 		.vbo_index = 0,
-		.imm_method = NV10TCL_VERTEX_POS_4F_X,
+		.imm_method = NV10_3D_VERTEX_POS_4F_X,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_COLOR0] = {
 		.vbo_index = 1,
-		.imm_method = NV10TCL_VERTEX_COL_4F_R,
+		.imm_method = NV10_3D_VERTEX_COL_4F_R,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_COLOR1] = {
 		.vbo_index = 2,
-		.imm_method = NV10TCL_VERTEX_COL2_3F_R,
+		.imm_method = NV10_3D_VERTEX_COL2_3F_R,
 		.imm_fields = 3,
 	},
 	[VERT_ATTRIB_TEX0] = {
 		.vbo_index = 3,
-		.imm_method = NV10TCL_VERTEX_TX0_4F_S,
+		.imm_method = NV10_3D_VERTEX_TX0_4F_S,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_TEX1] = {
 		.vbo_index = 4,
-		.imm_method = NV10TCL_VERTEX_TX1_4F_S,
+		.imm_method = NV10_3D_VERTEX_TX1_4F_S,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_NORMAL] = {
 		.vbo_index = 5,
-		.imm_method = NV10TCL_VERTEX_NOR_3F_X,
+		.imm_method = NV10_3D_VERTEX_NOR_3F_X,
 		.imm_fields = 3,
 	},
 	[VERT_ATTRIB_FOG] = {
 		.vbo_index = 7,
-		.imm_method = NV10TCL_VERTEX_FOG_1F,
+		.imm_method = NV10_3D_VERTEX_FOG_1F,
 		.imm_fields = 1,
 	},
 	[VERT_ATTRIB_GENERIC0] = {
@@ -94,12 +94,12 @@ get_hw_format(int type)
 {
 	switch (type) {
 	case GL_FLOAT:
-		return NV10TCL_VTXFMT_TYPE_FLOAT;
+		return NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT;
 	case GL_SHORT:
 	case GL_UNSIGNED_SHORT:
-		return NV10TCL_VTXFMT_TYPE_SHORT;
+		return NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM;
 	case GL_UNSIGNED_BYTE:
-		return NV10TCL_VTXFMT_TYPE_BYTE_RGBA;
+		return NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM;
 	default:
 		assert(0);
 	}
@@ -122,13 +122,13 @@ nv10_render_set_format(struct gl_context *ctx)
 				get_hw_format(a->type);
 
 			if (attr == VERT_ATTRIB_POS && a->fields == 4)
-				hw_format |= NV10TCL_VTXFMT_POS_HOMOGENEOUS;
+				hw_format |= NV10_3D_VTXBUF_FMT_POS_HOMOGENEOUS;
 		} else {
 			/* Unused attribute. */
-			hw_format = NV10TCL_VTXFMT_TYPE_FLOAT;
+			hw_format = NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT;
 		}
 
-		BEGIN_RING(chan, celsius, NV10TCL_VTXFMT(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_FMT(i), 1);
 		OUT_RING(chan, hw_format);
 	}
 }
@@ -145,7 +145,7 @@ nv10_render_bind_vertices(struct gl_context *ctx)
 		struct nouveau_array *a = &render->attrs[attr];
 
 		nouveau_bo_markl(bctx, celsius,
-				 NV10TCL_VTXBUF_ADDRESS(i),
+				 NV10_3D_VTXBUF_OFFSET(i),
 				 a->bo, a->offset,
 				 NOUVEAU_BO_GART | NOUVEAU_BO_RD);
 	}
@@ -156,33 +156,33 @@ nv10_render_bind_vertices(struct gl_context *ctx)
 	struct nouveau_grobj *celsius = context_eng3d(ctx)
 
 #define BATCH_VALIDATE()						\
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_ARRAY_VALIDATE, 1);	\
+	BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_VALIDATE, 1);	\
 	OUT_RING(chan, 0)
 
 #define BATCH_BEGIN(prim)						\
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1);	\
+	BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1);	\
 	OUT_RING(chan, prim)
 #define BATCH_END()							\
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1);	\
+	BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1);	\
 	OUT_RING(chan, 0)
 
 #define MAX_PACKET 0x400
 
 #define MAX_OUT_L 0x100
 #define BATCH_PACKET_L(n)						\
-	BEGIN_RING_NI(chan, celsius, NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS, n)
+	BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_BATCH, n)
 #define BATCH_OUT_L(i, n)			\
 	OUT_RING(chan, ((n) - 1) << 24 | (i))
 
 #define MAX_OUT_I16 0x2
 #define BATCH_PACKET_I16(n)						\
-	BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U16, n)
+	BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U16, n)
 #define BATCH_OUT_I16(i0, i1)			\
 	OUT_RING(chan, (i1) << 16 | (i0))
 
 #define MAX_OUT_I32 0x1
 #define BATCH_PACKET_I32(n)						\
-	BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U32, n)
+	BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U32, n)
 #define BATCH_OUT_I32(i)			\
 	OUT_RING(chan, i)
 
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
index 0fda9fa..dbdfe7c 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
@@ -27,7 +27,8 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_fbo.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv10_3d.xml.h"
 #include "nouveau_util.h"
 #include "nv10_driver.h"
 
@@ -68,20 +69,20 @@ setup_hierz_buffer(struct gl_context *ctx)
 				    0, NOUVEAU_BO_TILE_ZETA, &nfb->hierz.bo);
 	}
 
-	nouveau_bo_markl(bctx, celsius, NV17TCL_LMA_DEPTH_BUFFER_OFFSET,
+	nouveau_bo_markl(bctx, celsius, NV17_3D_LMA_DEPTH_BUFFER_OFFSET,
 			 nfb->hierz.bo, 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR);
 
 	WAIT_RING(chan, 9);
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_WINDOW_X, 4);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_WINDOW_X, 4);
 	OUT_RINGf(chan, - 1792);
 	OUT_RINGf(chan, - 2304 + fb->Height);
 	OUT_RINGf(chan, fb->_DepthMaxF / 2);
 	OUT_RINGf(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_PITCH, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_BUFFER_PITCH, 1);
 	OUT_RING(chan, pitch);
 
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_ENABLE, 1);
 	OUT_RING(chan, 1);
 }
 
@@ -93,7 +94,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 	struct nouveau_bo_context *bctx = context_bctx(ctx, FRAMEBUFFER);
 	struct gl_framebuffer *fb = ctx->DrawBuffer;
 	struct nouveau_surface *s;
-	unsigned rt_format = NV10TCL_RT_FORMAT_TYPE_LINEAR;
+	unsigned rt_format = NV10_3D_RT_FORMAT_TYPE_LINEAR;
 	unsigned rt_pitch = 0, zeta_pitch = 0;
 	unsigned bo_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR;
 
@@ -106,7 +107,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		int i;
 
 		for (i = 0; i < 6; i++) {
-			BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+			BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
 			OUT_RING(chan, 0);
 		}
 	}
@@ -119,7 +120,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		rt_format |= get_rt_format(s->format);
 		zeta_pitch = rt_pitch = s->pitch;
 
-		nouveau_bo_markl(bctx, celsius, NV10TCL_COLOR_OFFSET,
+		nouveau_bo_markl(bctx, celsius, NV10_3D_COLOR_OFFSET,
 				 s->bo, 0, bo_flags);
 	}
 
@@ -131,7 +132,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		rt_format |= get_rt_format(s->format);
 		zeta_pitch = s->pitch;
 
-		nouveau_bo_markl(bctx, celsius, NV10TCL_ZETA_OFFSET,
+		nouveau_bo_markl(bctx, celsius, NV10_3D_ZETA_OFFSET,
 				 s->bo, 0, bo_flags);
 
 		if (context_chipset(ctx) >= 0x17) {
@@ -140,7 +141,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		}
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_RT_FORMAT, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RT_FORMAT, 2);
 	OUT_RING(chan, rt_format);
 	OUT_RING(chan, zeta_pitch << 16 | rt_pitch);
 
@@ -162,7 +163,7 @@ nv10_emit_scissor(struct gl_context *ctx, int emit)
 
 	get_scissors(ctx->DrawBuffer, &x, &y, &w, &h);
 
-	BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2);
 	OUT_RING(chan, w << 16 | x);
 	OUT_RING(chan, h << 16 | y);
 }
@@ -182,12 +183,12 @@ nv10_emit_viewport(struct gl_context *ctx, int emit)
 	if (nv10_use_viewport_zclear(ctx))
 		a[2] = nv10_transform_depth(ctx, (vp->Far + vp->Near) / 2);
 
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_TRANSLATE_X, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_TRANSLATE_X, 4);
 	OUT_RINGp(chan, a, 4);
 
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1);
 	OUT_RING(chan, (fb->Width - 1) << 16 | 0x08000800);
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1);
 	OUT_RING(chan, (fb->Height - 1) << 16 | 0x08000800);
 
 	context_dirty(ctx, PROJECTION);
@@ -203,12 +204,12 @@ nv10_emit_zclear(struct gl_context *ctx, int emit)
 		to_nouveau_framebuffer(ctx->DrawBuffer);
 
 	if (nfb->hierz.bo) {
-		BEGIN_RING(chan, celsius, NV17TCL_ZCLEAR_ENABLE, 2);
+		BEGIN_RING(chan, celsius, NV17_3D_ZCLEAR_ENABLE, 2);
 		OUT_RING(chan, nctx->hierz.clear_blocked ? 0 : 1);
 		OUT_RING(chan, nfb->hierz.clear_value |
 			 (nctx->hierz.clear_seq & 0xff));
 	} else {
-		BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2);
+		BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2);
 		OUT_RINGf(chan, nv10_transform_depth(ctx, 0));
 		OUT_RINGf(chan, nv10_transform_depth(ctx, 1));
 		context_dirty(ctx, VIEWPORT);
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
index 5138c36..1adc860 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
@@ -27,7 +27,7 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nouveau_util.h"
 #include "nv10_driver.h"
 #include "nv20_driver.h"
@@ -41,24 +41,24 @@
 #define RC_IN_SHIFT_G	40
 
 #define RC_IN_SOURCE(source)				\
-	((uint64_t)NV10TCL_RC_IN_RGB_D_INPUT_##source)
+	((uint64_t)NV10_3D_RC_IN_RGB_D_INPUT_##source)
 #define RC_IN_USAGE(usage)					\
-	((uint64_t)NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_##usage)
+	((uint64_t)NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_##usage)
 #define RC_IN_MAPPING(mapping)					\
-	((uint64_t)NV10TCL_RC_IN_RGB_D_MAPPING_##mapping)
+	((uint64_t)NV10_3D_RC_IN_RGB_D_MAPPING_##mapping)
 
-#define RC_OUT_BIAS	NV10TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF
-#define RC_OUT_SCALE_1	NV10TCL_RC_OUT_RGB_SCALE_NONE
-#define RC_OUT_SCALE_2	NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO
-#define RC_OUT_SCALE_4	NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR
+#define RC_OUT_BIAS	NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF
+#define RC_OUT_SCALE_1	NV10_3D_RC_OUT_RGB_SCALE_NONE
+#define RC_OUT_SCALE_2	NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO
+#define RC_OUT_SCALE_4	NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR
 
 /* Make the combiner do: spare0_i = A_i * B_i */
-#define RC_OUT_AB	NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0
+#define RC_OUT_AB	NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0
 /* spare0_i = dot3(A, B) */
-#define RC_OUT_DOT_AB	(NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 |	\
-			 NV10TCL_RC_OUT_RGB_AB_DOT_PRODUCT)
+#define RC_OUT_DOT_AB	(NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 |	\
+			 NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT)
 /* spare0_i = A_i * B_i + C_i * D_i */
-#define RC_OUT_SUM	NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0
+#define RC_OUT_SUM	NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0
 
 struct combiner_state {
 	struct gl_context *ctx;
@@ -383,15 +383,15 @@ nv10_emit_tex_env(struct gl_context *ctx, int emit)
 			c_out |= 0x3 << 27;
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_RC_IN_ALPHA(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_IN_ALPHA(i), 1);
 	OUT_RING(chan, a_in);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_IN_RGB(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_IN_RGB(i), 1);
 	OUT_RING(chan, c_in);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_COLOR(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_COLOR(i), 1);
 	OUT_RING(chan, k);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_ALPHA(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_ALPHA(i), 1);
 	OUT_RING(chan, a_out);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_RGB(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_RGB(i), 1);
 	OUT_RING(chan, c_out);
 
 	context_dirty(ctx, FRAG);
@@ -407,7 +407,7 @@ nv10_emit_frag(struct gl_context *ctx, int emit)
 
 	nv10_get_final_combiner(ctx, &in, &n);
 
-	BEGIN_RING(chan, celsius, NV10TCL_RC_FINAL0, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_FINAL0, 2);
 	OUT_RING(chan, in);
 	OUT_RING(chan, in >> 32);
 }
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
index 4e49b02..f0f7dd2 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
@@ -27,7 +27,7 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 void
@@ -37,13 +37,13 @@ nv10_emit_cull_face(struct gl_context *ctx, int emit)
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 	GLenum mode = ctx->Polygon.CullFaceMode;
 
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1);
 	OUT_RING(chan, ctx->Polygon.CullFlag ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 1);
-	OUT_RING(chan, (mode == GL_FRONT ? NV10TCL_CULL_FACE_FRONT :
-			mode == GL_BACK ? NV10TCL_CULL_FACE_BACK :
-			NV10TCL_CULL_FACE_FRONT_AND_BACK));
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 1);
+	OUT_RING(chan, (mode == GL_FRONT ? NV10_3D_CULL_FACE_FRONT :
+			mode == GL_BACK ? NV10_3D_CULL_FACE_BACK :
+			NV10_3D_CULL_FACE_FRONT_AND_BACK));
 }
 
 void
@@ -52,9 +52,9 @@ nv10_emit_front_face(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_FRONT_FACE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_FRONT_FACE, 1);
 	OUT_RING(chan, ctx->Polygon.FrontFace == GL_CW ?
-		 NV10TCL_FRONT_FACE_CW : NV10TCL_FRONT_FACE_CCW);
+		 NV10_3D_FRONT_FACE_CW : NV10_3D_FRONT_FACE_CCW);
 }
 
 void
@@ -65,10 +65,10 @@ nv10_emit_line_mode(struct gl_context *ctx, int emit)
 	GLboolean smooth = ctx->Line.SmoothFlag &&
 		ctx->Hint.LineSmooth == GL_NICEST;
 
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1);
 	OUT_RING(chan, MAX2(smooth ? 0 : 1,
 			    ctx->Line.Width) * 8);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, smooth ? 1 : 0);
 }
 
@@ -83,10 +83,10 @@ nv10_emit_point_mode(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1);
 	OUT_RING(chan, (uint32_t)(ctx->Point.Size * 8));
 
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, ctx->Point.SmoothFlag ? 1 : 0);
 }
 
@@ -96,11 +96,11 @@ nv10_emit_polygon_mode(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2);
 	OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.FrontMode));
 	OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.BackMode));
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, ctx->Polygon.SmoothFlag ? 1 : 0);
 }
 
@@ -110,12 +110,12 @@ nv10_emit_polygon_offset(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
 	OUT_RING(chan, ctx->Polygon.OffsetPoint ? 1 : 0);
 	OUT_RING(chan, ctx->Polygon.OffsetLine ? 1 : 0);
 	OUT_RING(chan, ctx->Polygon.OffsetFill ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2);
 	OUT_RINGf(chan, ctx->Polygon.OffsetFactor);
 	OUT_RINGf(chan, ctx->Polygon.OffsetUnits);
 }
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
index 9960984..9215391 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
@@ -27,7 +27,7 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 void
@@ -36,10 +36,10 @@ nv10_emit_alpha_func(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1);
 	OUT_RING(chan, ctx->Color.AlphaEnabled ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2);
 	OUT_RING(chan, nvgl_comparison_op(ctx->Color.AlphaFunc));
 	OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.AlphaRef));
 }
@@ -50,7 +50,7 @@ nv10_emit_blend_color(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_COLOR, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_COLOR, 1);
 	OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.BlendColor[3]) << 24 |
 		 FLOAT_TO_UBYTE(ctx->Color.BlendColor[0]) << 16 |
 		 FLOAT_TO_UBYTE(ctx->Color.BlendColor[1]) << 8 |
@@ -63,10 +63,10 @@ nv10_emit_blend_equation(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1);
 	OUT_RING(chan, ctx->Color.BlendEnabled ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_EQUATION, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_EQUATION, 1);
 	OUT_RING(chan, nvgl_blend_eqn(ctx->Color.BlendEquationRGB));
 }
 
@@ -76,7 +76,7 @@ nv10_emit_blend_func(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 2);
 	OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendSrcRGB));
 	OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendDstRGB));
 }
@@ -87,7 +87,7 @@ nv10_emit_color_mask(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1);
 	OUT_RING(chan, ((ctx->Color.ColorMask[0][3] ? 1 << 24 : 0) |
 			(ctx->Color.ColorMask[0][0] ? 1 << 16 : 0) |
 			(ctx->Color.ColorMask[0][1] ? 1 << 8 : 0) |
@@ -100,11 +100,11 @@ nv10_emit_depth(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1);
 	OUT_RING(chan, ctx->Depth.Test ? 1 : 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1);
 	OUT_RING(chan, ctx->Depth.Mask ? 1 : 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1);
 	OUT_RING(chan, nvgl_comparison_op(ctx->Depth.Func));
 }
 
@@ -114,7 +114,7 @@ nv10_emit_dither(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 1);
 	OUT_RING(chan, ctx->Color.DitherFlag ? 1 : 0);
 }
 
@@ -127,7 +127,7 @@ nv10_emit_logic_opcode(struct gl_context *ctx, int emit)
 	assert(!ctx->Color.ColorLogicOpEnabled
 	       || context_chipset(ctx) >= 0x11);
 
-	BEGIN_RING(chan, celsius, NV11TCL_COLOR_LOGIC_OP_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV11_3D_COLOR_LOGIC_OP_ENABLE, 2);
 	OUT_RING(chan, ctx->Color.ColorLogicOpEnabled ? 1 : 0);
 	OUT_RING(chan, nvgl_logicop_func(ctx->Color.LogicOp));
 }
@@ -138,9 +138,9 @@ nv10_emit_shade_model(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_SHADE_MODEL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_SHADE_MODEL, 1);
 	OUT_RING(chan, ctx->Light.ShadeModel == GL_SMOOTH ?
-		 NV10TCL_SHADE_MODEL_SMOOTH : NV10TCL_SHADE_MODEL_FLAT);
+		 NV10_3D_SHADE_MODEL_SMOOTH : NV10_3D_SHADE_MODEL_FLAT);
 }
 
 void
@@ -149,10 +149,10 @@ nv10_emit_stencil_func(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_ENABLE, 1);
 	OUT_RING(chan, ctx->Stencil.Enabled ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_FUNC_FUNC, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_FUNC_FUNC, 3);
 	OUT_RING(chan, nvgl_comparison_op(ctx->Stencil.Function[0]));
 	OUT_RING(chan, ctx->Stencil.Ref[0]);
 	OUT_RING(chan, ctx->Stencil.ValueMask[0]);
@@ -164,7 +164,7 @@ nv10_emit_stencil_mask(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 1);
 	OUT_RING(chan, ctx->Stencil.WriteMask[0]);
 }
 
@@ -174,7 +174,7 @@ nv10_emit_stencil_op(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_OP_FAIL, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_OP_FAIL, 3);
 	OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.FailFunc[0]));
 	OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZFailFunc[0]));
 	OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZPassFunc[0]));
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
index 0092ad0..4dc21f4 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
@@ -28,14 +28,10 @@
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
 #include "nouveau_texture.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nouveau_util.h"
 #include "nv10_driver.h"
 
-#define TX_GEN_MODE(i, j) (NV10TCL_TX_GEN_MODE_S(i) + 4 * (j))
-#define TX_GEN_COEFF(i, j) (NV10TCL_TX_GEN_COEFF_S_A(i) + 16 * (j))
-#define TX_MATRIX(i) (NV10TCL_TX0_MATRIX(0) + 64 * (i))
-
 void
 nv10_emit_tex_gen(struct gl_context *ctx, int emit)
 {
@@ -53,15 +49,15 @@ nv10_emit_tex_gen(struct gl_context *ctx, int emit)
 
 			if (k) {
 				BEGIN_RING(chan, celsius,
-					   TX_GEN_COEFF(i, j), 4);
+					   NV10_3D_TEX_GEN_COEFF(i, j), 4);
 				OUT_RINGp(chan, k, 4);
 			}
 
-			BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1);
+			BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i, j), 1);
 			OUT_RING(chan, nvgl_texgen_mode(coord->Mode));
 
 		} else {
-			BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1);
+			BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i, j), 1);
 			OUT_RING(chan, 0);
 		}
 	}
@@ -80,14 +76,14 @@ nv10_emit_tex_mat(struct gl_context *ctx, int emit)
 	if (nctx->fallback == HWTNL &&
 	    ((ctx->Texture._TexMatEnabled & 1 << i) ||
 	     ctx->Texture.Unit[i]._GenFlags)) {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1);
 		OUT_RING(chan, 1);
 
-		BEGIN_RING(chan, celsius, TX_MATRIX(i), 16);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX(i, 0), 16);
 		OUT_RINGm(chan, ctx->TextureMatrixStack[i].Top->m);
 
 	} else {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1);
 		OUT_RING(chan, 0);
 	}
 }
@@ -97,29 +93,29 @@ get_tex_format_pot(struct gl_texture_image *ti)
 {
 	switch (ti->TexFormat) {
 	case MESA_FORMAT_ARGB8888:
-		return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8;
+		return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8;
 
 	case MESA_FORMAT_XRGB8888:
-		return NV10TCL_TX_FORMAT_FORMAT_X8R8G8B8;
+		return NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8;
 
 	case MESA_FORMAT_ARGB1555:
-		return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5;
+		return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5;
 
 	case MESA_FORMAT_ARGB4444:
-		return NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4;
+		return NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4;
 
 	case MESA_FORMAT_RGB565:
-		return NV10TCL_TX_FORMAT_FORMAT_R5G6B5;
+		return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5;
 
 	case MESA_FORMAT_A8:
 	case MESA_FORMAT_I8:
-		return NV10TCL_TX_FORMAT_FORMAT_A8;
+		return NV10_3D_TEX_FORMAT_FORMAT_I8;
 
 	case MESA_FORMAT_L8:
-		return NV10TCL_TX_FORMAT_FORMAT_L8;
+		return NV10_3D_TEX_FORMAT_FORMAT_L8;
 
 	case MESA_FORMAT_CI8:
-		return NV10TCL_TX_FORMAT_FORMAT_INDEX8;
+		return NV10_3D_TEX_FORMAT_FORMAT_INDEX8;
 
 	default:
 		assert(0);
@@ -131,19 +127,19 @@ get_tex_format_rect(struct gl_texture_image *ti)
 {
 	switch (ti->TexFormat) {
 	case MESA_FORMAT_ARGB1555:
-		return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT;
 
 	case MESA_FORMAT_RGB565:
-		return NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT;
 
 	case MESA_FORMAT_ARGB8888:
 	case MESA_FORMAT_XRGB8888:
-		return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT;
 
 	case MESA_FORMAT_A8:
 	case MESA_FORMAT_L8:
 	case MESA_FORMAT_I8:
-		return NV10TCL_TX_FORMAT_FORMAT_A8_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_I8_RECT;
 
 	default:
 		assert(0);
@@ -164,7 +160,7 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
 	uint32_t tx_format, tx_filter, tx_enable;
 
 	if (!ctx->Texture.Unit[i]._ReallyEnabled) {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1);
 		OUT_RING(chan, 0);
 		return;
 	}
@@ -186,13 +182,13 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
 	tx_filter = nvgl_filter_mode(t->MagFilter) << 28
 		| nvgl_filter_mode(t->MinFilter) << 24;
 
-	tx_enable = NV10TCL_TX_ENABLE_ENABLE
+	tx_enable = NV10_3D_TEX_ENABLE_ENABLE
 		| log2i(t->MaxAnisotropy) << 4;
 
 	if (t->Target == GL_TEXTURE_RECTANGLE) {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_PITCH(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_PITCH(i), 1);
 		OUT_RING(chan, s->pitch << 16);
-		BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_SIZE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_SIZE(i), 1);
 		OUT_RING(chan, align(s->width, 2) << 16 | s->height);
 
 		tx_format |= get_tex_format_rect(ti);
@@ -211,26 +207,26 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
 		lod_min = CLAMP(lod_min, 0, 15);
 		lod_bias = CLAMP(lod_bias, 0, 15);
 
-		tx_format |= NV10TCL_TX_FORMAT_MIPMAP;
+		tx_format |= NV10_3D_TEX_FORMAT_MIPMAP;
 		tx_filter |= lod_bias << 8;
 		tx_enable |= lod_min << 26
 			| lod_max << 14;
 	}
 
 	/* Write it to the hardware. */
-	nouveau_bo_mark(bctx, celsius, NV10TCL_TX_FORMAT(i),
+	nouveau_bo_mark(bctx, celsius, NV10_3D_TEX_FORMAT(i),
 			s->bo, tx_format, 0,
-			NV10TCL_TX_FORMAT_DMA0,
-			NV10TCL_TX_FORMAT_DMA1,
+			NV10_3D_TEX_FORMAT_DMA0,
+			NV10_3D_TEX_FORMAT_DMA1,
 			bo_flags | NOUVEAU_BO_OR);
 
-	nouveau_bo_markl(bctx, celsius, NV10TCL_TX_OFFSET(i),
+	nouveau_bo_markl(bctx, celsius, NV10_3D_TEX_OFFSET(i),
 			 s->bo, s->offset, bo_flags);
 
-	BEGIN_RING(chan, celsius, NV10TCL_TX_FILTER(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_FILTER(i), 1);
 	OUT_RING(chan, tx_filter);
 
-	BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1);
 	OUT_RING(chan, tx_enable);
 }
 
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
index 175abfc..b9d07c1 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
@@ -28,7 +28,7 @@
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 void
@@ -42,13 +42,13 @@ get_material_bitmask(unsigned m)
 	unsigned ret = 0;
 
 	if (m & MAT_BIT_FRONT_EMISSION)
-		ret |= NV10TCL_COLOR_MATERIAL_EMISSION;
+		ret |= NV10_3D_COLOR_MATERIAL_EMISSION;
 	if (m & MAT_BIT_FRONT_AMBIENT)
-		ret |= NV10TCL_COLOR_MATERIAL_AMBIENT;
+		ret |= NV10_3D_COLOR_MATERIAL_AMBIENT;
 	if (m & MAT_BIT_FRONT_DIFFUSE)
-		ret |= NV10TCL_COLOR_MATERIAL_DIFFUSE;
+		ret |= NV10_3D_COLOR_MATERIAL_DIFFUSE;
 	if (m & MAT_BIT_FRONT_SPECULAR)
-		ret |= NV10TCL_COLOR_MATERIAL_SPECULAR;
+		ret |= NV10_3D_COLOR_MATERIAL_SPECULAR;
 
 	return ret;
 }
@@ -60,7 +60,7 @@ nv10_emit_color_material(struct gl_context *ctx, int emit)
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 	unsigned mask = get_material_bitmask(ctx->Light.ColorMaterialBitmask);
 
-	BEGIN_RING(chan, celsius, NV10TCL_COLOR_MATERIAL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_COLOR_MATERIAL, 1);
 	OUT_RING(chan, ctx->Light.ColorMaterialEnabled ? mask : 0);
 }
 
@@ -69,11 +69,11 @@ get_fog_mode(unsigned mode)
 {
 	switch (mode) {
 	case GL_LINEAR:
-		return NV10TCL_FOG_MODE_LINEAR;
+		return NV10_3D_FOG_MODE_LINEAR;
 	case GL_EXP:
-		return NV10TCL_FOG_MODE_EXP;
+		return NV10_3D_FOG_MODE_EXP;
 	case GL_EXP2:
-		return NV10TCL_FOG_MODE_EXP2;
+		return NV10_3D_FOG_MODE_EXP2;
 	default:
 		assert(0);
 	}
@@ -84,9 +84,9 @@ get_fog_source(unsigned source)
 {
 	switch (source) {
 	case GL_FOG_COORDINATE_EXT:
-		return NV10TCL_FOG_COORD_FOG;
+		return NV10_3D_FOG_COORD_FOG;
 	case GL_FRAGMENT_DEPTH_EXT:
-		return NV10TCL_FOG_COORD_DIST_ORTHOGONAL_ABS;
+		return NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS;
 	default:
 		assert(0);
 	}
@@ -133,13 +133,13 @@ nv10_emit_fog(struct gl_context *ctx, int emit)
 
 	nv10_get_fog_coeff(ctx, k);
 
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 4);
 	OUT_RING(chan, get_fog_mode(f->Mode));
 	OUT_RING(chan, get_fog_source(source));
 	OUT_RING(chan, f->Enabled ? 1 : 0);
 	OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color));
 
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3);
 	OUT_RINGp(chan, k, 3);
 
 	context_dirty(ctx, FRAG);
@@ -150,13 +150,13 @@ get_light_mode(struct gl_light *l)
 {
 	if (l->Enabled) {
 		if (l->_Flags & LIGHT_SPOT)
-			return NV10TCL_ENABLED_LIGHTS_0_DIRECTIONAL;
+			return NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL;
 		else if (l->_Flags & LIGHT_POSITIONAL)
-			return NV10TCL_ENABLED_LIGHTS_0_POSITIONAL;
+			return NV10_3D_ENABLED_LIGHTS_0_POSITIONAL;
 		else
-			return NV10TCL_ENABLED_LIGHTS_0_NONPOSITIONAL;
+			return NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL;
 	} else {
-		return NV10TCL_ENABLED_LIGHTS_0_DISABLED;
+		return NV10_3D_ENABLED_LIGHTS_0_DISABLED;
 	}
 }
 
@@ -170,7 +170,7 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit)
 	int i;
 
 	if (nctx->fallback != HWTNL) {
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1);
 		OUT_RING(chan, 0);
 		return;
 	}
@@ -178,11 +178,11 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit)
 	for (i = 0; i < MAX_LIGHTS; i++)
 		en_lights |= get_light_mode(&ctx->Light.Light[i]) << 2 * i;
 
-	BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1);
 	OUT_RING(chan, en_lights);
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1);
 	OUT_RING(chan, ctx->Light.Enabled ? 1 : 0);
-	BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1);
 	OUT_RING(chan, ctx->Transform.Normalize ? 1 : 0);
 }
 
@@ -193,16 +193,16 @@ nv10_emit_light_model(struct gl_context *ctx, int emit)
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 	struct gl_lightmodel *m = &ctx->Light.Model;
 
-	BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1);
 	OUT_RING(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1);
 	OUT_RING(chan, ((m->LocalViewer ?
-			 NV10TCL_LIGHT_MODEL_LOCAL_VIEWER : 0) |
+			 NV10_3D_LIGHT_MODEL_LOCAL_VIEWER : 0) |
 			(NEED_SECONDARY_COLOR(ctx) ?
-			 NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR : 0) |
+			 NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR : 0) |
 			(!ctx->Light.Enabled && ctx->Fog.ColorSumEnabled ?
-			 NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR : 0)));
+			 NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR : 0)));
 }
 
 static float
@@ -281,20 +281,20 @@ nv10_emit_light_source(struct gl_context *ctx, int emit)
 	struct gl_light *l = &ctx->Light.Light[i];
 
 	if (l->_Flags & LIGHT_POSITIONAL) {
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_POSITION_X(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_POSITION_X(i), 3);
 		OUT_RINGp(chan, l->_Position, 3);
 
 		BEGIN_RING(chan, celsius,
-			   NV10TCL_LIGHT_ATTENUATION_CONSTANT(i), 3);
+			   NV10_3D_LIGHT_ATTENUATION_CONSTANT(i), 3);
 		OUT_RINGf(chan, l->ConstantAttenuation);
 		OUT_RINGf(chan, l->LinearAttenuation);
 		OUT_RINGf(chan, l->QuadraticAttenuation);
 
 	} else {
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIRECTION_X(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIRECTION_X(i), 3);
 		OUT_RINGp(chan, l->_VP_inf_norm, 3);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_HALF_VECTOR_X(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_HALF_VECTOR_X(i), 3);
 		OUT_RINGp(chan, l->_h_inf_norm, 3);
 	}
 
@@ -303,7 +303,7 @@ nv10_emit_light_source(struct gl_context *ctx, int emit)
 
 		nv10_get_spot_coeff(l, k);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPOT_CUTOFF_A(i), 7);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPOT_CUTOFF(i, 0), 7);
 		OUT_RINGp(chan, k, 7);
 	}
 }
@@ -335,11 +335,11 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit)
 		ZERO_3V(c_factor);
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL_AMBIENT_R, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL_AMBIENT_R, 3);
 	OUT_RINGp(chan, c_scene, 3);
 
 	if (ctx->Light.ColorMaterialEnabled) {
-		BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_R, 3);
+		BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_R, 3);
 		OUT_RINGp(chan, c_factor, 3);
 	}
 
@@ -349,7 +349,7 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit)
 				  l->Ambient :
 				  l->_MatAmbient[0]);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_AMBIENT_R(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_AMBIENT_R(i), 3);
 		OUT_RINGp(chan, c_light, 3);
 	}
 }
@@ -362,7 +362,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit)
 	GLfloat (*mat)[4] = ctx->Light.Material.Attrib;
 	struct gl_light *l;
 
-	BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_A, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_A, 1);
 	OUT_RINGf(chan, mat[MAT_ATTRIB_FRONT_DIFFUSE][3]);
 
 	foreach(l, &ctx->Light.EnabledList) {
@@ -371,7 +371,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit)
 				  l->Diffuse :
 				  l->_MatDiffuse[0]);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIFFUSE_R(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIFFUSE_R(i), 3);
 		OUT_RINGp(chan, c_light, 3);
 	}
 }
@@ -389,7 +389,7 @@ nv10_emit_material_specular(struct gl_context *ctx, int emit)
 				  l->Specular :
 				  l->_MatSpecular[0]);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPECULAR_R(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPECULAR_R(i), 3);
 		OUT_RINGp(chan, c_light, 3);
 	}
 }
@@ -430,7 +430,7 @@ nv10_emit_material_shininess(struct gl_context *ctx, int emit)
 		CLAMP(mat[MAT_ATTRIB_FRONT_SHININESS][0], 0, 1024),
 		k);
 
-	BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_SHININESS(0), 6);
+	BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_SHININESS(0), 6);
 	OUT_RINGp(chan, k, 6);
 }
 
@@ -447,7 +447,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit)
 
 	if (ctx->Light._NeedEyeCoords || ctx->Fog.Enabled ||
 	    (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)) {
-		BEGIN_RING(chan, celsius, NV10TCL_MODELVIEW0_MATRIX(0), 16);
+		BEGIN_RING(chan, celsius, NV10_3D_MODELVIEW_MATRIX(0, 0), 16);
 		OUT_RINGm(chan, m->m);
 	}
 
@@ -456,7 +456,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit)
 		int i, j;
 
 		BEGIN_RING(chan, celsius,
-			   NV10TCL_INVERSE_MODELVIEW0_MATRIX(0), 12);
+			   NV10_3D_INVERSE_MODELVIEW_MATRIX(0, 0), 12);
 		for (i = 0; i < 3; i++)
 			for (j = 0; j < 4; j++)
 				OUT_RINGf(chan, m->inv[4*i + j]);
@@ -485,7 +485,7 @@ nv10_emit_projection(struct gl_context *ctx, int emit)
 	if (nctx->fallback == HWTNL)
 		_math_matrix_mul_matrix(&m, &m, &ctx->_ModelProjectMatrix);
 
-	BEGIN_RING(chan, celsius, NV10TCL_PROJECTION_MATRIX(0), 16);
+	BEGIN_RING(chan, celsius, NV10_3D_PROJECTION_MATRIX(0), 16);
 	OUT_RINGm(chan, m.m);
 
 	_math_matrix_dtr(&m);
-- 
1.7.3.2

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [RFC/PATCH] Switch dri driver to use rules-ng-ng headers
       [not found] ` <1288571171-8102-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
                     ` (2 preceding siblings ...)
  2010-11-01  0:26   ` [PATCH 3/5] dri/nouveau: nv10: " Viktor Novotný
@ 2010-11-01  1:59   ` Marcin Kościelnicki
       [not found]     ` <7d9982d90fbc76c45c09e18e0a9f08b1-mP9o5jsk0RY@public.gmane.org>
  3 siblings, 1 reply; 9+ messages in thread
From: Marcin Kościelnicki @ 2010-11-01  1:59 UTC (permalink / raw)
  To: Viktor Novotný; +Cc: nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW

> following patches make the dri driver use rules-ng-ng(rnn) generated
> register definitions instead of renouveau generated ones.
> First set of 5 patches is for mesa repository, second set of 4 patches
is
> for rnn and consists of changes ported from renouveau.

Applied the rnn stuff.

> One thing I do not understand is, why rnn does not generate
> NV20_3D_TEX_ENABLE__LEN(should be 4), so any pointers on what to 
> do are welcome, as are any other comments, suggestions etc.

This is caused by the way TEX_ENABLE is defined...

<stripe length="4" stride="64">
  <doc> Texture units. </doc>
  <!-- ... -->
  <reg32 offset="0x1b0c" name="TEX_ENABLE">
    <!-- ... -->
  </reg32>
</stripe>

TEX_ENABLE is actually a singular register defined within an anonymous
stripe with length 4. If TEX_ENABLE was itself an array-register,
NV20_3D_TEX_ENABLE__LEN would be its length. What you want is the length
of the stripe, which doesn't have a name, and hence doesn't have a define.

I'd suggest changing the stripe's name to TEX, and nuking TEX_ prefix from
the regs inside it: you'll end up with NV20_3D_TEX__LEN defined to 4, and
the effective names of stuff inside it will be unchanged.

Marcin Kościelnicki
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH] nv10-20: Name texture units stripe to expose number of tex-units to header
       [not found]     ` <7d9982d90fbc76c45c09e18e0a9f08b1-mP9o5jsk0RY@public.gmane.org>
@ 2010-11-04 10:00       ` Viktor Novotný
       [not found]         ` <1288864834-16144-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: Viktor Novotný @ 2010-11-04 10:00 UTC (permalink / raw)
  To: nouveau

From: Viktor Novotný <noviktor@seznam.cz>

---
Ok,
here is a patch for rnn.
Regarding the mesa patches, I see that some of the headers are shared with gallium driver,
so I suggest moving all shared parts to gallium/drivers/nouveau and leaving the 3d 
headers in nvfx and dri/nouveau respectively, to avoid duplication.

Regards
	Viktor Novotný

 nv10_3d.xml |   16 ++++++++--------
 nv20_3d.xml |   20 ++++++++++----------
 2 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/nv10_3d.xml b/nv10_3d.xml
index 25e092b..c22a203 100644
--- a/nv10_3d.xml
+++ b/nv10_3d.xml
@@ -371,11 +371,11 @@
 			</stripe>
 		</stripe>
 
-		<stripe length="2" stride="4">
+		<stripe name="TEX" length="2" stride="4">
 			<doc> Texture units. </doc>
 
-			<reg32 offset="0x0218" name="TEX_OFFSET"/>
-			<reg32 offset="0x0220" name="TEX_FORMAT">
+			<reg32 offset="0x0218" name="OFFSET"/>
+			<reg32 offset="0x0220" name="FORMAT">
 				<bitfield name="DMA0" pos="0" type="boolean"/>
 				<bitfield name="DMA1" pos="1" type="boolean"/>
 				<bitfield name="CUBE_MAP" pos="2" type="boolean"/>
@@ -386,26 +386,26 @@
 				<bitfield name="WRAP_S" high="27" low="24" type="nv04_tex_wrap"/>
 				<bitfield name="WRAP_T" high="31" low="28" type="nv04_tex_wrap"/>
 			</reg32>
-			<reg32 offset="0x0228" name="TEX_ENABLE">
+			<reg32 offset="0x0228" name="ENABLE">
 				<bitfield name="CULL" high="3" low="0" type="nv10_tex_cull_mode"/>
 				<bitfield name="ANISOTROPY" high="5" low="4" type="int"/>
 				<bitfield name="MIPMAP_MAX_LOD" high="17" low="14" type="int"/>
 				<bitfield name="MIPMAP_MIN_LOD" high="29" low="26" type="int"/>
 				<bitfield name="ENABLE" pos="30" type="boolean"/>
 			</reg32>
-			<reg32 offset="0x0230" name="TEX_NPOT_PITCH">
+			<reg32 offset="0x0230" name="NPOT_PITCH">
 				<bitfield name="PITCH" high="31" low="16" type="int"/>
 			</reg32>
-			<reg32 offset="0x0240" name="TEX_NPOT_SIZE">
+			<reg32 offset="0x0240" name="NPOT_SIZE">
 				<bitfield name="H" high="15" low="0" type="int"/>
 				<bitfield name="W" high="31" low="16" type="int"/>
 			</reg32>
-			<reg32 offset="0x0248" name="TEX_FILTER">
+			<reg32 offset="0x0248" name="FILTER">
 				<bitfield name="LOD_BIAS" high="11" low="8" type="int"/>
 				<bitfield name="MINIFY" high="27" low="24" type="nv04_tex_min_filter"/>
 				<bitfield name="MAGNIFY" high="31" low="28" type="nv04_tex_mag_filter"/>
 			</reg32>
-			<reg32 offset="0x0250" name="TEX_PALETTE_OFFSET"/>
+			<reg32 offset="0x0250" name="PALETTE_OFFSET"/>
 		</stripe>
 
 		<stripe>
diff --git a/nv20_3d.xml b/nv20_3d.xml
index 5bdaa8e..6a2934a 100644
--- a/nv20_3d.xml
+++ b/nv20_3d.xml
@@ -430,11 +430,11 @@
 			</reg32>
 		</stripe>
 
-		<stripe length="4" stride="64">
+		<stripe name="TEX" length="4" stride="64">
 			<doc> Texture units. </doc>
 
-			<reg32 offset="0x1b00" name="TEX_OFFSET"/>
-			<reg32 offset="0x1b04" name="TEX_FORMAT">
+			<reg32 offset="0x1b00" name="OFFSET"/>
+			<reg32 offset="0x1b04" name="FORMAT">
 				<bitfield name="DMA0" pos="0" type="boolean"/>
 				<bitfield name="DMA1" pos="1" type="boolean"/>
 				<bitfield name="CUBIC" pos="2" type="boolean"/>
@@ -446,31 +446,31 @@
 				<bitfield name="BASE_SIZE_V" high="27" low="24" type="int"/>
 				<bitfield name="BASE_SIZE_W" high="31" low="28" type="int"/>
 			</reg32>
-			<reg32 offset="0x1b08" name="TEX_WRAP">
+			<reg32 offset="0x1b08" name="WRAP">
 				<bitfield name="S" high="7" low="0" type="nv04_tex_wrap"/>
 				<bitfield name="T" high="11" low="8" type="nv04_tex_wrap"/>
 				<bitfield name="R" high="19" low="16" type="nv04_tex_wrap"/>
 			</reg32>
-			<reg32 offset="0x1b0c" name="TEX_ENABLE">
+			<reg32 offset="0x1b0c" name="ENABLE">
 				<bitfield name="ANISO" high="5" low="4" type="nv20_tex_anisotropy"/>
 				<bitfield name="MIPMAP_MAX_LOD" high="17" low="14" type="int"/>
 				<bitfield name="MIPMAP_MIN_LOD" high="29" low="26" type="int"/>
 				<bitfield name="ENABLE" pos="30" type="boolean"/>
 			</reg32>
-			<reg32 offset="0x1b10" name="TEX_NPOT_PITCH">
+			<reg32 offset="0x1b10" name="NPOT_PITCH">
 				<bitfield name="PITCH" high="31" low="16" type="int"/>
 			</reg32>
-			<reg32 offset="0x1b14" name="TEX_FILTER">
+			<reg32 offset="0x1b14" name="FILTER">
 				<bitfield name="LOD_BIAS" high="11" low="8" type="int"/>
 				<bitfield name="MINIFY" high="19" low="16" type="nv04_tex_min_filter"/>
 				<bitfield name="MAGNIFY" high="27" low="24" type="nv04_tex_mag_filter"/>
 			</reg32>
-			<reg32 offset="0x1b1c" name="TEX_NPOT_SIZE">
+			<reg32 offset="0x1b1c" name="NPOT_SIZE">
 				<bitfield name="H" high="15" low="0" type="int"/>
 				<bitfield name="W" high="31" low="16" type="int"/>
 			</reg32>
-			<reg32 offset="0x1b20" name="TEX_PALETTE_OFFSET"/>
-			<reg32 offset="0x1b24" name="TEX_BORDER_COLOR" type="argb8"/>
+			<reg32 offset="0x1b20" name="PALETTE_OFFSET"/>
+			<reg32 offset="0x1b24" name="BORDER_COLOR" type="argb8"/>
 		</stripe>
 
 		<stripe>
-- 
1.7.3.2

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] nv10-20: Name texture units stripe to expose number of tex-units to header
       [not found]         ` <1288864834-16144-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
@ 2010-11-04 11:18           ` Marcin Kościelnicki
  0 siblings, 0 replies; 9+ messages in thread
From: Marcin Kościelnicki @ 2010-11-04 11:18 UTC (permalink / raw)
  To: nouveau

> here is a patch for rnn.

Applied and pushed.

Marcin Kościelnicki
_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH 3/5] dri/nouveau: nv10: Use rules-ng-ng headers
       [not found] ` <1288571454-8151-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
@ 2010-11-01  0:30   ` Viktor Novotný
  0 siblings, 0 replies; 9+ messages in thread
From: Viktor Novotný @ 2010-11-01  0:30 UTC (permalink / raw)
  To: nouveau

From: Viktor Novotný <noviktor@seznam.cz>

---
 src/mesa/drivers/dri/nouveau/nv10_context.c       |  127 +++++++++++----------
 src/mesa/drivers/dri/nouveau/nv10_render.c        |   42 ++++----
 src/mesa/drivers/dri/nouveau/nv10_state_fb.c      |   33 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_frag.c    |   36 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_polygon.c |   32 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_raster.c  |   38 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_tex.c     |   64 +++++------
 src/mesa/drivers/dri/nouveau/nv10_state_tnl.c     |   82 +++++++-------
 8 files changed, 226 insertions(+), 228 deletions(-)

diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c
index 78be401..f90faa0 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_context.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_context.c
@@ -29,7 +29,8 @@
 #include "nouveau_context.h"
 #include "nouveau_fbo.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv10_3d.xml.h"
 #include "nv04_driver.h"
 #include "nv10_driver.h"
 
@@ -157,9 +158,9 @@ nv17_zclear(struct gl_context *ctx, GLbitfield *buffers)
 		nfb->base._DepthBuffer->Wrapped)->surface;
 
 	/* Clear the hierarchical depth buffer */
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_FILL_VALUE, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_FILL_VALUE, 1);
 	OUT_RING(chan, pack_zs_f(s->format, ctx->Depth.Clear, 0));
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_CLEAR, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_BUFFER_CLEAR, 1);
 	OUT_RING(chan, 1);
 
 	/* Mark the depth buffer as cleared */
@@ -201,33 +202,33 @@ nv10_hwctx_init(struct gl_context *ctx)
 	struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw;
 	int i;
 
-	BEGIN_RING(chan, celsius, NV10TCL_DMA_NOTIFY, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DMA_NOTIFY, 1);
 	OUT_RING(chan, hw->ntfy->handle);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY0, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_DMA_TEXTURE0, 3);
 	OUT_RING(chan, chan->vram->handle);
 	OUT_RING(chan, chan->gart->handle);
 	OUT_RING(chan, chan->gart->handle);
-	BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY2, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_DMA_COLOR, 2);
 	OUT_RING(chan, chan->vram->handle);
 	OUT_RING(chan, chan->vram->handle);
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1);
 	OUT_RING(chan, 0x7ff << 16 | 0x800);
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1);
 	OUT_RING(chan, 0x7ff << 16 | 0x800);
 
 	for (i = 1; i < 8; i++) {
-		BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(i), 1);
 		OUT_RING(chan, 0);
-		BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(i), 1);
 		OUT_RING(chan, 0);
 	}
 
@@ -236,18 +237,18 @@ nv10_hwctx_init(struct gl_context *ctx)
 	BEGIN_RING(chan, celsius, 0x3f4, 1);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius,  NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
 	if (context_chipset(ctx) >= 0x17) {
-		BEGIN_RING(chan, celsius, NV17TCL_DMA_IN_MEMORY4, 2);
+		BEGIN_RING(chan, celsius, NV17_3D_UNK01AC, 2);
 		OUT_RING(chan, chan->vram->handle);
 		OUT_RING(chan, chan->vram->handle);
 
 		BEGIN_RING(chan, celsius, 0xd84, 1);
 		OUT_RING(chan, 0x3);
 
-		BEGIN_RING(chan, celsius, NV17TCL_COLOR_MASK_ENABLE, 1);
+		BEGIN_RING(chan, celsius, NV17_3D_COLOR_MASK_ENABLE, 1);
 		OUT_RING(chan, 1);
 	}
 
@@ -257,41 +258,41 @@ nv10_hwctx_init(struct gl_context *ctx)
 		OUT_RING(chan, 1);
 		OUT_RING(chan, 2);
 
-		BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+		BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
 		OUT_RING(chan, 0);
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius,  NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
 	/* Set state */
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2);
 	OUT_RING(chan, 0x207);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(0), 2);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(0), 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 2);
 	OUT_RING(chan, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_WEIGHT_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_WEIGHT_ENABLE, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 4);
 	OUT_RING(chan, 1);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0x8006);
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 8);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 8);
 	OUT_RING(chan, 0xff);
 	OUT_RING(chan, 0x207);
 	OUT_RING(chan, 0);
@@ -300,105 +301,105 @@ nv10_hwctx_init(struct gl_context *ctx)
 	OUT_RING(chan, 0x1e00);
 	OUT_RING(chan, 0x1e00);
 	OUT_RING(chan, 0x1d01);
-	BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1);
 	OUT_RING(chan, 0x201);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1);
 	OUT_RING(chan, 8);
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_PARAMETERS_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_PARAMETERS_ENABLE, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1);
 	OUT_RING(chan, 8);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2);
 	OUT_RING(chan, 0x1b02);
 	OUT_RING(chan, 0x1b02);
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 2);
 	OUT_RING(chan, 0x405);
 	OUT_RING(chan, 0x901);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_TX_GEN_MODE_S(0), 8);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(0, 0), 8);
 	for (i = 0; i < 8; i++)
 		OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(0), 2);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(0), 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3);
 	OUT_RING(chan, 0x3fc00000);	/* -1.50 */
 	OUT_RING(chan, 0xbdb8aa0a);	/* -0.09 */
 	OUT_RING(chan, 0);		/*  0.00 */
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius,  NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 2);
 	OUT_RING(chan, 0x802);
 	OUT_RING(chan, 2);
 	/* for some reason VIEW_MATRIX_ENABLE need to be 6 instead of 4 when
 	 * using texturing, except when using the texture matrix
 	 */
-	BEGIN_RING(chan, celsius, NV10TCL_VIEW_MATRIX_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEW_MATRIX_ENABLE, 1);
 	OUT_RING(chan, 6);
-	BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1);
 	OUT_RING(chan, 0x01010101);
 
 	/* Set vertex component */
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL_4F_R, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL_4F_R, 4);
 	OUT_RINGf(chan, 1.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL2_3F_R, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL2_3F_R, 3);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_NOR_3F_X, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_NOR_3F_X, 3);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX0_4F_S, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX0_4F_S, 4);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX1_4F_S, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX1_4F_S, 4);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_FOG_1F, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_FOG_1F, 1);
 	OUT_RINGf(chan, 0.0);
-	BEGIN_RING(chan, celsius, NV10TCL_EDGEFLAG_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_EDGEFLAG_ENABLE, 1);
 	OUT_RING(chan, 1);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 16777216.0);
 
@@ -455,11 +456,11 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua
 
 	/* 3D engine. */
 	if (context_chipset(ctx) >= 0x17)
-		celsius_class = NV17TCL;
+		celsius_class = NV17_3D;
 	else if (context_chipset(ctx) >= 0x11)
-		celsius_class = NV11TCL;
+		celsius_class = NV11_3D;
 	else
-		celsius_class = NV10TCL;
+		celsius_class = NV10_3D;
 
 	ret = nouveau_grobj_alloc(context_chan(ctx), 0xbeef0001, celsius_class,
 				  &nctx->hw.eng3d);
diff --git a/src/mesa/drivers/dri/nouveau/nv10_render.c b/src/mesa/drivers/dri/nouveau/nv10_render.c
index 94ff3ed..71496c1 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_render.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_render.c
@@ -26,7 +26,7 @@
 
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 #define NUM_VERTEX_ATTRS 8
@@ -39,37 +39,37 @@ nv10_emit_material(struct gl_context *ctx, struct nouveau_array *a,
 static struct nouveau_attr_info nv10_vertex_attrs[VERT_ATTRIB_MAX] = {
 	[VERT_ATTRIB_POS] = {
 		.vbo_index = 0,
-		.imm_method = NV10TCL_VERTEX_POS_4F_X,
+		.imm_method = NV10_3D_VERTEX_POS_4F_X,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_COLOR0] = {
 		.vbo_index = 1,
-		.imm_method = NV10TCL_VERTEX_COL_4F_R,
+		.imm_method = NV10_3D_VERTEX_COL_4F_R,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_COLOR1] = {
 		.vbo_index = 2,
-		.imm_method = NV10TCL_VERTEX_COL2_3F_R,
+		.imm_method = NV10_3D_VERTEX_COL2_3F_R,
 		.imm_fields = 3,
 	},
 	[VERT_ATTRIB_TEX0] = {
 		.vbo_index = 3,
-		.imm_method = NV10TCL_VERTEX_TX0_4F_S,
+		.imm_method = NV10_3D_VERTEX_TX0_4F_S,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_TEX1] = {
 		.vbo_index = 4,
-		.imm_method = NV10TCL_VERTEX_TX1_4F_S,
+		.imm_method = NV10_3D_VERTEX_TX1_4F_S,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_NORMAL] = {
 		.vbo_index = 5,
-		.imm_method = NV10TCL_VERTEX_NOR_3F_X,
+		.imm_method = NV10_3D_VERTEX_NOR_3F_X,
 		.imm_fields = 3,
 	},
 	[VERT_ATTRIB_FOG] = {
 		.vbo_index = 7,
-		.imm_method = NV10TCL_VERTEX_FOG_1F,
+		.imm_method = NV10_3D_VERTEX_FOG_1F,
 		.imm_fields = 1,
 	},
 	[VERT_ATTRIB_GENERIC0] = {
@@ -94,12 +94,12 @@ get_hw_format(int type)
 {
 	switch (type) {
 	case GL_FLOAT:
-		return NV10TCL_VTXFMT_TYPE_FLOAT;
+		return NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT;
 	case GL_SHORT:
 	case GL_UNSIGNED_SHORT:
-		return NV10TCL_VTXFMT_TYPE_SHORT;
+		return NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM;
 	case GL_UNSIGNED_BYTE:
-		return NV10TCL_VTXFMT_TYPE_BYTE_RGBA;
+		return NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM;
 	default:
 		assert(0);
 	}
@@ -122,13 +122,13 @@ nv10_render_set_format(struct gl_context *ctx)
 				get_hw_format(a->type);
 
 			if (attr == VERT_ATTRIB_POS && a->fields == 4)
-				hw_format |= NV10TCL_VTXFMT_POS_HOMOGENEOUS;
+				hw_format |= NV10_3D_VTXBUF_FMT_POS_HOMOGENEOUS;
 		} else {
 			/* Unused attribute. */
-			hw_format = NV10TCL_VTXFMT_TYPE_FLOAT;
+			hw_format = NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT;
 		}
 
-		BEGIN_RING(chan, celsius, NV10TCL_VTXFMT(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_FMT(i), 1);
 		OUT_RING(chan, hw_format);
 	}
 }
@@ -145,7 +145,7 @@ nv10_render_bind_vertices(struct gl_context *ctx)
 		struct nouveau_array *a = &render->attrs[attr];
 
 		nouveau_bo_markl(bctx, celsius,
-				 NV10TCL_VTXBUF_ADDRESS(i),
+				 NV10_3D_VTXBUF_OFFSET(i),
 				 a->bo, a->offset,
 				 NOUVEAU_BO_GART | NOUVEAU_BO_RD);
 	}
@@ -156,33 +156,33 @@ nv10_render_bind_vertices(struct gl_context *ctx)
 	struct nouveau_grobj *celsius = context_eng3d(ctx)
 
 #define BATCH_VALIDATE()						\
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_ARRAY_VALIDATE, 1);	\
+	BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_VALIDATE, 1);	\
 	OUT_RING(chan, 0)
 
 #define BATCH_BEGIN(prim)						\
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1);	\
+	BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1);	\
 	OUT_RING(chan, prim)
 #define BATCH_END()							\
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1);	\
+	BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1);	\
 	OUT_RING(chan, 0)
 
 #define MAX_PACKET 0x400
 
 #define MAX_OUT_L 0x100
 #define BATCH_PACKET_L(n)						\
-	BEGIN_RING_NI(chan, celsius, NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS, n)
+	BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_BATCH, n)
 #define BATCH_OUT_L(i, n)			\
 	OUT_RING(chan, ((n) - 1) << 24 | (i))
 
 #define MAX_OUT_I16 0x2
 #define BATCH_PACKET_I16(n)						\
-	BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U16, n)
+	BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U16, n)
 #define BATCH_OUT_I16(i0, i1)			\
 	OUT_RING(chan, (i1) << 16 | (i0))
 
 #define MAX_OUT_I32 0x1
 #define BATCH_PACKET_I32(n)						\
-	BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U32, n)
+	BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U32, n)
 #define BATCH_OUT_I32(i)			\
 	OUT_RING(chan, i)
 
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
index 0fda9fa..dbdfe7c 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
@@ -27,7 +27,8 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_fbo.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv10_3d.xml.h"
 #include "nouveau_util.h"
 #include "nv10_driver.h"
 
@@ -68,20 +69,20 @@ setup_hierz_buffer(struct gl_context *ctx)
 				    0, NOUVEAU_BO_TILE_ZETA, &nfb->hierz.bo);
 	}
 
-	nouveau_bo_markl(bctx, celsius, NV17TCL_LMA_DEPTH_BUFFER_OFFSET,
+	nouveau_bo_markl(bctx, celsius, NV17_3D_LMA_DEPTH_BUFFER_OFFSET,
 			 nfb->hierz.bo, 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR);
 
 	WAIT_RING(chan, 9);
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_WINDOW_X, 4);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_WINDOW_X, 4);
 	OUT_RINGf(chan, - 1792);
 	OUT_RINGf(chan, - 2304 + fb->Height);
 	OUT_RINGf(chan, fb->_DepthMaxF / 2);
 	OUT_RINGf(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_PITCH, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_BUFFER_PITCH, 1);
 	OUT_RING(chan, pitch);
 
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_ENABLE, 1);
 	OUT_RING(chan, 1);
 }
 
@@ -93,7 +94,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 	struct nouveau_bo_context *bctx = context_bctx(ctx, FRAMEBUFFER);
 	struct gl_framebuffer *fb = ctx->DrawBuffer;
 	struct nouveau_surface *s;
-	unsigned rt_format = NV10TCL_RT_FORMAT_TYPE_LINEAR;
+	unsigned rt_format = NV10_3D_RT_FORMAT_TYPE_LINEAR;
 	unsigned rt_pitch = 0, zeta_pitch = 0;
 	unsigned bo_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR;
 
@@ -106,7 +107,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		int i;
 
 		for (i = 0; i < 6; i++) {
-			BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+			BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
 			OUT_RING(chan, 0);
 		}
 	}
@@ -119,7 +120,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		rt_format |= get_rt_format(s->format);
 		zeta_pitch = rt_pitch = s->pitch;
 
-		nouveau_bo_markl(bctx, celsius, NV10TCL_COLOR_OFFSET,
+		nouveau_bo_markl(bctx, celsius, NV10_3D_COLOR_OFFSET,
 				 s->bo, 0, bo_flags);
 	}
 
@@ -131,7 +132,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		rt_format |= get_rt_format(s->format);
 		zeta_pitch = s->pitch;
 
-		nouveau_bo_markl(bctx, celsius, NV10TCL_ZETA_OFFSET,
+		nouveau_bo_markl(bctx, celsius, NV10_3D_ZETA_OFFSET,
 				 s->bo, 0, bo_flags);
 
 		if (context_chipset(ctx) >= 0x17) {
@@ -140,7 +141,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		}
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_RT_FORMAT, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RT_FORMAT, 2);
 	OUT_RING(chan, rt_format);
 	OUT_RING(chan, zeta_pitch << 16 | rt_pitch);
 
@@ -162,7 +163,7 @@ nv10_emit_scissor(struct gl_context *ctx, int emit)
 
 	get_scissors(ctx->DrawBuffer, &x, &y, &w, &h);
 
-	BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2);
 	OUT_RING(chan, w << 16 | x);
 	OUT_RING(chan, h << 16 | y);
 }
@@ -182,12 +183,12 @@ nv10_emit_viewport(struct gl_context *ctx, int emit)
 	if (nv10_use_viewport_zclear(ctx))
 		a[2] = nv10_transform_depth(ctx, (vp->Far + vp->Near) / 2);
 
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_TRANSLATE_X, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_TRANSLATE_X, 4);
 	OUT_RINGp(chan, a, 4);
 
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1);
 	OUT_RING(chan, (fb->Width - 1) << 16 | 0x08000800);
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1);
 	OUT_RING(chan, (fb->Height - 1) << 16 | 0x08000800);
 
 	context_dirty(ctx, PROJECTION);
@@ -203,12 +204,12 @@ nv10_emit_zclear(struct gl_context *ctx, int emit)
 		to_nouveau_framebuffer(ctx->DrawBuffer);
 
 	if (nfb->hierz.bo) {
-		BEGIN_RING(chan, celsius, NV17TCL_ZCLEAR_ENABLE, 2);
+		BEGIN_RING(chan, celsius, NV17_3D_ZCLEAR_ENABLE, 2);
 		OUT_RING(chan, nctx->hierz.clear_blocked ? 0 : 1);
 		OUT_RING(chan, nfb->hierz.clear_value |
 			 (nctx->hierz.clear_seq & 0xff));
 	} else {
-		BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2);
+		BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2);
 		OUT_RINGf(chan, nv10_transform_depth(ctx, 0));
 		OUT_RINGf(chan, nv10_transform_depth(ctx, 1));
 		context_dirty(ctx, VIEWPORT);
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
index 5138c36..1adc860 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
@@ -27,7 +27,7 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nouveau_util.h"
 #include "nv10_driver.h"
 #include "nv20_driver.h"
@@ -41,24 +41,24 @@
 #define RC_IN_SHIFT_G	40
 
 #define RC_IN_SOURCE(source)				\
-	((uint64_t)NV10TCL_RC_IN_RGB_D_INPUT_##source)
+	((uint64_t)NV10_3D_RC_IN_RGB_D_INPUT_##source)
 #define RC_IN_USAGE(usage)					\
-	((uint64_t)NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_##usage)
+	((uint64_t)NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_##usage)
 #define RC_IN_MAPPING(mapping)					\
-	((uint64_t)NV10TCL_RC_IN_RGB_D_MAPPING_##mapping)
+	((uint64_t)NV10_3D_RC_IN_RGB_D_MAPPING_##mapping)
 
-#define RC_OUT_BIAS	NV10TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF
-#define RC_OUT_SCALE_1	NV10TCL_RC_OUT_RGB_SCALE_NONE
-#define RC_OUT_SCALE_2	NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO
-#define RC_OUT_SCALE_4	NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR
+#define RC_OUT_BIAS	NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF
+#define RC_OUT_SCALE_1	NV10_3D_RC_OUT_RGB_SCALE_NONE
+#define RC_OUT_SCALE_2	NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO
+#define RC_OUT_SCALE_4	NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR
 
 /* Make the combiner do: spare0_i = A_i * B_i */
-#define RC_OUT_AB	NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0
+#define RC_OUT_AB	NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0
 /* spare0_i = dot3(A, B) */
-#define RC_OUT_DOT_AB	(NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 |	\
-			 NV10TCL_RC_OUT_RGB_AB_DOT_PRODUCT)
+#define RC_OUT_DOT_AB	(NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 |	\
+			 NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT)
 /* spare0_i = A_i * B_i + C_i * D_i */
-#define RC_OUT_SUM	NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0
+#define RC_OUT_SUM	NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0
 
 struct combiner_state {
 	struct gl_context *ctx;
@@ -383,15 +383,15 @@ nv10_emit_tex_env(struct gl_context *ctx, int emit)
 			c_out |= 0x3 << 27;
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_RC_IN_ALPHA(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_IN_ALPHA(i), 1);
 	OUT_RING(chan, a_in);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_IN_RGB(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_IN_RGB(i), 1);
 	OUT_RING(chan, c_in);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_COLOR(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_COLOR(i), 1);
 	OUT_RING(chan, k);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_ALPHA(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_ALPHA(i), 1);
 	OUT_RING(chan, a_out);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_RGB(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_RGB(i), 1);
 	OUT_RING(chan, c_out);
 
 	context_dirty(ctx, FRAG);
@@ -407,7 +407,7 @@ nv10_emit_frag(struct gl_context *ctx, int emit)
 
 	nv10_get_final_combiner(ctx, &in, &n);
 
-	BEGIN_RING(chan, celsius, NV10TCL_RC_FINAL0, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_FINAL0, 2);
 	OUT_RING(chan, in);
 	OUT_RING(chan, in >> 32);
 }
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
index 4e49b02..f0f7dd2 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
@@ -27,7 +27,7 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 void
@@ -37,13 +37,13 @@ nv10_emit_cull_face(struct gl_context *ctx, int emit)
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 	GLenum mode = ctx->Polygon.CullFaceMode;
 
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1);
 	OUT_RING(chan, ctx->Polygon.CullFlag ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 1);
-	OUT_RING(chan, (mode == GL_FRONT ? NV10TCL_CULL_FACE_FRONT :
-			mode == GL_BACK ? NV10TCL_CULL_FACE_BACK :
-			NV10TCL_CULL_FACE_FRONT_AND_BACK));
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 1);
+	OUT_RING(chan, (mode == GL_FRONT ? NV10_3D_CULL_FACE_FRONT :
+			mode == GL_BACK ? NV10_3D_CULL_FACE_BACK :
+			NV10_3D_CULL_FACE_FRONT_AND_BACK));
 }
 
 void
@@ -52,9 +52,9 @@ nv10_emit_front_face(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_FRONT_FACE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_FRONT_FACE, 1);
 	OUT_RING(chan, ctx->Polygon.FrontFace == GL_CW ?
-		 NV10TCL_FRONT_FACE_CW : NV10TCL_FRONT_FACE_CCW);
+		 NV10_3D_FRONT_FACE_CW : NV10_3D_FRONT_FACE_CCW);
 }
 
 void
@@ -65,10 +65,10 @@ nv10_emit_line_mode(struct gl_context *ctx, int emit)
 	GLboolean smooth = ctx->Line.SmoothFlag &&
 		ctx->Hint.LineSmooth == GL_NICEST;
 
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1);
 	OUT_RING(chan, MAX2(smooth ? 0 : 1,
 			    ctx->Line.Width) * 8);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, smooth ? 1 : 0);
 }
 
@@ -83,10 +83,10 @@ nv10_emit_point_mode(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1);
 	OUT_RING(chan, (uint32_t)(ctx->Point.Size * 8));
 
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, ctx->Point.SmoothFlag ? 1 : 0);
 }
 
@@ -96,11 +96,11 @@ nv10_emit_polygon_mode(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2);
 	OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.FrontMode));
 	OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.BackMode));
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, ctx->Polygon.SmoothFlag ? 1 : 0);
 }
 
@@ -110,12 +110,12 @@ nv10_emit_polygon_offset(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
 	OUT_RING(chan, ctx->Polygon.OffsetPoint ? 1 : 0);
 	OUT_RING(chan, ctx->Polygon.OffsetLine ? 1 : 0);
 	OUT_RING(chan, ctx->Polygon.OffsetFill ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2);
 	OUT_RINGf(chan, ctx->Polygon.OffsetFactor);
 	OUT_RINGf(chan, ctx->Polygon.OffsetUnits);
 }
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
index 9960984..9215391 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
@@ -27,7 +27,7 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 void
@@ -36,10 +36,10 @@ nv10_emit_alpha_func(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1);
 	OUT_RING(chan, ctx->Color.AlphaEnabled ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2);
 	OUT_RING(chan, nvgl_comparison_op(ctx->Color.AlphaFunc));
 	OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.AlphaRef));
 }
@@ -50,7 +50,7 @@ nv10_emit_blend_color(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_COLOR, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_COLOR, 1);
 	OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.BlendColor[3]) << 24 |
 		 FLOAT_TO_UBYTE(ctx->Color.BlendColor[0]) << 16 |
 		 FLOAT_TO_UBYTE(ctx->Color.BlendColor[1]) << 8 |
@@ -63,10 +63,10 @@ nv10_emit_blend_equation(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1);
 	OUT_RING(chan, ctx->Color.BlendEnabled ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_EQUATION, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_EQUATION, 1);
 	OUT_RING(chan, nvgl_blend_eqn(ctx->Color.BlendEquationRGB));
 }
 
@@ -76,7 +76,7 @@ nv10_emit_blend_func(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 2);
 	OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendSrcRGB));
 	OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendDstRGB));
 }
@@ -87,7 +87,7 @@ nv10_emit_color_mask(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1);
 	OUT_RING(chan, ((ctx->Color.ColorMask[0][3] ? 1 << 24 : 0) |
 			(ctx->Color.ColorMask[0][0] ? 1 << 16 : 0) |
 			(ctx->Color.ColorMask[0][1] ? 1 << 8 : 0) |
@@ -100,11 +100,11 @@ nv10_emit_depth(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1);
 	OUT_RING(chan, ctx->Depth.Test ? 1 : 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1);
 	OUT_RING(chan, ctx->Depth.Mask ? 1 : 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1);
 	OUT_RING(chan, nvgl_comparison_op(ctx->Depth.Func));
 }
 
@@ -114,7 +114,7 @@ nv10_emit_dither(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 1);
 	OUT_RING(chan, ctx->Color.DitherFlag ? 1 : 0);
 }
 
@@ -127,7 +127,7 @@ nv10_emit_logic_opcode(struct gl_context *ctx, int emit)
 	assert(!ctx->Color.ColorLogicOpEnabled
 	       || context_chipset(ctx) >= 0x11);
 
-	BEGIN_RING(chan, celsius, NV11TCL_COLOR_LOGIC_OP_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV11_3D_COLOR_LOGIC_OP_ENABLE, 2);
 	OUT_RING(chan, ctx->Color.ColorLogicOpEnabled ? 1 : 0);
 	OUT_RING(chan, nvgl_logicop_func(ctx->Color.LogicOp));
 }
@@ -138,9 +138,9 @@ nv10_emit_shade_model(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_SHADE_MODEL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_SHADE_MODEL, 1);
 	OUT_RING(chan, ctx->Light.ShadeModel == GL_SMOOTH ?
-		 NV10TCL_SHADE_MODEL_SMOOTH : NV10TCL_SHADE_MODEL_FLAT);
+		 NV10_3D_SHADE_MODEL_SMOOTH : NV10_3D_SHADE_MODEL_FLAT);
 }
 
 void
@@ -149,10 +149,10 @@ nv10_emit_stencil_func(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_ENABLE, 1);
 	OUT_RING(chan, ctx->Stencil.Enabled ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_FUNC_FUNC, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_FUNC_FUNC, 3);
 	OUT_RING(chan, nvgl_comparison_op(ctx->Stencil.Function[0]));
 	OUT_RING(chan, ctx->Stencil.Ref[0]);
 	OUT_RING(chan, ctx->Stencil.ValueMask[0]);
@@ -164,7 +164,7 @@ nv10_emit_stencil_mask(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 1);
 	OUT_RING(chan, ctx->Stencil.WriteMask[0]);
 }
 
@@ -174,7 +174,7 @@ nv10_emit_stencil_op(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_OP_FAIL, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_OP_FAIL, 3);
 	OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.FailFunc[0]));
 	OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZFailFunc[0]));
 	OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZPassFunc[0]));
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
index 0092ad0..4dc21f4 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
@@ -28,14 +28,10 @@
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
 #include "nouveau_texture.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nouveau_util.h"
 #include "nv10_driver.h"
 
-#define TX_GEN_MODE(i, j) (NV10TCL_TX_GEN_MODE_S(i) + 4 * (j))
-#define TX_GEN_COEFF(i, j) (NV10TCL_TX_GEN_COEFF_S_A(i) + 16 * (j))
-#define TX_MATRIX(i) (NV10TCL_TX0_MATRIX(0) + 64 * (i))
-
 void
 nv10_emit_tex_gen(struct gl_context *ctx, int emit)
 {
@@ -53,15 +49,15 @@ nv10_emit_tex_gen(struct gl_context *ctx, int emit)
 
 			if (k) {
 				BEGIN_RING(chan, celsius,
-					   TX_GEN_COEFF(i, j), 4);
+					   NV10_3D_TEX_GEN_COEFF(i, j), 4);
 				OUT_RINGp(chan, k, 4);
 			}
 
-			BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1);
+			BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i, j), 1);
 			OUT_RING(chan, nvgl_texgen_mode(coord->Mode));
 
 		} else {
-			BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1);
+			BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i, j), 1);
 			OUT_RING(chan, 0);
 		}
 	}
@@ -80,14 +76,14 @@ nv10_emit_tex_mat(struct gl_context *ctx, int emit)
 	if (nctx->fallback == HWTNL &&
 	    ((ctx->Texture._TexMatEnabled & 1 << i) ||
 	     ctx->Texture.Unit[i]._GenFlags)) {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1);
 		OUT_RING(chan, 1);
 
-		BEGIN_RING(chan, celsius, TX_MATRIX(i), 16);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX(i, 0), 16);
 		OUT_RINGm(chan, ctx->TextureMatrixStack[i].Top->m);
 
 	} else {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1);
 		OUT_RING(chan, 0);
 	}
 }
@@ -97,29 +93,29 @@ get_tex_format_pot(struct gl_texture_image *ti)
 {
 	switch (ti->TexFormat) {
 	case MESA_FORMAT_ARGB8888:
-		return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8;
+		return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8;
 
 	case MESA_FORMAT_XRGB8888:
-		return NV10TCL_TX_FORMAT_FORMAT_X8R8G8B8;
+		return NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8;
 
 	case MESA_FORMAT_ARGB1555:
-		return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5;
+		return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5;
 
 	case MESA_FORMAT_ARGB4444:
-		return NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4;
+		return NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4;
 
 	case MESA_FORMAT_RGB565:
-		return NV10TCL_TX_FORMAT_FORMAT_R5G6B5;
+		return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5;
 
 	case MESA_FORMAT_A8:
 	case MESA_FORMAT_I8:
-		return NV10TCL_TX_FORMAT_FORMAT_A8;
+		return NV10_3D_TEX_FORMAT_FORMAT_I8;
 
 	case MESA_FORMAT_L8:
-		return NV10TCL_TX_FORMAT_FORMAT_L8;
+		return NV10_3D_TEX_FORMAT_FORMAT_L8;
 
 	case MESA_FORMAT_CI8:
-		return NV10TCL_TX_FORMAT_FORMAT_INDEX8;
+		return NV10_3D_TEX_FORMAT_FORMAT_INDEX8;
 
 	default:
 		assert(0);
@@ -131,19 +127,19 @@ get_tex_format_rect(struct gl_texture_image *ti)
 {
 	switch (ti->TexFormat) {
 	case MESA_FORMAT_ARGB1555:
-		return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT;
 
 	case MESA_FORMAT_RGB565:
-		return NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT;
 
 	case MESA_FORMAT_ARGB8888:
 	case MESA_FORMAT_XRGB8888:
-		return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT;
 
 	case MESA_FORMAT_A8:
 	case MESA_FORMAT_L8:
 	case MESA_FORMAT_I8:
-		return NV10TCL_TX_FORMAT_FORMAT_A8_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_I8_RECT;
 
 	default:
 		assert(0);
@@ -164,7 +160,7 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
 	uint32_t tx_format, tx_filter, tx_enable;
 
 	if (!ctx->Texture.Unit[i]._ReallyEnabled) {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1);
 		OUT_RING(chan, 0);
 		return;
 	}
@@ -186,13 +182,13 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
 	tx_filter = nvgl_filter_mode(t->MagFilter) << 28
 		| nvgl_filter_mode(t->MinFilter) << 24;
 
-	tx_enable = NV10TCL_TX_ENABLE_ENABLE
+	tx_enable = NV10_3D_TEX_ENABLE_ENABLE
 		| log2i(t->MaxAnisotropy) << 4;
 
 	if (t->Target == GL_TEXTURE_RECTANGLE) {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_PITCH(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_PITCH(i), 1);
 		OUT_RING(chan, s->pitch << 16);
-		BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_SIZE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_SIZE(i), 1);
 		OUT_RING(chan, align(s->width, 2) << 16 | s->height);
 
 		tx_format |= get_tex_format_rect(ti);
@@ -211,26 +207,26 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
 		lod_min = CLAMP(lod_min, 0, 15);
 		lod_bias = CLAMP(lod_bias, 0, 15);
 
-		tx_format |= NV10TCL_TX_FORMAT_MIPMAP;
+		tx_format |= NV10_3D_TEX_FORMAT_MIPMAP;
 		tx_filter |= lod_bias << 8;
 		tx_enable |= lod_min << 26
 			| lod_max << 14;
 	}
 
 	/* Write it to the hardware. */
-	nouveau_bo_mark(bctx, celsius, NV10TCL_TX_FORMAT(i),
+	nouveau_bo_mark(bctx, celsius, NV10_3D_TEX_FORMAT(i),
 			s->bo, tx_format, 0,
-			NV10TCL_TX_FORMAT_DMA0,
-			NV10TCL_TX_FORMAT_DMA1,
+			NV10_3D_TEX_FORMAT_DMA0,
+			NV10_3D_TEX_FORMAT_DMA1,
 			bo_flags | NOUVEAU_BO_OR);
 
-	nouveau_bo_markl(bctx, celsius, NV10TCL_TX_OFFSET(i),
+	nouveau_bo_markl(bctx, celsius, NV10_3D_TEX_OFFSET(i),
 			 s->bo, s->offset, bo_flags);
 
-	BEGIN_RING(chan, celsius, NV10TCL_TX_FILTER(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_FILTER(i), 1);
 	OUT_RING(chan, tx_filter);
 
-	BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1);
 	OUT_RING(chan, tx_enable);
 }
 
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
index 175abfc..b9d07c1 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
@@ -28,7 +28,7 @@
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 void
@@ -42,13 +42,13 @@ get_material_bitmask(unsigned m)
 	unsigned ret = 0;
 
 	if (m & MAT_BIT_FRONT_EMISSION)
-		ret |= NV10TCL_COLOR_MATERIAL_EMISSION;
+		ret |= NV10_3D_COLOR_MATERIAL_EMISSION;
 	if (m & MAT_BIT_FRONT_AMBIENT)
-		ret |= NV10TCL_COLOR_MATERIAL_AMBIENT;
+		ret |= NV10_3D_COLOR_MATERIAL_AMBIENT;
 	if (m & MAT_BIT_FRONT_DIFFUSE)
-		ret |= NV10TCL_COLOR_MATERIAL_DIFFUSE;
+		ret |= NV10_3D_COLOR_MATERIAL_DIFFUSE;
 	if (m & MAT_BIT_FRONT_SPECULAR)
-		ret |= NV10TCL_COLOR_MATERIAL_SPECULAR;
+		ret |= NV10_3D_COLOR_MATERIAL_SPECULAR;
 
 	return ret;
 }
@@ -60,7 +60,7 @@ nv10_emit_color_material(struct gl_context *ctx, int emit)
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 	unsigned mask = get_material_bitmask(ctx->Light.ColorMaterialBitmask);
 
-	BEGIN_RING(chan, celsius, NV10TCL_COLOR_MATERIAL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_COLOR_MATERIAL, 1);
 	OUT_RING(chan, ctx->Light.ColorMaterialEnabled ? mask : 0);
 }
 
@@ -69,11 +69,11 @@ get_fog_mode(unsigned mode)
 {
 	switch (mode) {
 	case GL_LINEAR:
-		return NV10TCL_FOG_MODE_LINEAR;
+		return NV10_3D_FOG_MODE_LINEAR;
 	case GL_EXP:
-		return NV10TCL_FOG_MODE_EXP;
+		return NV10_3D_FOG_MODE_EXP;
 	case GL_EXP2:
-		return NV10TCL_FOG_MODE_EXP2;
+		return NV10_3D_FOG_MODE_EXP2;
 	default:
 		assert(0);
 	}
@@ -84,9 +84,9 @@ get_fog_source(unsigned source)
 {
 	switch (source) {
 	case GL_FOG_COORDINATE_EXT:
-		return NV10TCL_FOG_COORD_FOG;
+		return NV10_3D_FOG_COORD_FOG;
 	case GL_FRAGMENT_DEPTH_EXT:
-		return NV10TCL_FOG_COORD_DIST_ORTHOGONAL_ABS;
+		return NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS;
 	default:
 		assert(0);
 	}
@@ -133,13 +133,13 @@ nv10_emit_fog(struct gl_context *ctx, int emit)
 
 	nv10_get_fog_coeff(ctx, k);
 
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 4);
 	OUT_RING(chan, get_fog_mode(f->Mode));
 	OUT_RING(chan, get_fog_source(source));
 	OUT_RING(chan, f->Enabled ? 1 : 0);
 	OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color));
 
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3);
 	OUT_RINGp(chan, k, 3);
 
 	context_dirty(ctx, FRAG);
@@ -150,13 +150,13 @@ get_light_mode(struct gl_light *l)
 {
 	if (l->Enabled) {
 		if (l->_Flags & LIGHT_SPOT)
-			return NV10TCL_ENABLED_LIGHTS_0_DIRECTIONAL;
+			return NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL;
 		else if (l->_Flags & LIGHT_POSITIONAL)
-			return NV10TCL_ENABLED_LIGHTS_0_POSITIONAL;
+			return NV10_3D_ENABLED_LIGHTS_0_POSITIONAL;
 		else
-			return NV10TCL_ENABLED_LIGHTS_0_NONPOSITIONAL;
+			return NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL;
 	} else {
-		return NV10TCL_ENABLED_LIGHTS_0_DISABLED;
+		return NV10_3D_ENABLED_LIGHTS_0_DISABLED;
 	}
 }
 
@@ -170,7 +170,7 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit)
 	int i;
 
 	if (nctx->fallback != HWTNL) {
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1);
 		OUT_RING(chan, 0);
 		return;
 	}
@@ -178,11 +178,11 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit)
 	for (i = 0; i < MAX_LIGHTS; i++)
 		en_lights |= get_light_mode(&ctx->Light.Light[i]) << 2 * i;
 
-	BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1);
 	OUT_RING(chan, en_lights);
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1);
 	OUT_RING(chan, ctx->Light.Enabled ? 1 : 0);
-	BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1);
 	OUT_RING(chan, ctx->Transform.Normalize ? 1 : 0);
 }
 
@@ -193,16 +193,16 @@ nv10_emit_light_model(struct gl_context *ctx, int emit)
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 	struct gl_lightmodel *m = &ctx->Light.Model;
 
-	BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1);
 	OUT_RING(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1);
 	OUT_RING(chan, ((m->LocalViewer ?
-			 NV10TCL_LIGHT_MODEL_LOCAL_VIEWER : 0) |
+			 NV10_3D_LIGHT_MODEL_LOCAL_VIEWER : 0) |
 			(NEED_SECONDARY_COLOR(ctx) ?
-			 NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR : 0) |
+			 NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR : 0) |
 			(!ctx->Light.Enabled && ctx->Fog.ColorSumEnabled ?
-			 NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR : 0)));
+			 NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR : 0)));
 }
 
 static float
@@ -281,20 +281,20 @@ nv10_emit_light_source(struct gl_context *ctx, int emit)
 	struct gl_light *l = &ctx->Light.Light[i];
 
 	if (l->_Flags & LIGHT_POSITIONAL) {
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_POSITION_X(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_POSITION_X(i), 3);
 		OUT_RINGp(chan, l->_Position, 3);
 
 		BEGIN_RING(chan, celsius,
-			   NV10TCL_LIGHT_ATTENUATION_CONSTANT(i), 3);
+			   NV10_3D_LIGHT_ATTENUATION_CONSTANT(i), 3);
 		OUT_RINGf(chan, l->ConstantAttenuation);
 		OUT_RINGf(chan, l->LinearAttenuation);
 		OUT_RINGf(chan, l->QuadraticAttenuation);
 
 	} else {
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIRECTION_X(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIRECTION_X(i), 3);
 		OUT_RINGp(chan, l->_VP_inf_norm, 3);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_HALF_VECTOR_X(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_HALF_VECTOR_X(i), 3);
 		OUT_RINGp(chan, l->_h_inf_norm, 3);
 	}
 
@@ -303,7 +303,7 @@ nv10_emit_light_source(struct gl_context *ctx, int emit)
 
 		nv10_get_spot_coeff(l, k);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPOT_CUTOFF_A(i), 7);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPOT_CUTOFF(i, 0), 7);
 		OUT_RINGp(chan, k, 7);
 	}
 }
@@ -335,11 +335,11 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit)
 		ZERO_3V(c_factor);
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL_AMBIENT_R, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL_AMBIENT_R, 3);
 	OUT_RINGp(chan, c_scene, 3);
 
 	if (ctx->Light.ColorMaterialEnabled) {
-		BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_R, 3);
+		BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_R, 3);
 		OUT_RINGp(chan, c_factor, 3);
 	}
 
@@ -349,7 +349,7 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit)
 				  l->Ambient :
 				  l->_MatAmbient[0]);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_AMBIENT_R(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_AMBIENT_R(i), 3);
 		OUT_RINGp(chan, c_light, 3);
 	}
 }
@@ -362,7 +362,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit)
 	GLfloat (*mat)[4] = ctx->Light.Material.Attrib;
 	struct gl_light *l;
 
-	BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_A, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_A, 1);
 	OUT_RINGf(chan, mat[MAT_ATTRIB_FRONT_DIFFUSE][3]);
 
 	foreach(l, &ctx->Light.EnabledList) {
@@ -371,7 +371,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit)
 				  l->Diffuse :
 				  l->_MatDiffuse[0]);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIFFUSE_R(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIFFUSE_R(i), 3);
 		OUT_RINGp(chan, c_light, 3);
 	}
 }
@@ -389,7 +389,7 @@ nv10_emit_material_specular(struct gl_context *ctx, int emit)
 				  l->Specular :
 				  l->_MatSpecular[0]);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPECULAR_R(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPECULAR_R(i), 3);
 		OUT_RINGp(chan, c_light, 3);
 	}
 }
@@ -430,7 +430,7 @@ nv10_emit_material_shininess(struct gl_context *ctx, int emit)
 		CLAMP(mat[MAT_ATTRIB_FRONT_SHININESS][0], 0, 1024),
 		k);
 
-	BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_SHININESS(0), 6);
+	BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_SHININESS(0), 6);
 	OUT_RINGp(chan, k, 6);
 }
 
@@ -447,7 +447,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit)
 
 	if (ctx->Light._NeedEyeCoords || ctx->Fog.Enabled ||
 	    (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)) {
-		BEGIN_RING(chan, celsius, NV10TCL_MODELVIEW0_MATRIX(0), 16);
+		BEGIN_RING(chan, celsius, NV10_3D_MODELVIEW_MATRIX(0, 0), 16);
 		OUT_RINGm(chan, m->m);
 	}
 
@@ -456,7 +456,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit)
 		int i, j;
 
 		BEGIN_RING(chan, celsius,
-			   NV10TCL_INVERSE_MODELVIEW0_MATRIX(0), 12);
+			   NV10_3D_INVERSE_MODELVIEW_MATRIX(0, 0), 12);
 		for (i = 0; i < 3; i++)
 			for (j = 0; j < 4; j++)
 				OUT_RINGf(chan, m->inv[4*i + j]);
@@ -485,7 +485,7 @@ nv10_emit_projection(struct gl_context *ctx, int emit)
 	if (nctx->fallback == HWTNL)
 		_math_matrix_mul_matrix(&m, &m, &ctx->_ModelProjectMatrix);
 
-	BEGIN_RING(chan, celsius, NV10TCL_PROJECTION_MATRIX(0), 16);
+	BEGIN_RING(chan, celsius, NV10_3D_PROJECTION_MATRIX(0), 16);
 	OUT_RINGm(chan, m.m);
 
 	_math_matrix_dtr(&m);
-- 
1.7.3.2

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH 3/5] dri/nouveau: nv10: Use rules-ng-ng headers
       [not found] ` <1288570969-8057-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
@ 2010-11-01  0:22   ` Viktor Novotný
  0 siblings, 0 replies; 9+ messages in thread
From: Viktor Novotný @ 2010-11-01  0:22 UTC (permalink / raw)
  To: nouveau

From: Viktor Novotný <noviktor@seznam.cz>

---
 src/mesa/drivers/dri/nouveau/nv10_context.c       |  127 +++++++++++----------
 src/mesa/drivers/dri/nouveau/nv10_render.c        |   42 ++++----
 src/mesa/drivers/dri/nouveau/nv10_state_fb.c      |   33 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_frag.c    |   36 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_polygon.c |   32 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_raster.c  |   38 +++---
 src/mesa/drivers/dri/nouveau/nv10_state_tex.c     |   64 +++++------
 src/mesa/drivers/dri/nouveau/nv10_state_tnl.c     |   82 +++++++-------
 8 files changed, 226 insertions(+), 228 deletions(-)

diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c
index 78be401..f90faa0 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_context.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_context.c
@@ -29,7 +29,8 @@
 #include "nouveau_context.h"
 #include "nouveau_fbo.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv10_3d.xml.h"
 #include "nv04_driver.h"
 #include "nv10_driver.h"
 
@@ -157,9 +158,9 @@ nv17_zclear(struct gl_context *ctx, GLbitfield *buffers)
 		nfb->base._DepthBuffer->Wrapped)->surface;
 
 	/* Clear the hierarchical depth buffer */
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_FILL_VALUE, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_FILL_VALUE, 1);
 	OUT_RING(chan, pack_zs_f(s->format, ctx->Depth.Clear, 0));
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_CLEAR, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_BUFFER_CLEAR, 1);
 	OUT_RING(chan, 1);
 
 	/* Mark the depth buffer as cleared */
@@ -201,33 +202,33 @@ nv10_hwctx_init(struct gl_context *ctx)
 	struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw;
 	int i;
 
-	BEGIN_RING(chan, celsius, NV10TCL_DMA_NOTIFY, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DMA_NOTIFY, 1);
 	OUT_RING(chan, hw->ntfy->handle);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY0, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_DMA_TEXTURE0, 3);
 	OUT_RING(chan, chan->vram->handle);
 	OUT_RING(chan, chan->gart->handle);
 	OUT_RING(chan, chan->gart->handle);
-	BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY2, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_DMA_COLOR, 2);
 	OUT_RING(chan, chan->vram->handle);
 	OUT_RING(chan, chan->vram->handle);
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1);
 	OUT_RING(chan, 0x7ff << 16 | 0x800);
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1);
 	OUT_RING(chan, 0x7ff << 16 | 0x800);
 
 	for (i = 1; i < 8; i++) {
-		BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(i), 1);
 		OUT_RING(chan, 0);
-		BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(i), 1);
 		OUT_RING(chan, 0);
 	}
 
@@ -236,18 +237,18 @@ nv10_hwctx_init(struct gl_context *ctx)
 	BEGIN_RING(chan, celsius, 0x3f4, 1);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius,  NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
 	if (context_chipset(ctx) >= 0x17) {
-		BEGIN_RING(chan, celsius, NV17TCL_DMA_IN_MEMORY4, 2);
+		BEGIN_RING(chan, celsius, NV17_3D_UNK01AC, 2);
 		OUT_RING(chan, chan->vram->handle);
 		OUT_RING(chan, chan->vram->handle);
 
 		BEGIN_RING(chan, celsius, 0xd84, 1);
 		OUT_RING(chan, 0x3);
 
-		BEGIN_RING(chan, celsius, NV17TCL_COLOR_MASK_ENABLE, 1);
+		BEGIN_RING(chan, celsius, NV17_3D_COLOR_MASK_ENABLE, 1);
 		OUT_RING(chan, 1);
 	}
 
@@ -257,41 +258,41 @@ nv10_hwctx_init(struct gl_context *ctx)
 		OUT_RING(chan, 1);
 		OUT_RING(chan, 2);
 
-		BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+		BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
 		OUT_RING(chan, 0);
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius,  NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
 	/* Set state */
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2);
 	OUT_RING(chan, 0x207);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(0), 2);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(0), 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 2);
 	OUT_RING(chan, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_WEIGHT_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_WEIGHT_ENABLE, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 4);
 	OUT_RING(chan, 1);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0x8006);
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 8);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 8);
 	OUT_RING(chan, 0xff);
 	OUT_RING(chan, 0x207);
 	OUT_RING(chan, 0);
@@ -300,105 +301,105 @@ nv10_hwctx_init(struct gl_context *ctx)
 	OUT_RING(chan, 0x1e00);
 	OUT_RING(chan, 0x1e00);
 	OUT_RING(chan, 0x1d01);
-	BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1);
 	OUT_RING(chan, 0x201);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1);
 	OUT_RING(chan, 8);
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_PARAMETERS_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_PARAMETERS_ENABLE, 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1);
 	OUT_RING(chan, 8);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2);
 	OUT_RING(chan, 0x1b02);
 	OUT_RING(chan, 0x1b02);
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 2);
 	OUT_RING(chan, 0x405);
 	OUT_RING(chan, 0x901);
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_TX_GEN_MODE_S(0), 8);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(0, 0), 8);
 	for (i = 0; i < 8; i++)
 		OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(0), 2);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(0), 2);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3);
 	OUT_RING(chan, 0x3fc00000);	/* -1.50 */
 	OUT_RING(chan, 0xbdb8aa0a);	/* -0.09 */
 	OUT_RING(chan, 0);		/*  0.00 */
 
-	BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+	BEGIN_RING(chan, celsius,  NV04_GRAPH_NOP, 1);
 	OUT_RING(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 2);
 	OUT_RING(chan, 0x802);
 	OUT_RING(chan, 2);
 	/* for some reason VIEW_MATRIX_ENABLE need to be 6 instead of 4 when
 	 * using texturing, except when using the texture matrix
 	 */
-	BEGIN_RING(chan, celsius, NV10TCL_VIEW_MATRIX_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEW_MATRIX_ENABLE, 1);
 	OUT_RING(chan, 6);
-	BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1);
 	OUT_RING(chan, 0x01010101);
 
 	/* Set vertex component */
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL_4F_R, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL_4F_R, 4);
 	OUT_RINGf(chan, 1.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL2_3F_R, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL2_3F_R, 3);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_NOR_3F_X, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_NOR_3F_X, 3);
 	OUT_RING(chan, 0);
 	OUT_RING(chan, 0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX0_4F_S, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX0_4F_S, 4);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX1_4F_S, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX1_4F_S, 4);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 1.0);
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_FOG_1F, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VERTEX_FOG_1F, 1);
 	OUT_RINGf(chan, 0.0);
-	BEGIN_RING(chan, celsius, NV10TCL_EDGEFLAG_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_EDGEFLAG_ENABLE, 1);
 	OUT_RING(chan, 1);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2);
 	OUT_RINGf(chan, 0.0);
 	OUT_RINGf(chan, 16777216.0);
 
@@ -455,11 +456,11 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua
 
 	/* 3D engine. */
 	if (context_chipset(ctx) >= 0x17)
-		celsius_class = NV17TCL;
+		celsius_class = NV17_3D;
 	else if (context_chipset(ctx) >= 0x11)
-		celsius_class = NV11TCL;
+		celsius_class = NV11_3D;
 	else
-		celsius_class = NV10TCL;
+		celsius_class = NV10_3D;
 
 	ret = nouveau_grobj_alloc(context_chan(ctx), 0xbeef0001, celsius_class,
 				  &nctx->hw.eng3d);
diff --git a/src/mesa/drivers/dri/nouveau/nv10_render.c b/src/mesa/drivers/dri/nouveau/nv10_render.c
index 94ff3ed..71496c1 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_render.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_render.c
@@ -26,7 +26,7 @@
 
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 #define NUM_VERTEX_ATTRS 8
@@ -39,37 +39,37 @@ nv10_emit_material(struct gl_context *ctx, struct nouveau_array *a,
 static struct nouveau_attr_info nv10_vertex_attrs[VERT_ATTRIB_MAX] = {
 	[VERT_ATTRIB_POS] = {
 		.vbo_index = 0,
-		.imm_method = NV10TCL_VERTEX_POS_4F_X,
+		.imm_method = NV10_3D_VERTEX_POS_4F_X,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_COLOR0] = {
 		.vbo_index = 1,
-		.imm_method = NV10TCL_VERTEX_COL_4F_R,
+		.imm_method = NV10_3D_VERTEX_COL_4F_R,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_COLOR1] = {
 		.vbo_index = 2,
-		.imm_method = NV10TCL_VERTEX_COL2_3F_R,
+		.imm_method = NV10_3D_VERTEX_COL2_3F_R,
 		.imm_fields = 3,
 	},
 	[VERT_ATTRIB_TEX0] = {
 		.vbo_index = 3,
-		.imm_method = NV10TCL_VERTEX_TX0_4F_S,
+		.imm_method = NV10_3D_VERTEX_TX0_4F_S,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_TEX1] = {
 		.vbo_index = 4,
-		.imm_method = NV10TCL_VERTEX_TX1_4F_S,
+		.imm_method = NV10_3D_VERTEX_TX1_4F_S,
 		.imm_fields = 4,
 	},
 	[VERT_ATTRIB_NORMAL] = {
 		.vbo_index = 5,
-		.imm_method = NV10TCL_VERTEX_NOR_3F_X,
+		.imm_method = NV10_3D_VERTEX_NOR_3F_X,
 		.imm_fields = 3,
 	},
 	[VERT_ATTRIB_FOG] = {
 		.vbo_index = 7,
-		.imm_method = NV10TCL_VERTEX_FOG_1F,
+		.imm_method = NV10_3D_VERTEX_FOG_1F,
 		.imm_fields = 1,
 	},
 	[VERT_ATTRIB_GENERIC0] = {
@@ -94,12 +94,12 @@ get_hw_format(int type)
 {
 	switch (type) {
 	case GL_FLOAT:
-		return NV10TCL_VTXFMT_TYPE_FLOAT;
+		return NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT;
 	case GL_SHORT:
 	case GL_UNSIGNED_SHORT:
-		return NV10TCL_VTXFMT_TYPE_SHORT;
+		return NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM;
 	case GL_UNSIGNED_BYTE:
-		return NV10TCL_VTXFMT_TYPE_BYTE_RGBA;
+		return NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM;
 	default:
 		assert(0);
 	}
@@ -122,13 +122,13 @@ nv10_render_set_format(struct gl_context *ctx)
 				get_hw_format(a->type);
 
 			if (attr == VERT_ATTRIB_POS && a->fields == 4)
-				hw_format |= NV10TCL_VTXFMT_POS_HOMOGENEOUS;
+				hw_format |= NV10_3D_VTXBUF_FMT_POS_HOMOGENEOUS;
 		} else {
 			/* Unused attribute. */
-			hw_format = NV10TCL_VTXFMT_TYPE_FLOAT;
+			hw_format = NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT;
 		}
 
-		BEGIN_RING(chan, celsius, NV10TCL_VTXFMT(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_FMT(i), 1);
 		OUT_RING(chan, hw_format);
 	}
 }
@@ -145,7 +145,7 @@ nv10_render_bind_vertices(struct gl_context *ctx)
 		struct nouveau_array *a = &render->attrs[attr];
 
 		nouveau_bo_markl(bctx, celsius,
-				 NV10TCL_VTXBUF_ADDRESS(i),
+				 NV10_3D_VTXBUF_OFFSET(i),
 				 a->bo, a->offset,
 				 NOUVEAU_BO_GART | NOUVEAU_BO_RD);
 	}
@@ -156,33 +156,33 @@ nv10_render_bind_vertices(struct gl_context *ctx)
 	struct nouveau_grobj *celsius = context_eng3d(ctx)
 
 #define BATCH_VALIDATE()						\
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_ARRAY_VALIDATE, 1);	\
+	BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_VALIDATE, 1);	\
 	OUT_RING(chan, 0)
 
 #define BATCH_BEGIN(prim)						\
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1);	\
+	BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1);	\
 	OUT_RING(chan, prim)
 #define BATCH_END()							\
-	BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1);	\
+	BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1);	\
 	OUT_RING(chan, 0)
 
 #define MAX_PACKET 0x400
 
 #define MAX_OUT_L 0x100
 #define BATCH_PACKET_L(n)						\
-	BEGIN_RING_NI(chan, celsius, NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS, n)
+	BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_BATCH, n)
 #define BATCH_OUT_L(i, n)			\
 	OUT_RING(chan, ((n) - 1) << 24 | (i))
 
 #define MAX_OUT_I16 0x2
 #define BATCH_PACKET_I16(n)						\
-	BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U16, n)
+	BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U16, n)
 #define BATCH_OUT_I16(i0, i1)			\
 	OUT_RING(chan, (i1) << 16 | (i0))
 
 #define MAX_OUT_I32 0x1
 #define BATCH_PACKET_I32(n)						\
-	BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U32, n)
+	BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U32, n)
 #define BATCH_OUT_I32(i)			\
 	OUT_RING(chan, i)
 
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
index 0fda9fa..dbdfe7c 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c
@@ -27,7 +27,8 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_fbo.h"
-#include "nouveau_class.h"
+#include "nv_object.xml.h"
+#include "nv10_3d.xml.h"
 #include "nouveau_util.h"
 #include "nv10_driver.h"
 
@@ -68,20 +69,20 @@ setup_hierz_buffer(struct gl_context *ctx)
 				    0, NOUVEAU_BO_TILE_ZETA, &nfb->hierz.bo);
 	}
 
-	nouveau_bo_markl(bctx, celsius, NV17TCL_LMA_DEPTH_BUFFER_OFFSET,
+	nouveau_bo_markl(bctx, celsius, NV17_3D_LMA_DEPTH_BUFFER_OFFSET,
 			 nfb->hierz.bo, 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR);
 
 	WAIT_RING(chan, 9);
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_WINDOW_X, 4);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_WINDOW_X, 4);
 	OUT_RINGf(chan, - 1792);
 	OUT_RINGf(chan, - 2304 + fb->Height);
 	OUT_RINGf(chan, fb->_DepthMaxF / 2);
 	OUT_RINGf(chan, 0);
 
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_PITCH, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_BUFFER_PITCH, 1);
 	OUT_RING(chan, pitch);
 
-	BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV17_3D_LMA_DEPTH_ENABLE, 1);
 	OUT_RING(chan, 1);
 }
 
@@ -93,7 +94,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 	struct nouveau_bo_context *bctx = context_bctx(ctx, FRAMEBUFFER);
 	struct gl_framebuffer *fb = ctx->DrawBuffer;
 	struct nouveau_surface *s;
-	unsigned rt_format = NV10TCL_RT_FORMAT_TYPE_LINEAR;
+	unsigned rt_format = NV10_3D_RT_FORMAT_TYPE_LINEAR;
 	unsigned rt_pitch = 0, zeta_pitch = 0;
 	unsigned bo_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR;
 
@@ -106,7 +107,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		int i;
 
 		for (i = 0; i < 6; i++) {
-			BEGIN_RING(chan, celsius, NV10TCL_NOP, 1);
+			BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1);
 			OUT_RING(chan, 0);
 		}
 	}
@@ -119,7 +120,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		rt_format |= get_rt_format(s->format);
 		zeta_pitch = rt_pitch = s->pitch;
 
-		nouveau_bo_markl(bctx, celsius, NV10TCL_COLOR_OFFSET,
+		nouveau_bo_markl(bctx, celsius, NV10_3D_COLOR_OFFSET,
 				 s->bo, 0, bo_flags);
 	}
 
@@ -131,7 +132,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		rt_format |= get_rt_format(s->format);
 		zeta_pitch = s->pitch;
 
-		nouveau_bo_markl(bctx, celsius, NV10TCL_ZETA_OFFSET,
+		nouveau_bo_markl(bctx, celsius, NV10_3D_ZETA_OFFSET,
 				 s->bo, 0, bo_flags);
 
 		if (context_chipset(ctx) >= 0x17) {
@@ -140,7 +141,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit)
 		}
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_RT_FORMAT, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RT_FORMAT, 2);
 	OUT_RING(chan, rt_format);
 	OUT_RING(chan, zeta_pitch << 16 | rt_pitch);
 
@@ -162,7 +163,7 @@ nv10_emit_scissor(struct gl_context *ctx, int emit)
 
 	get_scissors(ctx->DrawBuffer, &x, &y, &w, &h);
 
-	BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2);
 	OUT_RING(chan, w << 16 | x);
 	OUT_RING(chan, h << 16 | y);
 }
@@ -182,12 +183,12 @@ nv10_emit_viewport(struct gl_context *ctx, int emit)
 	if (nv10_use_viewport_zclear(ctx))
 		a[2] = nv10_transform_depth(ctx, (vp->Far + vp->Near) / 2);
 
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_TRANSLATE_X, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_TRANSLATE_X, 4);
 	OUT_RINGp(chan, a, 4);
 
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1);
 	OUT_RING(chan, (fb->Width - 1) << 16 | 0x08000800);
-	BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1);
 	OUT_RING(chan, (fb->Height - 1) << 16 | 0x08000800);
 
 	context_dirty(ctx, PROJECTION);
@@ -203,12 +204,12 @@ nv10_emit_zclear(struct gl_context *ctx, int emit)
 		to_nouveau_framebuffer(ctx->DrawBuffer);
 
 	if (nfb->hierz.bo) {
-		BEGIN_RING(chan, celsius, NV17TCL_ZCLEAR_ENABLE, 2);
+		BEGIN_RING(chan, celsius, NV17_3D_ZCLEAR_ENABLE, 2);
 		OUT_RING(chan, nctx->hierz.clear_blocked ? 0 : 1);
 		OUT_RING(chan, nfb->hierz.clear_value |
 			 (nctx->hierz.clear_seq & 0xff));
 	} else {
-		BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2);
+		BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2);
 		OUT_RINGf(chan, nv10_transform_depth(ctx, 0));
 		OUT_RINGf(chan, nv10_transform_depth(ctx, 1));
 		context_dirty(ctx, VIEWPORT);
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
index 5138c36..1adc860 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c
@@ -27,7 +27,7 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nouveau_util.h"
 #include "nv10_driver.h"
 #include "nv20_driver.h"
@@ -41,24 +41,24 @@
 #define RC_IN_SHIFT_G	40
 
 #define RC_IN_SOURCE(source)				\
-	((uint64_t)NV10TCL_RC_IN_RGB_D_INPUT_##source)
+	((uint64_t)NV10_3D_RC_IN_RGB_D_INPUT_##source)
 #define RC_IN_USAGE(usage)					\
-	((uint64_t)NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_##usage)
+	((uint64_t)NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_##usage)
 #define RC_IN_MAPPING(mapping)					\
-	((uint64_t)NV10TCL_RC_IN_RGB_D_MAPPING_##mapping)
+	((uint64_t)NV10_3D_RC_IN_RGB_D_MAPPING_##mapping)
 
-#define RC_OUT_BIAS	NV10TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF
-#define RC_OUT_SCALE_1	NV10TCL_RC_OUT_RGB_SCALE_NONE
-#define RC_OUT_SCALE_2	NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO
-#define RC_OUT_SCALE_4	NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR
+#define RC_OUT_BIAS	NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF
+#define RC_OUT_SCALE_1	NV10_3D_RC_OUT_RGB_SCALE_NONE
+#define RC_OUT_SCALE_2	NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO
+#define RC_OUT_SCALE_4	NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR
 
 /* Make the combiner do: spare0_i = A_i * B_i */
-#define RC_OUT_AB	NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0
+#define RC_OUT_AB	NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0
 /* spare0_i = dot3(A, B) */
-#define RC_OUT_DOT_AB	(NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 |	\
-			 NV10TCL_RC_OUT_RGB_AB_DOT_PRODUCT)
+#define RC_OUT_DOT_AB	(NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 |	\
+			 NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT)
 /* spare0_i = A_i * B_i + C_i * D_i */
-#define RC_OUT_SUM	NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0
+#define RC_OUT_SUM	NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0
 
 struct combiner_state {
 	struct gl_context *ctx;
@@ -383,15 +383,15 @@ nv10_emit_tex_env(struct gl_context *ctx, int emit)
 			c_out |= 0x3 << 27;
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_RC_IN_ALPHA(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_IN_ALPHA(i), 1);
 	OUT_RING(chan, a_in);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_IN_RGB(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_IN_RGB(i), 1);
 	OUT_RING(chan, c_in);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_COLOR(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_COLOR(i), 1);
 	OUT_RING(chan, k);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_ALPHA(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_ALPHA(i), 1);
 	OUT_RING(chan, a_out);
-	BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_RGB(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_RGB(i), 1);
 	OUT_RING(chan, c_out);
 
 	context_dirty(ctx, FRAG);
@@ -407,7 +407,7 @@ nv10_emit_frag(struct gl_context *ctx, int emit)
 
 	nv10_get_final_combiner(ctx, &in, &n);
 
-	BEGIN_RING(chan, celsius, NV10TCL_RC_FINAL0, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_RC_FINAL0, 2);
 	OUT_RING(chan, in);
 	OUT_RING(chan, in >> 32);
 }
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
index 4e49b02..f0f7dd2 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c
@@ -27,7 +27,7 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 void
@@ -37,13 +37,13 @@ nv10_emit_cull_face(struct gl_context *ctx, int emit)
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 	GLenum mode = ctx->Polygon.CullFaceMode;
 
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1);
 	OUT_RING(chan, ctx->Polygon.CullFlag ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 1);
-	OUT_RING(chan, (mode == GL_FRONT ? NV10TCL_CULL_FACE_FRONT :
-			mode == GL_BACK ? NV10TCL_CULL_FACE_BACK :
-			NV10TCL_CULL_FACE_FRONT_AND_BACK));
+	BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 1);
+	OUT_RING(chan, (mode == GL_FRONT ? NV10_3D_CULL_FACE_FRONT :
+			mode == GL_BACK ? NV10_3D_CULL_FACE_BACK :
+			NV10_3D_CULL_FACE_FRONT_AND_BACK));
 }
 
 void
@@ -52,9 +52,9 @@ nv10_emit_front_face(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_FRONT_FACE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_FRONT_FACE, 1);
 	OUT_RING(chan, ctx->Polygon.FrontFace == GL_CW ?
-		 NV10TCL_FRONT_FACE_CW : NV10TCL_FRONT_FACE_CCW);
+		 NV10_3D_FRONT_FACE_CW : NV10_3D_FRONT_FACE_CCW);
 }
 
 void
@@ -65,10 +65,10 @@ nv10_emit_line_mode(struct gl_context *ctx, int emit)
 	GLboolean smooth = ctx->Line.SmoothFlag &&
 		ctx->Hint.LineSmooth == GL_NICEST;
 
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1);
 	OUT_RING(chan, MAX2(smooth ? 0 : 1,
 			    ctx->Line.Width) * 8);
-	BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, smooth ? 1 : 0);
 }
 
@@ -83,10 +83,10 @@ nv10_emit_point_mode(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1);
 	OUT_RING(chan, (uint32_t)(ctx->Point.Size * 8));
 
-	BEGIN_RING(chan, celsius, NV10TCL_POINT_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POINT_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, ctx->Point.SmoothFlag ? 1 : 0);
 }
 
@@ -96,11 +96,11 @@ nv10_emit_polygon_mode(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2);
 	OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.FrontMode));
 	OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.BackMode));
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1);
 	OUT_RING(chan, ctx->Polygon.SmoothFlag ? 1 : 0);
 }
 
@@ -110,12 +110,12 @@ nv10_emit_polygon_offset(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
 	OUT_RING(chan, ctx->Polygon.OffsetPoint ? 1 : 0);
 	OUT_RING(chan, ctx->Polygon.OffsetLine ? 1 : 0);
 	OUT_RING(chan, ctx->Polygon.OffsetFill ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2);
 	OUT_RINGf(chan, ctx->Polygon.OffsetFactor);
 	OUT_RINGf(chan, ctx->Polygon.OffsetUnits);
 }
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
index 9960984..9215391 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c
@@ -27,7 +27,7 @@
 #include "nouveau_driver.h"
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 void
@@ -36,10 +36,10 @@ nv10_emit_alpha_func(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1);
 	OUT_RING(chan, ctx->Color.AlphaEnabled ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2);
 	OUT_RING(chan, nvgl_comparison_op(ctx->Color.AlphaFunc));
 	OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.AlphaRef));
 }
@@ -50,7 +50,7 @@ nv10_emit_blend_color(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_COLOR, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_COLOR, 1);
 	OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.BlendColor[3]) << 24 |
 		 FLOAT_TO_UBYTE(ctx->Color.BlendColor[0]) << 16 |
 		 FLOAT_TO_UBYTE(ctx->Color.BlendColor[1]) << 8 |
@@ -63,10 +63,10 @@ nv10_emit_blend_equation(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1);
 	OUT_RING(chan, ctx->Color.BlendEnabled ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_EQUATION, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_EQUATION, 1);
 	OUT_RING(chan, nvgl_blend_eqn(ctx->Color.BlendEquationRGB));
 }
 
@@ -76,7 +76,7 @@ nv10_emit_blend_func(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 2);
+	BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 2);
 	OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendSrcRGB));
 	OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendDstRGB));
 }
@@ -87,7 +87,7 @@ nv10_emit_color_mask(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1);
 	OUT_RING(chan, ((ctx->Color.ColorMask[0][3] ? 1 << 24 : 0) |
 			(ctx->Color.ColorMask[0][0] ? 1 << 16 : 0) |
 			(ctx->Color.ColorMask[0][1] ? 1 << 8 : 0) |
@@ -100,11 +100,11 @@ nv10_emit_depth(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1);
 	OUT_RING(chan, ctx->Depth.Test ? 1 : 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1);
 	OUT_RING(chan, ctx->Depth.Mask ? 1 : 0);
-	BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1);
 	OUT_RING(chan, nvgl_comparison_op(ctx->Depth.Func));
 }
 
@@ -114,7 +114,7 @@ nv10_emit_dither(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 1);
 	OUT_RING(chan, ctx->Color.DitherFlag ? 1 : 0);
 }
 
@@ -127,7 +127,7 @@ nv10_emit_logic_opcode(struct gl_context *ctx, int emit)
 	assert(!ctx->Color.ColorLogicOpEnabled
 	       || context_chipset(ctx) >= 0x11);
 
-	BEGIN_RING(chan, celsius, NV11TCL_COLOR_LOGIC_OP_ENABLE, 2);
+	BEGIN_RING(chan, celsius, NV11_3D_COLOR_LOGIC_OP_ENABLE, 2);
 	OUT_RING(chan, ctx->Color.ColorLogicOpEnabled ? 1 : 0);
 	OUT_RING(chan, nvgl_logicop_func(ctx->Color.LogicOp));
 }
@@ -138,9 +138,9 @@ nv10_emit_shade_model(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_SHADE_MODEL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_SHADE_MODEL, 1);
 	OUT_RING(chan, ctx->Light.ShadeModel == GL_SMOOTH ?
-		 NV10TCL_SHADE_MODEL_SMOOTH : NV10TCL_SHADE_MODEL_FLAT);
+		 NV10_3D_SHADE_MODEL_SMOOTH : NV10_3D_SHADE_MODEL_FLAT);
 }
 
 void
@@ -149,10 +149,10 @@ nv10_emit_stencil_func(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_ENABLE, 1);
 	OUT_RING(chan, ctx->Stencil.Enabled ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_FUNC_FUNC, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_FUNC_FUNC, 3);
 	OUT_RING(chan, nvgl_comparison_op(ctx->Stencil.Function[0]));
 	OUT_RING(chan, ctx->Stencil.Ref[0]);
 	OUT_RING(chan, ctx->Stencil.ValueMask[0]);
@@ -164,7 +164,7 @@ nv10_emit_stencil_mask(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 1);
 	OUT_RING(chan, ctx->Stencil.WriteMask[0]);
 }
 
@@ -174,7 +174,7 @@ nv10_emit_stencil_op(struct gl_context *ctx, int emit)
 	struct nouveau_channel *chan = context_chan(ctx);
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 
-	BEGIN_RING(chan, celsius, NV10TCL_STENCIL_OP_FAIL, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_STENCIL_OP_FAIL, 3);
 	OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.FailFunc[0]));
 	OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZFailFunc[0]));
 	OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZPassFunc[0]));
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
index 0092ad0..4dc21f4 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c
@@ -28,14 +28,10 @@
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
 #include "nouveau_texture.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nouveau_util.h"
 #include "nv10_driver.h"
 
-#define TX_GEN_MODE(i, j) (NV10TCL_TX_GEN_MODE_S(i) + 4 * (j))
-#define TX_GEN_COEFF(i, j) (NV10TCL_TX_GEN_COEFF_S_A(i) + 16 * (j))
-#define TX_MATRIX(i) (NV10TCL_TX0_MATRIX(0) + 64 * (i))
-
 void
 nv10_emit_tex_gen(struct gl_context *ctx, int emit)
 {
@@ -53,15 +49,15 @@ nv10_emit_tex_gen(struct gl_context *ctx, int emit)
 
 			if (k) {
 				BEGIN_RING(chan, celsius,
-					   TX_GEN_COEFF(i, j), 4);
+					   NV10_3D_TEX_GEN_COEFF(i, j), 4);
 				OUT_RINGp(chan, k, 4);
 			}
 
-			BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1);
+			BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i, j), 1);
 			OUT_RING(chan, nvgl_texgen_mode(coord->Mode));
 
 		} else {
-			BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1);
+			BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i, j), 1);
 			OUT_RING(chan, 0);
 		}
 	}
@@ -80,14 +76,14 @@ nv10_emit_tex_mat(struct gl_context *ctx, int emit)
 	if (nctx->fallback == HWTNL &&
 	    ((ctx->Texture._TexMatEnabled & 1 << i) ||
 	     ctx->Texture.Unit[i]._GenFlags)) {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1);
 		OUT_RING(chan, 1);
 
-		BEGIN_RING(chan, celsius, TX_MATRIX(i), 16);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX(i, 0), 16);
 		OUT_RINGm(chan, ctx->TextureMatrixStack[i].Top->m);
 
 	} else {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1);
 		OUT_RING(chan, 0);
 	}
 }
@@ -97,29 +93,29 @@ get_tex_format_pot(struct gl_texture_image *ti)
 {
 	switch (ti->TexFormat) {
 	case MESA_FORMAT_ARGB8888:
-		return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8;
+		return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8;
 
 	case MESA_FORMAT_XRGB8888:
-		return NV10TCL_TX_FORMAT_FORMAT_X8R8G8B8;
+		return NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8;
 
 	case MESA_FORMAT_ARGB1555:
-		return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5;
+		return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5;
 
 	case MESA_FORMAT_ARGB4444:
-		return NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4;
+		return NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4;
 
 	case MESA_FORMAT_RGB565:
-		return NV10TCL_TX_FORMAT_FORMAT_R5G6B5;
+		return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5;
 
 	case MESA_FORMAT_A8:
 	case MESA_FORMAT_I8:
-		return NV10TCL_TX_FORMAT_FORMAT_A8;
+		return NV10_3D_TEX_FORMAT_FORMAT_I8;
 
 	case MESA_FORMAT_L8:
-		return NV10TCL_TX_FORMAT_FORMAT_L8;
+		return NV10_3D_TEX_FORMAT_FORMAT_L8;
 
 	case MESA_FORMAT_CI8:
-		return NV10TCL_TX_FORMAT_FORMAT_INDEX8;
+		return NV10_3D_TEX_FORMAT_FORMAT_INDEX8;
 
 	default:
 		assert(0);
@@ -131,19 +127,19 @@ get_tex_format_rect(struct gl_texture_image *ti)
 {
 	switch (ti->TexFormat) {
 	case MESA_FORMAT_ARGB1555:
-		return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT;
 
 	case MESA_FORMAT_RGB565:
-		return NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT;
 
 	case MESA_FORMAT_ARGB8888:
 	case MESA_FORMAT_XRGB8888:
-		return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT;
 
 	case MESA_FORMAT_A8:
 	case MESA_FORMAT_L8:
 	case MESA_FORMAT_I8:
-		return NV10TCL_TX_FORMAT_FORMAT_A8_RECT;
+		return NV10_3D_TEX_FORMAT_FORMAT_I8_RECT;
 
 	default:
 		assert(0);
@@ -164,7 +160,7 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
 	uint32_t tx_format, tx_filter, tx_enable;
 
 	if (!ctx->Texture.Unit[i]._ReallyEnabled) {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1);
 		OUT_RING(chan, 0);
 		return;
 	}
@@ -186,13 +182,13 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
 	tx_filter = nvgl_filter_mode(t->MagFilter) << 28
 		| nvgl_filter_mode(t->MinFilter) << 24;
 
-	tx_enable = NV10TCL_TX_ENABLE_ENABLE
+	tx_enable = NV10_3D_TEX_ENABLE_ENABLE
 		| log2i(t->MaxAnisotropy) << 4;
 
 	if (t->Target == GL_TEXTURE_RECTANGLE) {
-		BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_PITCH(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_PITCH(i), 1);
 		OUT_RING(chan, s->pitch << 16);
-		BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_SIZE(i), 1);
+		BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_SIZE(i), 1);
 		OUT_RING(chan, align(s->width, 2) << 16 | s->height);
 
 		tx_format |= get_tex_format_rect(ti);
@@ -211,26 +207,26 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit)
 		lod_min = CLAMP(lod_min, 0, 15);
 		lod_bias = CLAMP(lod_bias, 0, 15);
 
-		tx_format |= NV10TCL_TX_FORMAT_MIPMAP;
+		tx_format |= NV10_3D_TEX_FORMAT_MIPMAP;
 		tx_filter |= lod_bias << 8;
 		tx_enable |= lod_min << 26
 			| lod_max << 14;
 	}
 
 	/* Write it to the hardware. */
-	nouveau_bo_mark(bctx, celsius, NV10TCL_TX_FORMAT(i),
+	nouveau_bo_mark(bctx, celsius, NV10_3D_TEX_FORMAT(i),
 			s->bo, tx_format, 0,
-			NV10TCL_TX_FORMAT_DMA0,
-			NV10TCL_TX_FORMAT_DMA1,
+			NV10_3D_TEX_FORMAT_DMA0,
+			NV10_3D_TEX_FORMAT_DMA1,
 			bo_flags | NOUVEAU_BO_OR);
 
-	nouveau_bo_markl(bctx, celsius, NV10TCL_TX_OFFSET(i),
+	nouveau_bo_markl(bctx, celsius, NV10_3D_TEX_OFFSET(i),
 			 s->bo, s->offset, bo_flags);
 
-	BEGIN_RING(chan, celsius, NV10TCL_TX_FILTER(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_FILTER(i), 1);
 	OUT_RING(chan, tx_filter);
 
-	BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1);
+	BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1);
 	OUT_RING(chan, tx_enable);
 }
 
diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
index 175abfc..b9d07c1 100644
--- a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
+++ b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c
@@ -28,7 +28,7 @@
 #include "nouveau_context.h"
 #include "nouveau_gldefs.h"
 #include "nouveau_util.h"
-#include "nouveau_class.h"
+#include "nv10_3d.xml.h"
 #include "nv10_driver.h"
 
 void
@@ -42,13 +42,13 @@ get_material_bitmask(unsigned m)
 	unsigned ret = 0;
 
 	if (m & MAT_BIT_FRONT_EMISSION)
-		ret |= NV10TCL_COLOR_MATERIAL_EMISSION;
+		ret |= NV10_3D_COLOR_MATERIAL_EMISSION;
 	if (m & MAT_BIT_FRONT_AMBIENT)
-		ret |= NV10TCL_COLOR_MATERIAL_AMBIENT;
+		ret |= NV10_3D_COLOR_MATERIAL_AMBIENT;
 	if (m & MAT_BIT_FRONT_DIFFUSE)
-		ret |= NV10TCL_COLOR_MATERIAL_DIFFUSE;
+		ret |= NV10_3D_COLOR_MATERIAL_DIFFUSE;
 	if (m & MAT_BIT_FRONT_SPECULAR)
-		ret |= NV10TCL_COLOR_MATERIAL_SPECULAR;
+		ret |= NV10_3D_COLOR_MATERIAL_SPECULAR;
 
 	return ret;
 }
@@ -60,7 +60,7 @@ nv10_emit_color_material(struct gl_context *ctx, int emit)
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 	unsigned mask = get_material_bitmask(ctx->Light.ColorMaterialBitmask);
 
-	BEGIN_RING(chan, celsius, NV10TCL_COLOR_MATERIAL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_COLOR_MATERIAL, 1);
 	OUT_RING(chan, ctx->Light.ColorMaterialEnabled ? mask : 0);
 }
 
@@ -69,11 +69,11 @@ get_fog_mode(unsigned mode)
 {
 	switch (mode) {
 	case GL_LINEAR:
-		return NV10TCL_FOG_MODE_LINEAR;
+		return NV10_3D_FOG_MODE_LINEAR;
 	case GL_EXP:
-		return NV10TCL_FOG_MODE_EXP;
+		return NV10_3D_FOG_MODE_EXP;
 	case GL_EXP2:
-		return NV10TCL_FOG_MODE_EXP2;
+		return NV10_3D_FOG_MODE_EXP2;
 	default:
 		assert(0);
 	}
@@ -84,9 +84,9 @@ get_fog_source(unsigned source)
 {
 	switch (source) {
 	case GL_FOG_COORDINATE_EXT:
-		return NV10TCL_FOG_COORD_FOG;
+		return NV10_3D_FOG_COORD_FOG;
 	case GL_FRAGMENT_DEPTH_EXT:
-		return NV10TCL_FOG_COORD_DIST_ORTHOGONAL_ABS;
+		return NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS;
 	default:
 		assert(0);
 	}
@@ -133,13 +133,13 @@ nv10_emit_fog(struct gl_context *ctx, int emit)
 
 	nv10_get_fog_coeff(ctx, k);
 
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 4);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 4);
 	OUT_RING(chan, get_fog_mode(f->Mode));
 	OUT_RING(chan, get_fog_source(source));
 	OUT_RING(chan, f->Enabled ? 1 : 0);
 	OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color));
 
-	BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3);
 	OUT_RINGp(chan, k, 3);
 
 	context_dirty(ctx, FRAG);
@@ -150,13 +150,13 @@ get_light_mode(struct gl_light *l)
 {
 	if (l->Enabled) {
 		if (l->_Flags & LIGHT_SPOT)
-			return NV10TCL_ENABLED_LIGHTS_0_DIRECTIONAL;
+			return NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL;
 		else if (l->_Flags & LIGHT_POSITIONAL)
-			return NV10TCL_ENABLED_LIGHTS_0_POSITIONAL;
+			return NV10_3D_ENABLED_LIGHTS_0_POSITIONAL;
 		else
-			return NV10TCL_ENABLED_LIGHTS_0_NONPOSITIONAL;
+			return NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL;
 	} else {
-		return NV10TCL_ENABLED_LIGHTS_0_DISABLED;
+		return NV10_3D_ENABLED_LIGHTS_0_DISABLED;
 	}
 }
 
@@ -170,7 +170,7 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit)
 	int i;
 
 	if (nctx->fallback != HWTNL) {
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1);
 		OUT_RING(chan, 0);
 		return;
 	}
@@ -178,11 +178,11 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit)
 	for (i = 0; i < MAX_LIGHTS; i++)
 		en_lights |= get_light_mode(&ctx->Light.Light[i]) << 2 * i;
 
-	BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1);
 	OUT_RING(chan, en_lights);
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1);
 	OUT_RING(chan, ctx->Light.Enabled ? 1 : 0);
-	BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1);
 	OUT_RING(chan, ctx->Transform.Normalize ? 1 : 0);
 }
 
@@ -193,16 +193,16 @@ nv10_emit_light_model(struct gl_context *ctx, int emit)
 	struct nouveau_grobj *celsius = context_eng3d(ctx);
 	struct gl_lightmodel *m = &ctx->Light.Model;
 
-	BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1);
 	OUT_RING(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR ? 1 : 0);
 
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1);
 	OUT_RING(chan, ((m->LocalViewer ?
-			 NV10TCL_LIGHT_MODEL_LOCAL_VIEWER : 0) |
+			 NV10_3D_LIGHT_MODEL_LOCAL_VIEWER : 0) |
 			(NEED_SECONDARY_COLOR(ctx) ?
-			 NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR : 0) |
+			 NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR : 0) |
 			(!ctx->Light.Enabled && ctx->Fog.ColorSumEnabled ?
-			 NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR : 0)));
+			 NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR : 0)));
 }
 
 static float
@@ -281,20 +281,20 @@ nv10_emit_light_source(struct gl_context *ctx, int emit)
 	struct gl_light *l = &ctx->Light.Light[i];
 
 	if (l->_Flags & LIGHT_POSITIONAL) {
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_POSITION_X(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_POSITION_X(i), 3);
 		OUT_RINGp(chan, l->_Position, 3);
 
 		BEGIN_RING(chan, celsius,
-			   NV10TCL_LIGHT_ATTENUATION_CONSTANT(i), 3);
+			   NV10_3D_LIGHT_ATTENUATION_CONSTANT(i), 3);
 		OUT_RINGf(chan, l->ConstantAttenuation);
 		OUT_RINGf(chan, l->LinearAttenuation);
 		OUT_RINGf(chan, l->QuadraticAttenuation);
 
 	} else {
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIRECTION_X(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIRECTION_X(i), 3);
 		OUT_RINGp(chan, l->_VP_inf_norm, 3);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_HALF_VECTOR_X(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_HALF_VECTOR_X(i), 3);
 		OUT_RINGp(chan, l->_h_inf_norm, 3);
 	}
 
@@ -303,7 +303,7 @@ nv10_emit_light_source(struct gl_context *ctx, int emit)
 
 		nv10_get_spot_coeff(l, k);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPOT_CUTOFF_A(i), 7);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPOT_CUTOFF(i, 0), 7);
 		OUT_RINGp(chan, k, 7);
 	}
 }
@@ -335,11 +335,11 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit)
 		ZERO_3V(c_factor);
 	}
 
-	BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL_AMBIENT_R, 3);
+	BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL_AMBIENT_R, 3);
 	OUT_RINGp(chan, c_scene, 3);
 
 	if (ctx->Light.ColorMaterialEnabled) {
-		BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_R, 3);
+		BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_R, 3);
 		OUT_RINGp(chan, c_factor, 3);
 	}
 
@@ -349,7 +349,7 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit)
 				  l->Ambient :
 				  l->_MatAmbient[0]);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_AMBIENT_R(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_AMBIENT_R(i), 3);
 		OUT_RINGp(chan, c_light, 3);
 	}
 }
@@ -362,7 +362,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit)
 	GLfloat (*mat)[4] = ctx->Light.Material.Attrib;
 	struct gl_light *l;
 
-	BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_A, 1);
+	BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_A, 1);
 	OUT_RINGf(chan, mat[MAT_ATTRIB_FRONT_DIFFUSE][3]);
 
 	foreach(l, &ctx->Light.EnabledList) {
@@ -371,7 +371,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit)
 				  l->Diffuse :
 				  l->_MatDiffuse[0]);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIFFUSE_R(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIFFUSE_R(i), 3);
 		OUT_RINGp(chan, c_light, 3);
 	}
 }
@@ -389,7 +389,7 @@ nv10_emit_material_specular(struct gl_context *ctx, int emit)
 				  l->Specular :
 				  l->_MatSpecular[0]);
 
-		BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPECULAR_R(i), 3);
+		BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPECULAR_R(i), 3);
 		OUT_RINGp(chan, c_light, 3);
 	}
 }
@@ -430,7 +430,7 @@ nv10_emit_material_shininess(struct gl_context *ctx, int emit)
 		CLAMP(mat[MAT_ATTRIB_FRONT_SHININESS][0], 0, 1024),
 		k);
 
-	BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_SHININESS(0), 6);
+	BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_SHININESS(0), 6);
 	OUT_RINGp(chan, k, 6);
 }
 
@@ -447,7 +447,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit)
 
 	if (ctx->Light._NeedEyeCoords || ctx->Fog.Enabled ||
 	    (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)) {
-		BEGIN_RING(chan, celsius, NV10TCL_MODELVIEW0_MATRIX(0), 16);
+		BEGIN_RING(chan, celsius, NV10_3D_MODELVIEW_MATRIX(0, 0), 16);
 		OUT_RINGm(chan, m->m);
 	}
 
@@ -456,7 +456,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit)
 		int i, j;
 
 		BEGIN_RING(chan, celsius,
-			   NV10TCL_INVERSE_MODELVIEW0_MATRIX(0), 12);
+			   NV10_3D_INVERSE_MODELVIEW_MATRIX(0, 0), 12);
 		for (i = 0; i < 3; i++)
 			for (j = 0; j < 4; j++)
 				OUT_RINGf(chan, m->inv[4*i + j]);
@@ -485,7 +485,7 @@ nv10_emit_projection(struct gl_context *ctx, int emit)
 	if (nctx->fallback == HWTNL)
 		_math_matrix_mul_matrix(&m, &m, &ctx->_ModelProjectMatrix);
 
-	BEGIN_RING(chan, celsius, NV10TCL_PROJECTION_MATRIX(0), 16);
+	BEGIN_RING(chan, celsius, NV10_3D_PROJECTION_MATRIX(0), 16);
 	OUT_RINGm(chan, m.m);
 
 	_math_matrix_dtr(&m);
-- 
1.7.3.2

_______________________________________________
Nouveau mailing list
Nouveau@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/nouveau

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-11-04 11:18 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-11-01  0:26 [RFC/PATCH] Switch dri driver to use rules-ng-ng headers Viktor Novotný
     [not found] ` <1288571171-8102-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
2010-11-01  0:26   ` [PATCH 1/5] dri/nouveau: Import headers from rules-ng-ng Viktor Novotný
2010-11-01  0:26   ` [PATCH 2/5] dri/nouveau: nv04: Use rules-ng-ng headers Viktor Novotný
2010-11-01  0:26   ` [PATCH 3/5] dri/nouveau: nv10: " Viktor Novotný
2010-11-01  1:59   ` [RFC/PATCH] Switch dri driver to use " Marcin Kościelnicki
     [not found]     ` <7d9982d90fbc76c45c09e18e0a9f08b1-mP9o5jsk0RY@public.gmane.org>
2010-11-04 10:00       ` [PATCH] nv10-20: Name texture units stripe to expose number of tex-units to header Viktor Novotný
     [not found]         ` <1288864834-16144-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
2010-11-04 11:18           ` Marcin Kościelnicki
  -- strict thread matches above, loose matches on Subject: below --
2010-11-01  0:30 [RFC/PATCH] Switch dri driver to use rules-ng-ng headers Viktor Novotný
     [not found] ` <1288571454-8151-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
2010-11-01  0:30   ` [PATCH 3/5] dri/nouveau: nv10: Use " Viktor Novotný
2010-11-01  0:22 [RFC/PATCH] Switch dri driver to use " Viktor Novotný
     [not found] ` <1288570969-8057-1-git-send-email-noviktor-9Vj9tDbzfuSlVyrhU4qvOw@public.gmane.org>
2010-11-01  0:22   ` [PATCH 3/5] dri/nouveau: nv10: Use " Viktor Novotný

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.