Architect the DRI :
authorStephane Marchesin <marchesin@icps.u-strasbg.fr>
Sun, 5 Nov 2006 13:46:48 +0000 (13:46 +0000)
committerStephane Marchesin <marchesin@icps.u-strasbg.fr>
Sun, 5 Nov 2006 13:46:48 +0000 (13:46 +0000)
- make use of the autogenerated nouveau_reg.h file
- add object creation to the DRI
- some work on screen and context creation

20 files changed:
src/mesa/drivers/dri/nouveau/Makefile
src/mesa/drivers/dri/nouveau/nouveau_card.c [new file with mode: 0644]
src/mesa/drivers/dri/nouveau/nouveau_card.h [new file with mode: 0644]
src/mesa/drivers/dri/nouveau/nouveau_context.c
src/mesa/drivers/dri/nouveau/nouveau_context.h
src/mesa/drivers/dri/nouveau/nouveau_ctrlreg.h [new file with mode: 0644]
src/mesa/drivers/dri/nouveau/nouveau_dri.h [new file with mode: 0644]
src/mesa/drivers/dri/nouveau/nouveau_driver.c
src/mesa/drivers/dri/nouveau/nouveau_fifo.c
src/mesa/drivers/dri/nouveau/nouveau_fifo.h
src/mesa/drivers/dri/nouveau/nouveau_ioctl.c [deleted file]
src/mesa/drivers/dri/nouveau/nouveau_ioctl.h [deleted file]
src/mesa/drivers/dri/nouveau/nouveau_object.c [new file with mode: 0644]
src/mesa/drivers/dri/nouveau/nouveau_object.h [new file with mode: 0644]
src/mesa/drivers/dri/nouveau/nouveau_reg.h
src/mesa/drivers/dri/nouveau/nouveau_screen.c [new file with mode: 0644]
src/mesa/drivers/dri/nouveau/nouveau_screen.h
src/mesa/drivers/dri/nouveau/nouveau_state.c
src/mesa/drivers/dri/nouveau/nouveau_swtcl.c
src/mesa/drivers/dri/nouveau/nv10_swtcl.c

index ee7bc5d3178fa5da5f684f3bb9f26319886f21fb..08240ad0322f7927c75e26ef175b4302b8ea0e71 100644 (file)
@@ -8,13 +8,15 @@ LIBNAME = nouveau_dri.so
 MINIGLX_SOURCES = 
 
 DRIVER_SOURCES = \
+       nouveau_card.c           \
        nouveau_context.c        \
        nouveau_driver.c         \
        nouveau_fifo.c           \
-       nouveau_ioctl.c          \
        nouveau_lock.c           \
+       nouveau_object.c         \
+       nouveau_screen.c         \
        nouveau_span.c           \
-       nouveau_state.c          \
+       nouveau_state.c          \
        nouveau_tex.c            \
        nouveau_swtcl.c          \
        nv10_swtcl.c
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_card.c b/src/mesa/drivers/dri/nouveau/nouveau_card.c
new file mode 100644 (file)
index 0000000..c36f62a
--- /dev/null
@@ -0,0 +1,50 @@
+
+#include "nouveau_card.h"
+#include "nouveau_reg.h"
+
+static nouveau_card nouveau_card_list[]={
+//x0010,       "Riva 128",                     ????,                           NV_03,  0},
+{0x0020,       "TNT/TNT2",                     NV04_DX6_MULTITEX_TRIANGLE,     NV_04,  0},
+{0x00A0,       "TNT2",                         NV04_DX6_MULTITEX_TRIANGLE,     NV_04,  0},
+{0x0100,       "GeForce",                      NV10_TCL_PRIMITIVE_3D,          NV_10,  0},
+{0x0110,       "GeForce 2 MX",                 NV15_TCL_PRIMITIVE_3D|0x1100,   NV_10,  0},
+{0x01A0,       "NForce",                       NV15_TCL_PRIMITIVE_3D|0x1100,   NV_10,  0},
+{0x0150,       "GeForce 2",                    NV15_TCL_PRIMITIVE_3D,          NV_10,  0},
+{0x0170,       "GeForce 4 MX",                 NV15_TCL_PRIMITIVE_3D|0x1700,   NV_10,  NV_HAS_LMA},
+{0x0180,       "GeForce 4 MX",                 NV15_TCL_PRIMITIVE_3D|0x1700,   NV_10,  NV_HAS_LMA},
+{0x01F0,       "NForce 2",                     NV15_TCL_PRIMITIVE_3D|0x1700,   NV_10,  NV_HAS_LMA},
+{0x0200,       "GeForce 3",                    NV20_TCL_PRIMITIVE_3D|0x2000,   NV_20,  NV_HAS_LMA},
+{0x0250,       "GeForce 4 Ti",                 NV20_TCL_PRIMITIVE_3D|0x2500,   NV_20,  NV_HAS_LMA},
+{0x0280,       "GeForce 4 Ti",                 NV20_TCL_PRIMITIVE_3D|0x2500,   NV_20,  NV_HAS_LMA},
+{0x0320,       "GeForce FX 5200/5500",         NV30_TCL_PRIMITIVE_3D|0x3400,   NV_30,  NV_HAS_LMA},
+{0x0310,       "GeForce FX 5600",              NV30_TCL_PRIMITIVE_3D|0x3000,   NV_30,  NV_HAS_LMA},
+{0x0340,       "GeForce FX 5700",              NV30_TCL_PRIMITIVE_3D|0x3500,   NV_30,  NV_HAS_LMA},
+{0x0300,       "GeForce FX 5800",              NV30_TCL_PRIMITIVE_3D|0x3000,   NV_30,  NV_HAS_LMA},
+{0x0330,       "GeForce FX 5900",              NV30_TCL_PRIMITIVE_3D|0x3500,   NV_30,  NV_HAS_LMA},
+{0x0240,       "GeForce 6100",                 NV30_TCL_PRIMITIVE_3D|0x4400,   NV_40,  NV_HAS_LMA},
+{0x0160,       "GeForce 6200",                 NV30_TCL_PRIMITIVE_3D|0x4400,   NV_40,  NV_HAS_LMA},
+{0x0220,       "GeForce 6200",                 NV30_TCL_PRIMITIVE_3D|0x4400,   NV_40,  NV_HAS_LMA},
+{0x0140,       "GeForce 6200/6600",            NV30_TCL_PRIMITIVE_3D|0x4000,   NV_40,  NV_HAS_LMA},
+{0x0040,       "GeForce 6800",                 NV30_TCL_PRIMITIVE_3D|0x4000,   NV_40,  NV_HAS_LMA},
+{0x00C0,       "GeForce 6800",                 NV30_TCL_PRIMITIVE_3D|0x4000,   NV_40,  NV_HAS_LMA},
+{0x0210,       "GeForce 6800",                 NV30_TCL_PRIMITIVE_3D|0x4000,   NV_40,  NV_HAS_LMA},
+{0x01D0,       "GeForce 7200/7300/7400",       NV30_TCL_PRIMITIVE_3D|0x4400,   NV_40,  NV_HAS_LMA},
+{0x0390,       "GeForce 7300/7600",            NV30_TCL_PRIMITIVE_3D|0x4000,   NV_40,  NV_HAS_LMA},
+{0x02E0,       "GeForce 7300/7600",            NV30_TCL_PRIMITIVE_3D|0x4000,   NV_40,  NV_HAS_LMA},
+{0x0090,       "GeForce 7800",                 NV30_TCL_PRIMITIVE_3D|0x4000,   NV_40,  NV_HAS_LMA},
+{0x0290,       "GeForce 7900",                 NV30_TCL_PRIMITIVE_3D|0x4000,   NV_40,  NV_HAS_LMA},
+/* catchall */
+{0x0000,       "Unknown card",                 NV30_TCL_PRIMITIVE_3D|0x4000,   NV_40,  NV_HAS_LMA},
+};
+
+
+nouveau_card* nouveau_card_lookup(uint32_t device_id)
+{
+       int i;
+       for(i=0;i<sizeof(nouveau_card_list)/sizeof(nouveau_card)-1;i++)
+               if (nouveau_card_list[i].id==(device_id&0xfff0))
+                       break;
+       return &(nouveau_card_list[i]);
+}
+
+
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_card.h b/src/mesa/drivers/dri/nouveau/nouveau_card.h
new file mode 100644 (file)
index 0000000..8a4c5f2
--- /dev/null
@@ -0,0 +1,49 @@
+/**************************************************************************
+
+Copyright 2006 Stephane Marchesin
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+on the rights to use, copy, modify, merge, publish, distribute, sub
+license, and/or sell copies of the Software, and to permit persons to whom
+the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+
+#ifndef __NOUVEAU_CARD_H__
+#define __NOUVEAU_CARD_H__
+
+#include "dri_util.h"
+#include "drm.h"
+#include "nouveau_drm.h"
+
+typedef struct nouveau_card_t {
+       uint16_t id; /* last 4 digits of pci id, last digit is always 0 */
+       char* name; /* the user-friendly card name */
+       uint32_t class_3d; /* the object class this card uses for 3D */
+       uint32_t type; /* the major card family */
+       uint32_t flags;
+}
+nouveau_card;
+
+#define NV_HAS_LMA 0x00000001
+
+extern nouveau_card* nouveau_card_lookup(uint32_t device_id);
+
+#endif
+
index 4bb4116026ba6087ab31fdf6a1fc7588882bc998..00f0646b1b61b0321cc4c7c02430a21f9a6eda0d 100644 (file)
@@ -39,10 +39,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "drivers/common/driverfuncs.h"
 
 #include "nouveau_context.h"
-#include "nouveau_ioctl.h"
 #include "nouveau_driver.h"
 //#include "nouveau_state.h"
 #include "nouveau_span.h"
+#include "nouveau_object.h"
+#include "nouveau_fifo.h"
 #include "nouveau_tex.h"
 #include "nv10_swtcl.h"
 
@@ -77,12 +78,15 @@ GLboolean nouveauCreateContext( const __GLcontextModes *glVisual,
        if ( !nmesa )
                return GL_FALSE;
 
-       /* Init default driver functions then plug in our Radeon-specific functions
+       /* Create the hardware context */
+       nouveauFifoInit(nmesa);
+       nouveauObjectInit(nmesa);
+
+       /* Init default driver functions then plug in our nouveau-specific functions
         * (the texture functions are especially important)
         */
        _mesa_init_driver_functions( &functions );
        nouveauDriverInitFunctions( &functions );
-       nouveauIoctlInitFunctions( &functions );
        nouveauTexInitFunctions( &functions );
 
        /* Allocate the Mesa context */
@@ -125,7 +129,7 @@ GLboolean nouveauCreateContext( const __GLcontextModes *glVisual,
        _tnl_CreateContext( ctx );
        _swsetup_CreateContext( ctx );
 
-       switch(nmesa->screen->card_type)
+       switch(nmesa->screen->card->type)
        {
                case NV_03:
                        //nv03TriInitFunctions( ctx );
index 21aa1a6313fdbf2e8b01ec48300067cb7fc46015..be0785f453c2405655cbc5e698c2992522715939 100644 (file)
@@ -36,13 +36,13 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "mtypes.h"
 #include "tnl/t_vertex.h"
 
-#include "nouveau_reg.h"
 #include "nouveau_screen.h"
 
 #include "xmlconfig.h"
 
 typedef struct nouveau_fifo_t{
        u_int32_t* buffer;
+       u_int32_t* mmio;
        u_int32_t current;
        u_int32_t put;
        u_int32_t free;
@@ -80,9 +80,6 @@ typedef struct nouveau_context {
        /* The per-context fifo */
        nouveau_fifo fifo;
 
-       /* The fifo control regs */
-       volatile unsigned char* fifo_mmio;
-
        /* The read-only regs */
        volatile unsigned char* mmio;
 
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_ctrlreg.h b/src/mesa/drivers/dri/nouveau/nouveau_ctrlreg.h
new file mode 100644 (file)
index 0000000..2f4c3f6
--- /dev/null
@@ -0,0 +1,42 @@
+/**************************************************************************
+
+Copyright 2006 Stephane Marchesin, Sylvain Munaut
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+on the rights to use, copy, modify, merge, publish, distribute, sub
+license, and/or sell copies of the Software, and to permit persons to whom
+the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP 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 NV03_STATUS                                        0x004006b0
+#define NV04_STATUS                                        0x00400700
+
+#define NV03_FIFO_REGS_SIZE                                0x10000
+#    define NV03_FIFO_REGS_DMAPUT                          0x00000040
+#    define NV03_FIFO_REGS_DMAGET                          0x00000044
+
+/* Fifo commands. These are not regs, neither masks */
+#define NV03_FIFO_CMD_JUMP                                 0x20000000
+#define NV03_FIFO_CMD_JUMP_OFFSET_MASK                     0x1ffffffc
+#define NV03_FIFO_CMD_REWIND                               (NV03_FIFO_CMD_JUMP | (0 & NV03_FIFO_CMD_JUMP_OFFSET_MASK))
+
+
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_dri.h b/src/mesa/drivers/dri/nouveau/nouveau_dri.h
new file mode 100644 (file)
index 0000000..ce3c3fb
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef _NOUVEAU_DRI_
+#define _NOUVEAU_DRI_
+
+#include "xf86drm.h"
+#include "drm.h"
+#include "nouveau_drm.h"
+
+typedef struct {
+       uint32_t device_id;     /**< \brief PCI device ID */
+       uint32_t width;         /**< \brief width in pixels of display */
+       uint32_t height;        /**< \brief height in scanlines of display */
+       uint32_t depth;         /**< \brief depth of display (8, 15, 16, 24) */
+       uint32_t bpp;           /**< \brief bit depth of display (8, 16, 24, 32) */
+
+       uint32_t bus_type;      /**< \brief ths bus type */
+       uint32_t bus_mode;      /**< \brief bus mode (used for AGP, maybe also for PCI-E ?) */
+
+       uint32_t front_offset;  /**< \brief front buffer offset */
+       uint32_t front_pitch;   /**< \brief front buffer pitch */
+       uint32_t back_offset;   /**< \brief private back buffer offset */
+       uint32_t back_pitch;    /**< \brief private back buffer pitch */
+       uint32_t depth_offset;  /**< \brief private depth buffer offset */
+       uint32_t depth_pitch;   /**< \brief private depth buffer pitch */
+
+} NOUVEAUDRIRec, *NOUVEAUDRIPtr;
+
+#endif
+
index cb996acd89b61f8716c4d251dc49c7692ea780e4..a45530e451133cbebf6d8b2eabc39dfaaee51737 100644 (file)
@@ -25,7 +25,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 **************************************************************************/
 
 #include "nouveau_context.h"
-#include "nouveau_ioctl.h"
 //#include "nouveau_state.h"
 #include "nouveau_lock.h"
 #include "nouveau_fifo.h"
@@ -64,35 +63,7 @@ static const GLubyte *nouveauGetString( GLcontext *ctx, GLenum name )
                        return (GLubyte *)DRIVER_AUTHOR;
 
                case GL_RENDERER:
-                       switch(nmesa->screen->card_type)
-                       {
-                               case NV_03:
-                                       card_name="Riva 128";
-                                       break;
-                               case NV_04:
-                                       card_name="TNT";
-                                       break;
-                               case NV_05:
-                                       card_name="TNT2";
-                                       break;
-                               case NV_10:
-                                       card_name="GeForce 1/2/4Mx";
-                                       break;
-                               case NV_20:
-                                       card_name="GeForce 3/4Ti";
-                                       break;
-                               case NV_30:
-                                       card_name="GeForce FX 5x00";
-                                       break;
-                               case NV_40:
-                                       card_name="GeForce FX 6x00";
-                                       break;
-                               case G_70:
-                                       card_name="GeForce FX 7x00";
-                                       break;
-                               default:
-                                       break;
-                       }
+                       card_name=nmesa->screen->card->name;
 
                        switch(nmesa->screen->bus_type)
                        {
index cc77b577ca43b859a827bf46e2dbc657121bed51..5793909705badc9a1c8c930da30dc597de307b13 100644 (file)
@@ -25,14 +25,25 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 **************************************************************************/
 
 
+#include "vblank.h"
+#include <errno.h>
+#include "mtypes.h"
+#include "macros.h"
+#include "dd.h"
+#include "swrast/swrast.h"
+#include "nouveau_context.h"
+#include "nouveau_msg.h"
 #include "nouveau_fifo.h"
 #include "nouveau_lock.h"
-#include "vblank.h"
+
 
 #define RING_SKIPS 8
 
 void WAIT_RING(nouveauContextPtr nmesa,u_int32_t size)
 {
+#ifdef NOUVEAU_RING_DEBUG
+       return;
+#endif
        u_int32_t fifo_get;
        while(nmesa->fifo.free < size+1) {
                fifo_get = NV_FIFO_READ(NV03_FIFO_REGS_DMAGET);
@@ -58,15 +69,17 @@ void WAIT_RING(nouveauContextPtr nmesa,u_int32_t size)
 
 /* 
  * Wait for the card to be idle 
- * XXX we should also wait for an empty fifo
  */
 void nouveauWaitForIdleLocked(nouveauContextPtr nmesa)
 {
        int i,status;
 
+       FIRE_RING();
+       while(RING_AHEAD()>0);
+
        for(i=0;i<1000000;i++) /* 1 second */
        {
-               switch(nmesa->screen->card_type)
+               switch(nmesa->screen->card->type)
                {
                        case NV_03:
                                status=NV_READ(NV03_STATUS);
@@ -95,3 +108,22 @@ void nouveauWaitForIdle(nouveauContextPtr nmesa)
        UNLOCK_HARDWARE(nmesa);
 }
 
+// here we call the fifo initialization ioctl and fill in stuff accordingly
+void nouveauFifoInit(nouveauContextPtr nmesa)
+{
+       drm_nouveau_fifo_alloc_t fifo_init;
+
+       int ret;
+       ret=drmCommandWriteRead(nmesa->driFd, DRM_NOUVEAU_FIFO_ALLOC, &fifo_init, sizeof(fifo_init));
+       if (ret)
+               FATAL("Fifo initialization ioctl failed (returned %d)\n",ret);
+
+       if (drmMap(nmesa->driFd, fifo_init.cmdbuf, fifo_init.cmdbuf_size, &nmesa->fifo.buffer))
+               FATAL("Unable to map the fifo\n",ret);
+       if (drmMap(nmesa->driFd, fifo_init.ctrl, fifo_init.ctrl_size, &nmesa->fifo.mmio))
+               FATAL("Unable to map the control regs\n",ret);
+
+       MESSAGE("Fifo init ok. Using context %d\n", fifo_init.channel);
+}
+
+
index 95c78b567585a24bdbd40e9ca2cf2e82d95e6790..c2f8633dccb14fcb782a2b8abac18549f0a81ef9 100644 (file)
@@ -30,11 +30,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define __NOUVEAU_FIFO_H__
 
 #include "nouveau_context.h"
+#include "nouveau_ctrlreg.h"
 
 #define NV_READ(reg) *(volatile u_int32_t *)(nmesa->mmio + (reg))
 
-#define NV_FIFO_READ(reg) *(volatile u_int32_t *)(nmesa->fifo_mmio + (reg))
-#define NV_FIFO_WRITE(reg,value) *(volatile u_int32_t *)(nmesa->fifo_mmio + (reg)) = value;
+#define NV_FIFO_READ(reg) *(volatile u_int32_t *)(nmesa->fifo.mmio + (reg))
+#define NV_FIFO_WRITE(reg,value) *(volatile u_int32_t *)(nmesa->fifo.mmio + (reg)) = value;
 
 /* 
  * Ring/fifo interface
@@ -44,7 +45,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
  * - Output stuff to the ring with either OUT_RINGp (outputs a raw mem chunk), OUT_RING (1 uint32_t) or OUT_RINGf (1 float)
  * - RING_AVAILABLE returns the available fifo (in uint32_ts)
  * - RING_AHEAD returns how much ahead of the last submission point we are
- * - FIRE_RING fire whatever we have that wasn't fired before
+ * - FIRE_RING fires whatever we have that wasn't fired before
  * - WAIT_RING waits for size (in uint32_ts) to be available in the fifo
  */
 
@@ -112,6 +113,7 @@ extern void WAIT_RING(nouveauContextPtr nmesa,u_int32_t size);
 }while(0)
 
 extern void nouveauWaitForIdle(nouveauContextPtr nmesa);
+extern void nouveauFifoInit(nouveauContextPtr nmesa);
 
 #endif /* __NOUVEAU_FIFO_H__ */
 
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_ioctl.c b/src/mesa/drivers/dri/nouveau/nouveau_ioctl.c
deleted file mode 100644 (file)
index 3f6e307..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/**************************************************************************
-
-Copyright 2006 Stephane Marchesin
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-on the rights to use, copy, modify, merge, publish, distribute, sub
-license, and/or sell copies of the Software, and to permit persons to whom
-the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP 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.
-
-**************************************************************************/
-
-#include <errno.h>
-#include "mtypes.h"
-#include "macros.h"
-#include "dd.h"
-#include "swrast/swrast.h"
-
-
-#include "nouveau_ioctl.h"
-#include "nouveau_context.h"
-#include "nouveau_msg.h"
-
-// here we call the fifo initialization ioctl and fill in stuff accordingly
-void nouveauIoctlInitFifo(nouveauContextPtr nmesa)
-{
-       int ret;
-       drm_nouveau_fifo_alloc_t fifo_init;
-
-       ret = drmCommandWriteRead(nmesa->driFd, DRM_NOUVEAU_FIFO_ALLOC, &fifo_init, sizeof(fifo_init));
-       if (ret)
-               FATAL("Fifo initialization ioctl failed (returned %d)\n",ret);
-       MESSAGE("Fifo init ok. Using context %d\n", fifo_init.channel);
-
-       // XXX needs more stuff :
-       // - map the command buffer
-       // - map the fifo control regs
-       // - create the 3D object
-
-}
-
-void nouveauIoctlInitFunctions(struct dd_function_table *functions)
-{
-       // nothing for now
-}
-
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_ioctl.h b/src/mesa/drivers/dri/nouveau/nouveau_ioctl.h
deleted file mode 100644 (file)
index ce77d3d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/**************************************************************************
-
-Copyright 2006 Stephane Marchesin
-All Rights Reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-on the rights to use, copy, modify, merge, publish, distribute, sub
-license, and/or sell copies of the Software, and to permit persons to whom
-the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP BE LIABLE FOR ANY CLAIM,
-DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
-USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-**************************************************************************/
-
-
-#ifndef __NOUVEAU_IOCTL_H__
-#define __NOUVEAU_IOCTL_H__
-
-#include "nouveau_context.h"
-
-extern void nouveauIoctlInitFifo(nouveauContextPtr nmesa);
-extern void nouveauIoctlInitFunctions(struct dd_function_table *functions);
-
-#endif /* __NOUVEAU_IOCTL_H__ */
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_object.c b/src/mesa/drivers/dri/nouveau/nouveau_object.c
new file mode 100644 (file)
index 0000000..9003fb1
--- /dev/null
@@ -0,0 +1,36 @@
+
+#include "nouveau_fifo.h"
+#include "nouveau_object.h"
+
+
+static GLboolean NVDmaCreateContextObject(nouveauContextPtr nmesa, int handle, int class, uint32_t flags,
+                             uint32_t dma_in, uint32_t dma_out, uint32_t dma_notifier)
+{
+       drm_nouveau_object_init_t cto;
+       int ret;
+
+       cto.handle = handle;
+       cto.class  = class;
+       cto.flags  = flags;
+       cto.dma0= dma_in;
+       cto.dma1= dma_out;
+       cto.dma_notifier = dma_notifier;
+       ret = drmCommandWrite(nmesa->driFd, DRM_NOUVEAU_OBJECT_INIT, &cto, sizeof(cto));
+
+       return ret == 0;
+}
+
+static void nouveauObjectOnSubchannel(nouveauContextPtr nmesa, int handle, int subchannel)
+{
+       BEGIN_RING_SIZE(subchannel, 0, 1);
+       OUT_RING(handle);
+}
+
+void nouveauObjectInit(nouveauContextPtr nmesa)
+{
+       NVDmaCreateContextObject(nmesa, Nv3D, nmesa->screen->card->class_3d, 0, 0, 0, 0);
+       nouveauObjectOnSubchannel(nmesa, NvSub3D, Nv3D);
+}
+
+
+
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_object.h b/src/mesa/drivers/dri/nouveau/nouveau_object.h
new file mode 100644 (file)
index 0000000..5fe7487
--- /dev/null
@@ -0,0 +1,13 @@
+
+#include "nouveau_context.h"
+
+void nouveauObjectInit(nouveauContextPtr nmesa);
+
+enum DMAObjects {
+       Nv3D                    = 0x80000019,
+};
+
+enum DMASubchannel {
+       NvSub3D         = 1,
+};
+
index 583a2b82cb8fd4b3f272a06915a51949c1291231..359f36cec8f118a7f50577cee757e36fb2b456a0 100644 (file)
-/**************************************************************************
+/*
+   Autogenerated file, do not edit !
+
+**************************************************************************
+
+   Copyright (C) 2006 :
+   Dmitry Baryshkov,
+   Laurent Carlier,
+   Matthieu Castet,
+   Dawid Gajownik,
+   Jeremy Kolb,
+   Stephane Loeuillet,
+   Patrice Mandin,
+   Stephane Marchesin,
+   Serge Martin,
+   Sylvain Munaut,
+   Ben Skeggs,
+   Erik Waling,
+   koala_br,
+   sturmflut.
 
-Copyright 2006 Stephane Marchesin, Sylvain Munaut
 All Rights Reserved.
 
-Permission is hereby granted, free of charge, to any person obtaining a
-copy of this software and associated documentation files (the "Software"),
-to deal in the Software without restriction, including without limitation
-on the rights to use, copy, modify, merge, publish, distribute, sub
-license, and/or sell copies of the Software, and to permit persons to whom
-the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice (including the next
-paragraph) shall be included in all copies or substantial portions of the
-Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP 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 NV03_BOOT_0                                        0x00100000
-#    define NV03_BOOT_0_RAM_AMOUNT                         0x00000003
-#    define NV03_BOOT_0_RAM_AMOUNT_8MB                     0x00000000
-#    define NV03_BOOT_0_RAM_AMOUNT_2MB                     0x00000001
-#    define NV03_BOOT_0_RAM_AMOUNT_4MB                     0x00000002
-#    define NV03_BOOT_0_RAM_AMOUNT_8MB_SDRAM               0x00000003
-#    define NV04_BOOT_0_RAM_AMOUNT_32MB                    0x00000000
-#    define NV04_BOOT_0_RAM_AMOUNT_4MB                     0x00000001
-#    define NV04_BOOT_0_RAM_AMOUNT_8MB                     0x00000002
-#    define NV04_BOOT_0_RAM_AMOUNT_16MB                    0x00000003
-
-#define NV04_FIFO_DATA                                     0x0010020c
-#    define NV10_FIFO_DATA_RAM_AMOUNT_MB_MASK              0xfff00000
-#    define NV10_FIFO_DATA_RAM_AMOUNT_MB_SHIFT             20
-
-#define NV03_STATUS                                        0x004006b0
-#define NV04_STATUS                                        0x00400700
-
-#define NV03_FIFO_SIZE                                     0x8000
-// NV10 maybe has 12 fifos
-// NV40 probably has 16 fifos
-#define NV03_FIFO_NUMBER                                   8
-#define NV03_FIFO_REGS_SIZE                                0x10000
-#    define NV03_FIFO_REGS_DMAPUT                          0x00000040
-#    define NV03_FIFO_REGS_DMAGET                          0x00000044
-
-/* Fifo commands. These are not regs, neither masks */
-#define NV03_FIFO_CMD_JUMP                                 0x20000000
-#define NV03_FIFO_CMD_JUMP_OFFSET_MASK                     0x1ffffffc
-#define NV03_FIFO_CMD_REWIND                               (NV03_FIFO_CMD_JUMP | (0 & NV03_FIFO_CMD_JUMP_OFFSET_MASK))
-
-/* Vertex attributes */
-#define NV30_UNKNOWN_0                                     0x00001718
-#define NV30_VERTEX_ATTRIBUTES                             0x00001740
-#define NV20_VERTEX_ATTRIBUTE(i)                           (0x00001760+i*4)
-#define NV20_VERTEX_ATTRIBUTE_TYPE_MASK                    0x0000000f
-#define NV20_VERTEX_ATTRIBUTE_TYPE_FLOAT                   0x00000002
-#define NV20_VERTEX_ATTRIBUTE_SIZE_MASK                    0x000000f0
-#define NV10_VERTEX_ATTRIBUTE(i)                           (0x00000d04+i*8)
-#define NV10_VERTEX_SET_FORMAT                             0x00000cf0
-
-/* Rendering commands */
-#define NV10_PRIMITIVE                                     0x00000dfc
-#define NV20_PRIMITIVE                                     0x000017fc
-#define NV30_PRIMITIVE                                     0x00001808
-#define NV10_BEGIN_VERTICES                                0x00001800
-#define NV20_BEGIN_VERTICES                                0x00001818
+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.
+
+**************************************************************************
+
+   Created from objects.c rev. 1.332
+*/
+
+#ifndef _NOUVEAU_REG_H
+#define _NOUVEAU_REG_H
+
+/****************************************** 
+Object NV01_CONTEXT_CLIP_RECTANGLE used on: NV03 NV04 NV10 NV15 NV20 NV40 G70
+*/
+#define                        NV01_CONTEXT_CLIP_RECTANGLE                             0x00000019
+#      define          NV01_CONTEXT_CLIP_RECTANGLE_SET_POINT                   0x00000300      /* Parameters: x y */
+#      define          NV01_CONTEXT_CLIP_RECTANGLE_SET_SIZE                    0x00000304      /* Parameters: width height */
+
+/****************************************** 
+Object NV_MEMORY_TO_MEMORY_FORMAT used on: NV04 NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV_MEMORY_TO_MEMORY_FORMAT                              0x00000039
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_NOTIFY                       0x00000104
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY                   0x00000180
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_OBJECT_IN                    0x00000184
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_OBJECT_OUT                   0x00000188
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN                    0x0000030c
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT                   0x00000310
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_PITCH_IN                     0x00000314
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_PITCH_OUT                    0x00000318
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_LINE_LENGTH_IN               0x0000031c
+#      define          NV_MEMORY_TO_MEMORY_FORMAT_LINE_COUNT                   0x00000320
+
+/****************************************** 
+Object NV03_PRIMITIVE_RASTER_OP used on: NV03 NV04 NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV03_PRIMITIVE_RASTER_OP                                0x00000043
+#      define          NV03_PRIMITIVE_RASTER_OP_NOTIFY                         0x00000100
+#      define          NV03_PRIMITIVE_RASTER_OP_DMA_NOTIFY                     0x00000180
+#      define          NV03_PRIMITIVE_RASTER_OP_LOGIC_OP                       0x00000300      /* Parameters: logic_op */
+
+/****************************************** 
+Object NV04_GDI_RECTANGLE_TEXT used on: NV04 NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV04_GDI_RECTANGLE_TEXT                                 0x0000004a
+#      define          NV04_GDI_RECTANGLE_TEXT_SET_DMA_NOTIFY                  0x00000180
+#      define          NV04_GDI_RECTANGLE_TEXT_PATTERN                         0x00000188
+#      define          NV04_GDI_RECTANGLE_TEXT_ROP5                            0x0000018c
+#      define          NV04_GDI_RECTANGLE_TEXT_SURFACE                         0x00000198
+#      define          NV04_GDI_RECTANGLE_TEXT_OPERATION                       0x000002fc
+#      define          NV04_GDI_RECTANGLE_TEXT_FORMAT                          0x00000300
+#      define          NV04_GDI_RECTANGLE_TEXT_BLOCK_LEVEL1_TL                 0x000005f4      /* Parameters: left top */
+#      define          NV04_GDI_RECTANGLE_TEXT_BLOCK_LEVEL1_BR                 0x000005f8      /* Parameters: right bottom */
+#      define          NV04_GDI_RECTANGLE_TEXT_FILL_VALUE                      0x000005fc
+#      define          NV04_GDI_RECTANGLE_TEXT_BLOCK_LEVEL2_TL                 0x00000600      /* Parameters: left top */
+#      define          NV04_GDI_RECTANGLE_TEXT_BLOCK_LEVEL2_BR                 0x00000604      /* Parameters: right bottom */
+
+/****************************************** 
+Object NV04_SWIZZLED_SURFACE used on: NV04 NV10 NV15 
+*/
+#define                        NV04_SWIZZLED_SURFACE                                   0x00000052
+#      define          NV04_SWIZZLED_SURFACE_DMA_NOTIFY                        0x00000180
+#      define          NV04_SWIZZLED_SURFACE_DMA_IMAGE                         0x00000184
+#      define          NV04_SWIZZLED_SURFACE_FORMAT                            0x00000300      /* Parameters: log2(height) log2(width) color */
+#      define          NV04_SWIZZLED_SURFACE_OFFSET                            0x00000304
+
+/****************************************** 
+Object NV04_CONTEXT_SURFACES_3D used on: NV04 
+*/
+#define                        NV04_CONTEXT_SURFACES_3D                                0x00000053
+#      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      /* Parameters: x width */
+#      define          NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL                  0x000002fc      /* Parameters: y height */
+#      define          NV04_CONTEXT_SURFACES_3D_FORMAT                         0x00000300      /* Parameters: color type width height */
+#      define          NV04_CONTEXT_SURFACES_3D_CLIP_SIZE                      0x00000304      /* Parameters: width height */
+#      define          NV04_CONTEXT_SURFACES_3D_PITCH                          0x00000308      /* Parameters: color zeta */
+#      define          NV04_CONTEXT_SURFACES_3D_OFFSET_COLOR                   0x0000030c
+#      define          NV04_CONTEXT_SURFACES_3D_OFFSET_ZETA                    0x00000310
+
+/****************************************** 
+Object NV04_DX5_TEXTURED_TRIANGLE used on: NV04 
+*/
+#define                        NV04_DX5_TEXTURED_TRIANGLE                              0x00000054
+#      define          NV04_DX5_TEXTURED_TRIANGLE_NOP                          0x00000100
+#      define          NV04_DX5_TEXTURED_TRIANGLE_NOTIFY                       0x00000104
+#      define          NV04_DX5_TEXTURED_TRIANGLE_DMA_NOTIFY                   0x00000180
+#      define          NV04_DX5_TEXTURED_TRIANGLE_DMA_1                        0x00000184
+#      define          NV04_DX5_TEXTURED_TRIANGLE_DMA_2                        0x00000188
+#      define          NV04_DX5_TEXTURED_TRIANGLE_SURFACE                      0x0000018c
+#      define          NV04_DX5_TEXTURED_TRIANGLE_COLOR_KEY                    0x00000300
+#      define          NV04_DX5_TEXTURED_TRIANGLE_TEXTURE_OFFSET               0x00000304
+#      define          NV04_DX5_TEXTURED_TRIANGLE_TEXTURE_FORMAT               0x00000308      /* Parameters: color mipmaps log(u) log(v) wrap_s wrap_t */
+#      define          NV04_DX5_TEXTURED_TRIANGLE_TEXTURE_FILTER               0x0000030c      /* Parameters: magfilter minfilter lodbias */
+#      define          NV04_DX5_TEXTURED_TRIANGLE_BLEND                        0x00000310      /* Parameters: texture benable dst src */
+#      define          NV04_DX5_TEXTURED_TRIANGLE_CONTROL                      0x00000314      /* Parameters: alpharef alphafunc alphaenable zenable zwrite zfunc cullmode */
+#      define          NV04_DX5_TEXTURED_TRIANGLE_FOG_COLOR                    0x00000318
+#      define          NV04_DX5_TEXTURED_TRIANGLE_TLVERTEX_SX( d)              (0x00000400 + d * 0x0020)
+#      define          NV04_DX5_TEXTURED_TRIANGLE_TLVERTEX_SY( d)              (0x00000404 + d * 0x0020)
+#      define          NV04_DX5_TEXTURED_TRIANGLE_TLVERTEX_SZ( d)              (0x00000408 + d * 0x0020)
+#      define          NV04_DX5_TEXTURED_TRIANGLE_INV_W( d)                    (0x0000040c + d * 0x0020)
+#      define          NV04_DX5_TEXTURED_TRIANGLE_COLOR( d)                    (0x00000410 + d * 0x0020)
+#      define          NV04_DX5_TEXTURED_TRIANGLE_SPECULAR( d)                 (0x00000414 + d * 0x0020)
+#      define          NV04_DX5_TEXTURED_TRIANGLE_TEXTURE_S( d)                (0x00000418 + d * 0x0020)
+#      define          NV04_DX5_TEXTURED_TRIANGLE_TEXTURE_T( d)                (0x0000041c + d * 0x0020)
+#      define          NV04_DX5_TEXTURED_TRIANGLE_DRAW                         0x00000600      /* Parameters: v0 v1 v2 v3 v4 v5 */
+
+/****************************************** 
+Object NV04_DX6_MULTITEX_TRIANGLE used on: NV04 NV10 NV15 
+*/
+#define                        NV04_DX6_MULTITEX_TRIANGLE                              0x00000055
+#      define          NV04_DX6_MULTITEX_TRIANGLE_NOP                          0x00000100
+#      define          NV04_DX6_MULTITEX_TRIANGLE_NOTIFY                       0x00000104
+#      define          NV04_DX6_MULTITEX_TRIANGLE_DMA_NOTIFY                   0x00000180
+#      define          NV04_DX6_MULTITEX_TRIANGLE_DMA_1                        0x00000184
+#      define          NV04_DX6_MULTITEX_TRIANGLE_DMA_2                        0x00000188
+#      define          NV04_DX6_MULTITEX_TRIANGLE_SURFACE                      0x0000018c
+#      define          NV04_DX6_MULTITEX_TRIANGLE_OFFSET0                      0x00000308
+#      define          NV04_DX6_MULTITEX_TRIANGLE_OFFSET1                      0x0000030c
+#      define          NV04_DX6_MULTITEX_TRIANGLE_FORMAT0                      0x00000310      /* Parameters: color mipmaps log(u) log(v) wrap_s wrap_t */
+#      define          NV04_DX6_MULTITEX_TRIANGLE_FORMAT1                      0x00000314      /* Parameters: color mipmaps log(u) log(v) wrap_s wrap_t */
+#      define          NV04_DX6_MULTITEX_TRIANGLE_FILTER0                      0x00000318      /* Parameters: magfilter minfilter lodbias */
+#      define          NV04_DX6_MULTITEX_TRIANGLE_FILTER1                      0x0000031c      /* Parameters: magfilter minfilter lodbias */
+#      define          NV04_DX6_MULTITEX_TRIANGLE_COMBINE_0_ALPHA              0x00000320
+#      define          NV04_DX6_MULTITEX_TRIANGLE_COMBINE_0_COLOR              0x00000324
+#      define          NV04_DX6_MULTITEX_TRIANGLE_COMBINE_1_ALPHA              0x0000032c
+#      define          NV04_DX6_MULTITEX_TRIANGLE_COMBINE_1_COLOR              0x00000330
+#      define          NV04_DX6_MULTITEX_TRIANGLE_COMBINE_FACTOR               0x00000334
+#      define          NV04_DX6_MULTITEX_TRIANGLE_BLEND                        0x00000338      /* Parameters: benable dst src */
+#      define          NV04_DX6_MULTITEX_TRIANGLE_CONTROL0                     0x0000033c      /* Parameters: red_write green_write blue_write alpha_write alpha_write stencil_write alpharef alphafunc alphaenable zenable zwrite zfunc cullmode */
+#      define          NV04_DX6_MULTITEX_TRIANGLE_CONTROL1                     0x00000340      /* Parameters: stencil_enable stencil_mask_write stencil_mask_read stencilref stencilfunc */
+#      define          NV04_DX6_MULTITEX_TRIANGLE_CONTROL2                     0x00000344      /* Parameters: stencil_fail stencil_zfail stencil_zpass */
+#      define          NV04_DX6_MULTITEX_TRIANGLE_FOG_COLOR                    0x00000348
+#      define          NV04_DX6_MULTITEX_TRIANGLE_TLVERTEX_SX( d)              (0x00000400 + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_TLVERTEX_SY( d)              (0x00000404 + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_TLVERTEX_SZ( d)              (0x00000408 + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_INV_W( d)                    (0x0000040c + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_COLOR( d)                    (0x00000410 + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_SPECULAR( d)                 (0x00000414 + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_TEXTURE0_S( d)               (0x00000418 + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_TEXTURE0_T( d)               (0x0000041c + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_TEXTURE1_S( d)               (0x00000420 + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_TEXTURE1_T( d)               (0x00000424 + d * 0x0028)
+#      define          NV04_DX6_MULTITEX_TRIANGLE_DRAW                         0x00000540      /* Parameters: v0 v1 v2 v3 v4 v5 */
+
+/****************************************** 
+Object NV04_COLOR_KEY used on: NV04 NV10 NV15 NV20 
+*/
+#define                        NV04_COLOR_KEY                                          0x00000057
+#      define          NV04_COLOR_KEY_SET_DMA_NOTIFY                           0x00000180
+#      define          NV04_COLOR_KEY_FORMAT                                   0x00000300
+#      define          NV04_COLOR_KEY_VALUE                                    0x00000304
+
+/****************************************** 
+Object NV04_SOLID_LINE used on: NV04 
+*/
+#define                        NV04_SOLID_LINE                                         0x0000005c
+#      define          NV04_SOLID_LINE_CLIP_RECTANGLE                          0x00000184
+#      define          NV04_SOLID_LINE_PATTERN                                 0x00000188
+#      define          NV04_SOLID_LINE_ROP                                     0x0000018c
+#      define          NV04_SOLID_LINE_SURFACE                                 0x00000198
+#      define          NV04_SOLID_LINE_OPERATION                               0x000002fc
+#      define          NV04_SOLID_LINE_COLOR_FORMAT                            0x00000300
+#      define          NV04_SOLID_LINE_COLOR_VALUE                             0x00000304
+#      define          NV04_SOLID_LINE_START                                   0x00000400      /* Parameters: x y */
+#      define          NV04_SOLID_LINE_END                                     0x00000400      /* Parameters: x y */
+
+/****************************************** 
+Object NV04_UNK005E used on: NV04 
+*/
+#define                        NV04_UNK005E                                            0x0000005e
+#      define          NV04_UNK005E_SET_SURFACE                                0x00000198
+#      define          NV04_UNK005E_UNK02fc                                    0x000002fc
+#      define          NV04_UNK005E_UNK0300                                    0x00000300
+#      define          NV04_UNK005E_COUNTER                                    0x00000304
+
+/****************************************** 
+Object NV05_SCALED_IMAGE_FROM_MEMORY used on: NV04 
+*/
+#define                        NV05_SCALED_IMAGE_FROM_MEMORY                           0x00000063
+#      define          NV05_SCALED_IMAGE_FROM_MEMORY_SURFACE                   0x00000198
+#      define          NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION          0x000002fc
+#      define          NV05_SCALED_IMAGE_FROM_MEMORY_OPERATION                 0x00000304
+
+/****************************************** 
+Object NV04_SCALED_IMAGE_FROM_MEMORY used on: NV04 
+*/
+#define                        NV04_SCALED_IMAGE_FROM_MEMORY                           0x00000077
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_DMA_NOTIFY                0x00000180
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_DMA_IMAGE                 0x00000184
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_SURFACE                   0x00000198
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT              0x00000300
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_OPERATION                 0x00000304
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_CLIP_POS                  0x00000308      /* Parameters: x y */
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE                 0x0000030c      /* Parameters: width height */
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_OUT_POS                   0x00000310      /* Parameters: x y */
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE                  0x00000314      /* Parameters: width height */
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_DU_DX                     0x00000318      /* Parameters: int frac*0x100000 */
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_DV_DY                     0x0000031c      /* Parameters: int frac*0x100000 */
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_SIZE                      0x00000400      /* Parameters: width height */
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_FORMAT                    0x00000404      /* Parameters: pitch */
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_OFFSET                    0x00000408
+#      define          NV04_SCALED_IMAGE_FROM_MEMORY_POINT                     0x0000040c      /* Parameters: u_int u_frac*0x10 v_int v_frac*0x10 */
+
+/****************************************** 
+Object NV_IMAGE_FROM_CPU used on: NV04 
+*/
+#define                        NV_IMAGE_FROM_CPU                                       0x00000061
+#      define          NV_IMAGE_FROM_CPU_DMA_NOTIFY                            0x00000180
+#      define          NV_IMAGE_FROM_CPU_CLIP_RECTANGLE                        0x00000188
+#      define          NV_IMAGE_FROM_CPU_PATTERN                               0x0000018c
+#      define          NV_IMAGE_FROM_CPU_ROP                                   0x00000190
+#      define          NV_IMAGE_FROM_CPU_SURFACE                               0x0000019c
+#      define          NV_IMAGE_FROM_CPU_OPERATION                             0x000002fc
+#      define          NV_IMAGE_FROM_CPU_FORMAT                                0x00000300
+
+/****************************************** 
+Object NV05_IMAGE_FROM_CPU used on: NV04 
+*/
+#define                        NV05_IMAGE_FROM_CPU                                     0x00000065
+#      define          NV05_IMAGE_FROM_CPU_DMA_NOTIFY                          0x00000180
+#      define          NV05_IMAGE_FROM_CPU_CLIP_RECTANGLE                      0x00000188
+#      define          NV05_IMAGE_FROM_CPU_PATTERN                             0x0000018c
+#      define          NV05_IMAGE_FROM_CPU_ROP                                 0x00000190
+#      define          NV05_IMAGE_FROM_CPU_SURFACE                             0x0000019c
+#      define          NV05_IMAGE_FROM_CPU_OPERATION                           0x000002fc
+#      define          NV05_IMAGE_FROM_CPU_FORMAT                              0x00000300
+#      define          NV05_IMAGE_FROM_CPU_POINT                               0x00000304      /* Parameters: x y */
+#      define          NV05_IMAGE_FROM_CPU_SIZE_OUT                            0x00000308      /* Parameters: x y */
+#      define          NV05_IMAGE_FROM_CPU_SIZE_IN                             0x0000030c      /* Parameters: x y */
+#      define          NV05_IMAGE_FROM_CPU_COLOR( d)                           (0x00000400 + d * 0x0004)
+
+/****************************************** 
+Object NV_IMAGE_BLIT used on: NV04 NV10 NV15 NV20 
+*/
+#define                        NV_IMAGE_BLIT                                           0x0000005f
+#      define          NV_IMAGE_BLIT_DMA_NOTIFY                                0x00000180
+#      define          NV_IMAGE_BLIT_COLOR_KEY                                 0x00000184
+#      define          NV_IMAGE_BLIT_CLIP_RECTANGLE                            0x00000188
+#      define          NV_IMAGE_BLIT_PATTERN                                   0x0000018c
+#      define          NV_IMAGE_BLIT_ROP5                                      0x00000190
+#      define          NV_IMAGE_BLIT_SURFACE                                   0x0000019c
+#      define          NV_IMAGE_BLIT_OPERATION                                 0x000002fc
+#      define          NV_IMAGE_BLIT_POINT_IN                                  0x00000300      /* Parameters: x y */
+#      define          NV_IMAGE_BLIT_POINT_OUT                                 0x00000304      /* Parameters: x y */
+#      define          NV_IMAGE_BLIT_SIZE                                      0x00000308      /* Parameters: width height */
+
+/****************************************** 
+Object NV10_TCL_PRIMITIVE_3D used on: NV10 
+*/
+#define                        NV10_TCL_PRIMITIVE_3D                                   0x00000056
+#      define          NV10_TCL_PRIMITIVE_3D_NOP                               0x00000100
+#      define          NV10_TCL_PRIMITIVE_3D_NOTIFY                            0x00000104
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_NOTIFY                    0x00000180
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY0                0x00000184
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY1                0x00000188
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DISPLAY_LIST                  0x0000018c
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY2                0x00000194
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY3                0x00000198
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_HORIZ                    0x00000200      /* Parameters: width x */
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_VERT                     0x00000204      /* Parameters: height y */
+#      define          NV10_TCL_PRIMITIVE_3D_BUFFER_FORMAT                     0x00000208      /* Parameters: type color */
+#      define          NV10_TCL_PRIMITIVE_3D_BUFFER_PITCH                      0x0000020c      /* Parameters: depth/stencil buffer pitch color buffer pitch */
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_OFFSET                      0x00000210
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_OFFSET                      0x00000214
+#      define          NV10_TCL_PRIMITIVE_3D_TX_OFFSET(d)                      (0x00000218 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_TX_FORMAT(d)                      (0x00000220 + d * 0x0004)       /* Parameters: wrap_t wrap_s log2(height) log2(width) lod npot format cube_map */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_ENABLE(d)                      (0x00000228 + d * 0x0004)       /* Parameters: enable anisotropy */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_NPOT_PITCH(d)                  (0x00000230 + d * 0x0004)       /* Parameters: pitch */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_NPOT_SIZE(d)                   (0x00000240 + d * 0x0004)       /* Parameters: width height */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_FILTER(d)                      (0x00000248 + d * 0x0004)       /* Parameters: mag_filter min_filter */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_IN_ALPHA(d)                    (0x00000260 + d * 0x0004)       /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_IN_RGB(d)                      (0x00000268 + d * 0x0004)       /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_OUT_ALPHA(d)                   (0x00000278 + d * 0x0004)       /* Parameters: scale bias mux_sum ab_dot_product cd_dot_product sum_output ab_output cd_output */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_OUT_RGB(d)                     (0x00000280 + d * 0x0004)       /* Parameters: rc1_tx_units_enabled rc1_rc_enabled scale bias mux_sum ab_dot_product cd_dot_product sum_output ab_output cd_output */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_MATRIX_ENABLE(d)               (0x000003e0 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_TX_MATRIX(x,y)                    (0x00000540 + y * 0x0010 + x * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_RC_COLOR0                         0x00000270      /* Parameters: a r g b */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_COLOR1                         0x00000274      /* Parameters: a r g b */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_FINAL0                         0x00000288      /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_FINAL1                         0x0000028c      /* Parameters: vare_mapping vare_component_usage vare_input varf_mapping varf_component_usage varf_input varg_mapping varg_component_usage varg_input color_sum_clamp */
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_MODEL                       0x00000294      /* Parameters: local_viewer color_control */
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_MATERIAL                    0x00000298      /* Parameters: specular diffuse ambient emission */
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_MODE                          0x0000029c
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_COORD_DIST                    0x000002a0
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_ENABLE                        0x000002a4
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_COLOR                         0x000002a8      /* Parameters: a b g r */
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_CLIP_HORIZ(d)            (0x000002c0 + d * 0x0004)       /* Parameters: x2 x1 */
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_CLIP_VERT(d)             (0x000002e0 + d * 0x0004)       /* Parameters: y2 y1 */
+#      define          NV10_TCL_PRIMITIVE_3D_ALPHA_TEST_ENABLE                 0x00000300
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_ENABLE                      0x00000304
+#      define          NV10_TCL_PRIMITIVE_3D_CULL_FACE_ENABLE                  0x00000308
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_TEST_ENABLE                 0x0000030c
+#      define          NV10_TCL_PRIMITIVE_3D_DITHER_ENABLE                     0x00000310
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHTING_ENABLE                   0x00000314
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETERS_ENABLE           0x00000318
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_SMOOTH_ENABLE               0x0000031c
+#      define          NV10_TCL_PRIMITIVE_3D_LINE_SMOOTH_ENABLE                0x00000320
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_SMOOTH_ENABLE             0x00000324
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_WEIGHT_ENABLE              0x00000328
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_TEST_ENABLE               0x0000032c
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_POINT_ENABLE       0x00000330
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_LINE_ENABLE        0x00000334
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_FILL_ENABLE        0x00000338
+#      define          NV10_TCL_PRIMITIVE_3D_ALPHA_FUNC                        0x0000033c
+#      define          NV10_TCL_PRIMITIVE_3D_ALPHA_FUNC_REF                    0x00000340
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_FUNC_SRC                    0x00000344
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_FUNC_DST                    0x00000348
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_COLOR                       0x0000034c      /* Parameters: a r g b */
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_EQUATION                    0x00000350
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_FUNC                        0x00000354
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_MASK                        0x00000358      /* Parameters: r g b */
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_MASK                        0x0000035c
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_MASK                      0x00000360
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_FUNC_FUNC                 0x00000364
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_FUNC_REF                  0x00000368
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_FUNC_MASK                 0x0000036c
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_OP_FAIL                   0x00000370
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_OP_ZFAIL                  0x00000374
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_OP_ZPASS                  0x00000378
+#      define          NV10_TCL_PRIMITIVE_3D_SHADE_MODEL                       0x0000037c
+#      define          NV10_TCL_PRIMITIVE_3D_LINE_WIDTH                        0x00000380
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_FACTOR             0x00000384
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_UNITS              0x00000388
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_MODE_FRONT                0x0000038c
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_MODE_BACK                 0x00000390
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_RANGE_NEAR                  0x00000394
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_RANGE_FAR                   0x00000398
+#      define          NV10_TCL_PRIMITIVE_3D_CULL_FACE                         0x0000039c
+#      define          NV10_TCL_PRIMITIVE_3D_FRONT_FACE                        0x000003a0
+#      define          NV10_TCL_PRIMITIVE_3D_NORMALIZE_ENABLE                  0x000003a4
+#      define          NV10_TCL_PRIMITIVE_3D_MATERIAL_DIFFUSE_ALPHA            0x000003b4
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_CONTROL                     0x000003b8      /* Parameters: color_control */
+#      define          NV10_TCL_PRIMITIVE_3D_ENABLED_LIGHTS                    0x000003bc      /* Parameters: light 7 light 6 light 5 light 4 light 3 light 2 light 1 light 0 */
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_ENABLE( d)             (0x000003c0 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_VIEW_MATRIX_ENABLE                0x000003e8      /* Parameters: projection modelview0 modelview1 */
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_SIZE                        0x000003ec
+#      define          NV10_TCL_PRIMITIVE_3D_MODELVIEW0_MATRIX( d)             (0x00000400 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_MODELVIEW1_MATRIX( d)             (0x00000440 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_INVERSE_MODELVIEW0_MATRIX( d)     (0x00000480 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_INVERSE_MODELVIEW1_MATRIX( d)     (0x000004c0 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_PROJECTION_MATRIX( d)             (0x00000500 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_A(d)                   (0x00000600 + d * 0x0010)
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_B(d)                   (0x00000604 + d * 0x0010)
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_C(d)                   (0x00000608 + d * 0x0010)
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_D(d)                   (0x0000060c + d * 0x0010)
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_EQUATION_CONSTANT             0x00000680
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_EQUATION_LINEAR               0x00000684
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_EQUATION_QUADRATIC            0x00000688
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_A                       0x000006a0
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_B                       0x000006a4
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_C                       0x000006a8
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_D                       0x000006ac
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_E                       0x000006b0
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_F                       0x000006b4
+#      define          NV10_TCL_PRIMITIVE_3D_MATERIAL_AMBIENT_EMISSION         0x000006c4
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_SCALE_X                  0x000006e8
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_SCALE_Y                  0x000006ec
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_SCALE_Z                  0x000006f0
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_SCALE_W                  0x000006f4
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_A                 0x000006f8
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_B                 0x000006fc
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_C                 0x00000700
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_D                 0x00000704
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_E                 0x00000708
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_F                 0x0000070c
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_G                 0x00000710
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_H                 0x00000714
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_AMBIENT(d)                  (0x00000800 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_DIFFUSE(d)                  (0x0000080c + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_SPECULAR(d)                 (0x00000818 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_HALF_VECTOR(d)              (0x00000828 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_POSITION0(d)                (0x00000834 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_SPOT_LIGHT(d)               (0x00000840 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_POSITION1(d)                (0x0000085c + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_NORMAL(d)                   (0x00000868 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_3F_X                   0x00000c00
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_3F_Y                   0x00000c04
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_3F_Z                   0x00000c08
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_4F_X                   0x00000c18
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_4F_Y                   0x00000c1c
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_4F_Z                   0x00000c20
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_4F_W                   0x00000c24
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3F_X                   0x00000c30
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3F_Y                   0x00000c34
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3F_Z                   0x00000c38
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3I_XY                  0x00000c40      /* Parameters: y x */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3I_Z                   0x00000c44      /* Parameters: z */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4F_R                   0x00000c50
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4F_G                   0x00000c54
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4F_B                   0x00000c58
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4F_A                   0x00000c5c
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_3F_R                   0x00000c60
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_3F_G                   0x00000c64
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_3F_B                   0x00000c68
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4I                     0x00000c6c      /* Parameters: a b g r */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL2_3F_R                  0x00000c80
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL2_3F_G                  0x00000c84
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL2_3F_B                  0x00000c88
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL2_3I                    0x00000c8c      /* Parameters: a b g r */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_2F_S                   0x00000c90
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_2F_T                   0x00000c94
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_2I                     0x00000c98      /* Parameters: t s */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_S                   0x00000ca0
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_T                   0x00000ca4
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_R                   0x00000ca8
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_Q                   0x00000cac
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4I_ST                  0x00000cb0      /* Parameters: t s */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4I_RQ                  0x00000cb4      /* Parameters: q r */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_2F_S                   0x00000cb8
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_2F_T                   0x00000cbc
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_2I                     0x00000cc0      /* Parameters: t s */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_S                   0x00000cc8
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_T                   0x00000ccc
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_R                   0x00000cd0
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_Q                   0x00000cd4
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4I_ST                  0x00000cd8      /* Parameters: t s */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4I_RQ                  0x00000cdc      /* Parameters: q r */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_FOG_1F                     0x00000ce0
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_WGH_1F                     0x00000ce4
+#      define          NV10_TCL_PRIMITIVE_3D_EDGEFLAG_ENABLE                   0x00000cec
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_VALIDATE             0x00000cf0
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_POS           0x00000d00
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_POS           0x00000d04      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_COL           0x00000d08
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_COL           0x00000d0c      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_COL2          0x00000d10
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_COL2          0x00000d14      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_TX0           0x00000d18
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_TX0           0x00000d1c      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_TX1           0x00000d20
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_TX1           0x00000d24      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_NOR           0x00000d28
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_NOR           0x00000d2c      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_WGH           0x00000d30
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_WGH           0x00000d34      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_FOG           0x00000d38
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_FOG           0x00000d3c      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_LOGIC_OP_ENABLE             0x00000d40
+#      define          NV10_TCL_PRIMITIVE_3D_LOGIC_OP                          0x00000d44
+#      define          NV10_TCL_PRIMITIVE_3D_BEGIN_END                         0x00000dfc
+#      define          NV10_TCL_PRIMITIVE_3D_INDEX_DATA                        0x00000e00      /* Parameters: index1 index0 */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_BUFFER_BEGIN_END           0x000013fc
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_BUFFER_DRAW_ARRAYS         0x00001400      /* Parameters: count-1 first */
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_X                 0x00001638
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_Y                 0x0000163c
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_Z                 0x00001640
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_W                 0x00001644
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_DATA                 0x00001800
+
+/****************************************** 
+Object NV15_TCL_PRIMITIVE_3D used on: NV15 
+*/
+#define                        NV15_TCL_PRIMITIVE_3D                                   0x00000096
+#      define          NV10_TCL_PRIMITIVE_3D_NOP                               0x00000100
+#      define          NV10_TCL_PRIMITIVE_3D_NOTIFY                            0x00000104
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_NOTIFY                    0x00000180
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY0                0x00000184
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY1                0x00000188
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DISPLAY_LIST                  0x0000018c
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY2                0x00000194
+#      define          NV10_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY3                0x00000198
+#      define          NV17_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY4                0x000001ac
+#      define          NV17_TCL_PRIMITIVE_3D_SET_DMA_IN_MEMORY5                0x000001b0
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_HORIZ                    0x00000200      /* Parameters: width x */
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_VERT                     0x00000204      /* Parameters: height y */
+#      define          NV10_TCL_PRIMITIVE_3D_BUFFER_FORMAT                     0x00000208      /* Parameters: type color */
+#      define          NV10_TCL_PRIMITIVE_3D_BUFFER_PITCH                      0x0000020c      /* Parameters: depth/stencil buffer pitch color buffer pitch */
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_OFFSET                      0x00000210
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_OFFSET                      0x00000214
+#      define          NV10_TCL_PRIMITIVE_3D_TX_OFFSET(d)                      (0x00000218 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_TX_FORMAT(d)                      (0x00000220 + d * 0x0004)       /* Parameters: wrap_t wrap_s log2(height) log2(width) lod npot format cube_map */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_ENABLE(d)                      (0x00000228 + d * 0x0004)       /* Parameters: enable anisotropy */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_NPOT_PITCH(d)                  (0x00000230 + d * 0x0004)       /* Parameters: pitch */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_NPOT_SIZE(d)                   (0x00000240 + d * 0x0004)       /* Parameters: width height */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_FILTER(d)                      (0x00000248 + d * 0x0004)       /* Parameters: mag_filter min_filter */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_IN_ALPHA(d)                    (0x00000260 + d * 0x0004)       /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_IN_RGB(d)                      (0x00000268 + d * 0x0004)       /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_OUT_ALPHA(d)                   (0x00000278 + d * 0x0004)       /* Parameters: scale bias mux_sum ab_dot_product cd_dot_product sum_output ab_output cd_output */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_OUT_RGB(d)                     (0x00000280 + d * 0x0004)       /* Parameters: rc1_tx_units_enabled rc1_rc_enabled scale bias mux_sum ab_dot_product cd_dot_product sum_output ab_output cd_output */
+#      define          NV10_TCL_PRIMITIVE_3D_TX_MATRIX_ENABLE(d)               (0x000003e0 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_TX_MATRIX(x,y)                    (0x00000540 + y * 0x0010 + x * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_RC_COLOR0                         0x00000270      /* Parameters: a r g b */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_COLOR1                         0x00000274      /* Parameters: a r g b */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_FINAL0                         0x00000288      /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV10_TCL_PRIMITIVE_3D_RC_FINAL1                         0x0000028c      /* Parameters: vare_mapping vare_component_usage vare_input varf_mapping varf_component_usage varf_input varg_mapping varg_component_usage varg_input color_sum_clamp */
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_MODEL                       0x00000294      /* Parameters: local_viewer color_control */
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_MATERIAL                    0x00000298      /* Parameters: specular diffuse ambient emission */
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_MODE                          0x0000029c
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_COORD_DIST                    0x000002a0
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_ENABLE                        0x000002a4
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_COLOR                         0x000002a8      /* Parameters: a b g r */
+#      define          NV17_TCL_PRIMITIVE_3D_COLOR_MASK_ENABLE                 0x000002bc
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_CLIP_HORIZ(d)            (0x000002c0 + d * 0x0004)       /* Parameters: x2 x1 */
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_CLIP_VERT(d)             (0x000002e0 + d * 0x0004)       /* Parameters: y2 y1 */
+#      define          NV10_TCL_PRIMITIVE_3D_ALPHA_TEST_ENABLE                 0x00000300
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_ENABLE                      0x00000304
+#      define          NV10_TCL_PRIMITIVE_3D_CULL_FACE_ENABLE                  0x00000308
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_TEST_ENABLE                 0x0000030c
+#      define          NV10_TCL_PRIMITIVE_3D_DITHER_ENABLE                     0x00000310
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHTING_ENABLE                   0x00000314
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETERS_ENABLE           0x00000318
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_SMOOTH_ENABLE               0x0000031c
+#      define          NV10_TCL_PRIMITIVE_3D_LINE_SMOOTH_ENABLE                0x00000320
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_SMOOTH_ENABLE             0x00000324
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_WEIGHT_ENABLE              0x00000328
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_TEST_ENABLE               0x0000032c
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_POINT_ENABLE       0x00000330
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_LINE_ENABLE        0x00000334
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_FILL_ENABLE        0x00000338
+#      define          NV10_TCL_PRIMITIVE_3D_ALPHA_FUNC                        0x0000033c
+#      define          NV10_TCL_PRIMITIVE_3D_ALPHA_FUNC_REF                    0x00000340
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_FUNC_SRC                    0x00000344
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_FUNC_DST                    0x00000348
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_COLOR                       0x0000034c      /* Parameters: a r g b */
+#      define          NV10_TCL_PRIMITIVE_3D_BLEND_EQUATION                    0x00000350
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_FUNC                        0x00000354
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_MASK                        0x00000358      /* Parameters: r g b */
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_MASK                        0x0000035c
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_MASK                      0x00000360
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_FUNC_FUNC                 0x00000364
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_FUNC_REF                  0x00000368
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_FUNC_MASK                 0x0000036c
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_OP_FAIL                   0x00000370
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_OP_ZFAIL                  0x00000374
+#      define          NV10_TCL_PRIMITIVE_3D_STENCIL_OP_ZPASS                  0x00000378
+#      define          NV10_TCL_PRIMITIVE_3D_SHADE_MODEL                       0x0000037c
+#      define          NV10_TCL_PRIMITIVE_3D_LINE_WIDTH                        0x00000380
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_FACTOR             0x00000384
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_OFFSET_UNITS              0x00000388
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_MODE_FRONT                0x0000038c
+#      define          NV10_TCL_PRIMITIVE_3D_POLYGON_MODE_BACK                 0x00000390
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_RANGE_NEAR                  0x00000394
+#      define          NV10_TCL_PRIMITIVE_3D_DEPTH_RANGE_FAR                   0x00000398
+#      define          NV10_TCL_PRIMITIVE_3D_CULL_FACE                         0x0000039c
+#      define          NV10_TCL_PRIMITIVE_3D_FRONT_FACE                        0x000003a0
+#      define          NV10_TCL_PRIMITIVE_3D_NORMALIZE_ENABLE                  0x000003a4
+#      define          NV10_TCL_PRIMITIVE_3D_MATERIAL_DIFFUSE_ALPHA            0x000003b4
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_CONTROL                     0x000003b8      /* Parameters: color_control */
+#      define          NV10_TCL_PRIMITIVE_3D_ENABLED_LIGHTS                    0x000003bc      /* Parameters: light 7 light 6 light 5 light 4 light 3 light 2 light 1 light 0 */
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_ENABLE( d)             (0x000003c0 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_VIEW_MATRIX_ENABLE                0x000003e8      /* Parameters: projection modelview0 modelview1 */
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_SIZE                        0x000003ec
+#      define          NV10_TCL_PRIMITIVE_3D_MODELVIEW0_MATRIX( d)             (0x00000400 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_MODELVIEW1_MATRIX( d)             (0x00000440 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_INVERSE_MODELVIEW0_MATRIX( d)     (0x00000480 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_INVERSE_MODELVIEW1_MATRIX( d)     (0x000004c0 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_PROJECTION_MATRIX( d)             (0x00000500 + d * 0x0004)
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_A(d)                   (0x00000600 + d * 0x0010)
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_B(d)                   (0x00000604 + d * 0x0010)
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_C(d)                   (0x00000608 + d * 0x0010)
+#      define          NV10_TCL_PRIMITIVE_3D_CLIP_PLANE_D(d)                   (0x0000060c + d * 0x0010)
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_EQUATION_CONSTANT             0x00000680
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_EQUATION_LINEAR               0x00000684
+#      define          NV10_TCL_PRIMITIVE_3D_FOG_EQUATION_QUADRATIC            0x00000688
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_A                       0x000006a0
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_B                       0x000006a4
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_C                       0x000006a8
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_D                       0x000006ac
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_E                       0x000006b0
+#      define          NV10_TCL_PRIMITIVE_3D_SHININESS_F                       0x000006b4
+#      define          NV10_TCL_PRIMITIVE_3D_MATERIAL_AMBIENT_EMISSION         0x000006c4
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_SCALE_X                  0x000006e8
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_SCALE_Y                  0x000006ec
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_SCALE_Z                  0x000006f0
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_SCALE_W                  0x000006f4
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_A                 0x000006f8
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_B                 0x000006fc
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_C                 0x00000700
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_D                 0x00000704
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_E                 0x00000708
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_F                 0x0000070c
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_G                 0x00000710
+#      define          NV10_TCL_PRIMITIVE_3D_POINT_PARAMETER_H                 0x00000714
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_AMBIENT(d)                  (0x00000800 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_DIFFUSE(d)                  (0x0000080c + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_SPECULAR(d)                 (0x00000818 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_HALF_VECTOR(d)              (0x00000828 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_POSITION0(d)                (0x00000834 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_SPOT_LIGHT(d)               (0x00000840 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_POSITION1(d)                (0x0000085c + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_LIGHT_NORMAL(d)                   (0x00000868 + d * 0x0080)
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_3F_X                   0x00000c00
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_3F_Y                   0x00000c04
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_3F_Z                   0x00000c08
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_4F_X                   0x00000c18
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_4F_Y                   0x00000c1c
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_4F_Z                   0x00000c20
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_POS_4F_W                   0x00000c24
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3F_X                   0x00000c30
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3F_Y                   0x00000c34
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3F_Z                   0x00000c38
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3I_XY                  0x00000c40      /* Parameters: y x */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_NOR_3I_Z                   0x00000c44      /* Parameters: z */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4F_R                   0x00000c50
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4F_G                   0x00000c54
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4F_B                   0x00000c58
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4F_A                   0x00000c5c
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_3F_R                   0x00000c60
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_3F_G                   0x00000c64
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_3F_B                   0x00000c68
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL_4I                     0x00000c6c      /* Parameters: a b g r */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL2_3F_R                  0x00000c80
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL2_3F_G                  0x00000c84
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL2_3F_B                  0x00000c88
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_COL2_3I                    0x00000c8c      /* Parameters: a b g r */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_2F_S                   0x00000c90
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_2F_T                   0x00000c94
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_2I                     0x00000c98      /* Parameters: t s */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_S                   0x00000ca0
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_T                   0x00000ca4
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_R                   0x00000ca8
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_Q                   0x00000cac
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4I_ST                  0x00000cb0      /* Parameters: t s */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX0_4I_RQ                  0x00000cb4      /* Parameters: q r */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_2F_S                   0x00000cb8
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_2F_T                   0x00000cbc
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_2I                     0x00000cc0      /* Parameters: t s */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_S                   0x00000cc8
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_T                   0x00000ccc
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_R                   0x00000cd0
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_Q                   0x00000cd4
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4I_ST                  0x00000cd8      /* Parameters: t s */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_TX1_4I_RQ                  0x00000cdc      /* Parameters: q r */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_FOG_1F                     0x00000ce0
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_WGH_1F                     0x00000ce4
+#      define          NV10_TCL_PRIMITIVE_3D_EDGEFLAG_ENABLE                   0x00000cec
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ATTR( d)                   (0x00000d04 + d * 0x0008)
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_VALIDATE             0x00000cf0
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_POS           0x00000d00
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_POS           0x00000d04      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_COL           0x00000d08
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_COL           0x00000d0c      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_COL2          0x00000d10
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_COL2          0x00000d14      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_TX0           0x00000d18
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_TX0           0x00000d1c      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_TX1           0x00000d20
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_TX1           0x00000d24      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_NOR           0x00000d28
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_NOR           0x00000d2c      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_WGH           0x00000d30
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_WGH           0x00000d34      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_OFFSET_FOG           0x00000d38
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_FORMAT_FOG           0x00000d3c      /* Parameters: stride fields type */
+#      define          NV10_TCL_PRIMITIVE_3D_COLOR_LOGIC_OP_ENABLE             0x00000d40
+#      define          NV10_TCL_PRIMITIVE_3D_LOGIC_OP                          0x00000d44
+#      define          NV17_TCL_PRIMITIVE_3D_LMA_DEPTH_BUFFER_PITCH            0x00000d5c      /* Parameters: pitch */
+#      define          NV17_TCL_PRIMITIVE_3D_LMA_DEPTH_BUFFER_OFFSET           0x00000d60
+#      define          NV17_TCL_PRIMITIVE_3D_LMA_DEPTH_FILL_VALUE              0x00000d68
+#      define          NV17_TCL_PRIMITIVE_3D_LMA_DEPTH_CLEAR_ENABLE            0x00000d6c
+#      define          NV10_TCL_PRIMITIVE_3D_BEGIN_END                         0x00000dfc
+#      define          NV10_TCL_PRIMITIVE_3D_INDEX_DATA                        0x00000e00      /* Parameters: index1 index0 */
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_BUFFER_BEGIN_END           0x000013fc
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_BUFFER_DRAW_ARRAYS         0x00001400      /* Parameters: count-1 first */
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_X                 0x00001638
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_Y                 0x0000163c
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_Z                 0x00001640
+#      define          NV10_TCL_PRIMITIVE_3D_VIEWPORT_ORIGIN_W                 0x00001644
+#      define          NV17_TCL_PRIMITIVE_3D_LMA_DEPTH_ENABLE                  0x00001658
+#      define          NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_DATA                 0x00001800
+
+/****************************************** 
+Object NV10_IMAGE_FROM_CPU used on: NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV10_IMAGE_FROM_CPU                                     0x0000008a
+#      define          NV10_IMAGE_FROM_CPU_SET_DMA_NOTIFY                      0x00000180
+#      define          NV10_IMAGE_FROM_CPU_SET_CONTEXT_CLIP_RECTANGLE          0x00000188
+#      define          NV10_IMAGE_FROM_CPU_SET_IMAGE_PATTERN                   0x0000018c
+#      define          NV10_IMAGE_FROM_CPU_SET_RASTER_OP                       0x00000190
+#      define          NV10_IMAGE_FROM_CPU_SET_CONTEXT_SURFACES_2D             0x0000019c
+#      define          NV10_IMAGE_FROM_CPU_OPERATION                           0x000002fc
+#      define          NV10_IMAGE_FROM_CPU_FORMAT                              0x00000300
+#      define          NV10_IMAGE_FROM_CPU_POINT                               0x00000304      /* Parameters: x y */
+#      define          NV10_IMAGE_FROM_CPU_SIZE_OUT                            0x00000308      /* Parameters: width height */
+#      define          NV10_IMAGE_FROM_CPU_SIZE_IN                             0x0000030c      /* Parameters: width height */
+#      define          NV10_IMAGE_FROM_CPU_HLINE                               0x00000400
+
+/****************************************** 
+Object NV10_PRIMITIVE_2D used on: NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV10_PRIMITIVE_2D                                       0x0000007b
+#      define          NV10_PRIMITIVE_2D_SET_DMA_NOTIFY                        0x00000180
+#      define          NV10_PRIMITIVE_2D_SET_SURFACE                           0x00000184
+#      define          NV10_PRIMITIVE_2D_SET_FORMAT                            0x00000300
+#      define          NV10_PRIMITIVE_2D_SET_POINT                             0x00000304      /* Parameters: x y */
+#      define          NV10_PRIMITIVE_2D_SET_SIZE                              0x00000308      /* Parameters: width height */
+#      define          NV10_PRIMITIVE_2D_SET_CLIP_HORIZ                        0x0000030c      /* Parameters: width x */
+#      define          NV10_PRIMITIVE_2D_SET_CLIP_VERT                         0x00000310      /* Parameters: height y */
+#      define          NV10_PRIMITIVE_2D_SET_DATA( d)                          (0x00000400 + d * 0x0004)
+
+/****************************************** 
+Object NV10_IMAGE_BLIT used on: NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV10_IMAGE_BLIT                                         0x0000009f
+#      define          NV10_IMAGE_BLIT_NOP                                     0x00000100
+#      define          NV10_IMAGE_BLIT_NOTIFY                                  0x00000104
+#      define          NV10_IMAGE_BLIT_SET_DMA_NOTIFY                          0x00000180
+#      define          NV10_IMAGE_BLIT_SET_CONTEXT_CLIP_RECTANGLE              0x00000188
+#      define          NV10_IMAGE_BLIT_SET_IMAGE_PATTERN                       0x0000018c
+#      define          NV10_IMAGE_BLIT_SET_RASTER_OP                           0x00000190
+#      define          NV10_IMAGE_BLIT_SET_CONTEXT_SURFACES_2D                 0x0000019c
+#      define          NV10_IMAGE_BLIT_SET_OPERATION                           0x000002fc
+#      define          NV10_IMAGE_BLIT_SET_POINT                               0x00000300      /* Parameters: x y */
+#      define          NV10_IMAGE_BLIT_SET_PITCH                               0x00000304      /* Parameters: skip */
+#      define          NV10_IMAGE_BLIT_SET_SIZE                                0x00000308      /* Parameters: width height */
+
+/****************************************** 
+Object NV10_VIDEO_DISPLAY used on: NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV10_VIDEO_DISPLAY                                      0x0000007c
+#      define          NV10_VIDEO_DISPLAY_COUNTER                              0x00000050
+#      define          NV10_VIDEO_DISPLAY_SET_DMA_FROM_MEMORY                  0x00000180
+#      define          NV10_VIDEO_DISPLAY_SET_DMA_IN_MEMORY0                   0x00000184
+#      define          NV10_VIDEO_DISPLAY_SET_DMA_IN_MEMORY1                   0x00000188
+#      define          NV10_VIDEO_DISPLAY_SET_OBJECT3                          0x0000019c
+#      define          NV10_VIDEO_DISPLAY_SIZE                                 0x000002f8      /* Parameters: height width */
+#      define          NV10_VIDEO_DISPLAY_OFFSET                               0x00000300
+
+/****************************************** 
+Object NV10_UNK0072 used on: NV10 NV15 NV20 NV40 G70
+*/
+#define                        NV10_UNK0072                                            0x00000072
+#      define          NV10_UNK0072_COUNTER                                    0x00000050
+#      define          NV10_UNK0072_SET_DMA_NOTIFY                             0x00000180
+
+/****************************************** 
+Object NV10_SCALED_IMAGE_FROM_MEMORY used on: NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV10_SCALED_IMAGE_FROM_MEMORY                           0x00000089
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_COUNTER                   0x00000050
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_SET_DMA_IN_MEMORY         0x00000184
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_SET_RASTER_OP             0x0000018c
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_SET_IMAGE_PATTERN         0x00000188
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_SET_SURFACE               0x00000198
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_OPERATION                 0x00000304
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_CLIP_POS                  0x00000308      /* Parameters: x y */
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE                 0x0000030c      /* Parameters: width height */
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_OUT_POS                   0x00000310      /* Parameters: x y */
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE                  0x00000314      /* Parameters: width height */
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_SIZE                      0x00000400      /* Parameters: width height */
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_FORMAT                    0x00000404      /* Parameters: pitch */
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_OFFSET                    0x00000408
+#      define          NV10_SCALED_IMAGE_FROM_MEMORY_POINT                     0x0000040c      /* Parameters: u_int u_frac*0x10 v_int v_frac*0x10 */
+
+/****************************************** 
+Object NV10_CONTEXT_SURFACES_2D used on: NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV10_CONTEXT_SURFACES_2D                                0x00000062
+#      define          NV10_CONTEXT_SURFACES_2D_SET_DMA_NOTIFY                 0x00000180
+#      define          NV10_CONTEXT_SURFACES_2D_SET_DMA_IN_MEMORY0             0x00000184
+#      define          NV10_CONTEXT_SURFACES_2D_SET_DMA_IN_MEMORY1             0x00000188
+#      define          NV10_CONTEXT_SURFACES_2D_FORMAT                         0x00000300      /* Parameters: color type width height */
+#      define          NV10_CONTEXT_SURFACES_2D_PITCH                          0x00000304      /* Parameters: src dst */
+#      define          NV10_CONTEXT_SURFACES_2D_OFFSET_SRC                     0x00000308
+#      define          NV10_CONTEXT_SURFACES_2D_OFFSET_DST                     0x0000030c
+
+/****************************************** 
+Object NV04_SURFACE used on: NV04 NV10 NV15 
+*/
+#define                        NV04_SURFACE                                            0x00000042
+#      define          NV04_SURFACE_NOTIFY                                     0x00000104
+#      define          NV04_SURFACE_DMA_NOTIFY                                 0x00000180
+#      define          NV04_SURFACE_DMA_IMAGE_SOURCE                           0x00000184
+#      define          NV04_SURFACE_DMA_IMAGE_DESTIN                           0x00000188
+#      define          NV04_SURFACE_FORMAT                                     0x00000300
+#      define          NV04_SURFACE_PITCH                                      0x00000304      /* Parameters: source destin */
+#      define          NV04_SURFACE_OFFSET_SOURCE                              0x00000308
+#      define          NV04_SURFACE_OFFSET_DESTIN                              0x0000030c
+
+/****************************************** 
+Object NV04_IMAGE_PATTERN used on: NV04 NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV04_IMAGE_PATTERN                                      0x00000044
+#      define          NV04_IMAGE_PATTERN_COLOR_FORMAT                         0x00000300
+#      define          NV04_IMAGE_PATTERN_MONO_FORMAT                          0x00000304
+#      define          NV04_IMAGE_PATTERN_SELECT                               0x0000030c
+#      define          NV04_IMAGE_PATTERN_MONOCHROME_SHAPE                     0x00000308
+#      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
+
+/****************************************** 
+Object NV20_SWIZZLED_SURFACE used on: NV20 NV30 NV40 G70
+*/
+#define                        NV20_SWIZZLED_SURFACE                                   0x0000009e
+#      define          NV20_SWIZZLED_SURFACE_SET_OBJECT0                       0x00000180
+#      define          NV20_SWIZZLED_SURFACE_SET_OBJECT1                       0x00000184
+#      define          NV20_SWIZZLED_SURFACE_FORMAT                            0x00000300      /* Parameters: log2(height) log2(width) color */
+#      define          NV20_SWIZZLED_SURFACE_OFFSET                            0x00000304
+
+/****************************************** 
+Object NV20_TCL_PRIMITIVE_3D used on: NV20 
+*/
+#define                        NV20_TCL_PRIMITIVE_3D                                   0x00000097
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT0                       0x00000180
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT1                       0x00000184
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT2                       0x00000188
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT3                       0x00000194
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT4                       0x00000198
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT5                       0x0000019c
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT6                       0x000001a0
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT7                       0x000001a4
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT8                       0x000001a8
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT9                       0x000001ac
+#      define          NV20_TCL_PRIMITIVE_3D_SET_OBJECT10                      0x000001b0
+#      define          NV20_TCL_PRIMITIVE_3D_VIEWPORT_HORIZ                    0x00000200      /* Parameters: width x */
+#      define          NV20_TCL_PRIMITIVE_3D_VIEWPORT_VERT                     0x00000204      /* Parameters: height y */
+#      define          NV20_TCL_PRIMITIVE_3D_BUFFER_FORMAT                     0x00000208      /* Parameters: type color */
+#      define          NV20_TCL_PRIMITIVE_3D_BUFFER_PITCH                      0x0000020c      /* Parameters: depth/stencil buffer pitch color buffer pitch */
+#      define          NV20_TCL_PRIMITIVE_3D_COLOR_OFFSET                      0x00000210
+#      define          NV20_TCL_PRIMITIVE_3D_DEPTH_OFFSET                      0x00000214
+#      define          NV20_TCL_PRIMITIVE_3D_LMA_DEPTH_BUFFER_PITCH            0x0000022c      /* Parameters: pitch */
+#      define          NV20_TCL_PRIMITIVE_3D_LMA_DEPTH_BUFFER_OFFSET           0x00000230
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_CONTROL                     0x00000294
+#      define          NV20_TCL_PRIMITIVE_3D_COLOR_MATERIAL_CONTROL            0x00000298      /* Parameters: back_specular back_ambient back_diffuse back_emission front_specular front_ambient front_diffuse front_emission */
+#      define          NV20_TCL_PRIMITIVE_3D_FOG_MODE                          0x0000029c
+#      define          NV20_TCL_PRIMITIVE_3D_FOG_COORD_DIST                    0x000002a0
+#      define          NV20_TCL_PRIMITIVE_3D_ALPHA_TEST_ENABLE                 0x00000300
+#      define          NV20_TCL_PRIMITIVE_3D_BLEND_ENABLE                      0x00000304
+#      define          NV20_TCL_PRIMITIVE_3D_CULL_FACE_ENABLE                  0x00000308
+#      define          NV20_TCL_PRIMITIVE_3D_DEPTH_TEST_ENABLE                 0x0000030c
+#      define          NV20_TCL_PRIMITIVE_3D_DITHER_ENABLE                     0x00000310
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHTING_ENABLE                   0x00000314
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_PARAMETERS_ENABLE           0x00000318
+#      define          NV20_TCL_PRIMITIVE_3D_LINE_SMOOTH_ENABLE                0x00000320
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_SMOOTH_ENABLE             0x00000324
+#      define          NV20_TCL_PRIMITIVE_3D_STENCIL_TEST_ENABLE               0x0000032c
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_OFFSET_POINT_ENABLE       0x00000330
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_OFFSET_LINE_ENABLE        0x00000334
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_OFFSET_FILL_ENABLE        0x00000338
+#      define          NV20_TCL_PRIMITIVE_3D_ALPHA_FUNC_FUNC                   0x0000033c
+#      define          NV20_TCL_PRIMITIVE_3D_ALPHA_FUNC_REF                    0x00000340
+#      define          NV20_TCL_PRIMITIVE_3D_BLEND_FUNC_SRC                    0x00000344
+#      define          NV20_TCL_PRIMITIVE_3D_BLEND_FUNC_DST                    0x00000348
+#      define          NV20_TCL_PRIMITIVE_3D_BLEND_COLOR                       0x0000034c      /* Parameters: a r g b */
+#      define          NV20_TCL_PRIMITIVE_3D_BLEND_EQUATION                    0x00000350
+#      define          NV20_TCL_PRIMITIVE_3D_DEPTH_FUNC                        0x00000354
+#      define          NV20_TCL_PRIMITIVE_3D_COLOR_MASK                        0x00000358      /* Parameters: a r g b */
+#      define          NV20_TCL_PRIMITIVE_3D_DEPTH_MASK                        0x0000035c
+#      define          NV20_TCL_PRIMITIVE_3D_STENCIL_MASK                      0x00000360
+#      define          NV20_TCL_PRIMITIVE_3D_STENCIL_FUNC_FUNC                 0x00000364
+#      define          NV20_TCL_PRIMITIVE_3D_STENCIL_FUNC_REF                  0x00000368
+#      define          NV20_TCL_PRIMITIVE_3D_STENCIL_FUNC_MASK                 0x0000036c
+#      define          NV20_TCL_PRIMITIVE_3D_STENCIL_OP_FAIL                   0x00000370
+#      define          NV20_TCL_PRIMITIVE_3D_STENCIL_OP_ZFAIL                  0x00000374
+#      define          NV20_TCL_PRIMITIVE_3D_STENCIL_OP_ZPASS                  0x00000378
+#      define          NV20_TCL_PRIMITIVE_3D_SHADE_MODEL                       0x0000037c
+#      define          NV20_TCL_PRIMITIVE_3D_LINE_WIDTH                        0x00000380
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_OFFSET_FACTOR             0x00000384
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_OFFSET_UNITS              0x00000388
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_MODE_FRONT                0x0000038c
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_MODE_BACK                 0x00000390
+#      define          NV20_TCL_PRIMITIVE_3D_DEPTH_RANGE_NEAR                  0x00000394
+#      define          NV20_TCL_PRIMITIVE_3D_DEPTH_RANGE_FAR                   0x00000398
+#      define          NV20_TCL_PRIMITIVE_3D_CULL_FACE                         0x0000039c
+#      define          NV20_TCL_PRIMITIVE_3D_FRONT_FACE                        0x000003a0
+#      define          NV20_TCL_PRIMITIVE_3D_NORMALIZE_ENABLE                  0x000003a4
+#      define          NV20_TCL_PRIMITIVE_3D_COLOR_MATERIAL_FRONT              0x000003a8
+#      define          NV20_TCL_PRIMITIVE_3D_SEPARATE_SPECULAR_ENABLE          0x000003b8
+#      define          NV20_TCL_PRIMITIVE_3D_ENABLED_LIGHTS                    0x000003bc      /* Parameters: light 7 light 6 light 5 light 4 light 3 light 2 light 1 light 0 */
+#      define          NV20_TCL_PRIMITIVE_3D_CLIP_PLANE_ENABLE(d)              (0x000003c0 + d * 0x0004)
+#      define          NV20_TCL_PRIMITIVE_3D_TX_MATRIX_ENABLE(d)               (0x00000420 + d * 0x0004)
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_SIZE                        0x0000043c
+#      define          NV20_TCL_PRIMITIVE_3D_MODELVIEW_MATRIX( d)              (0x00000480 + d * 0x0004)
+#      define          NV20_TCL_PRIMITIVE_3D_INVERSE_MODELVIEW_MATRIX( d)      (0x00000580 + d * 0x0004)
+#      define          NV20_TCL_PRIMITIVE_3D_PROJECTION_MATRIX( d)             (0x00000680 + d * 0x0004)
+#      define          NV20_TCL_PRIMITIVE_3D_TX_MATRIX(x,y)                    (0x000006c0 + y * 0x0010 + x * 0x0004)
+#      define          NV20_TCL_PRIMITIVE_3D_CLIP_PLANE_A(d)                   (0x00000840 + d * 0x0010)
+#      define          NV20_TCL_PRIMITIVE_3D_CLIP_PLANE_B(d)                   (0x00000844 + d * 0x0010)
+#      define          NV20_TCL_PRIMITIVE_3D_CLIP_PLANE_C(d)                   (0x00000848 + d * 0x0010)
+#      define          NV20_TCL_PRIMITIVE_3D_CLIP_PLANE_D(d)                   (0x0000084c + d * 0x0010)
+#      define          NV20_TCL_PRIMITIVE_3D_FOG_EQUATION_CONSTANT             0x000009c0
+#      define          NV20_TCL_PRIMITIVE_3D_FOG_EQUATION_LINEAR               0x000009c4
+#      define          NV20_TCL_PRIMITIVE_3D_FOG_EQUATION_QUADRATIC            0x000009c8
+#      define          NV20_TCL_PRIMITIVE_3D_FRONT_MATERIAL_SHININESS          0x000009e0
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_SPRITE                      0x00000a1c      /* Parameters: coord_replace r_mode enable */
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_PARAMETER_A                 0x00000a30
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_PARAMETER_B                 0x00000a34
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_PARAMETER_C                 0x00000a38
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_PARAMETER_D                 0x00000a3c
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_PARAMETER_E                 0x00000a40
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_PARAMETER_F                 0x00000a44
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_PARAMETER_G                 0x00000a48
+#      define          NV20_TCL_PRIMITIVE_3D_POINT_PARAMETER_H                 0x00000a4c
+#      define          NV20_TCL_PRIMITIVE_3D_VP_UPLOAD_INST0                   0x00000b00
+#      define          NV20_TCL_PRIMITIVE_3D_VP_UPLOAD_INST1                   0x00000b04
+#      define          NV20_TCL_PRIMITIVE_3D_VP_UPLOAD_INST2                   0x00000b08
+#      define          NV20_TCL_PRIMITIVE_3D_VP_UPLOAD_INST3                   0x00000b0c
+#      define          NV20_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_X                 0x00000b80
+#      define          NV20_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_Y                 0x00000b84
+#      define          NV20_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_Z                 0x00000b88
+#      define          NV20_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_W                 0x00000b8c
+#      define          NV20_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_ID                0x00001ea4
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION      0x00000a10
+#      define          NV20_TCL_PRIMITIVE_3D_TX_OFFSET(d)                      (0x00001b00 + d * 0x0040)
+#      define          NV20_TCL_PRIMITIVE_3D_TX_FORMAT(d)                      (0x00001b04 + d * 0x0040)       /* Parameters: log2(height) log2(width) lod format cube_map */
+#      define          NV20_TCL_PRIMITIVE_3D_TX_ENABLE(d)                      (0x00001b0c + d * 0x0040)       /* Parameters: enable anisotropy */
+#      define          NV20_TCL_PRIMITIVE_3D_TX_NPOT_PITCH(d)                  (0x00001b10 + d * 0x0040)       /* Parameters: pitch */
+#      define          NV20_TCL_PRIMITIVE_3D_TX_FILTER(d)                      (0x00001b14 + d * 0x0040)       /* Parameters: mag_filter min_filter */
+#      define          NV20_TCL_PRIMITIVE_3D_TX_NPOT_SIZE(d)                   (0x00001b1c + d * 0x0040)       /* Parameters: width height */
+#      define          NV20_TCL_PRIMITIVE_3D_TX_SHADER_OP                      0x00001e70      /* Parameters: op0 op1 op2 op3 */
+#      define          NV20_TCL_PRIMITIVE_3D_TX_SHADER_CULL_MODE               0x000017f8      /* Parameters: cull0 cull1 cull2 cull3 */
+#      define          NV20_TCL_PRIMITIVE_3D_TX_SHADER_PREVIOUS                0x00001e78      /* Parameters: prev2 prev3 */
+#      define          NV20_TCL_PRIMITIVE_3D_RC_COLOR0                         0x00001e20      /* Parameters: a r g b */
+#      define          NV20_TCL_PRIMITIVE_3D_RC_COLOR1                         0x00001e24      /* Parameters: a r g b */
+#      define          NV20_TCL_PRIMITIVE_3D_RC_FINAL0                         0x00000288      /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV20_TCL_PRIMITIVE_3D_RC_FINAL1                         0x0000028c      /* Parameters: vare_mapping vare_component_usage vare_input varf_mapping varf_component_usage varf_input varg_mapping varg_component_usage varg_input color_sum_clamp */
+#      define          NV20_TCL_PRIMITIVE_3D_RC_IN_ALPHA(d)                    (0x00000260 + d * 0x0004)       /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV20_TCL_PRIMITIVE_3D_RC_IN_RGB(d)                      (0x00000ac0 + d * 0x0004)       /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV20_TCL_PRIMITIVE_3D_RC_OUT_ALPHA(d)                   (0x00000aa0 + d * 0x0004)       /* Parameters: scale bias mux_sum ab_dot_product cd_dot_product sum_output ab_output cd_output */
+#      define          NV20_TCL_PRIMITIVE_3D_RC_OUT_RGB(d)                     (0x00001e40 + d * 0x0004)       /* Parameters: scale bias mux_sum ab_dot_product cd_dot_product sum_output ab_output cd_output */
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_POSITION_X(d)               (0x0000105c + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_POSITION_Y(d)               (0x00001060 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_POSITION_Z(d)               (0x00001064 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_HVEC_AND_DIR(d)             (0x00001028 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT_A(d)     (0x00001000 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT_B(d)     (0x00001004 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT_C(d)     (0x00001008 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE_A(d)     (0x0000100c + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE_B(d)     (0x00001010 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE_C(d)     (0x00001014 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR_A(d)    (0x00001018 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR_B(d)    (0x0000101c + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR_C(d)    (0x00001020 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_BACK_SIDE_PRODUCT_AMBIENT(d)        (0x00000c00 + d * 0x0040)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_BACK_SIDE_PRODUCT_DIFFUSE(d)        (0x00000c0c + d * 0x0040)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_BACK_SIDE_PRODUCT_SPECULAR(d)       (0x00000c18 + d * 0x0040)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_CONSTANT_ATTENUATION(d)     (0x00001068 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_LINEAR_ATTENUATION(d)       (0x0000106c + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_QUADRATIC_ATTENUATION(d)    (0x00001070 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_SPOT_CUTOFF_A(d)            (0x00001040 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_SPOT_EXPONENT(d)            (0x00001044 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_SPOT_CUTOFF_B(d)            (0x00001048 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_SPOT_DIR_X(d)               (0x0000104c + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_SPOT_DIR_Y(d)               (0x00001050 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_SPOT_DIR_Z(d)               (0x00001054 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_SPOT_CUTOFF_C(d)            (0x00001058 + d * 0x0080)
+#      define          NV20_TCL_PRIMITIVE_3D_BACK_MATERIAL_SHININESS           0x00001e28
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_STIPPLE_ENABLE            0x0000147c
+#      define          NV20_TCL_PRIMITIVE_3D_POLYGON_STIPPLE_PATTERN(d)        (0x00001480 + d * 0x0004)
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_POS_3F_X                   0x00001500
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_POS_3F_Y                   0x00001504
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_POS_3F_Z                   0x00001508
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_POS_4F_X                   0x00001518
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_POS_4F_Y                   0x0000151c
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_POS_4F_Z                   0x00001520
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_POS_4F_W                   0x00001524
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_POS_4I_XY                  0x00001528      /* Parameters: y x */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_POS_4I_ZW                  0x0000152c      /* Parameters: w z */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_NOR_3F_X                   0x00001530
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_NOR_3F_Y                   0x00001534
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_NOR_3F_Z                   0x00001538
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_NOR_3I_XY                  0x00001540      /* Parameters: y x */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_NOR_3I_Z                   0x00001544      /* Parameters: z */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL_4F_R                   0x00001550
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL_4F_G                   0x00001554
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL_4F_B                   0x00001558
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL_4F_A                   0x0000155c
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL_3F_R                   0x00001560
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL_3F_G                   0x00001564
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL_3F_B                   0x00001568
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL_4I                     0x0000156c      /* Parameters: a b g r */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL2_3F_R                  0x00001580
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL2_3F_G                  0x00001584
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL2_3F_B                  0x00001588
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_COL2_3I                    0x0000158c      /* Parameters: a b g r */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX0_2F_S                   0x00001590
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX0_2F_T                   0x00001594
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX0_2I                     0x00001598      /* Parameters: t s */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_S                   0x000015a0
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_T                   0x000015a4
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_R                   0x000015a8
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX0_4F_Q                   0x000015ac
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX0_4I_ST                  0x000015b0      /* Parameters: t s */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX0_4I_RQ                  0x000015b4      /* Parameters: q r */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX1_2F_S                   0x000015b8
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX1_2F_T                   0x000015bc
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX1_2I                     0x000015c0      /* Parameters: t s */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_S                   0x000015c8
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_T                   0x000015cc
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_R                   0x000015d0
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX1_4F_Q                   0x000015d4
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX1_4I_ST                  0x000015d8      /* Parameters: t s */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX1_4I_RQ                  0x000015dc      /* Parameters: q r */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX2_2F_S                   0x000015e0
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX2_2F_T                   0x000015e4
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX2_2I                     0x000015e8      /* Parameters: t s */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX2_4F_S                   0x000015f0
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX2_4F_T                   0x000015f4
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX2_4F_R                   0x000015f8
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX2_4F_Q                   0x000015fc
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX2_4I_ST                  0x00001600      /* Parameters: t s */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX2_4I_RQ                  0x00001604      /* Parameters: q r */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX3_2F_S                   0x00001608
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX3_2F_T                   0x0000160c
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX3_2I                     0x00001610      /* Parameters: t s */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX3_4F_S                   0x00001620
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX3_4F_T                   0x00001624
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX3_4F_R                   0x00001628
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX3_4F_Q                   0x0000162c
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX3_4I_ST                  0x00001630      /* Parameters: t s */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_TX3_4I_RQ                  0x00001634      /* Parameters: q r */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_FOG_1F                     0x00001698
+#      define          NV20_TCL_PRIMITIVE_3D_EDGE_FLAG                         0x000016bc
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR0_POS              0x00001720      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR1_WGH              0x00001724      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR2_NOR              0x00001728      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR3_COL              0x0000172c      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR4_COL2             0x00001730      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR5_FOG              0x00001734      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR6                  0x00001738      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR7                  0x0000173c      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR8_TX0              0x00001740      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR9_TX1              0x00001744      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR10_TX2             0x00001748      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR11_TX3             0x0000174c      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR12_TX4             0x00001750      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR13_TX5             0x00001754      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR14_TX6             0x00001758      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_POINTER_ATTR15_TX7             0x0000175c      /* Parameters: enabled? offset */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR( d)                   (0x00001760 + d * 0x0004)
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR0_POS                  0x00001760      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR1_WGH                  0x00001764      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR2_NOR                  0x00001768      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR3_COL                  0x0000176c      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR4_COL2                 0x00001770      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR5_FOG                  0x00001774      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR6                      0x00001778      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR7                      0x0000177c      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR8_TX0                  0x00001780      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR9_TX1                  0x00001784      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR10_TX2                 0x00001788      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR11_TX3                 0x0000178c      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR12_TX4                 0x00001790      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR13_TX5                 0x00001794      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR14_TX6                 0x00001798      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR15_TX7                 0x0000179c      /* Parameters: stride fields type */
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_MODEL_BACK_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION       0x000017a0
+#      define          NV20_TCL_PRIMITIVE_3D_COLOR_MATERIAL_BACK               0x000017b0
+#      define          NV20_TCL_PRIMITIVE_3D_COLOR_LOGIC_OP_ENABLE             0x000017bc
+#      define          NV20_TCL_PRIMITIVE_3D_LOGIC_OP                          0x000017c0
+#      define          NV20_TCL_PRIMITIVE_3D_LIGHT_MODEL_TWO_SIDE_ENABLE       0x000017c4
+#      define          NV20_TCL_PRIMITIVE_3D_BEGIN_END                         0x000017fc
+#      define          NV20_TCL_PRIMITIVE_3D_CLEAR_COLOR                       0x00001d90
+#      define          NV20_TCL_PRIMITIVE_3D_CLEAR_MASK                        0x00001d94      /* Parameters: clear color a clear color b clear color g clear color r clear depth clear stencil */
+#      define          NV20_TCL_PRIMITIVE_3D_INDEX_DATA                        0x00001800      /* Parameters: index1 index0 */
+#      define          NV20_TCL_PRIMITIVE_3D_VB_VERTEX_BATCH                   0x00001810      /* Parameters: count_vertices offset_vertices */
+#      define          NV20_TCL_PRIMITIVE_3D_VERTEX_DATA                       0x00001818
+
+/****************************************** 
+Object NV30_TCL_PRIMITIVE_3D used on: NV30 NV40 G70
+*/
+#define                        NV30_TCL_PRIMITIVE_3D                                   0x00000097
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT0                       0x00000180
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT1                       0x00000184
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT2                       0x00000188
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT3                       0x0000018c
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT4                       0x00000194
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT5                       0x00000198
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT6                       0x000001a4
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT7                       0x000001a8
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT8                       0x000001ac
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT9                       0x000001b4
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT10                      0x000001b8
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT11                      0x0000019c
+#      define          NV30_TCL_PRIMITIVE_3D_SET_OBJECT12                      0x000001a0
+#      define          NV30_TCL_PRIMITIVE_3D_BUFFER0_PITCH                     0x0000020c      /* Parameters: depth/stencil buffer pitch color0 buffer pitch */
+#      define          NV30_TCL_PRIMITIVE_3D_COLOR0_OFFSET                     0x00000210
+#      define          NV30_TCL_PRIMITIVE_3D_DEPTH_OFFSET                      0x00000214
+#      define          NV30_TCL_PRIMITIVE_3D_COLOR1_OFFSET                     0x00000218
+#      define          NV30_TCL_PRIMITIVE_3D_BUFFER1_PITCH                     0x0000021c      /* Parameters: color1 buffer pitch */
+#      define          NV30_TCL_PRIMITIVE_3D_LMA_DEPTH_BUFFER_PITCH            0x0000022c      /* Parameters: pitch */
+#      define          NV30_TCL_PRIMITIVE_3D_LMA_DEPTH_BUFFER_OFFSET           0x00000230
+#      define          NV30_TCL_PRIMITIVE_3D_TX_MATRIX_ENABLE(d)               (0x00000240 + d * 0x0004)
+#      define          NV30_TCL_PRIMITIVE_3D_BUFFER2_PITCH                     0x00000280
+#      define          NV30_TCL_PRIMITIVE_3D_BUFFER3_PITCH                     0x00000284
+#      define          NV30_TCL_PRIMITIVE_3D_BUFFER2_OFFSET                    0x00000288
+#      define          NV30_TCL_PRIMITIVE_3D_BUFFER3_OFFSET                    0x0000028c
+#      define          NV30_TCL_PRIMITIVE_3D_DITHER_ENABLE                     0x00000300
+#      define          NV30_TCL_PRIMITIVE_3D_ALPHA_FUNC_ENABLE                 0x00000304
+#      define          NV30_TCL_PRIMITIVE_3D_ALPHA_FUNC_FUNC                   0x00000308
+#      define          NV30_TCL_PRIMITIVE_3D_ALPHA_FUNC_REF                    0x0000030c
+#      define          NV30_TCL_PRIMITIVE_3D_BLEND_FUNC_ENABLE                 0x00000310
+#      define          NV30_TCL_PRIMITIVE_3D_BLEND_FUNC_SRC                    0x00000314
+#      define          NV30_TCL_PRIMITIVE_3D_BLEND_FUNC_DST                    0x00000318
+#      define          NV30_TCL_PRIMITIVE_3D_BLEND_COLOR                       0x0000031c      /* Parameters: a r g b */
+#      define          NV30_TCL_PRIMITIVE_3D_BLEND_EQUATION                    0x00000320
+#      define          NV30_TCL_PRIMITIVE_3D_COLOR_MASK                        0x00000324      /* Parameters: a r g b */
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_BACK_ENABLE               0x00000328
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_BACK_MASK                 0x0000032c
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_BACK_FUNC_FUNC            0x00000330
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_BACK_FUNC_REF             0x00000334
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_BACK_FUNC_MASK            0x00000338
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_BACK_OP_FAIL              0x0000033c
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_BACK_OP_ZFAIL             0x00000340
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_BACK_OP_ZPASS             0x00000344
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_FRONT_ENABLE              0x00000348
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_FRONT_MASK                0x0000034c
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_FRONT_FUNC_FUNC           0x00000350
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_FRONT_FUNC_REF            0x00000354
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_FRONT_FUNC_MASK           0x00000358
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_FRONT_OP_FAIL             0x0000035c
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_FRONT_OP_ZFAIL            0x00000360
+#      define          NV30_TCL_PRIMITIVE_3D_STENCIL_FRONT_OP_ZPASS            0x00000364
+#      define          NV30_TCL_PRIMITIVE_3D_SHADE_MODEL                       0x00000368
+#      define          NV30_TCL_PRIMITIVE_3D_FOG_ENABLE                        0x0000036c
+#      define          NV40_TCL_PRIMITIVE_3D_COLOR_MASK_BUFFER123              0x00000370      /* Parameters: buffer3 b buffer3 g buffer3 r buffer3 a buffer2 b buffer2 g buffer2 r buffer2 a buffer1 b buffer1 g buffer1 r buffer1 a */
+#      define          NV30_TCL_PRIMITIVE_3D_NORMALIZE_ENABLE                  0x0000037c
+#      define          NV30_TCL_PRIMITIVE_3D_DEPTH_RANGE_NEAR                  0x00000394
+#      define          NV30_TCL_PRIMITIVE_3D_DEPTH_RANGE_FAR                   0x00000398
+#      define          NV30_TCL_PRIMITIVE_3D_LINE_WIDTH_SMOOTH                 0x000003b8
+#      define          NV30_TCL_PRIMITIVE_3D_CLIP_PLANE_ENABLE(d)              (0x00000400 + d * 0x0004)
+#      define          NV30_TCL_PRIMITIVE_3D_MODELVIEW_MATRIX( d)              (0x00000480 + d * 0x0004)
+#      define          NV30_TCL_PRIMITIVE_3D_INVERSE_MODELVIEW_MATRIX( d)      (0x00000580 + d * 0x0004)
+#      define          NV30_TCL_PRIMITIVE_3D_PROJECTION_MATRIX( d)             (0x00000680 + d * 0x0004)
+#      define          NV30_TCL_PRIMITIVE_3D_TX_MATRIX(x,y)                    (0x000006c0 + y * 0x0010 + x * 0x0004)
+#      define          NV30_TCL_PRIMITIVE_3D_FP_ACTIVE_PROGRAM                 0x000008e4
+#      define          NV30_TCL_PRIMITIVE_3D_FOG_COORD_DIST                    0x000008c8
+#      define          NV30_TCL_PRIMITIVE_3D_FOG_MODE                          0x000008cc
+#      define          NV30_TCL_PRIMITIVE_3D_FOG_EQUATION_CONSTANT             0x000008d0
+#      define          NV30_TCL_PRIMITIVE_3D_FOG_EQUATION_LINEAR               0x000008d4
+#      define          NV30_TCL_PRIMITIVE_3D_FOG_EQUATION_QUADRATIC            0x000008d8
+#      define          NV30_TCL_PRIMITIVE_3D_RC_FINAL0                         0x000008f4      /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV30_TCL_PRIMITIVE_3D_RC_FINAL1                         0x000008f8      /* Parameters: vare_mapping vare_component_usage vare_input varf_mapping varf_component_usage varf_input varg_mapping varg_component_usage varg_input color_sum_clamp */
+#      define          NV30_TCL_PRIMITIVE_3D_RC_IN_ALPHA                       0x00000900      /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV30_TCL_PRIMITIVE_3D_RC_IN_RGB                         0x00000904      /* Parameters: vara_mapping vara_component_usage vara_input varb_mapping varb_component_usage varb_input varc_mapping varc_component_usage varc_input vard_mapping vard_component_usage vard_input */
+#      define          NV30_TCL_PRIMITIVE_3D_RC_OUT_ALPHA                      0x00000910      /* Parameters: scale bias mux_sum ab_dot_product cd_dot_product sum_output ab_output cd_output */
+#      define          NV30_TCL_PRIMITIVE_3D_RC_OUT_RGB                        0x00000914      /* Parameters: scale bias mux_sum ab_dot_product cd_dot_product sum_output ab_output cd_output */
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_COLOR_BUFFER_DIM0        0x00000200      /* Parameters: width x_offset */
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_COLOR_BUFFER_DIM1        0x00000204      /* Parameters: height y_offset */
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_COLOR_BUFFER_OFS0        0x000002c0      /* Parameters: width x_offset */
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_COLOR_BUFFER_OFS1        0x000002c4      /* Parameters: height y_offset */
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_DIMS_0                   0x00000a00      /* Parameters: width x_offset */
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_DIMS_1                   0x00000a04      /* Parameters: height y_offset */
+#      define          NV30_TCL_PRIMITIVE_3D_SCISSOR_WIDTH_XPOS                0x000008c0      /* Parameters: width x_offset */
+#      define          NV30_TCL_PRIMITIVE_3D_SCISSOR_HEIGHT_YPOS               0x000008c4      /* Parameters: height y_offset */
+#      define          NV30_TCL_PRIMITIVE_3D_POINT_SPRITE                      0x00001ee8      /* Parameters: coord_replace r_mode enable */
+#      define          NV30_TCL_PRIMITIVE_3D_POINT_PARAMETER_A                 0x00001ec0
+#      define          NV30_TCL_PRIMITIVE_3D_POINT_PARAMETER_B                 0x00001ec4
+#      define          NV30_TCL_PRIMITIVE_3D_POINT_PARAMETER_C                 0x00001ec8
+#      define          NV30_TCL_PRIMITIVE_3D_POINT_PARAMETER_D                 0x00001ecc
+#      define          NV30_TCL_PRIMITIVE_3D_POINT_PARAMETER_E                 0x00001ed0
+#      define          NV30_TCL_PRIMITIVE_3D_POINT_PARAMETER_F                 0x00001ed4
+#      define          NV30_TCL_PRIMITIVE_3D_POINT_PARAMETER_G                 0x00001ed8
+#      define          NV30_TCL_PRIMITIVE_3D_POINT_PARAMETER_H                 0x00001edc
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_XFRM_OX                  0x00000a20
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_XFRM_OY                  0x00000a24
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_XFRM_NPF_DIV2            0x00000a28
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_XFRM_UNK0_0x0            0x00000a2c
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_XFRM_PX_DIV2             0x00000a30
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_XFRM_PY_DIV2             0x00000a34
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_XFRM_FMN_DIV2            0x00000a38
+#      define          NV30_TCL_PRIMITIVE_3D_VIEWPORT_XFRM_UNK1_0x0            0x00000a3c
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_OFFSET_FILL_ENABLE        0x00000a60
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_OFFSET_LINE_ENABLE        0x00000a64
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_OFFSET_POINT_ENABLE       0x00000a68
+#      define          NV30_TCL_PRIMITIVE_3D_DEPTH_FUNC                        0x00000a6c
+#      define          NV30_TCL_PRIMITIVE_3D_DEPTH_WRITE_ENABLE                0x00000a70
+#      define          NV30_TCL_PRIMITIVE_3D_DEPTH_TEST_ENABLE                 0x00000a74
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_OFFSET_FACTOR             0x00000a78
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_OFFSET_UNITS              0x00000a7c
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_INST0                   0x00000b80
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_INST1                   0x00000b84
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_INST2                   0x00000b88
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_INST3                   0x00000b8c
+#      define          NV30_TCL_PRIMITIVE_3D_OCC_QUERY_OR_COLOR_BUFF_ENABLE    0x000017c8
+#      define          NV30_TCL_PRIMITIVE_3D_STORE_RESULT                      0x00001800
+#      define          NV30_TCL_PRIMITIVE_3D_CLIP_PLANE_A(d)                   (0x00000e00 + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_CLIP_PLANE_B(d)                   (0x00000e04 + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_CLIP_PLANE_C(d)                   (0x00000e08 + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_CLIP_PLANE_D(d)                   (0x00000e0c + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT_A(d)     (0x00001000 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT_B(d)     (0x00001004 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT_C(d)     (0x00001008 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE_A(d)     (0x0000100c + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE_B(d)     (0x00001010 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE_C(d)     (0x00001014 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR_A(d)    (0x00001018 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR_B(d)    (0x0000101c + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR_C(d)    (0x00001020 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_CONSTANT_ATTENUATION(d)     (0x00001228 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_LINEAR_ATTENUATION(d)       (0x0000122c + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_QUADRATIC_ATTENUATION(d)    (0x00001230 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_SPOT_CUTOFF_A(d)            (0x00001200 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_SPOT_EXPONENT(d)            (0x00001204 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_SPOT_CUTOFF_B(d)            (0x00001208 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_SPOT_DIR_X(d)               (0x0000120c + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_SPOT_DIR_Y(d)               (0x00001210 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_SPOT_DIR_Z(d)               (0x00001214 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_SPOT_CUTOFF_C(d)            (0x00001218 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_POSITION_X(d)               (0x0000121c + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_POSITION_Y(d)               (0x00001220 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_LIGHT_POSITION_Z(d)               (0x00001224 + d * 0x0040)
+#      define          NV30_TCL_PRIMITIVE_3D_ENABLED_LIGHTS                    0x00001420      /* Parameters: light 7 light 6 light 5 light 4 light 3 light 2 light 1 light 0 */
+#      define          NV30_TCL_PRIMITIVE_3D_LINE_STIPPLE                      0x00001db4
+#      define          NV30_TCL_PRIMITIVE_3D_LINE_STIPPLE_PATTERN              0x00001db8      /* Parameters: factor pattern */
+#      define          NV30_TCL_PRIMITIVE_3D_BEGIN_END                         0x00001808
+#      define          NV30_TCL_PRIMITIVE_3D_CULL_FACE                         0x00001830
+#      define          NV30_TCL_PRIMITIVE_3D_FRONT_FACE                        0x00001834
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_SMOOTH_ENABLE             0x00001838
+#      define          NV30_TCL_PRIMITIVE_3D_CULL_FACE_ENABLE                  0x0000183c
+#      define          NV30_TCL_PRIMITIVE_3D_CLEAR_VALUE_DEPTH                 0x00001d8c
+#      define          NV30_TCL_PRIMITIVE_3D_CLEAR_VALUE_ARGB                  0x00001d90      /* Parameters: a r g b */
+#      define          NV30_TCL_PRIMITIVE_3D_CLEAR_WHICH_BUFFERS               0x00001d94
+#      define          NV30_TCL_PRIMITIVE_3D_DO_VERTICES                       0x00001dac
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_FROM_ID                 0x00001e9c
+#      define          NV30_TCL_PRIMITIVE_3D_VP_PROGRAM_START_ID               0x00001ea0
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_ID                0x00001efc
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P0_X              0x00001f00
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P0_Y              0x00001f04
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P0_Z              0x00001f08
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P0_W              0x00001f0c
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P1_X              0x00001f10
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P1_Y              0x00001f14
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P1_Z              0x00001f18
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P1_W              0x00001f1c
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P2_X              0x00001f20
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P2_Y              0x00001f24
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P2_Z              0x00001f28
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P2_W              0x00001f2c
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P3_X              0x00001f30
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P3_Y              0x00001f34
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P3_Z              0x00001f38
+#      define          NV30_TCL_PRIMITIVE_3D_VP_UPLOAD_CONST_P3_W              0x00001f3c
+#      define          NV30_TCL_PRIMITIVE_3D_VTX_ATTR_3X(d)                    (0x00001500 + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_VTX_ATTR_3Y(d)                    (0x00001504 + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_VTX_ATTR_3Z(d)                    (0x00001508 + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_VTX_ATTR_3W(d)                    (0x0000150c + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_VTX_ATTR_4X(d)                    (0x00001c00 + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_VTX_ATTR_4Y(d)                    (0x00001c04 + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_VTX_ATTR_4Z(d)                    (0x00001c08 + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_VTX_ATTR_4W(d)                    (0x00001c0c + d * 0x0010)
+#      define          NV30_TCL_PRIMITIVE_3D_VB_POINTER_ATTR(d)                (0x00001680 + d * 0x0004)       /* Parameters: enabled? offset */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_NOR_3I_XY                  0x00000a90      /* Parameters: y x */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_NOR_3I_Z                   0x00000a94      /* Parameters: z */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX0_2F_S                   0x000018c0
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX0_2F_T                   0x000018c4
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX1_2F_S                   0x000018c8
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX1_2F_T                   0x000018cc
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX2_2F_S                   0x000018d0
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX2_2F_T                   0x000018d4
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX3_2F_S                   0x000018d8
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX3_2F_T                   0x000018dc
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX0_2I                     0x00001920      /* Parameters: t s */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX1_2I                     0x00001924      /* Parameters: t s */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX2_2I                     0x00001928      /* Parameters: t s */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX3_2I                     0x0000192c      /* Parameters: t s */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_COL_4I                     0x0000194c      /* Parameters: a b g r */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_COL2_3I                    0x00001950      /* Parameters: a b g r */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX0_4I_ST                  0x000019c0      /* Parameters: t s */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX0_4I_RQ                  0x000019c4      /* Parameters: q r */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX1_4I_ST                  0x000019c8      /* Parameters: t s */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX1_4I_RQ                  0x000019cc      /* Parameters: q r */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX2_4I_ST                  0x000019d0      /* Parameters: t s */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX2_4I_RQ                  0x000019d4      /* Parameters: q r */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX3_4I_ST                  0x000019d8      /* Parameters: t s */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_TX3_4I_RQ                  0x000019dc      /* Parameters: q r */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_FOG_1F                     0x00001e54
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_UNK_0                      0x00001718
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR( d)                   (0x00001740 + d * 0x0004)
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR0_POS                  0x00001740      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR1_WGH                  0x00001744      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR2_NOR                  0x00001748      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR3_COL                  0x0000174c      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR4_COL2                 0x00001750      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR5_FOG                  0x00001754      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR6                      0x00001758      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR7                      0x0000175c      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR8_TX0                  0x00001760      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR9_TX1                  0x00001764      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR10_TX2                 0x00001768      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR11_TX3                 0x0000176c      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR12_TX4                 0x00001770      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR13_TX5                 0x00001774      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR14_TX6                 0x00001778      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR15_TX7                 0x0000177c      /* Parameters: stride fields type */
+#      define          NV30_TCL_PRIMITIVE_3D_FP_ACTIVE_PROGRAM                 0x000008e4
+#      define          NV30_TCL_PRIMITIVE_3D_TX_ADDRESS_UNIT(d)                (0x00001a00 + d * 0x0020)
+#      define          NV30_TCL_PRIMITIVE_3D_TX_FORMAT_UNIT(d)                 (0x00001a04 + d * 0x0020)       /* Parameters: mipmap type format ncomp cubic */
+#      define          NV30_TCL_PRIMITIVE_3D_TX_WRAP_UNIT(d)                   (0x00001a08 + d * 0x0020)       /* Parameters: wrap_s wrap_t wrap_r */
+#      define          NV30_TCL_PRIMITIVE_3D_TX_ENABLE_UNIT(d)                 (0x00001a0c + d * 0x0020)       /* Parameters: nv40_enable nv30_enable anisotropy */
+#      define          NV30_TCL_PRIMITIVE_3D_TX_SWIZZLE_UNIT(d)                (0x00001a10 + d * 0x0020)
+#      define          NV30_TCL_PRIMITIVE_3D_TX_FILTER_UNIT(d)                 (0x00001a14 + d * 0x0020)       /* Parameters: filter_min filter_mag */
+#      define          NV30_TCL_PRIMITIVE_3D_TX_XY_DIM_UNIT(d)                 (0x00001a18 + d * 0x0020)       /* Parameters: width height */
+#      define          NV30_TCL_PRIMITIVE_3D_TX_UNK07_UNIT(d)                  (0x00001a1c + d * 0x0020)
+#      define          NV30_TCL_PRIMITIVE_3D_TX_DEPTH_UNIT(d)                  (0x00001840 + d * 0x0004)       /* Parameters: depth NPOT pitch */
+#      define          NV30_TCL_PRIMITIVE_3D_VB_VERTEX_BATCH                   0x00001814      /* Parameters: count_vertices offset_vertices */
+#      define          NV30_TCL_PRIMITIVE_3D_VERTEX_DATA                       0x00001818
+#      define          NV30_TCL_PRIMITIVE_3D_LOGIC_OP_ENABLE                   0x00000374
+#      define          NV30_TCL_PRIMITIVE_3D_LOGIC_OP_OP                       0x00000378
+#      define          NV30_TCL_PRIMITIVE_3D_SET_DISPLAY_LIST_MEM_OFFSET       0x0000181c
+#      define          NV30_TCL_PRIMITIVE_3D_EXECUTE_DISPLAY_LIST              0x00001824      /* Parameters: length start offset */
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_MODE_FRONT                0x00001828
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_MODE_BACK                 0x0000182c
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_STIPPLE_ENABLE            0x0000147c
+#      define          NV30_TCL_PRIMITIVE_3D_POLYGON_STIPPLE_PATTERN( d)       (0x00001480 + d * 0x0004)
+#      define          NV30_TCL_PRIMITIVE_3D_SET_CLIPPING_PLANES               0x00001478
+#      define          NV30_TCL_PRIMITIVE_3D_VP_IN_REG                         0x00001ff0      /* Parameters: vertex pos weight normal primary color secondary color fogcoord texture coords 0 texture ccords 1 texture coords 2 texture coords 3 texture coords 4 texture coords 5 texture coords 6 texture coords 7 */
+#      define          NV30_TCL_PRIMITIVE_3D_VP_OUT_REG                        0x00001ff4      /* Parameters: primary color secondary color backface primary color backface secondary color fogcoord pointsize clip plane 0 clip plane 1 clip plane 2 clip plane 3 clip plane 4 clip plane 5 texture coords 0 texture coords 1 texture coords 2 texture coords 3 texture coords 4 texture coords 5 texture coords 6 texture coords 7 */
+
+/****************************************** 
+Object NV30_CLEAR_BUFFER used on: NV30 NV40 G70
+*/
+#define                        NV30_CLEAR_BUFFER                                       0x00000066
+#      define          NV30_CLEAR_BUFFER_SET_DMA_NOTIFY                        0x00000180
+#      define          NV30_CLEAR_BUFFER_SET_IMAGE_PATTERN                     0x00000188
+#      define          NV30_CLEAR_BUFFER_SET_RASTER_OP                         0x0000018c
+#      define          NV30_CLEAR_BUFFER_SET_CONTEXT_SURFACE_2D                0x00000198
+#      define          NV30_CLEAR_BUFFER_UNK002fc                              0x000002fc
+
+/****************************************** 
+Object NV_DMA_FROM_MEMORY used on: NV03 NV04 NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV_DMA_FROM_MEMORY                                      0x00000002
+
+/****************************************** 
+Object NV_DMA_TO_MEMORY used on: NV03 NV04 NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV_DMA_TO_MEMORY                                        0x00000003
+
+/****************************************** 
+Object NV_DMA_IN_MEMORY used on: NV03 NV04 NV10 NV15 NV20 NV30 NV40 G70
+*/
+#define                        NV_DMA_IN_MEMORY                                        0x0000003d
+
+/****************************************** 
+Object NvType0046 used on: NV04 
+*/
+#define                        NvType0046                                              0x00000046
+#      define          NvType0046_DMA_NOTIFY                                   0x00000180
+#      define          NvType0046_DMA_MEM_1                                    0x00000184
+#      define          NvType0046_DMA_MEM_2                                    0x00000188
+#      define          NvType0046_DMA_3                                        0x0000018c
+#      define          NvType0046_DMA_4                                        0x00000190
+#      define          NvType0046_OBJ_5                                        0x00000194
+#      define          NvType0046_OBJ_6                                        0x00000198
+#      define          NvType0046_PITCH1                                       0x00000304
+#      define          NvType0046_PITCH2                                       0x0000030c
+#      define          NvType0046_SIZE                                         0x00000340      /* Parameters: width height */
+#      define          NvType0046_WIDTH                                        0x00000344      /* Parameters: visible_width blank_width */
+#      define          NvType0046_HSYNC                                        0x00000348      /* Parameters: hsync_start hsync_len */
+#      define          NvType0046_HEIGHT                                       0x0000034c      /* Parameters: visible_height blank_height */
+#      define          NvType0046_VSYNC                                        0x00000350      /* Parameters: vsync_start vsync_len */
+#      define          NvType0046_FULL_SIZE                                    0x00000354      /* Parameters: full_width full_height */
+#      define          NvType0046_PIXEL_CLK                                    0x00000358
+#      define          NvType0046_FLAGS                                        0x0000035c      /* Parameters: doublescan -hsync -vsync depth */
+
+/****************************************** 
+Object NvType0047 used on: NV04 
+*/
+#define                        NvType0047                                              0x00000047
+#      define          NvType0047_DMA_NOTIFY                                   0x00000180
+#      define          NvType0047_UNK19C                                       0x0000019c
+#      define          NvType0047_UNK1A0                                       0x000001a0
 
+/****************************************** 
+Object NvType0049 used on: NV04 
+*/
+#define                        NvType0049                                              0x00000049
+#      define          NvType0049_DMA_NOTIFY                                   0x00000180
+#      define          NvType0049_DMA_MEM_1                                    0x00000184
+#      define          NvType0049_DMA_MEM_2                                    0x00000188
 
+/****************************************** 
+Object NvType004D used on: NV04 
+*/
+#define                        NvType004D                                              0x0000004d
+#      define          NvType004D_DMA_NOTIFY                                   0x00000180
+#      define          NvType004D_DMA_MEM_1                                    0x00000184
+#      define          NvType004D_DMA_MEM_2                                    0x00000188
+#      define          NvType004D_DMA_MEM_3                                    0x0000018c
+#      define          NvType004D_DMA_MEM_4                                    0x00000190
 
+#endif /* _NOUVEAU_REG_H */
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.c b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
new file mode 100644 (file)
index 0000000..a2a29fe
--- /dev/null
@@ -0,0 +1,49 @@
+/**************************************************************************
+
+Copyright 2006 Stephane Marchesin
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+on the rights to use, copy, modify, merge, publish, distribute, sub
+license, and/or sell copies of the Software, and to permit persons to whom
+the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ERIC ANHOLT OR SILICON INTEGRATED SYSTEMS CORP 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.
+
+**************************************************************************/
+
+#include "nouveau_context.h"
+#include "nouveau_screen.h"
+#include "nouveau_object.h"
+
+static nouveauScreenPtr nouveauCreateScreen(__DRIscreenPrivate *sPriv)
+{
+       nouveauScreenPtr screen;
+       NOUVEAUDRIPtr dri_priv=(NOUVEAUDRIPtr)sPriv->pDevPriv;
+
+       screen->card=nouveau_card_lookup(dri_priv->device_id);
+}
+
+static GLboolean nouveauInitDriver(__DRIscreenPrivate *sPriv)
+{
+       sPriv->private = (void *) nouveauCreateScreen( sPriv );
+       if ( !sPriv->private ) {
+               nouveauDestroyScreen( sPriv );
+               return GL_FALSE;
+       }
+
+       return GL_TRUE;
+}
+
index f6959419c568266867207b5a46ab3ba053a43596..decdafa86d51e1e232277e7e3fac31469ffbe02f 100644 (file)
@@ -30,8 +30,11 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #include "xmlconfig.h"
 
+#include "nouveau_dri.h"
+#include "nouveau_card.h"
+
 typedef struct {
-       u_int32_t card_type;
+       nouveau_card* card;
        u_int32_t bus_type;
        u_int32_t agp_mode;
 
index 417fd9fbccf8f42f2bca7145b396959d738ac187..85b5eae49e9507177f9d1a1ebdf9e2344d5e4620 100644 (file)
@@ -26,7 +26,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #include "nouveau_context.h"
 #include "nouveau_state.h"
-#include "nouveau_ioctl.h"
 #include "nouveau_swtcl.h"
 #include "nouveau_fifo.h"
 
index 7c7ba7374bb7961e85ade45127dc18e25a02cf4e..746b0fac8c09e8757c4d3d37d1e3d155febe6815 100644 (file)
@@ -81,7 +81,7 @@ void nouveauFallback(struct nouveau_context *nmesa, GLuint bit, GLboolean mode)
        if (mode) {
                nmesa->Fallback |= bit;
                if (oldfallback == 0) {
-                       if (nmesa->screen->card_type<NV_10) {
+                       if (nmesa->screen->card->type<NV_10) {
                                //nv03FinishPrimitive(nmesa);
                        } else {
                                nv10FinishPrimitive(nmesa);
@@ -96,7 +96,7 @@ void nouveauFallback(struct nouveau_context *nmesa, GLuint bit, GLboolean mode)
                if (oldfallback == bit) {
                        _swrast_flush( ctx );
 
-                       if (nmesa->screen->card_type<NV_10) {
+                       if (nmesa->screen->card->type<NV_10) {
                                //nv03TriInitFunctions(ctx);
                        } else {
                                nv10TriInitFunctions(ctx);
index 34546cc23436bb95968ae814d9b815791a4bbaca..79ee29cfa565a1b4d35b2457a3627514c6cf704a 100644 (file)
 #include "nv10_swtcl.h"
 #include "nouveau_context.h"
 #include "nouveau_span.h"
-#include "nouveau_ioctl.h"
 #include "nouveau_reg.h"
 #include "nouveau_tex.h"
 #include "nouveau_fifo.h"
 #include "nouveau_msg.h"
-
-/* XXX hack for now */
-#define channel 1
+#include "nouveau_object.h"
 
 static void nv10RasterPrimitive( GLcontext *ctx, GLenum rprim, GLuint hwprim );
 static void nv10RenderPrimitive( GLcontext *ctx, GLenum prim );
@@ -76,29 +73,31 @@ static void nv10ResetLineStipple( GLcontext *ctx );
 
 static inline void nv10StartPrimitive(struct nouveau_context* nmesa)
 {
-       if (nmesa->screen->card_type==NV_10)
-               BEGIN_RING_SIZE(channel,NV10_PRIMITIVE,1);
-       else if (nmesa->screen->card_type==NV_20)
-               BEGIN_RING_SIZE(channel,NV20_PRIMITIVE,1);
+       if (nmesa->screen->card->type==NV_10)
+               BEGIN_RING_SIZE(NvSub3D,NV10_TCL_PRIMITIVE_3D_BEGIN_END,1);
+       else if (nmesa->screen->card->type==NV_20)
+               BEGIN_RING_SIZE(NvSub3D,NV20_TCL_PRIMITIVE_3D_BEGIN_END,1);
        else
-               BEGIN_RING_SIZE(channel,NV30_PRIMITIVE,1);
+               BEGIN_RING_SIZE(NvSub3D,NV30_TCL_PRIMITIVE_3D_BEGIN_END,1);
        OUT_RING(nmesa->current_primitive);
 
-       if (nmesa->screen->card_type==NV_10)
-               BEGIN_RING_PRIM(channel,NV10_BEGIN_VERTICES,NOUVEAU_MIN_PRIM_SIZE);
+       if (nmesa->screen->card->type==NV_10)
+               BEGIN_RING_PRIM(NvSub3D,NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_DATA,NOUVEAU_MIN_PRIM_SIZE);
+       else if (nmesa->screen->card->type==NV_20)
+               BEGIN_RING_PRIM(NvSub3D,NV20_TCL_PRIMITIVE_3D_VERTEX_DATA,NOUVEAU_MIN_PRIM_SIZE);
        else
-               BEGIN_RING_PRIM(channel,NV20_BEGIN_VERTICES,NOUVEAU_MIN_PRIM_SIZE);
+               BEGIN_RING_PRIM(NvSub3D,NV30_TCL_PRIMITIVE_3D_VERTEX_DATA,NOUVEAU_MIN_PRIM_SIZE);
 }
 
 inline void nv10FinishPrimitive(struct nouveau_context *nmesa)
 {
        FINISH_RING_PRIM();
-       if (nmesa->screen->card_type==NV_10)
-               BEGIN_RING_SIZE(channel,NV10_PRIMITIVE,1);
-       else if (nmesa->screen->card_type==NV_20)
-               BEGIN_RING_SIZE(channel,NV20_PRIMITIVE,1);
+       if (nmesa->screen->card->type==NV_10)
+               BEGIN_RING_SIZE(NvSub3D,NV10_TCL_PRIMITIVE_3D_BEGIN_END,1);
+       else if (nmesa->screen->card->type==NV_20)
+               BEGIN_RING_SIZE(NvSub3D,NV20_TCL_PRIMITIVE_3D_BEGIN_END,1);
        else
-               BEGIN_RING_SIZE(channel,NV30_PRIMITIVE,1);
+               BEGIN_RING_SIZE(NvSub3D,NV30_TCL_PRIMITIVE_3D_BEGIN_END,1);
        OUT_RING(0x0);
        FIRE_RING();
 }
@@ -700,15 +699,17 @@ static inline void nv10OutputVertexFormat(struct nouveau_context* nmesa, GLuint
        /* 
         * Tell the hardware about the vertex format
         */
-       if (nmesa->screen->card_type==NV_10) {
+       if (nmesa->screen->card->type==NV_10) {
                int size;
 
+#define NV_VERTEX_ATTRIBUTE_TYPE_FLOAT 2
+
 #define NV10_SET_VERTEX_ATTRIB(i,j) \
        do {    \
                size = attr_size[j] << 4;       \
                size |= (attr_size[j]*4) << 8;  \
-               size |= NV20_VERTEX_ATTRIBUTE_TYPE_FLOAT;       \
-               BEGIN_RING_SIZE(channel, NV10_VERTEX_ATTRIBUTE(i),1);   \
+               size |= NV_VERTEX_ATTRIBUTE_TYPE_FLOAT; \
+               BEGIN_RING_SIZE(NvSub3D, NV10_TCL_PRIMITIVE_3D_VERTEX_ATTR(i),1);       \
                OUT_RING(size); \
        } while (0)
 
@@ -721,27 +722,27 @@ static inline void nv10OutputVertexFormat(struct nouveau_context* nmesa, GLuint
                NV10_SET_VERTEX_ATTRIB(6, _TNL_ATTRIB_WEIGHT);
                NV10_SET_VERTEX_ATTRIB(7, _TNL_ATTRIB_FOG);
 
-               BEGIN_RING_SIZE(channel, NV10_VERTEX_SET_FORMAT,1);
+               BEGIN_RING_SIZE(NvSub3D, NV10_TCL_PRIMITIVE_3D_VERTEX_ARRAY_VALIDATE,1);
                OUT_RING(0);
-       } else if (nmesa->screen->card_type==NV_20) {
+       } else if (nmesa->screen->card->type==NV_20) {
                for(i=0;i<16;i++)
                {
                        int size=attr_size[i];
-                       BEGIN_RING_SIZE(channel,NV20_VERTEX_ATTRIBUTE(i),1);
-                       OUT_RING(NV20_VERTEX_ATTRIBUTE_TYPE_FLOAT|(size*0x10));
+                       BEGIN_RING_SIZE(NvSub3D,NV20_TCL_PRIMITIVE_3D_VERTEX_ATTR(i),1);
+                       OUT_RING(NV_VERTEX_ATTRIBUTE_TYPE_FLOAT|(size*0x10));
                }
        } else {
-               BEGIN_RING_SIZE(channel,NV30_VERTEX_ATTRIBUTES,slots);
+               BEGIN_RING_SIZE(NvSub3D,NV30_TCL_PRIMITIVE_3D_VERTEX_ATTR0_POS,slots);
                for(i=0;i<slots;i++)
                {
                        int size=attr_size[i];
-                       OUT_RING(NV20_VERTEX_ATTRIBUTE_TYPE_FLOAT|(size*0x10));
+                       OUT_RING(NV_VERTEX_ATTRIBUTE_TYPE_FLOAT|(size*0x10));
                }
-               BEGIN_RING_SIZE(channel,NV30_UNKNOWN_0,1);
+               BEGIN_RING_SIZE(NvSub3D,NV30_TCL_PRIMITIVE_3D_VERTEX_UNK_0,1);
                OUT_RING(0);
-               BEGIN_RING_SIZE(channel,NV30_UNKNOWN_0,1);
+               BEGIN_RING_SIZE(NvSub3D,NV30_TCL_PRIMITIVE_3D_VERTEX_UNK_0,1);
                OUT_RING(0);
-               BEGIN_RING_SIZE(channel,NV30_UNKNOWN_0,1);
+               BEGIN_RING_SIZE(NvSub3D,NV30_TCL_PRIMITIVE_3D_VERTEX_UNK_0,1);
                OUT_RING(0);
        }
 }