nvfx: switch to rules-ng-ng register headers
authorLuca Barbieri <luca@luca-barbieri.com>
Sun, 5 Sep 2010 08:10:09 +0000 (10:10 +0200)
committerLuca Barbieri <luca@luca-barbieri.com>
Sun, 5 Sep 2010 15:52:26 +0000 (17:52 +0200)
This is the new register generation toolkit in use by nouveau.

As far as I know, this is the best register description toolkit in
existence, and you should use it too for your hardware :)

Thanks to Marcin Koƛcielnicki for inventing it and performing
invaluable reverse engineering work of nVidia chips.

18 files changed:
src/gallium/drivers/nouveau/nv_object.xml.h [new file with mode: 0644]
src/gallium/drivers/nvfx/nv30-40_3d.xml.h [new file with mode: 0644]
src/gallium/drivers/nvfx/nv30_fragtex.c
src/gallium/drivers/nvfx/nv40_fragtex.c
src/gallium/drivers/nvfx/nvfx_context.h
src/gallium/drivers/nvfx/nvfx_draw.c
src/gallium/drivers/nvfx/nvfx_fragprog.c
src/gallium/drivers/nvfx/nvfx_fragtex.c
src/gallium/drivers/nvfx/nvfx_push.c
src/gallium/drivers/nvfx/nvfx_query.c
src/gallium/drivers/nvfx/nvfx_screen.c
src/gallium/drivers/nvfx/nvfx_state.c
src/gallium/drivers/nvfx/nvfx_state_emit.c
src/gallium/drivers/nvfx/nvfx_state_fb.c
src/gallium/drivers/nvfx/nvfx_surface.c
src/gallium/drivers/nvfx/nvfx_tex.h
src/gallium/drivers/nvfx/nvfx_vbo.c
src/gallium/drivers/nvfx/nvfx_vertprog.c

diff --git a/src/gallium/drivers/nouveau/nv_object.xml.h b/src/gallium/drivers/nouveau/nv_object.xml.h
new file mode 100644 (file)
index 0000000..cb7653c
--- /dev/null
@@ -0,0 +1,231 @@
+#ifndef NV_OBJECT_XML
+#define NV_OBJECT_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv30-40_3d.xml (  31709 bytes, from 2010-09-05 07:53:14)
+- copyright.xml  (   6503 bytes, from 2010-04-10 23:15:50)
+- nv_3ddefs.xml  (  15193 bytes, from 2010-09-05 07:50:15)
+- nv_defs.xml    (   4437 bytes, from 2010-08-05 19:38:53)
+- nv_object.xml  (  10424 bytes, from 2010-08-05 19:38:53)
+- nvchipsets.xml (   2824 bytes, from 2010-08-05 19:38:53)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro, curro_, currojerez)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Koƛcielnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <mandin.patrice@orange.fr> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+#define NV01_ROOT                                              0x00000001
+#define NV01_CONTEXT_DMA                                       0x00000002
+#define NV01_DEVICE                                            0x00000003
+#define NV01_TIMER                                             0x00000004
+#define NV01_NULL                                              0x00000030
+#define NV01_MEMORY_LOCAL_BANKED                               0x0000003d
+#define NV01_MAPPING_SYSTEM                                    0x0000003e
+#define NV03_MEMORY_LOCAL_CURSOR                               0x0000003f
+#define NV01_MEMORY_LOCAL_LINEAR                               0x00000040
+#define NV01_MAPPING_LOCAL                                     0x00000041
+#define NV03_VIDEO_LUT_CURSOR_DAC                              0x00000046
+#define NV03_CHANNEL_PIO                                       0x0000006a
+#define NV03_CHANNEL_DMA                                       0x0000006b
+#define NV10_VIDEO_DISPLAY                                     0x0000007c
+#define NV01_CONTEXT_BETA1                                     0x00000012
+#define NV04_BETA_SOLID                                                0x00000072
+#define NV01_CONTEXT_COLOR_KEY                                 0x00000017
+#define NV04_CONTEXT_COLOR_KEY                                 0x00000057
+#define NV01_CONTEXT_PATTERN                                   0x00000018
+#define NV01_CONTEXT_CLIP_RECTANGLE                            0x00000019
+#define NV03_CONTEXT_ROP                                       0x00000043
+#define NV04_IMAGE_PATTERN                                     0x00000044
+#define NV01_RENDER_SOLID_LINE                                 0x0000001c
+#define NV04_RENDER_SOLID_LINE                                 0x0000005c
+#define NV30_RENDER_SOLID_LINE                                 0x0000035c
+#define NV40_RENDER_SOLID_LINE                                 0x0000305c
+#define NV01_RENDER_SOLID_TRIANGLE                             0x0000001d
+#define NV04_RENDER_SOLID_TRIANGLE                             0x0000005d
+#define NV01_RENDER_SOLID_RECTANGLE                            0x0000001e
+#define NV04_RENDER_SOLID_RECTANGLE                            0x0000005e
+#define NV01_IMAGE_BLIT                                                0x0000001f
+#define NV04_IMAGE_BLIT                                                0x0000005f
+#define NV11_IMAGE_BLIT                                                0x0000009f
+#define NV01_IMAGE_FROM_CPU                                    0x00000021
+#define NV04_IMAGE_FROM_CPU                                    0x00000061
+#define NV05_IMAGE_FROM_CPU                                    0x00000065
+#define NV10_IMAGE_FROM_CPU                                    0x0000008a
+#define NV30_IMAGE_FROM_CPU                                    0x0000038a
+#define NV40_IMAGE_FROM_CPU                                    0x0000308a
+#define NV03_STRETCHED_IMAGE_FROM_CPU                          0x00000036
+#define NV04_STRETCHED_IMAGE_FROM_CPU                          0x00000076
+#define NV05_STRETCHED_IMAGE_FROM_CPU                          0x00000066
+#define NV30_STRETCHED_IMAGE_FROM_CPU                          0x00000366
+#define NV40_STRETCHED_IMAGE_FROM_CPU                          0x00003066
+#define NV03_SCALED_IMAGE_FROM_MEMORY                          0x00000037
+#define NV04_SCALED_IMAGE_FROM_MEMORY                          0x00000077
+#define NV05_SCALED_IMAGE_FROM_MEMORY                          0x00000063
+#define NV10_SCALED_IMAGE_FROM_MEMORY                          0x00000089
+#define NV30_SCALED_IMAGE_FROM_MEMORY                          0x00000389
+#define NV40_SCALED_IMAGE_FROM_MEMORY                          0x00003089
+#define NV50_SCALED_IMAGE_FROM_MEMORY                          0x00005089
+#define NV04_DVD_SUBPICTURE                                    0x00000038
+#define NV10_DVD_SUBPICTURE                                    0x00000088
+#define NV03_GDI_RECTANGLE_TEXT                                        0x0000004b
+#define NV04_GDI_RECTANGLE_TEXT                                        0x0000004a
+#define NV04_SWIZZLED_SURFACE                                  0x00000052
+#define NV11_SWIZZLED_SURFACE                                  0x0000009e
+#define NV30_SWIZZLED_SURFACE                                  0x0000039e
+#define NV40_SWIZZLED_SURFACE                                  0x0000309e
+#define NV03_CONTEXT_SURFACE_DST                               0x00000058
+#define NV03_CONTEXT_SURFACE_SRC                               0x00000059
+#define NV04_CONTEXT_SURFACES_2D                               0x00000042
+#define NV10_CONTEXT_SURFACES_2D                               0x00000062
+#define NV30_CONTEXT_SURFACES_2D                               0x00000362
+#define NV40_CONTEXT_SURFACES_2D                               0x00003062
+#define NV50_CONTEXT_SURFACES_2D                               0x00005062
+#define NV04_INDEXED_IMAGE_FROM_CPU                            0x00000060
+#define NV05_INDEXED_IMAGE_FROM_CPU                            0x00000064
+#define NV30_INDEXED_IMAGE_FROM_CPU                            0x00000364
+#define NV40_INDEXED_IMAGE_FROM_CPU                            0x00003064
+#define NV10_TEXTURE_FROM_CPU                                  0x0000007b
+#define NV30_TEXTURE_FROM_CPU                                  0x0000037b
+#define NV40_TEXTURE_FROM_CPU                                  0x0000307b
+#define NV04_M2MF                                              0x00000039
+#define NV50_M2MF                                              0x00005039
+#define NVC0_M2MF                                              0x00009039
+#define NV03_TEXTURED_TRIANGLE                                 0x00000048
+#define NV04_TEXTURED_TRIANGLE                                 0x00000054
+#define NV10_TEXTURED_TRIANGLE                                 0x00000094
+#define NV04_MULTITEX_TRIANGLE                                 0x00000055
+#define NV10_MULTITEX_TRIANGLE                                 0x00000095
+#define NV03_CONTEXT_SURFACE_COLOR                             0x0000005a
+#define NV03_CONTEXT_SURFACE_ZETA                              0x0000005b
+#define NV04_CONTEXT_SURFACES_3D                               0x00000053
+#define NV10_CONTEXT_SURFACES_3D                               0x00000093
+#define NV10_3D                                                        0x00000056
+#define NV11_3D                                                        0x00000096
+#define NV17_3D                                                        0x00000099
+#define NV20_3D                                                        0x00000097
+#define NV25_3D                                                        0x00000597
+#define NV30_3D                                                        0x00000397
+#define NV35_3D                                                        0x00000497
+#define NV34_3D                                                        0x00000697
+#define NV40_3D                                                        0x00004097
+#define NV44_3D                                                        0x00004497
+#define NV50_3D                                                        0x00005097
+#define NV84_3D                                                        0x00008297
+#define NVA0_3D                                                        0x00008397
+#define NVA3_3D                                                        0x00008597
+#define NVAF_3D                                                        0x00008697
+#define NVC0_3D                                                        0x00009097
+#define NV50_2D                                                        0x0000502d
+#define NVC0_2D                                                        0x0000902d
+#define NV50_COMPUTE                                           0x000050c0
+#define NVA3_COMPUTE                                           0x000085c0
+#define NVC0_COMPUTE                                           0x000090c0
+#define NV01_SUBCHAN__SIZE                                     0x00002000
+#define NV01_SUBCHAN                                           0x00000000
+
+#define NV01_SUBCHAN_OBJECT                                    0x00000000
+
+
+#define NV84_SUBCHAN_QUERY_ADDRESS_HIGH                                0x00000010
+
+#define NV84_SUBCHAN_QUERY_ADDRESS_LOW                         0x00000014
+
+#define NV84_SUBCHAN_QUERY_COUNTER                             0x00000018
+
+#define NV84_SUBCHAN_QUERY_GET                                 0x0000001c
+
+#define NV84_SUBCHAN_UNK20                                     0x00000020
+
+#define NV84_SUBCHAN_UNK24                                     0x00000024
+
+#define NV10_SUBCHAN_REF_CNT                                   0x00000050
+
+
+#define NV11_SUBCHAN_DMA_SEMAPHORE                             0x00000060
+
+#define NV11_SUBCHAN_SEMAPHORE_OFFSET                          0x00000064
+
+#define NV11_SUBCHAN_SEMAPHORE_ACQUIRE                         0x00000068
+
+#define NV11_SUBCHAN_SEMAPHORE_RELEASE                         0x0000006c
+
+#define NV50_SUBCHAN_UNK80                                     0x00000080
+
+#define NV01_GRAPH                                             0x00000000
+
+#define NV04_GRAPH_NOP                                         0x00000100
+
+#define NV01_GRAPH_NOTIFY                                      0x00000104
+#define NV01_GRAPH_NOTIFY_WRITE                                        0x00000000
+#define NV01_GRAPH_NOTIFY_WRITE_AND_AWAKEN                     0x00000001
+
+#define NV50_GRAPH_WAIT_FOR_IDLE                               0x00000110
+
+#define NVA3_GRAPH_UNK0120                                     0x00000120
+
+#define NVA3_GRAPH_UNK0124                                     0x00000124
+
+#define NV40_GRAPH_PM_TRIGGER                                  0x00000140
+
+
+#endif /* NV_OBJECT_XML */
diff --git a/src/gallium/drivers/nvfx/nv30-40_3d.xml.h b/src/gallium/drivers/nvfx/nv30-40_3d.xml.h
new file mode 100644 (file)
index 0000000..a705a6b
--- /dev/null
@@ -0,0 +1,2022 @@
+#ifndef NV30_40_3D_XML
+#define NV30_40_3D_XML
+
+/* Autogenerated file, DO NOT EDIT manually!
+
+This file was generated by the rules-ng-ng headergen tool in this git repository:
+http://0x04.net/cgit/index.cgi/rules-ng-ng
+git clone git://0x04.net/rules-ng-ng
+
+The rules-ng-ng source files this header was generated from are:
+- nv30-40_3d.xml (  31709 bytes, from 2010-09-05 08:00:50)
+- copyright.xml  (   6503 bytes, from 2010-04-10 23:15:50)
+- nv_3ddefs.xml  (  15391 bytes, from 2010-09-05 08:00:46)
+- nv_defs.xml    (   4437 bytes, from 2010-08-05 19:38:53)
+- nv_object.xml  (  10424 bytes, from 2010-08-05 19:38:53)
+- nvchipsets.xml (   2824 bytes, from 2010-08-05 19:38:53)
+
+Copyright (C) 2006-2010 by the following authors:
+- Artur Huillet <arthur.huillet@free.fr> (ahuillet)
+- Ben Skeggs (darktama, darktama_)
+- B. R. <koala_br@users.sourceforge.net> (koala_br)
+- Carlos Martin <carlosmn@users.sf.net> (carlosmn)
+- Christoph Bumiller <e0425955@student.tuwien.ac.at> (calim, chrisbmr)
+- Dawid Gajownik <gajownik@users.sf.net> (gajownik)
+- Dmitry Baryshkov
+- Dmitry Eremin-Solenikov <lumag@users.sf.net> (lumag)
+- EdB <edb_@users.sf.net> (edb_)
+- Erik Waling <erikwailing@users.sf.net> (erikwaling)
+- Francisco Jerez <currojerez@riseup.net> (curro, curro_, currojerez)
+- imirkin <imirkin@users.sf.net> (imirkin)
+- jb17bsome <jb17bsome@bellsouth.net> (jb17bsome)
+- Jeremy Kolb <kjeremy@users.sf.net> (kjeremy)
+- Laurent Carlier <lordheavym@gmail.com> (lordheavy)
+- Luca Barbieri <luca@luca-barbieri.com> (lb, lb1)
+- Maarten Maathuis <madman2003@gmail.com> (stillunknown)
+- Marcin Koƛcielnicki <koriakin@0x04.net> (mwk, koriakin)
+- Mark Carey <mark.carey@gmail.com> (careym)
+- Matthieu Castet <matthieu.castet@parrot.com> (mat-c)
+- nvidiaman <nvidiaman@users.sf.net> (nvidiaman)
+- Patrice Mandin <mandin.patrice@orange.fr> (pmandin, pmdata)
+- Pekka Paalanen <pq@iki.fi> (pq, ppaalanen)
+- Peter Popov <ironpeter@users.sf.net> (ironpeter)
+- Richard Hughes <hughsient@users.sf.net> (hughsient)
+- Rudi Cilibrasi <cilibrar@users.sf.net> (cilibrar)
+- Serge Martin
+- Simon Raffeiner
+- Stephane Loeuillet <leroutier@users.sf.net> (leroutier)
+- Stephane Marchesin <stephane.marchesin@gmail.com> (marcheu)
+- sturmflut <sturmflut@users.sf.net> (sturmflut)
+- Sylvain Munaut <tnt@246tNt.com>
+- Victor Stinner <victor.stinner@haypocalc.com> (haypo)
+- Wladmir van der Laan <laanwj@gmail.com> (miathan6)
+- Younes Manton <younes.m@gmail.com> (ymanton)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+
+#define NV30_3D_DMA_NOTIFY                                     0x00000180
+
+#define NV30_3D_DMA_TEXTURE0                                   0x00000184
+
+#define NV30_3D_DMA_TEXTURE1                                   0x00000188
+
+#define NV30_3D_DMA_COLOR1                                     0x0000018c
+
+#define NV30_3D_DMA_UNK190                                     0x00000190
+
+#define NV30_3D_DMA_COLOR0                                     0x00000194
+
+#define NV30_3D_DMA_ZETA                                       0x00000198
+
+#define NV30_3D_DMA_VTXBUF0                                    0x0000019c
+
+#define NV30_3D_DMA_VTXBUF1                                    0x000001a0
+
+#define NV30_3D_DMA_FENCE                                      0x000001a4
+
+#define NV30_3D_DMA_QUERY                                      0x000001a8
+
+#define NV30_3D_DMA_UNK1AC                                     0x000001ac
+
+#define NV30_3D_DMA_UNK1B0                                     0x000001b0
+
+#define NV40_3D_DMA_COLOR2                                     0x000001b4
+
+#define NV40_3D_DMA_COLOR3                                     0x000001b8
+
+#define NV30_3D_RT_HORIZ                                       0x00000200
+#define NV30_3D_RT_HORIZ_X__MASK                               0x0000ffff
+#define NV30_3D_RT_HORIZ_X__SHIFT                              0
+#define NV30_3D_RT_HORIZ_W__MASK                               0xffff0000
+#define NV30_3D_RT_HORIZ_W__SHIFT                              16
+
+#define NV30_3D_RT_VERT                                                0x00000204
+#define NV30_3D_RT_VERT_Y__MASK                                        0x0000ffff
+#define NV30_3D_RT_VERT_Y__SHIFT                               0
+#define NV30_3D_RT_VERT_H__MASK                                        0xffff0000
+#define NV30_3D_RT_VERT_H__SHIFT                               16
+
+#define NV30_3D_RT_FORMAT                                      0x00000208
+#define NV30_3D_RT_FORMAT_COLOR__MASK                          0x0000001f
+#define NV30_3D_RT_FORMAT_COLOR__SHIFT                         0
+#define NV30_3D_RT_FORMAT_COLOR_R5G6B5                         0x00000003
+#define NV30_3D_RT_FORMAT_COLOR_X8R8G8B8                       0x00000005
+#define NV30_3D_RT_FORMAT_COLOR_A8R8G8B8                       0x00000008
+#define NV30_3D_RT_FORMAT_COLOR_B8                             0x00000009
+#define NV30_3D_RT_FORMAT_COLOR_A16B16G16R16_FLOAT             0x0000000b
+#define NV30_3D_RT_FORMAT_COLOR_A32B32G32R32_FLOAT             0x0000000c
+#define NV30_3D_RT_FORMAT_COLOR_R32_FLOAT                      0x0000000d
+#define NV30_3D_RT_FORMAT_COLOR_UNK0D                          0x0000000d
+#define NV30_3D_RT_FORMAT_COLOR_X8B8G8R8                       0x0000000f
+#define NV30_3D_RT_FORMAT_COLOR_A8B8G8R8                       0x00000010
+#define NV30_3D_RT_FORMAT_ZETA__MASK                           0x000000e0
+#define NV30_3D_RT_FORMAT_ZETA__SHIFT                          5
+#define NV30_3D_RT_FORMAT_ZETA_Z16                             0x00000020
+#define NV30_3D_RT_FORMAT_ZETA_Z24S8                           0x00000040
+#define NV30_3D_RT_FORMAT_TYPE__MASK                           0x00000f00
+#define NV30_3D_RT_FORMAT_TYPE__SHIFT                          8
+#define NV30_3D_RT_FORMAT_TYPE_LINEAR                          0x00000100
+#define NV30_3D_RT_FORMAT_TYPE_SWIZZLED                                0x00000200
+#define NV30_3D_RT_FORMAT_LOG2_WIDTH__MASK                     0x00ff0000
+#define NV30_3D_RT_FORMAT_LOG2_WIDTH__SHIFT                    16
+#define NV30_3D_RT_FORMAT_LOG2_HEIGHT__MASK                    0xff000000
+#define NV30_3D_RT_FORMAT_LOG2_HEIGHT__SHIFT                   24
+
+#define NV30_3D_COLOR0_PITCH                                   0x0000020c
+#define NV30_3D_COLOR0_PITCH_COLOR0__MASK                      0x0000ffff
+#define NV30_3D_COLOR0_PITCH_COLOR0__SHIFT                     0
+#define NV30_3D_COLOR0_PITCH_ZETA__MASK                                0xffff0000
+#define NV30_3D_COLOR0_PITCH_ZETA__SHIFT                       16
+
+#define NV40_3D_COLOR0_PITCH                                   0x0000020c
+
+#define NV30_3D_COLOR0_OFFSET                                  0x00000210
+
+#define NV30_3D_ZETA_OFFSET                                    0x00000214
+
+#define NV30_3D_COLOR1_OFFSET                                  0x00000218
+
+#define NV30_3D_COLOR1_PITCH                                   0x0000021c
+
+#define NV30_3D_RT_ENABLE                                      0x00000220
+#define NV30_3D_RT_ENABLE_COLOR0                               0x00000001
+#define NV30_3D_RT_ENABLE_COLOR1                               0x00000002
+#define NV40_3D_RT_ENABLE_COLOR2                               0x00000004
+#define NV40_3D_RT_ENABLE_COLOR3                               0x00000008
+#define NV30_3D_RT_ENABLE_MRT                                  0x00000010
+
+#define NV40_3D_ZETA_PITCH                                     0x0000022c
+
+#define NV30_3D_LMA_DEPTH_PITCH                                        0x0000022c
+
+#define NV30_3D_LMA_DEPTH_OFFSET                               0x00000230
+
+#define NV30_3D_TEX_UNITS_ENABLE                               0x0000023c
+#define NV30_3D_TEX_UNITS_ENABLE_TX0                           0x00000001
+#define NV30_3D_TEX_UNITS_ENABLE_TX1                           0x00000002
+#define NV30_3D_TEX_UNITS_ENABLE_TX2                           0x00000004
+#define NV30_3D_TEX_UNITS_ENABLE_TX3                           0x00000008
+#define NV30_3D_TEX_UNITS_ENABLE_TX4                           0x00000010
+#define NV30_3D_TEX_UNITS_ENABLE_TX5                           0x00000020
+#define NV30_3D_TEX_UNITS_ENABLE_TX6                           0x00000040
+#define NV30_3D_TEX_UNITS_ENABLE_TX7                           0x00000080
+
+#define NV30_3D_TEX_MATRIX_ENABLE(i0)                         (0x00000240 + 0x4*(i0))
+#define NV30_3D_TEX_MATRIX_ENABLE__ESIZE                       0x00000004
+#define NV30_3D_TEX_MATRIX_ENABLE__LEN                         0x00000008
+
+#define NV40_3D_COLOR2_PITCH                                   0x00000280
+
+#define NV40_3D_COLOR3_PITCH                                   0x00000284
+
+#define NV40_3D_COLOR2_OFFSET                                  0x00000288
+
+#define NV40_3D_COLOR3_OFFSET                                  0x0000028c
+
+#define NV30_3D_VIEWPORT_TX_ORIGIN                             0x000002b8
+#define NV30_3D_VIEWPORT_TX_ORIGIN_X__MASK                     0x0000ffff
+#define NV30_3D_VIEWPORT_TX_ORIGIN_X__SHIFT                    0
+#define NV30_3D_VIEWPORT_TX_ORIGIN_Y__MASK                     0xffff0000
+#define NV30_3D_VIEWPORT_TX_ORIGIN_Y__SHIFT                    16
+
+#define NV30_3D_VIEWPORT_CLIP_MODE                             0x000002bc
+
+#define NV30_3D_VIEWPORT_CLIP_HORIZ(i0)                               (0x000002c0 + 0x8*(i0))
+#define NV30_3D_VIEWPORT_CLIP_HORIZ__ESIZE                     0x00000008
+#define NV30_3D_VIEWPORT_CLIP_HORIZ__LEN                       0x00000008
+#define NV30_3D_VIEWPORT_CLIP_HORIZ_L__MASK                    0x0000ffff
+#define NV30_3D_VIEWPORT_CLIP_HORIZ_L__SHIFT                   0
+#define NV30_3D_VIEWPORT_CLIP_HORIZ_R__MASK                    0xffff0000
+#define NV30_3D_VIEWPORT_CLIP_HORIZ_R__SHIFT                   16
+
+#define NV30_3D_VIEWPORT_CLIP_VERT(i0)                        (0x000002c4 + 0x8*(i0))
+#define NV30_3D_VIEWPORT_CLIP_VERT__ESIZE                      0x00000008
+#define NV30_3D_VIEWPORT_CLIP_VERT__LEN                                0x00000008
+#define NV30_3D_VIEWPORT_CLIP_VERT_T__MASK                     0x0000ffff
+#define NV30_3D_VIEWPORT_CLIP_VERT_T__SHIFT                    0
+#define NV30_3D_VIEWPORT_CLIP_VERT_D__MASK                     0xffff0000
+#define NV30_3D_VIEWPORT_CLIP_VERT_D__SHIFT                    16
+
+#define NV30_3D_DITHER_ENABLE                                  0x00000300
+
+#define NV30_3D_ALPHA_FUNC_ENABLE                              0x00000304
+
+#define NV30_3D_ALPHA_FUNC_FUNC                                        0x00000308
+#define NV30_3D_ALPHA_FUNC_FUNC_NEVER                          0x00000200
+#define NV30_3D_ALPHA_FUNC_FUNC_LESS                           0x00000201
+#define NV30_3D_ALPHA_FUNC_FUNC_EQUAL                          0x00000202
+#define NV30_3D_ALPHA_FUNC_FUNC_LEQUAL                         0x00000203
+#define NV30_3D_ALPHA_FUNC_FUNC_GREATER                                0x00000204
+#define NV30_3D_ALPHA_FUNC_FUNC_NOTEQUAL                       0x00000205
+#define NV30_3D_ALPHA_FUNC_FUNC_GEQUAL                         0x00000206
+#define NV30_3D_ALPHA_FUNC_FUNC_ALWAYS                         0x00000207
+
+#define NV30_3D_ALPHA_FUNC_REF                                 0x0000030c
+
+#define NV30_3D_BLEND_FUNC_ENABLE                              0x00000310
+
+#define NV30_3D_BLEND_FUNC_SRC                                 0x00000314
+#define NV30_3D_BLEND_FUNC_SRC_RGB__MASK                       0x0000ffff
+#define NV30_3D_BLEND_FUNC_SRC_RGB__SHIFT                      0
+#define NV30_3D_BLEND_FUNC_SRC_RGB_ZERO                                0x00000000
+#define NV30_3D_BLEND_FUNC_SRC_RGB_ONE                         0x00000001
+#define NV30_3D_BLEND_FUNC_SRC_RGB_SRC_COLOR                   0x00000300
+#define NV30_3D_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_COLOR         0x00000301
+#define NV30_3D_BLEND_FUNC_SRC_RGB_SRC_ALPHA                   0x00000302
+#define NV30_3D_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_ALPHA         0x00000303
+#define NV30_3D_BLEND_FUNC_SRC_RGB_DST_ALPHA                   0x00000304
+#define NV30_3D_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_ALPHA         0x00000305
+#define NV30_3D_BLEND_FUNC_SRC_RGB_DST_COLOR                   0x00000306
+#define NV30_3D_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_COLOR         0x00000307
+#define NV30_3D_BLEND_FUNC_SRC_RGB_SRC_ALPHA_SATURATE          0x00000308
+#define NV30_3D_BLEND_FUNC_SRC_RGB_CONSTANT_COLOR              0x00008001
+#define NV30_3D_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_COLOR    0x00008002
+#define NV30_3D_BLEND_FUNC_SRC_RGB_CONSTANT_ALPHA              0x00008003
+#define NV30_3D_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_ALPHA    0x00008004
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA__MASK                     0xffff0000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA__SHIFT                    16
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_ZERO                      0x00000000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_ONE                       0x00010000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_SRC_COLOR                 0x03000000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC_COLOR       0x03010000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA                 0x03020000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC_ALPHA       0x03030000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_DST_ALPHA                 0x03040000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_DST_ALPHA       0x03050000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_DST_COLOR                 0x03060000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_DST_COLOR       0x03070000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA_SATURATE                0x03080000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_CONSTANT_COLOR            0x80010000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_CONSTANT_COLOR  0x80020000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_CONSTANT_ALPHA            0x80030000
+#define NV30_3D_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_CONSTANT_ALPHA  0x80040000
+
+#define NV30_3D_BLEND_FUNC_DST                                 0x00000318
+#define NV30_3D_BLEND_FUNC_DST_RGB__MASK                       0x0000ffff
+#define NV30_3D_BLEND_FUNC_DST_RGB__SHIFT                      0
+#define NV30_3D_BLEND_FUNC_DST_RGB_ZERO                                0x00000000
+#define NV30_3D_BLEND_FUNC_DST_RGB_ONE                         0x00000001
+#define NV30_3D_BLEND_FUNC_DST_RGB_SRC_COLOR                   0x00000300
+#define NV30_3D_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC_COLOR         0x00000301
+#define NV30_3D_BLEND_FUNC_DST_RGB_SRC_ALPHA                   0x00000302
+#define NV30_3D_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC_ALPHA         0x00000303
+#define NV30_3D_BLEND_FUNC_DST_RGB_DST_ALPHA                   0x00000304
+#define NV30_3D_BLEND_FUNC_DST_RGB_ONE_MINUS_DST_ALPHA         0x00000305
+#define NV30_3D_BLEND_FUNC_DST_RGB_DST_COLOR                   0x00000306
+#define NV30_3D_BLEND_FUNC_DST_RGB_ONE_MINUS_DST_COLOR         0x00000307
+#define NV30_3D_BLEND_FUNC_DST_RGB_SRC_ALPHA_SATURATE          0x00000308
+#define NV30_3D_BLEND_FUNC_DST_RGB_CONSTANT_COLOR              0x00008001
+#define NV30_3D_BLEND_FUNC_DST_RGB_ONE_MINUS_CONSTANT_COLOR    0x00008002
+#define NV30_3D_BLEND_FUNC_DST_RGB_CONSTANT_ALPHA              0x00008003
+#define NV30_3D_BLEND_FUNC_DST_RGB_ONE_MINUS_CONSTANT_ALPHA    0x00008004
+#define NV30_3D_BLEND_FUNC_DST_ALPHA__MASK                     0xffff0000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA__SHIFT                    16
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_ZERO                      0x00000000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_ONE                       0x00010000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_SRC_COLOR                 0x03000000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC_COLOR       0x03010000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_SRC_ALPHA                 0x03020000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC_ALPHA       0x03030000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_DST_ALPHA                 0x03040000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_ONE_MINUS_DST_ALPHA       0x03050000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_DST_COLOR                 0x03060000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_ONE_MINUS_DST_COLOR       0x03070000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_SRC_ALPHA_SATURATE                0x03080000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_CONSTANT_COLOR            0x80010000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_ONE_MINUS_CONSTANT_COLOR  0x80020000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_CONSTANT_ALPHA            0x80030000
+#define NV30_3D_BLEND_FUNC_DST_ALPHA_ONE_MINUS_CONSTANT_ALPHA  0x80040000
+
+#define NV30_3D_BLEND_COLOR                                    0x0000031c
+#define NV30_3D_BLEND_COLOR_B__MASK                            0x000000ff
+#define NV30_3D_BLEND_COLOR_B__SHIFT                           0
+#define NV30_3D_BLEND_COLOR_G__MASK                            0x0000ff00
+#define NV30_3D_BLEND_COLOR_G__SHIFT                           8
+#define NV30_3D_BLEND_COLOR_R__MASK                            0x00ff0000
+#define NV30_3D_BLEND_COLOR_R__SHIFT                           16
+#define NV30_3D_BLEND_COLOR_A__MASK                            0xff000000
+#define NV30_3D_BLEND_COLOR_A__SHIFT                           24
+
+#define NV30_3D_BLEND_EQUATION                                 0x00000320
+#define NV30_3D_BLEND_EQUATION_FUNC_ADD                                0x00008006
+#define NV30_3D_BLEND_EQUATION_MIN                             0x00008007
+#define NV30_3D_BLEND_EQUATION_MAX                             0x00008008
+#define NV30_3D_BLEND_EQUATION_FUNC_SUBTRACT                   0x0000800a
+#define NV30_3D_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT           0x0000800b
+
+#define NV40_3D_BLEND_EQUATION                                 0x00000320
+#define NV40_3D_BLEND_EQUATION_RGB__MASK                       0x0000ffff
+#define NV40_3D_BLEND_EQUATION_RGB__SHIFT                      0
+#define NV40_3D_BLEND_EQUATION_RGB_FUNC_ADD                    0x00008006
+#define NV40_3D_BLEND_EQUATION_RGB_MIN                         0x00008007
+#define NV40_3D_BLEND_EQUATION_RGB_MAX                         0x00008008
+#define NV40_3D_BLEND_EQUATION_RGB_FUNC_SUBTRACT               0x0000800a
+#define NV40_3D_BLEND_EQUATION_RGB_FUNC_REVERSE_SUBTRACT       0x0000800b
+#define NV40_3D_BLEND_EQUATION_ALPHA__MASK                     0xffff0000
+#define NV40_3D_BLEND_EQUATION_ALPHA__SHIFT                    16
+#define NV40_3D_BLEND_EQUATION_ALPHA_FUNC_ADD                  0x80060000
+#define NV40_3D_BLEND_EQUATION_ALPHA_MIN                       0x80070000
+#define NV40_3D_BLEND_EQUATION_ALPHA_MAX                       0x80080000
+#define NV40_3D_BLEND_EQUATION_ALPHA_FUNC_SUBTRACT             0x800a0000
+#define NV40_3D_BLEND_EQUATION_ALPHA_FUNC_REVERSE_SUBTRACT     0x800b0000
+
+#define NV30_3D_COLOR_MASK                                     0x00000324
+#define NV30_3D_COLOR_MASK_B                                   0x000000ff
+#define NV30_3D_COLOR_MASK_G                                   0x0000ff00
+#define NV30_3D_COLOR_MASK_R                                   0x00ff0000
+#define NV30_3D_COLOR_MASK_A                                   0xff000000
+
+#define NV30_3D_STENCIL(i0)                                   (0x00000328 + 0x20*(i0))
+#define NV30_3D_STENCIL__ESIZE                                 0x00000020
+#define NV30_3D_STENCIL__LEN                                   0x00000002
+
+#define NV30_3D_STENCIL_ENABLE(i0)                            (0x00000328 + 0x20*(i0))
+
+#define NV30_3D_STENCIL_MASK(i0)                              (0x0000032c + 0x20*(i0))
+
+#define NV30_3D_STENCIL_FUNC_FUNC(i0)                         (0x00000330 + 0x20*(i0))
+#define NV30_3D_STENCIL_FUNC_FUNC_NEVER                                0x00000200
+#define NV30_3D_STENCIL_FUNC_FUNC_LESS                         0x00000201
+#define NV30_3D_STENCIL_FUNC_FUNC_EQUAL                                0x00000202
+#define NV30_3D_STENCIL_FUNC_FUNC_LEQUAL                       0x00000203
+#define NV30_3D_STENCIL_FUNC_FUNC_GREATER                      0x00000204
+#define NV30_3D_STENCIL_FUNC_FUNC_NOTEQUAL                     0x00000205
+#define NV30_3D_STENCIL_FUNC_FUNC_GEQUAL                       0x00000206
+#define NV30_3D_STENCIL_FUNC_FUNC_ALWAYS                       0x00000207
+
+#define NV30_3D_STENCIL_FUNC_REF(i0)                          (0x00000334 + 0x20*(i0))
+
+#define NV30_3D_STENCIL_FUNC_MASK(i0)                         (0x00000338 + 0x20*(i0))
+
+#define NV30_3D_STENCIL_OP_FAIL(i0)                           (0x0000033c + 0x20*(i0))
+#define NV30_3D_STENCIL_OP_FAIL_ZERO                           0x00000000
+#define NV30_3D_STENCIL_OP_FAIL_INVERT                         0x0000150a
+#define NV30_3D_STENCIL_OP_FAIL_KEEP                           0x00001e00
+#define NV30_3D_STENCIL_OP_FAIL_REPLACE                                0x00001e01
+#define NV30_3D_STENCIL_OP_FAIL_INCR                           0x00001e02
+#define NV30_3D_STENCIL_OP_FAIL_DECR                           0x00001e03
+#define NV30_3D_STENCIL_OP_FAIL_INCR_WRAP                      0x00008507
+#define NV30_3D_STENCIL_OP_FAIL_DECR_WRAP                      0x00008508
+
+#define NV30_3D_STENCIL_OP_ZFAIL(i0)                          (0x00000340 + 0x20*(i0))
+#define NV30_3D_STENCIL_OP_ZFAIL_ZERO                          0x00000000
+#define NV30_3D_STENCIL_OP_ZFAIL_INVERT                                0x0000150a
+#define NV30_3D_STENCIL_OP_ZFAIL_KEEP                          0x00001e00
+#define NV30_3D_STENCIL_OP_ZFAIL_REPLACE                       0x00001e01
+#define NV30_3D_STENCIL_OP_ZFAIL_INCR                          0x00001e02
+#define NV30_3D_STENCIL_OP_ZFAIL_DECR                          0x00001e03
+#define NV30_3D_STENCIL_OP_ZFAIL_INCR_WRAP                     0x00008507
+#define NV30_3D_STENCIL_OP_ZFAIL_DECR_WRAP                     0x00008508
+
+#define NV30_3D_STENCIL_OP_ZPASS(i0)                          (0x00000344 + 0x20*(i0))
+#define NV30_3D_STENCIL_OP_ZPASS_ZERO                          0x00000000
+#define NV30_3D_STENCIL_OP_ZPASS_INVERT                                0x0000150a
+#define NV30_3D_STENCIL_OP_ZPASS_KEEP                          0x00001e00
+#define NV30_3D_STENCIL_OP_ZPASS_REPLACE                       0x00001e01
+#define NV30_3D_STENCIL_OP_ZPASS_INCR                          0x00001e02
+#define NV30_3D_STENCIL_OP_ZPASS_DECR                          0x00001e03
+#define NV30_3D_STENCIL_OP_ZPASS_INCR_WRAP                     0x00008507
+#define NV30_3D_STENCIL_OP_ZPASS_DECR_WRAP                     0x00008508
+
+#define NV30_3D_SHADE_MODEL                                    0x00000368
+#define NV30_3D_SHADE_MODEL_FLAT                               0x00001d00
+#define NV30_3D_SHADE_MODEL_SMOOTH                             0x00001d01
+
+#define NV30_3D_FOG_ENABLE                                     0x0000036c
+
+#define NV30_3D_FOG_COLOR                                      0x00000370
+#define NV30_3D_FOG_COLOR_R__MASK                              0x000000ff
+#define NV30_3D_FOG_COLOR_R__SHIFT                             0
+#define NV30_3D_FOG_COLOR_G__MASK                              0x0000ff00
+#define NV30_3D_FOG_COLOR_G__SHIFT                             8
+#define NV30_3D_FOG_COLOR_B__MASK                              0x00ff0000
+#define NV30_3D_FOG_COLOR_B__SHIFT                             16
+#define NV30_3D_FOG_COLOR_A__MASK                              0xff000000
+#define NV30_3D_FOG_COLOR_A__SHIFT                             24
+
+#define NV40_3D_MRT_COLOR_MASK                                 0x00000370
+#define NV40_3D_MRT_COLOR_MASK_BUFFER1_A                       0x00000010
+#define NV40_3D_MRT_COLOR_MASK_BUFFER1_R                       0x00000020
+#define NV40_3D_MRT_COLOR_MASK_BUFFER1_G                       0x00000040
+#define NV40_3D_MRT_COLOR_MASK_BUFFER1_B                       0x00000080
+#define NV40_3D_MRT_COLOR_MASK_BUFFER2_A                       0x00000100
+#define NV40_3D_MRT_COLOR_MASK_BUFFER2_R                       0x00000200
+#define NV40_3D_MRT_COLOR_MASK_BUFFER2_G                       0x00000400
+#define NV40_3D_MRT_COLOR_MASK_BUFFER2_B                       0x00000800
+#define NV40_3D_MRT_COLOR_MASK_BUFFER3_A                       0x00001000
+#define NV40_3D_MRT_COLOR_MASK_BUFFER3_R                       0x00002000
+#define NV40_3D_MRT_COLOR_MASK_BUFFER3_G                       0x00004000
+#define NV40_3D_MRT_COLOR_MASK_BUFFER3_B                       0x00008000
+
+#define NV30_3D_COLOR_LOGIC_OP_ENABLE                          0x00000374
+
+#define NV30_3D_COLOR_LOGIC_OP_OP                              0x00000378
+#define NV30_3D_COLOR_LOGIC_OP_OP_CLEAR                                0x00001500
+#define NV30_3D_COLOR_LOGIC_OP_OP_AND                          0x00001501
+#define NV30_3D_COLOR_LOGIC_OP_OP_AND_REVERSE                  0x00001502
+#define NV30_3D_COLOR_LOGIC_OP_OP_COPY                         0x00001503
+#define NV30_3D_COLOR_LOGIC_OP_OP_AND_INVERTED                 0x00001504
+#define NV30_3D_COLOR_LOGIC_OP_OP_NOOP                         0x00001505
+#define NV30_3D_COLOR_LOGIC_OP_OP_XOR                          0x00001506
+#define NV30_3D_COLOR_LOGIC_OP_OP_OR                           0x00001507
+#define NV30_3D_COLOR_LOGIC_OP_OP_NOR                          0x00001508
+#define NV30_3D_COLOR_LOGIC_OP_OP_EQUIV                                0x00001509
+#define NV30_3D_COLOR_LOGIC_OP_OP_INVERT                       0x0000150a
+#define NV30_3D_COLOR_LOGIC_OP_OP_OR_REVERSE                   0x0000150b
+#define NV30_3D_COLOR_LOGIC_OP_OP_COPY_INVERTED                        0x0000150c
+#define NV30_3D_COLOR_LOGIC_OP_OP_OR_INVERTED                  0x0000150d
+#define NV30_3D_COLOR_LOGIC_OP_OP_NAND                         0x0000150e
+#define NV30_3D_COLOR_LOGIC_OP_OP_SET                          0x0000150f
+
+#define NV30_3D_NORMALIZE_ENABLE                               0x0000037c
+
+#define NV30_3D_COLOR_MATERIAL                                 0x00000390
+#define NV30_3D_COLOR_MATERIAL_FRONT_EMISSION_ENABLE           0x00000001
+#define NV30_3D_COLOR_MATERIAL_FRONT_AMBIENT_ENABLE            0x00000004
+#define NV30_3D_COLOR_MATERIAL_FRONT_DIFFUSE_ENABLE            0x00000010
+#define NV30_3D_COLOR_MATERIAL_FRONT_SPECULAR_ENABLE           0x00000040
+#define NV30_3D_COLOR_MATERIAL_BACK_EMISSION_ENABLE            0x00000100
+#define NV30_3D_COLOR_MATERIAL_BACK_AMBIENT_ENABLE             0x00000400
+#define NV30_3D_COLOR_MATERIAL_BACK_DIFFUSE_ENABLE             0x00001000
+#define NV30_3D_COLOR_MATERIAL_BACK_SPECULAR_ENABLE            0x00004000
+
+#define NV30_3D_DEPTH_RANGE_NEAR                               0x00000394
+
+#define NV30_3D_DEPTH_RANGE_FAR                                        0x00000398
+
+#define NV30_3D_COLOR_MATERIAL_FRONT                           0x000003a0
+
+
+#define NV30_3D_COLOR_MATERIAL_FRONT_R                         0x000003a0
+
+#define NV30_3D_COLOR_MATERIAL_FRONT_G                         0x000003a4
+
+#define NV30_3D_COLOR_MATERIAL_FRONT_B                         0x000003a8
+
+#define NV30_3D_COLOR_MATERIAL_FRONT_A                         0x000003ac
+
+#define NV40_3D_MIPMAP_ROUNDING                                        0x000003b0
+#define NV40_3D_MIPMAP_ROUNDING_MODE__MASK                     0x00100000
+#define NV40_3D_MIPMAP_ROUNDING_MODE__SHIFT                    20
+#define NV40_3D_MIPMAP_ROUNDING_MODE_UP                                0x00000000
+#define NV40_3D_MIPMAP_ROUNDING_MODE_DOWN                      0x00100000
+
+#define NV30_3D_LINE_WIDTH                                     0x000003b8
+
+#define NV30_3D_LINE_SMOOTH_ENABLE                             0x000003bc
+
+
+
+#define NV30_3D_TEX_GEN_MODE(i0, i1)                          (0x00000400 + 0x10*(i0) + 0x4*(i1))
+#define NV30_3D_TEX_GEN_MODE__ESIZE                            0x00000004
+#define NV30_3D_TEX_GEN_MODE__LEN                              0x00000004
+#define NV30_3D_TEX_GEN_MODE_FALSE                             0x00000000
+#define NV30_3D_TEX_GEN_MODE_EYE_LINEAR                                0x00002400
+#define NV30_3D_TEX_GEN_MODE_OBJECT_LINEAR                     0x00002401
+#define NV30_3D_TEX_GEN_MODE_SPHERE_MAP                                0x00002402
+#define NV30_3D_TEX_GEN_MODE_NORMAL_MAP                                0x00008511
+#define NV30_3D_TEX_GEN_MODE_REFLECTION_MAP                    0x00008512
+
+#define NV30_3D_MODELVIEW_MATRIX(i0)                          (0x00000480 + 0x4*(i0))
+#define NV30_3D_MODELVIEW_MATRIX__ESIZE                                0x00000004
+#define NV30_3D_MODELVIEW_MATRIX__LEN                          0x00000010
+
+#define NV30_3D_INVERSE_MODELVIEW_MATRIX(i0)                  (0x00000580 + 0x4*(i0))
+#define NV30_3D_INVERSE_MODELVIEW_MATRIX__ESIZE                        0x00000004
+#define NV30_3D_INVERSE_MODELVIEW_MATRIX__LEN                  0x0000000c
+
+#define NV30_3D_PROJECTION_MATRIX(i0)                         (0x00000680 + 0x4*(i0))
+#define NV30_3D_PROJECTION_MATRIX__ESIZE                       0x00000004
+#define NV30_3D_PROJECTION_MATRIX__LEN                         0x00000010
+
+
+#define NV30_3D_TEX_MATRIX(i0, i1)                            (0x000006c0 + 0x40*(i0) + 0x4*(i1))
+#define NV30_3D_TEX_MATRIX__ESIZE                              0x00000004
+#define NV30_3D_TEX_MATRIX__LEN                                        0x00000010
+
+#define NV30_3D_SCISSOR_HORIZ                                  0x000008c0
+#define NV30_3D_SCISSOR_HORIZ_X__MASK                          0x0000ffff
+#define NV30_3D_SCISSOR_HORIZ_X__SHIFT                         0
+#define NV30_3D_SCISSOR_HORIZ_W__MASK                          0xffff0000
+#define NV30_3D_SCISSOR_HORIZ_W__SHIFT                         16
+
+#define NV30_3D_SCISSOR_VERT                                   0x000008c4
+#define NV30_3D_SCISSOR_VERT_Y__MASK                           0x0000ffff
+#define NV30_3D_SCISSOR_VERT_Y__SHIFT                          0
+#define NV30_3D_SCISSOR_VERT_H__MASK                           0xffff0000
+#define NV30_3D_SCISSOR_VERT_H__SHIFT                          16
+
+#define NV30_3D_FOG_COORD_DIST                                 0x000008c8
+
+#define NV30_3D_FOG_MODE                                       0x000008cc
+
+#define NV30_3D_FOG_EQUATION_CONSTANT                          0x000008d0
+
+#define NV30_3D_FOG_EQUATION_LINEAR                            0x000008d4
+
+#define NV30_3D_FOG_EQUATION_QUADRATIC                         0x000008d8
+
+#define NV30_3D_FP_ACTIVE_PROGRAM                              0x000008e4
+#define NV30_3D_FP_ACTIVE_PROGRAM_DMA0                         0x00000001
+#define NV30_3D_FP_ACTIVE_PROGRAM_DMA1                         0x00000002
+#define NV30_3D_FP_ACTIVE_PROGRAM_OFFSET__MASK                 0xfffffffc
+#define NV30_3D_FP_ACTIVE_PROGRAM_OFFSET__SHIFT                        2
+
+
+#define NV30_3D_RC_COLOR0                                      0x000008ec
+#define NV30_3D_RC_COLOR0_B__MASK                              0x000000ff
+#define NV30_3D_RC_COLOR0_B__SHIFT                             0
+#define NV30_3D_RC_COLOR0_G__MASK                              0x0000ff00
+#define NV30_3D_RC_COLOR0_G__SHIFT                             8
+#define NV30_3D_RC_COLOR0_R__MASK                              0x00ff0000
+#define NV30_3D_RC_COLOR0_R__SHIFT                             16
+#define NV30_3D_RC_COLOR0_A__MASK                              0xff000000
+#define NV30_3D_RC_COLOR0_A__SHIFT                             24
+
+#define NV30_3D_RC_COLOR1                                      0x000008f0
+#define NV30_3D_RC_COLOR1_B__MASK                              0x000000ff
+#define NV30_3D_RC_COLOR1_B__SHIFT                             0
+#define NV30_3D_RC_COLOR1_G__MASK                              0x0000ff00
+#define NV30_3D_RC_COLOR1_G__SHIFT                             8
+#define NV30_3D_RC_COLOR1_R__MASK                              0x00ff0000
+#define NV30_3D_RC_COLOR1_R__SHIFT                             16
+#define NV30_3D_RC_COLOR1_A__MASK                              0xff000000
+#define NV30_3D_RC_COLOR1_A__SHIFT                             24
+
+#define NV30_3D_RC_FINAL0                                      0x000008f4
+#define NV30_3D_RC_FINAL0_D_INPUT__MASK                                0x0000000f
+#define NV30_3D_RC_FINAL0_D_INPUT__SHIFT                       0
+#define NV30_3D_RC_FINAL0_D_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR0              0x00000001
+#define NV30_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR1              0x00000002
+#define NV30_3D_RC_FINAL0_D_INPUT_FOG                          0x00000003
+#define NV30_3D_RC_FINAL0_D_INPUT_PRIMARY_COLOR                        0x00000004
+#define NV30_3D_RC_FINAL0_D_INPUT_SECONDARY_COLOR              0x00000005
+#define NV30_3D_RC_FINAL0_D_INPUT_TEXTURE0                     0x00000008
+#define NV30_3D_RC_FINAL0_D_INPUT_TEXTURE1                     0x00000009
+#define NV30_3D_RC_FINAL0_D_INPUT_TEXTURE2                     0x0000000a
+#define NV30_3D_RC_FINAL0_D_INPUT_TEXTURE3                     0x0000000b
+#define NV30_3D_RC_FINAL0_D_INPUT_SPARE0                       0x0000000c
+#define NV30_3D_RC_FINAL0_D_INPUT_SPARE1                       0x0000000d
+#define NV30_3D_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x0000000e
+#define NV30_3D_RC_FINAL0_D_INPUT_E_TIMES_F                    0x0000000f
+#define NV30_3D_RC_FINAL0_D_COMPONENT_USAGE__MASK              0x00000010
+#define NV30_3D_RC_FINAL0_D_COMPONENT_USAGE__SHIFT             4
+#define NV30_3D_RC_FINAL0_D_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_FINAL0_D_COMPONENT_USAGE_ALPHA              0x00000010
+#define NV30_3D_RC_FINAL0_D_MAPPING__MASK                      0x000000e0
+#define NV30_3D_RC_FINAL0_D_MAPPING__SHIFT                     5
+#define NV30_3D_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT            0x00000020
+#define NV30_3D_RC_FINAL0_D_MAPPING_EXPAND_NORMAL              0x00000040
+#define NV30_3D_RC_FINAL0_D_MAPPING_EXPAND_NEGATE              0x00000060
+#define NV30_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL           0x00000080
+#define NV30_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE           0x000000a0
+#define NV30_3D_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY            0x000000c0
+#define NV30_3D_RC_FINAL0_D_MAPPING_SIGNED_NEGATE              0x000000e0
+#define NV30_3D_RC_FINAL0_C_INPUT__MASK                                0x00000f00
+#define NV30_3D_RC_FINAL0_C_INPUT__SHIFT                       8
+#define NV30_3D_RC_FINAL0_C_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR0              0x00000100
+#define NV30_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR1              0x00000200
+#define NV30_3D_RC_FINAL0_C_INPUT_FOG                          0x00000300
+#define NV30_3D_RC_FINAL0_C_INPUT_PRIMARY_COLOR                        0x00000400
+#define NV30_3D_RC_FINAL0_C_INPUT_SECONDARY_COLOR              0x00000500
+#define NV30_3D_RC_FINAL0_C_INPUT_TEXTURE0                     0x00000800
+#define NV30_3D_RC_FINAL0_C_INPUT_TEXTURE1                     0x00000900
+#define NV30_3D_RC_FINAL0_C_INPUT_TEXTURE2                     0x00000a00
+#define NV30_3D_RC_FINAL0_C_INPUT_TEXTURE3                     0x00000b00
+#define NV30_3D_RC_FINAL0_C_INPUT_SPARE0                       0x00000c00
+#define NV30_3D_RC_FINAL0_C_INPUT_SPARE1                       0x00000d00
+#define NV30_3D_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x00000e00
+#define NV30_3D_RC_FINAL0_C_INPUT_E_TIMES_F                    0x00000f00
+#define NV30_3D_RC_FINAL0_C_COMPONENT_USAGE__MASK              0x00001000
+#define NV30_3D_RC_FINAL0_C_COMPONENT_USAGE__SHIFT             12
+#define NV30_3D_RC_FINAL0_C_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_FINAL0_C_COMPONENT_USAGE_ALPHA              0x00001000
+#define NV30_3D_RC_FINAL0_C_MAPPING__MASK                      0x0000e000
+#define NV30_3D_RC_FINAL0_C_MAPPING__SHIFT                     13
+#define NV30_3D_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT            0x00002000
+#define NV30_3D_RC_FINAL0_C_MAPPING_EXPAND_NORMAL              0x00004000
+#define NV30_3D_RC_FINAL0_C_MAPPING_EXPAND_NEGATE              0x00006000
+#define NV30_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL           0x00008000
+#define NV30_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE           0x0000a000
+#define NV30_3D_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY            0x0000c000
+#define NV30_3D_RC_FINAL0_C_MAPPING_SIGNED_NEGATE              0x0000e000
+#define NV30_3D_RC_FINAL0_B_INPUT__MASK                                0x000f0000
+#define NV30_3D_RC_FINAL0_B_INPUT__SHIFT                       16
+#define NV30_3D_RC_FINAL0_B_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR0              0x00010000
+#define NV30_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR1              0x00020000
+#define NV30_3D_RC_FINAL0_B_INPUT_FOG                          0x00030000
+#define NV30_3D_RC_FINAL0_B_INPUT_PRIMARY_COLOR                        0x00040000
+#define NV30_3D_RC_FINAL0_B_INPUT_SECONDARY_COLOR              0x00050000
+#define NV30_3D_RC_FINAL0_B_INPUT_TEXTURE0                     0x00080000
+#define NV30_3D_RC_FINAL0_B_INPUT_TEXTURE1                     0x00090000
+#define NV30_3D_RC_FINAL0_B_INPUT_TEXTURE2                     0x000a0000
+#define NV30_3D_RC_FINAL0_B_INPUT_TEXTURE3                     0x000b0000
+#define NV30_3D_RC_FINAL0_B_INPUT_SPARE0                       0x000c0000
+#define NV30_3D_RC_FINAL0_B_INPUT_SPARE1                       0x000d0000
+#define NV30_3D_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x000e0000
+#define NV30_3D_RC_FINAL0_B_INPUT_E_TIMES_F                    0x000f0000
+#define NV30_3D_RC_FINAL0_B_COMPONENT_USAGE__MASK              0x00100000
+#define NV30_3D_RC_FINAL0_B_COMPONENT_USAGE__SHIFT             20
+#define NV30_3D_RC_FINAL0_B_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_FINAL0_B_COMPONENT_USAGE_ALPHA              0x00100000
+#define NV30_3D_RC_FINAL0_B_MAPPING__MASK                      0x00e00000
+#define NV30_3D_RC_FINAL0_B_MAPPING__SHIFT                     21
+#define NV30_3D_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT            0x00200000
+#define NV30_3D_RC_FINAL0_B_MAPPING_EXPAND_NORMAL              0x00400000
+#define NV30_3D_RC_FINAL0_B_MAPPING_EXPAND_NEGATE              0x00600000
+#define NV30_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL           0x00800000
+#define NV30_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE           0x00a00000
+#define NV30_3D_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY            0x00c00000
+#define NV30_3D_RC_FINAL0_B_MAPPING_SIGNED_NEGATE              0x00e00000
+#define NV30_3D_RC_FINAL0_A_INPUT__MASK                                0x0f000000
+#define NV30_3D_RC_FINAL0_A_INPUT__SHIFT                       24
+#define NV30_3D_RC_FINAL0_A_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR0              0x01000000
+#define NV30_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR1              0x02000000
+#define NV30_3D_RC_FINAL0_A_INPUT_FOG                          0x03000000
+#define NV30_3D_RC_FINAL0_A_INPUT_PRIMARY_COLOR                        0x04000000
+#define NV30_3D_RC_FINAL0_A_INPUT_SECONDARY_COLOR              0x05000000
+#define NV30_3D_RC_FINAL0_A_INPUT_TEXTURE0                     0x08000000
+#define NV30_3D_RC_FINAL0_A_INPUT_TEXTURE1                     0x09000000
+#define NV30_3D_RC_FINAL0_A_INPUT_TEXTURE2                     0x0a000000
+#define NV30_3D_RC_FINAL0_A_INPUT_TEXTURE3                     0x0b000000
+#define NV30_3D_RC_FINAL0_A_INPUT_SPARE0                       0x0c000000
+#define NV30_3D_RC_FINAL0_A_INPUT_SPARE1                       0x0d000000
+#define NV30_3D_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x0e000000
+#define NV30_3D_RC_FINAL0_A_INPUT_E_TIMES_F                    0x0f000000
+#define NV30_3D_RC_FINAL0_A_COMPONENT_USAGE__MASK              0x10000000
+#define NV30_3D_RC_FINAL0_A_COMPONENT_USAGE__SHIFT             28
+#define NV30_3D_RC_FINAL0_A_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_FINAL0_A_COMPONENT_USAGE_ALPHA              0x10000000
+#define NV30_3D_RC_FINAL0_A_MAPPING__MASK                      0xe0000000
+#define NV30_3D_RC_FINAL0_A_MAPPING__SHIFT                     29
+#define NV30_3D_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT            0x20000000
+#define NV30_3D_RC_FINAL0_A_MAPPING_EXPAND_NORMAL              0x40000000
+#define NV30_3D_RC_FINAL0_A_MAPPING_EXPAND_NEGATE              0x60000000
+#define NV30_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL           0x80000000
+#define NV30_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE           0xa0000000
+#define NV30_3D_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY            0xc0000000
+#define NV30_3D_RC_FINAL0_A_MAPPING_SIGNED_NEGATE              0xe0000000
+
+#define NV30_3D_RC_FINAL1                                      0x000008f8
+#define NV30_3D_RC_FINAL1_COLOR_SUM_CLAMP                      0x00000080
+#define NV30_3D_RC_FINAL1_G_INPUT__MASK                                0x00000f00
+#define NV30_3D_RC_FINAL1_G_INPUT__SHIFT                       8
+#define NV30_3D_RC_FINAL1_G_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR0              0x00000100
+#define NV30_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR1              0x00000200
+#define NV30_3D_RC_FINAL1_G_INPUT_FOG                          0x00000300
+#define NV30_3D_RC_FINAL1_G_INPUT_PRIMARY_COLOR                        0x00000400
+#define NV30_3D_RC_FINAL1_G_INPUT_SECONDARY_COLOR              0x00000500
+#define NV30_3D_RC_FINAL1_G_INPUT_TEXTURE0                     0x00000800
+#define NV30_3D_RC_FINAL1_G_INPUT_TEXTURE1                     0x00000900
+#define NV30_3D_RC_FINAL1_G_INPUT_TEXTURE2                     0x00000a00
+#define NV30_3D_RC_FINAL1_G_INPUT_TEXTURE3                     0x00000b00
+#define NV30_3D_RC_FINAL1_G_INPUT_SPARE0                       0x00000c00
+#define NV30_3D_RC_FINAL1_G_INPUT_SPARE1                       0x00000d00
+#define NV30_3D_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x00000e00
+#define NV30_3D_RC_FINAL1_G_INPUT_E_TIMES_F                    0x00000f00
+#define NV30_3D_RC_FINAL1_G_COMPONENT_USAGE__MASK              0x00001000
+#define NV30_3D_RC_FINAL1_G_COMPONENT_USAGE__SHIFT             12
+#define NV30_3D_RC_FINAL1_G_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_FINAL1_G_COMPONENT_USAGE_ALPHA              0x00001000
+#define NV30_3D_RC_FINAL1_G_MAPPING__MASK                      0x0000e000
+#define NV30_3D_RC_FINAL1_G_MAPPING__SHIFT                     13
+#define NV30_3D_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT            0x00002000
+#define NV30_3D_RC_FINAL1_G_MAPPING_EXPAND_NORMAL              0x00004000
+#define NV30_3D_RC_FINAL1_G_MAPPING_EXPAND_NEGATE              0x00006000
+#define NV30_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL           0x00008000
+#define NV30_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE           0x0000a000
+#define NV30_3D_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY            0x0000c000
+#define NV30_3D_RC_FINAL1_G_MAPPING_SIGNED_NEGATE              0x0000e000
+#define NV30_3D_RC_FINAL1_F_INPUT__MASK                                0x000f0000
+#define NV30_3D_RC_FINAL1_F_INPUT__SHIFT                       16
+#define NV30_3D_RC_FINAL1_F_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR0              0x00010000
+#define NV30_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR1              0x00020000
+#define NV30_3D_RC_FINAL1_F_INPUT_FOG                          0x00030000
+#define NV30_3D_RC_FINAL1_F_INPUT_PRIMARY_COLOR                        0x00040000
+#define NV30_3D_RC_FINAL1_F_INPUT_SECONDARY_COLOR              0x00050000
+#define NV30_3D_RC_FINAL1_F_INPUT_TEXTURE0                     0x00080000
+#define NV30_3D_RC_FINAL1_F_INPUT_TEXTURE1                     0x00090000
+#define NV30_3D_RC_FINAL1_F_INPUT_TEXTURE2                     0x000a0000
+#define NV30_3D_RC_FINAL1_F_INPUT_TEXTURE3                     0x000b0000
+#define NV30_3D_RC_FINAL1_F_INPUT_SPARE0                       0x000c0000
+#define NV30_3D_RC_FINAL1_F_INPUT_SPARE1                       0x000d0000
+#define NV30_3D_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x000e0000
+#define NV30_3D_RC_FINAL1_F_INPUT_E_TIMES_F                    0x000f0000
+#define NV30_3D_RC_FINAL1_F_COMPONENT_USAGE__MASK              0x00100000
+#define NV30_3D_RC_FINAL1_F_COMPONENT_USAGE__SHIFT             20
+#define NV30_3D_RC_FINAL1_F_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_FINAL1_F_COMPONENT_USAGE_ALPHA              0x00100000
+#define NV30_3D_RC_FINAL1_F_MAPPING__MASK                      0x00e00000
+#define NV30_3D_RC_FINAL1_F_MAPPING__SHIFT                     21
+#define NV30_3D_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT            0x00200000
+#define NV30_3D_RC_FINAL1_F_MAPPING_EXPAND_NORMAL              0x00400000
+#define NV30_3D_RC_FINAL1_F_MAPPING_EXPAND_NEGATE              0x00600000
+#define NV30_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL           0x00800000
+#define NV30_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE           0x00a00000
+#define NV30_3D_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY            0x00c00000
+#define NV30_3D_RC_FINAL1_F_MAPPING_SIGNED_NEGATE              0x00e00000
+#define NV30_3D_RC_FINAL1_E_INPUT__MASK                                0x0f000000
+#define NV30_3D_RC_FINAL1_E_INPUT__SHIFT                       24
+#define NV30_3D_RC_FINAL1_E_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR0              0x01000000
+#define NV30_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR1              0x02000000
+#define NV30_3D_RC_FINAL1_E_INPUT_FOG                          0x03000000
+#define NV30_3D_RC_FINAL1_E_INPUT_PRIMARY_COLOR                        0x04000000
+#define NV30_3D_RC_FINAL1_E_INPUT_SECONDARY_COLOR              0x05000000
+#define NV30_3D_RC_FINAL1_E_INPUT_TEXTURE0                     0x08000000
+#define NV30_3D_RC_FINAL1_E_INPUT_TEXTURE1                     0x09000000
+#define NV30_3D_RC_FINAL1_E_INPUT_TEXTURE2                     0x0a000000
+#define NV30_3D_RC_FINAL1_E_INPUT_TEXTURE3                     0x0b000000
+#define NV30_3D_RC_FINAL1_E_INPUT_SPARE0                       0x0c000000
+#define NV30_3D_RC_FINAL1_E_INPUT_SPARE1                       0x0d000000
+#define NV30_3D_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x0e000000
+#define NV30_3D_RC_FINAL1_E_INPUT_E_TIMES_F                    0x0f000000
+#define NV30_3D_RC_FINAL1_E_COMPONENT_USAGE__MASK              0x10000000
+#define NV30_3D_RC_FINAL1_E_COMPONENT_USAGE__SHIFT             28
+#define NV30_3D_RC_FINAL1_E_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_FINAL1_E_COMPONENT_USAGE_ALPHA              0x10000000
+#define NV30_3D_RC_FINAL1_E_MAPPING__MASK                      0xe0000000
+#define NV30_3D_RC_FINAL1_E_MAPPING__SHIFT                     29
+#define NV30_3D_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT            0x20000000
+#define NV30_3D_RC_FINAL1_E_MAPPING_EXPAND_NORMAL              0x40000000
+#define NV30_3D_RC_FINAL1_E_MAPPING_EXPAND_NEGATE              0x60000000
+#define NV30_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL           0x80000000
+#define NV30_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE           0xa0000000
+#define NV30_3D_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY            0xc0000000
+#define NV30_3D_RC_FINAL1_E_MAPPING_SIGNED_NEGATE              0xe0000000
+
+#define NV30_3D_RC_ENABLE                                      0x000008fc
+#define NV30_3D_RC_ENABLE_NUM_COMBINERS__MASK                  0x0000000f
+#define NV30_3D_RC_ENABLE_NUM_COMBINERS__SHIFT                 0
+#define NV30_3D_RC_ENABLE_STAGE_CONSTANT_COLOR0                        0x0000f000
+#define NV30_3D_RC_ENABLE_STAGE_CONSTANT_COLOR1                        0x000f0000
+
+
+#define NV30_3D_RC_IN_ALPHA(i0)                                       (0x00000900 + 0x20*(i0))
+#define NV30_3D_RC_IN_ALPHA_D_INPUT__MASK                      0x0000000f
+#define NV30_3D_RC_IN_ALPHA_D_INPUT__SHIFT                     0
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_ZERO                       0x00000000
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0            0x00000001
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1            0x00000002
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_FOG                                0x00000003
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR              0x00000004
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR            0x00000005
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_TEXTURE0                   0x00000008
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_TEXTURE1                   0x00000009
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_TEXTURE2                   0x0000000a
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_TEXTURE3                   0x0000000b
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_SPARE0                     0x0000000c
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_SPARE1                     0x0000000d
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR        0x0000000e
+#define NV30_3D_RC_IN_ALPHA_D_INPUT_E_TIMES_F                  0x0000000f
+#define NV30_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__MASK            0x00000010
+#define NV30_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__SHIFT           4
+#define NV30_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE             0x00000000
+#define NV30_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA            0x00000010
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING__MASK                    0x000000e0
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING__SHIFT                   5
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY                0x00000000
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT          0x00000020
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL            0x00000040
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE            0x00000060
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL         0x00000080
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE         0x000000a0
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY          0x000000c0
+#define NV30_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE            0x000000e0
+#define NV30_3D_RC_IN_ALPHA_C_INPUT__MASK                      0x00000f00
+#define NV30_3D_RC_IN_ALPHA_C_INPUT__SHIFT                     8
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_ZERO                       0x00000000
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0            0x00000100
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1            0x00000200
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_FOG                                0x00000300
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR              0x00000400
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR            0x00000500
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_TEXTURE0                   0x00000800
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_TEXTURE1                   0x00000900
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_TEXTURE2                   0x00000a00
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_TEXTURE3                   0x00000b00
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_SPARE0                     0x00000c00
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_SPARE1                     0x00000d00
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR        0x00000e00
+#define NV30_3D_RC_IN_ALPHA_C_INPUT_E_TIMES_F                  0x00000f00
+#define NV30_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__MASK            0x00001000
+#define NV30_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__SHIFT           12
+#define NV30_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE             0x00000000
+#define NV30_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA            0x00001000
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING__MASK                    0x0000e000
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING__SHIFT                   13
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY                0x00000000
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT          0x00002000
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL            0x00004000
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE            0x00006000
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL         0x00008000
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE         0x0000a000
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY          0x0000c000
+#define NV30_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE            0x0000e000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT__MASK                      0x000f0000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT__SHIFT                     16
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_ZERO                       0x00000000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0            0x00010000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1            0x00020000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_FOG                                0x00030000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR              0x00040000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR            0x00050000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_TEXTURE0                   0x00080000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_TEXTURE1                   0x00090000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_TEXTURE2                   0x000a0000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_TEXTURE3                   0x000b0000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_SPARE0                     0x000c0000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_SPARE1                     0x000d0000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR        0x000e0000
+#define NV30_3D_RC_IN_ALPHA_B_INPUT_E_TIMES_F                  0x000f0000
+#define NV30_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__MASK            0x00100000
+#define NV30_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__SHIFT           20
+#define NV30_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE             0x00000000
+#define NV30_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA            0x00100000
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING__MASK                    0x00e00000
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING__SHIFT                   21
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY                0x00000000
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT          0x00200000
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL            0x00400000
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE            0x00600000
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL         0x00800000
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE         0x00a00000
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY          0x00c00000
+#define NV30_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE            0x00e00000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT__MASK                      0x0f000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT__SHIFT                     24
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_ZERO                       0x00000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0            0x01000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1            0x02000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_FOG                                0x03000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR              0x04000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR            0x05000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_TEXTURE0                   0x08000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_TEXTURE1                   0x09000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_TEXTURE2                   0x0a000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_TEXTURE3                   0x0b000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_SPARE0                     0x0c000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_SPARE1                     0x0d000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR        0x0e000000
+#define NV30_3D_RC_IN_ALPHA_A_INPUT_E_TIMES_F                  0x0f000000
+#define NV30_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__MASK            0x10000000
+#define NV30_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__SHIFT           28
+#define NV30_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE             0x00000000
+#define NV30_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA            0x10000000
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING__MASK                    0xe0000000
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING__SHIFT                   29
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY                0x00000000
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT          0x20000000
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL            0x40000000
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE            0x60000000
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL         0x80000000
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE         0xa0000000
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY          0xc0000000
+#define NV30_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE            0xe0000000
+
+#define NV30_3D_RC_IN_RGB(i0)                                 (0x00000904 + 0x20*(i0))
+#define NV30_3D_RC_IN_RGB_D_INPUT__MASK                                0x0000000f
+#define NV30_3D_RC_IN_RGB_D_INPUT__SHIFT                       0
+#define NV30_3D_RC_IN_RGB_D_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0              0x00000001
+#define NV30_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1              0x00000002
+#define NV30_3D_RC_IN_RGB_D_INPUT_FOG                          0x00000003
+#define NV30_3D_RC_IN_RGB_D_INPUT_PRIMARY_COLOR                        0x00000004
+#define NV30_3D_RC_IN_RGB_D_INPUT_SECONDARY_COLOR              0x00000005
+#define NV30_3D_RC_IN_RGB_D_INPUT_TEXTURE0                     0x00000008
+#define NV30_3D_RC_IN_RGB_D_INPUT_TEXTURE1                     0x00000009
+#define NV30_3D_RC_IN_RGB_D_INPUT_TEXTURE2                     0x0000000a
+#define NV30_3D_RC_IN_RGB_D_INPUT_TEXTURE3                     0x0000000b
+#define NV30_3D_RC_IN_RGB_D_INPUT_SPARE0                       0x0000000c
+#define NV30_3D_RC_IN_RGB_D_INPUT_SPARE1                       0x0000000d
+#define NV30_3D_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x0000000e
+#define NV30_3D_RC_IN_RGB_D_INPUT_E_TIMES_F                    0x0000000f
+#define NV30_3D_RC_IN_RGB_D_COMPONENT_USAGE__MASK              0x00000010
+#define NV30_3D_RC_IN_RGB_D_COMPONENT_USAGE__SHIFT             4
+#define NV30_3D_RC_IN_RGB_D_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA              0x00000010
+#define NV30_3D_RC_IN_RGB_D_MAPPING__MASK                      0x000000e0
+#define NV30_3D_RC_IN_RGB_D_MAPPING__SHIFT                     5
+#define NV30_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT            0x00000020
+#define NV30_3D_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL              0x00000040
+#define NV30_3D_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE              0x00000060
+#define NV30_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL           0x00000080
+#define NV30_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE           0x000000a0
+#define NV30_3D_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY            0x000000c0
+#define NV30_3D_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE              0x000000e0
+#define NV30_3D_RC_IN_RGB_C_INPUT__MASK                                0x00000f00
+#define NV30_3D_RC_IN_RGB_C_INPUT__SHIFT                       8
+#define NV30_3D_RC_IN_RGB_C_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0              0x00000100
+#define NV30_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1              0x00000200
+#define NV30_3D_RC_IN_RGB_C_INPUT_FOG                          0x00000300
+#define NV30_3D_RC_IN_RGB_C_INPUT_PRIMARY_COLOR                        0x00000400
+#define NV30_3D_RC_IN_RGB_C_INPUT_SECONDARY_COLOR              0x00000500
+#define NV30_3D_RC_IN_RGB_C_INPUT_TEXTURE0                     0x00000800
+#define NV30_3D_RC_IN_RGB_C_INPUT_TEXTURE1                     0x00000900
+#define NV30_3D_RC_IN_RGB_C_INPUT_TEXTURE2                     0x00000a00
+#define NV30_3D_RC_IN_RGB_C_INPUT_TEXTURE3                     0x00000b00
+#define NV30_3D_RC_IN_RGB_C_INPUT_SPARE0                       0x00000c00
+#define NV30_3D_RC_IN_RGB_C_INPUT_SPARE1                       0x00000d00
+#define NV30_3D_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x00000e00
+#define NV30_3D_RC_IN_RGB_C_INPUT_E_TIMES_F                    0x00000f00
+#define NV30_3D_RC_IN_RGB_C_COMPONENT_USAGE__MASK              0x00001000
+#define NV30_3D_RC_IN_RGB_C_COMPONENT_USAGE__SHIFT             12
+#define NV30_3D_RC_IN_RGB_C_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA              0x00001000
+#define NV30_3D_RC_IN_RGB_C_MAPPING__MASK                      0x0000e000
+#define NV30_3D_RC_IN_RGB_C_MAPPING__SHIFT                     13
+#define NV30_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT            0x00002000
+#define NV30_3D_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL              0x00004000
+#define NV30_3D_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE              0x00006000
+#define NV30_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL           0x00008000
+#define NV30_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE           0x0000a000
+#define NV30_3D_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY            0x0000c000
+#define NV30_3D_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE              0x0000e000
+#define NV30_3D_RC_IN_RGB_B_INPUT__MASK                                0x000f0000
+#define NV30_3D_RC_IN_RGB_B_INPUT__SHIFT                       16
+#define NV30_3D_RC_IN_RGB_B_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0              0x00010000
+#define NV30_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1              0x00020000
+#define NV30_3D_RC_IN_RGB_B_INPUT_FOG                          0x00030000
+#define NV30_3D_RC_IN_RGB_B_INPUT_PRIMARY_COLOR                        0x00040000
+#define NV30_3D_RC_IN_RGB_B_INPUT_SECONDARY_COLOR              0x00050000
+#define NV30_3D_RC_IN_RGB_B_INPUT_TEXTURE0                     0x00080000
+#define NV30_3D_RC_IN_RGB_B_INPUT_TEXTURE1                     0x00090000
+#define NV30_3D_RC_IN_RGB_B_INPUT_TEXTURE2                     0x000a0000
+#define NV30_3D_RC_IN_RGB_B_INPUT_TEXTURE3                     0x000b0000
+#define NV30_3D_RC_IN_RGB_B_INPUT_SPARE0                       0x000c0000
+#define NV30_3D_RC_IN_RGB_B_INPUT_SPARE1                       0x000d0000
+#define NV30_3D_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x000e0000
+#define NV30_3D_RC_IN_RGB_B_INPUT_E_TIMES_F                    0x000f0000
+#define NV30_3D_RC_IN_RGB_B_COMPONENT_USAGE__MASK              0x00100000
+#define NV30_3D_RC_IN_RGB_B_COMPONENT_USAGE__SHIFT             20
+#define NV30_3D_RC_IN_RGB_B_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA              0x00100000
+#define NV30_3D_RC_IN_RGB_B_MAPPING__MASK                      0x00e00000
+#define NV30_3D_RC_IN_RGB_B_MAPPING__SHIFT                     21
+#define NV30_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT            0x00200000
+#define NV30_3D_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL              0x00400000
+#define NV30_3D_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE              0x00600000
+#define NV30_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL           0x00800000
+#define NV30_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE           0x00a00000
+#define NV30_3D_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY            0x00c00000
+#define NV30_3D_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE              0x00e00000
+#define NV30_3D_RC_IN_RGB_A_INPUT__MASK                                0x0f000000
+#define NV30_3D_RC_IN_RGB_A_INPUT__SHIFT                       24
+#define NV30_3D_RC_IN_RGB_A_INPUT_ZERO                         0x00000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0              0x01000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1              0x02000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_FOG                          0x03000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_PRIMARY_COLOR                        0x04000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_SECONDARY_COLOR              0x05000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_TEXTURE0                     0x08000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_TEXTURE1                     0x09000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_TEXTURE2                     0x0a000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_TEXTURE3                     0x0b000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_SPARE0                       0x0c000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_SPARE1                       0x0d000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR  0x0e000000
+#define NV30_3D_RC_IN_RGB_A_INPUT_E_TIMES_F                    0x0f000000
+#define NV30_3D_RC_IN_RGB_A_COMPONENT_USAGE__MASK              0x10000000
+#define NV30_3D_RC_IN_RGB_A_COMPONENT_USAGE__SHIFT             28
+#define NV30_3D_RC_IN_RGB_A_COMPONENT_USAGE_RGB                        0x00000000
+#define NV30_3D_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA              0x10000000
+#define NV30_3D_RC_IN_RGB_A_MAPPING__MASK                      0xe0000000
+#define NV30_3D_RC_IN_RGB_A_MAPPING__SHIFT                     29
+#define NV30_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY          0x00000000
+#define NV30_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT            0x20000000
+#define NV30_3D_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL              0x40000000
+#define NV30_3D_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE              0x60000000
+#define NV30_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL           0x80000000
+#define NV30_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE           0xa0000000
+#define NV30_3D_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY            0xc0000000
+#define NV30_3D_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE              0xe0000000
+
+#define NV30_3D_RC_CONSTANT_COLOR0(i0)                        (0x00000908 + 0x20*(i0))
+#define NV30_3D_RC_CONSTANT_COLOR0_B__MASK                     0x000000ff
+#define NV30_3D_RC_CONSTANT_COLOR0_B__SHIFT                    0
+#define NV30_3D_RC_CONSTANT_COLOR0_G__MASK                     0x0000ff00
+#define NV30_3D_RC_CONSTANT_COLOR0_G__SHIFT                    8
+#define NV30_3D_RC_CONSTANT_COLOR0_R__MASK                     0x00ff0000
+#define NV30_3D_RC_CONSTANT_COLOR0_R__SHIFT                    16
+#define NV30_3D_RC_CONSTANT_COLOR0_A__MASK                     0xff000000
+#define NV30_3D_RC_CONSTANT_COLOR0_A__SHIFT                    24
+
+#define NV30_3D_RC_CONSTANT_COLOR1(i0)                        (0x0000090c + 0x20*(i0))
+#define NV30_3D_RC_CONSTANT_COLOR1_B__MASK                     0x000000ff
+#define NV30_3D_RC_CONSTANT_COLOR1_B__SHIFT                    0
+#define NV30_3D_RC_CONSTANT_COLOR1_G__MASK                     0x0000ff00
+#define NV30_3D_RC_CONSTANT_COLOR1_G__SHIFT                    8
+#define NV30_3D_RC_CONSTANT_COLOR1_R__MASK                     0x00ff0000
+#define NV30_3D_RC_CONSTANT_COLOR1_R__SHIFT                    16
+#define NV30_3D_RC_CONSTANT_COLOR1_A__MASK                     0xff000000
+#define NV30_3D_RC_CONSTANT_COLOR1_A__SHIFT                    24
+
+#define NV30_3D_RC_OUT_ALPHA(i0)                              (0x00000910 + 0x20*(i0))
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT__MASK                   0x0000000f
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT__SHIFT                  0
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_ZERO                    0x00000000
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0         0x00000001
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1         0x00000002
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_FOG                     0x00000003
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR           0x00000004
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR         0x00000005
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0                        0x00000008
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1                        0x00000009
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2                        0x0000000a
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3                        0x0000000b
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0                  0x0000000c
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE1                  0x0000000d
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR     0x0000000e
+#define NV30_3D_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F               0x0000000f
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT__MASK                   0x000000f0
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT__SHIFT                  4
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_ZERO                    0x00000000
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0         0x00000010
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1         0x00000020
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_FOG                     0x00000030
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR           0x00000040
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR         0x00000050
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0                        0x00000080
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1                        0x00000090
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2                        0x000000a0
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3                        0x000000b0
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0                  0x000000c0
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE1                  0x000000d0
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR     0x000000e0
+#define NV30_3D_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F               0x000000f0
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT__MASK                  0x00000f00
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT__SHIFT                 8
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_ZERO                   0x00000000
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0                0x00000100
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1                0x00000200
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_FOG                    0x00000300
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR          0x00000400
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR                0x00000500
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0               0x00000800
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1               0x00000900
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2               0x00000a00
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3               0x00000b00
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0                 0x00000c00
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1                 0x00000d00
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR    0x00000e00
+#define NV30_3D_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F              0x00000f00
+#define NV30_3D_RC_OUT_ALPHA_CD_DOT_PRODUCT                    0x00001000
+#define NV30_3D_RC_OUT_ALPHA_AB_DOT_PRODUCT                    0x00002000
+#define NV30_3D_RC_OUT_ALPHA_MUX_SUM                           0x00004000
+#define NV30_3D_RC_OUT_ALPHA_BIAS__MASK                                0x00008000
+#define NV30_3D_RC_OUT_ALPHA_BIAS__SHIFT                       15
+#define NV30_3D_RC_OUT_ALPHA_BIAS_NONE                         0x00000000
+#define NV30_3D_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF    0x00008000
+#define NV30_3D_RC_OUT_ALPHA_SCALE__MASK                       0x00030000
+#define NV30_3D_RC_OUT_ALPHA_SCALE__SHIFT                      16
+#define NV30_3D_RC_OUT_ALPHA_SCALE_NONE                                0x00000000
+#define NV30_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO                        0x00010000
+#define NV30_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR               0x00020000
+#define NV30_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF           0x00030000
+
+#define NV30_3D_RC_OUT_RGB(i0)                                (0x00000914 + 0x20*(i0))
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT__MASK                     0x0000000f
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT__SHIFT                    0
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_ZERO                      0x00000000
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0           0x00000001
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1           0x00000002
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_FOG                       0x00000003
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR             0x00000004
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR           0x00000005
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE0                  0x00000008
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE1                  0x00000009
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE2                  0x0000000a
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE3                  0x0000000b
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0                    0x0000000c
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_SPARE1                    0x0000000d
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR       0x0000000e
+#define NV30_3D_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F                 0x0000000f
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT__MASK                     0x000000f0
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT__SHIFT                    4
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_ZERO                      0x00000000
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0           0x00000010
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1           0x00000020
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_FOG                       0x00000030
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR             0x00000040
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR           0x00000050
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE0                  0x00000080
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE1                  0x00000090
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE2                  0x000000a0
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE3                  0x000000b0
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0                    0x000000c0
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_SPARE1                    0x000000d0
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR       0x000000e0
+#define NV30_3D_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F                 0x000000f0
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT__MASK                    0x00000f00
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT__SHIFT                   8
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_ZERO                     0x00000000
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0          0x00000100
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1          0x00000200
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_FOG                      0x00000300
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR            0x00000400
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR          0x00000500
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0                 0x00000800
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1                 0x00000900
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2                 0x00000a00
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3                 0x00000b00
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0                   0x00000c00
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE1                   0x00000d00
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR      0x00000e00
+#define NV30_3D_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F                        0x00000f00
+#define NV30_3D_RC_OUT_RGB_CD_DOT_PRODUCT                      0x00001000
+#define NV30_3D_RC_OUT_RGB_AB_DOT_PRODUCT                      0x00002000
+#define NV30_3D_RC_OUT_RGB_MUX_SUM                             0x00004000
+#define NV30_3D_RC_OUT_RGB_BIAS__MASK                          0x00008000
+#define NV30_3D_RC_OUT_RGB_BIAS__SHIFT                         15
+#define NV30_3D_RC_OUT_RGB_BIAS_NONE                           0x00000000
+#define NV30_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF      0x00008000
+#define NV30_3D_RC_OUT_RGB_SCALE__MASK                         0x00030000
+#define NV30_3D_RC_OUT_RGB_SCALE__SHIFT                                16
+#define NV30_3D_RC_OUT_RGB_SCALE_NONE                          0x00000000
+#define NV30_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO                  0x00010000
+#define NV30_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR                 0x00020000
+#define NV30_3D_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF             0x00030000
+
+#define NV30_3D_VIEWPORT_HORIZ                                 0x00000a00
+#define NV30_3D_VIEWPORT_HORIZ_X__MASK                         0x0000ffff
+#define NV30_3D_VIEWPORT_HORIZ_X__SHIFT                                0
+#define NV30_3D_VIEWPORT_HORIZ_W__MASK                         0xffff0000
+#define NV30_3D_VIEWPORT_HORIZ_W__SHIFT                                16
+
+#define NV30_3D_VIEWPORT_VERT                                  0x00000a04
+#define NV30_3D_VIEWPORT_VERT_Y__MASK                          0x0000ffff
+#define NV30_3D_VIEWPORT_VERT_Y__SHIFT                         0
+#define NV30_3D_VIEWPORT_VERT_H__MASK                          0xffff0000
+#define NV30_3D_VIEWPORT_VERT_H__SHIFT                         16
+
+#define NV30_3D_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION   0x00000a10
+
+
+#define NV30_3D_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_R 0x00000a10
+
+#define NV30_3D_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_G 0x00000a14
+
+#define NV30_3D_LIGHT_MODEL_FRONT_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_B 0x00000a18
+
+#define NV30_3D_VIEWPORT_TRANSLATE                             0x00000a20
+
+
+#define NV30_3D_VIEWPORT_TRANSLATE_X                           0x00000a20
+
+#define NV30_3D_VIEWPORT_TRANSLATE_Y                           0x00000a24
+
+#define NV30_3D_VIEWPORT_TRANSLATE_Z                           0x00000a28
+
+#define NV30_3D_VIEWPORT_TRANSLATE_W                           0x00000a2c
+
+#define NV30_3D_VIEWPORT_SCALE                                 0x00000a30
+
+
+#define NV30_3D_VIEWPORT_SCALE_X                               0x00000a30
+
+#define NV30_3D_VIEWPORT_SCALE_Y                               0x00000a34
+
+#define NV30_3D_VIEWPORT_SCALE_Z                               0x00000a38
+
+#define NV30_3D_VIEWPORT_SCALE_W                               0x00000a3c
+
+#define NV30_3D_POLYGON_OFFSET_POINT_ENABLE                    0x00000a60
+
+#define NV30_3D_POLYGON_OFFSET_LINE_ENABLE                     0x00000a64
+
+#define NV30_3D_POLYGON_OFFSET_FILL_ENABLE                     0x00000a68
+
+#define NV30_3D_DEPTH_FUNC                                     0x00000a6c
+#define NV30_3D_DEPTH_FUNC_NEVER                               0x00000200
+#define NV30_3D_DEPTH_FUNC_LESS                                        0x00000201
+#define NV30_3D_DEPTH_FUNC_EQUAL                               0x00000202
+#define NV30_3D_DEPTH_FUNC_LEQUAL                              0x00000203
+#define NV30_3D_DEPTH_FUNC_GREATER                             0x00000204
+#define NV30_3D_DEPTH_FUNC_NOTEQUAL                            0x00000205
+#define NV30_3D_DEPTH_FUNC_GEQUAL                              0x00000206
+#define NV30_3D_DEPTH_FUNC_ALWAYS                              0x00000207
+
+#define NV30_3D_DEPTH_WRITE_ENABLE                             0x00000a70
+
+#define NV30_3D_DEPTH_TEST_ENABLE                              0x00000a74
+
+#define NV30_3D_POLYGON_OFFSET_FACTOR                          0x00000a78
+
+#define NV30_3D_POLYGON_OFFSET_UNITS                           0x00000a7c
+
+#define NV30_3D_VTX_ATTR_3I_XY(i0)                            (0x00000a80 + 0x8*(i0))
+#define NV30_3D_VTX_ATTR_3I_XY__ESIZE                          0x00000008
+#define NV30_3D_VTX_ATTR_3I_XY__LEN                            0x00000010
+#define NV30_3D_VTX_ATTR_3I_XY_X__MASK                         0x0000ffff
+#define NV30_3D_VTX_ATTR_3I_XY_X__SHIFT                                0
+#define NV30_3D_VTX_ATTR_3I_XY_Y__MASK                         0xffff0000
+#define NV30_3D_VTX_ATTR_3I_XY_Y__SHIFT                                16
+
+#define NV30_3D_VTX_ATTR_3I_Z(i0)                             (0x00000a84 + 0x8*(i0))
+#define NV30_3D_VTX_ATTR_3I_Z__ESIZE                           0x00000008
+#define NV30_3D_VTX_ATTR_3I_Z__LEN                             0x00000010
+#define NV30_3D_VTX_ATTR_3I_Z_Z__MASK                          0x0000ffff
+#define NV30_3D_VTX_ATTR_3I_Z_Z__SHIFT                         0
+
+#define NV30_3D_TEX_FILTER_OPTIMIZATION(i0)                   (0x00000b00 + 0x4*(i0))
+#define NV30_3D_TEX_FILTER_OPTIMIZATION__ESIZE                 0x00000004
+#define NV30_3D_TEX_FILTER_OPTIMIZATION__LEN                   0x00000004
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_TRILINEAR__MASK                0x0000001f
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_TRILINEAR__SHIFT       0
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_TRILINEAR_OFF          0x00000000
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_TRILINEAR_HIGH_QUALITY 0x00000004
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_TRILINEAR_QUALITY      0x00000006
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_TRILINEAR_PERFORMANCE  0x00000008
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_TRILINEAR_HIGH_PERFORMANCE     0x00000018
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_ANISO_SAMPLE__MASK     0x000001c0
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_ANISO_SAMPLE__SHIFT    6
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_ANISO_SAMPLE_OFF       0x00000000
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_ANISO_SAMPLE_HIGH_QUALITY      0x000000c0
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_ANISO_SAMPLE_QUALITY   0x000001c0
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_ANISO_SAMPLE_PERFORMANCE       0x00000140
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_UNKNOWN__MASK          0x00007c00
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_UNKNOWN__SHIFT         10
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_UNKNOWN_OFF            0x00000000
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_UNKNOWN_PARTIAL                0x00002c00
+#define NV40_3D_TEX_FILTER_OPTIMIZATION_UNKNOWN_FULL           0x00007c00
+
+#define NV40_3D_UNK0B40(i0)                                   (0x00000b40 + 0x4*(i0))
+#define NV40_3D_UNK0B40__ESIZE                                 0x00000004
+#define NV40_3D_UNK0B40__LEN                                   0x00000008
+
+#define NV30_3D_VP_UPLOAD_INST(i0)                            (0x00000b80 + 0x4*(i0))
+#define NV30_3D_VP_UPLOAD_INST__ESIZE                          0x00000004
+#define NV30_3D_VP_UPLOAD_INST__LEN                            0x00000004
+
+
+#define NV30_3D_TEX_CLIP_PLANE(i0)                            (0x00000e00 + 0x10*(i0))
+
+
+#define NV30_3D_TEX_CLIP_PLANE_X(i0)                          (0x00000e00 + 0x10*(i0))
+
+#define NV30_3D_TEX_CLIP_PLANE_Y(i0)                          (0x00000e04 + 0x10*(i0))
+
+#define NV30_3D_TEX_CLIP_PLANE_Z(i0)                          (0x00000e08 + 0x10*(i0))
+
+#define NV30_3D_TEX_CLIP_PLANE_W(i0)                          (0x00000e0c + 0x10*(i0))
+
+#define NV30_3D_LIGHT                                          0x00001000
+
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT(i0)          (0x00001000 + 0x40*(i0))
+
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT_R(i0)        (0x00001000 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT_G(i0)        (0x00001004 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_AMBIENT_B(i0)        (0x00001008 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE(i0)          (0x0000100c + 0x40*(i0))
+
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE_R(i0)        (0x0000100c + 0x40*(i0))
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE_G(i0)        (0x00001010 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_DIFFUSE_B(i0)        (0x00001014 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR(i0)         (0x00001018 + 0x40*(i0))
+
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR_R(i0)               (0x00001018 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR_G(i0)               (0x0000101c + 0x40*(i0))
+
+#define NV30_3D_LIGHT_FRONT_SIDE_PRODUCT_SPECULAR_B(i0)               (0x00001020 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_UNK24(i0)                                       (0x00001024 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_HALF_VECTOR(i0)                         (0x00001028 + 0x40*(i0))
+
+
+#define NV30_3D_LIGHT_HALF_VECTOR_X(i0)                               (0x00001028 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_HALF_VECTOR_Y(i0)                               (0x0000102c + 0x40*(i0))
+
+#define NV30_3D_LIGHT_HALF_VECTOR_Z(i0)                               (0x00001030 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_DIRECTION(i0)                           (0x00001034 + 0x40*(i0))
+
+
+#define NV30_3D_LIGHT_DIRECTION_X(i0)                         (0x00001034 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_DIRECTION_Y(i0)                         (0x00001038 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_DIRECTION_Z(i0)                         (0x0000103c + 0x40*(i0))
+
+
+#define NV30_3D_LIGHT_SPOT_CUTOFF_A(i0)                               (0x00001200 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_SPOT_CUTOFF_B(i0)                               (0x00001204 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_SPOT_CUTOFF_C(i0)                               (0x00001208 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_SPOT_DIR(i0)                            (0x0000120c + 0x40*(i0))
+
+
+#define NV30_3D_LIGHT_SPOT_DIR_X(i0)                          (0x0000120c + 0x40*(i0))
+
+#define NV30_3D_LIGHT_SPOT_DIR_Y(i0)                          (0x00001210 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_SPOT_DIR_Z(i0)                          (0x00001214 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_SPOT_CUTOFF_D(i0)                               (0x00001218 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_POSITION(i0)                            (0x0000121c + 0x40*(i0))
+
+
+#define NV30_3D_LIGHT_POSITION_X(i0)                          (0x0000121c + 0x40*(i0))
+
+#define NV30_3D_LIGHT_POSITION_Y(i0)                          (0x00001220 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_POSITION_Z(i0)                          (0x00001224 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_ATTENUATION(i0)                         (0x00001228 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_ATTENUATION_CONSTANT(i0)                (0x00001228 + 0x40*(i0))
+
+#define NV30_3D_LIGHT_ATTENUATION_LINEAR(i0)                  (0x0000122c + 0x40*(i0))
+
+#define NV30_3D_LIGHT_ATTENUATION_QUADRATIC(i0)                       (0x00001230 + 0x40*(i0))
+
+#define NV30_3D_FRONT_MATERIAL_SHININESS(i0)                  (0x00001400 + 0x4*(i0))
+#define NV30_3D_FRONT_MATERIAL_SHININESS__ESIZE                        0x00000004
+#define NV30_3D_FRONT_MATERIAL_SHININESS__LEN                  0x00000006
+
+#define NV30_3D_ENABLED_LIGHTS                                 0x00001420
+
+#define NV30_3D_VERTEX_TWO_SIDE_ENABLE                         0x0000142c
+
+#define NV30_3D_FP_REG_CONTROL                                 0x00001450
+#define NV30_3D_FP_REG_CONTROL_UNK0__MASK                      0x0000ffff
+#define NV30_3D_FP_REG_CONTROL_UNK0__SHIFT                     0
+#define NV30_3D_FP_REG_CONTROL_UNK1__MASK                      0xffff0000
+#define NV30_3D_FP_REG_CONTROL_UNK1__SHIFT                     16
+
+#define NV30_3D_FLATSHADE_FIRST                                        0x00001454
+
+#define NV30_3D_EDGEFLAG                                       0x0000145c
+#define NV30_3D_EDGEFLAG_ENABLE                                        0x00000001
+
+#define NV30_3D_VP_CLIP_PLANES_ENABLE                          0x00001478
+#define NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE0                   0x00000002
+#define NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE1                   0x00000020
+#define NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE2                   0x00000200
+#define NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE3                   0x00002000
+#define NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE4                   0x00020000
+#define NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE5                   0x00200000
+
+#define NV30_3D_POLYGON_STIPPLE_ENABLE                         0x0000147c
+
+#define NV30_3D_POLYGON_STIPPLE_PATTERN(i0)                   (0x00001480 + 0x4*(i0))
+#define NV30_3D_POLYGON_STIPPLE_PATTERN__ESIZE                 0x00000004
+#define NV30_3D_POLYGON_STIPPLE_PATTERN__LEN                   0x00000020
+
+#define NV30_3D_VTX_ATTR_3F(i0)                                       (0x00001500 + 0x10*(i0))
+#define NV30_3D_VTX_ATTR_3F__ESIZE                             0x00000010
+#define NV30_3D_VTX_ATTR_3F__LEN                               0x00000010
+
+
+#define NV30_3D_VTX_ATTR_3F_X(i0)                             (0x00001500 + 0x10*(i0))
+
+#define NV30_3D_VTX_ATTR_3F_Y(i0)                             (0x00001504 + 0x10*(i0))
+
+#define NV30_3D_VTX_ATTR_3F_Z(i0)                             (0x00001508 + 0x10*(i0))
+
+
+#define NV30_3D_VP_CLIP_PLANE(i0, i1)                         (0x00001600 + 0x10*(i0) + 0x4*(i1))
+#define NV30_3D_VP_CLIP_PLANE__ESIZE                           0x00000004
+#define NV30_3D_VP_CLIP_PLANE__LEN                             0x00000004
+
+#define NV30_3D_VTXBUF(i0)                                    (0x00001680 + 0x4*(i0))
+#define NV30_3D_VTXBUF__ESIZE                                  0x00000004
+#define NV30_3D_VTXBUF__LEN                                    0x00000010
+#define NV30_3D_VTXBUF_OFFSET__MASK                            0x0fffffff
+#define NV30_3D_VTXBUF_OFFSET__SHIFT                           0
+#define NV30_3D_VTXBUF_DMA1                                    0x80000000
+
+#define NV40_3D_VTX_CACHE_INVALIDATE                           0x00001714
+
+#define NV30_3D_VTXFMT(i0)                                    (0x00001740 + 0x4*(i0))
+#define NV30_3D_VTXFMT__ESIZE                                  0x00000004
+#define NV30_3D_VTXFMT__LEN                                    0x00000010
+#define NV30_3D_VTXFMT_TYPE__MASK                              0x0000000f
+#define NV30_3D_VTXFMT_TYPE__SHIFT                             0
+#define NV30_3D_VTXFMT_TYPE_B8G8R8A8_UNORM                     0x00000000
+#define NV30_3D_VTXFMT_TYPE_V16_SNORM                          0x00000001
+#define NV30_3D_VTXFMT_TYPE_V32_FLOAT                          0x00000002
+#define NV30_3D_VTXFMT_TYPE_V16_FLOAT                          0x00000003
+#define NV30_3D_VTXFMT_TYPE_U8_UNORM                           0x00000004
+#define NV30_3D_VTXFMT_TYPE_V16_SSCALED                                0x00000005
+#define NV30_3D_VTXFMT_TYPE_U8_USCALED                         0x00000007
+#define NV30_3D_VTXFMT_SIZE__MASK                              0x000000f0
+#define NV30_3D_VTXFMT_SIZE__SHIFT                             4
+#define NV30_3D_VTXFMT_STRIDE__MASK                            0x0000ff00
+#define NV30_3D_VTXFMT_STRIDE__SHIFT                           8
+
+#define NV30_3D_LIGHT_MODEL_BACK_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION    0x000017a0
+
+
+#define NV30_3D_LIGHT_MODEL_BACK_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_R  0x000017a0
+
+#define NV30_3D_LIGHT_MODEL_BACK_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_G  0x000017a4
+
+#define NV30_3D_LIGHT_MODEL_BACK_SIDE_PRODUCT_AMBIENT_PLUS_EMISSION_B  0x000017a8
+
+#define NV30_3D_COLOR_MATERIAL_BACK                            0x000017b0
+
+
+#define NV30_3D_COLOR_MATERIAL_BACK_R                          0x000017b0
+
+#define NV30_3D_COLOR_MATERIAL_BACK_G                          0x000017b4
+
+#define NV30_3D_COLOR_MATERIAL_BACK_B                          0x000017b8
+
+#define NV30_3D_COLOR_MATERIAL_BACK_A                          0x000017bc
+
+#define NV30_3D_QUERY_RESET                                    0x000017c8
+
+#define NV30_3D_QUERY_ENABLE                                   0x000017cc
+
+#define NV30_3D_QUERY_GET                                      0x00001800
+#define NV30_3D_QUERY_GET_OFFSET__MASK                         0x00ffffff
+#define NV30_3D_QUERY_GET_OFFSET__SHIFT                                0
+#define NV30_3D_QUERY_GET_UNK24__MASK                          0xff000000
+#define NV30_3D_QUERY_GET_UNK24__SHIFT                         24
+
+#define NV30_3D_VERTEX_BEGIN_END                               0x00001808
+#define NV30_3D_VERTEX_BEGIN_END_STOP                          0x00000000
+#define NV30_3D_VERTEX_BEGIN_END_POINTS                                0x00000001
+#define NV30_3D_VERTEX_BEGIN_END_LINES                         0x00000002
+#define NV30_3D_VERTEX_BEGIN_END_LINE_LOOP                     0x00000003
+#define NV30_3D_VERTEX_BEGIN_END_LINE_STRIP                    0x00000004
+#define NV30_3D_VERTEX_BEGIN_END_TRIANGLES                     0x00000005
+#define NV30_3D_VERTEX_BEGIN_END_TRIANGLE_STRIP                        0x00000006
+#define NV30_3D_VERTEX_BEGIN_END_TRIANGLE_FAN                  0x00000007
+#define NV30_3D_VERTEX_BEGIN_END_QUADS                         0x00000008
+#define NV30_3D_VERTEX_BEGIN_END_QUAD_STRIP                    0x00000009
+#define NV30_3D_VERTEX_BEGIN_END_POLYGON                       0x0000000a
+
+#define NV30_3D_VB_ELEMENT_U16                                 0x0000180c
+#define NV30_3D_VB_ELEMENT_U16_0__MASK                         0x0000ffff
+#define NV30_3D_VB_ELEMENT_U16_0__SHIFT                                0
+#define NV30_3D_VB_ELEMENT_U16_1__MASK                         0xffff0000
+#define NV30_3D_VB_ELEMENT_U16_1__SHIFT                                16
+
+#define NV30_3D_VB_ELEMENT_U32                                 0x00001810
+
+#define NV30_3D_VB_VERTEX_BATCH                                        0x00001814
+#define NV30_3D_VB_VERTEX_BATCH_OFFSET__MASK                   0x00ffffff
+#define NV30_3D_VB_VERTEX_BATCH_OFFSET__SHIFT                  0
+#define NV30_3D_VB_VERTEX_BATCH_COUNT__MASK                    0xff000000
+#define NV30_3D_VB_VERTEX_BATCH_COUNT__SHIFT                   24
+
+#define NV30_3D_VERTEX_DATA                                    0x00001818
+
+#define NV30_3D_IDXBUF_OFFSET                                  0x0000181c
+
+#define NV30_3D_IDXBUF_FORMAT                                  0x00001820
+#define NV30_3D_IDXBUF_FORMAT_DMA1                             0x00000001
+#define NV30_3D_IDXBUF_FORMAT_TYPE__MASK                       0x000000f0
+#define NV30_3D_IDXBUF_FORMAT_TYPE__SHIFT                      4
+#define NV30_3D_IDXBUF_FORMAT_TYPE_U32                         0x00000000
+#define NV30_3D_IDXBUF_FORMAT_TYPE_U16                         0x00000010
+
+#define NV30_3D_VB_INDEX_BATCH                                 0x00001824
+#define NV30_3D_VB_INDEX_BATCH_START__MASK                     0x00ffffff
+#define NV30_3D_VB_INDEX_BATCH_START__SHIFT                    0
+#define NV30_3D_VB_INDEX_BATCH_COUNT__MASK                     0xff000000
+#define NV30_3D_VB_INDEX_BATCH_COUNT__SHIFT                    24
+
+#define NV30_3D_POLYGON_MODE_FRONT                             0x00001828
+#define NV30_3D_POLYGON_MODE_FRONT_POINT                       0x00001b00
+#define NV30_3D_POLYGON_MODE_FRONT_LINE                                0x00001b01
+#define NV30_3D_POLYGON_MODE_FRONT_FILL                                0x00001b02
+
+#define NV30_3D_POLYGON_MODE_BACK                              0x0000182c
+#define NV30_3D_POLYGON_MODE_BACK_POINT                                0x00001b00
+#define NV30_3D_POLYGON_MODE_BACK_LINE                         0x00001b01
+#define NV30_3D_POLYGON_MODE_BACK_FILL                         0x00001b02
+
+#define NV30_3D_CULL_FACE                                      0x00001830
+#define NV30_3D_CULL_FACE_FRONT                                        0x00000404
+#define NV30_3D_CULL_FACE_BACK                                 0x00000405
+#define NV30_3D_CULL_FACE_FRONT_AND_BACK                       0x00000408
+
+#define NV30_3D_FRONT_FACE                                     0x00001834
+#define NV30_3D_FRONT_FACE_CW                                  0x00000900
+#define NV30_3D_FRONT_FACE_CCW                                 0x00000901
+
+#define NV30_3D_POLYGON_SMOOTH_ENABLE                          0x00001838
+
+#define NV30_3D_CULL_FACE_ENABLE                               0x0000183c
+
+#define NV30_3D_TEX_PALETTE_OFFSET(i0)                        (0x00001840 + 0x4*(i0))
+#define NV30_3D_TEX_PALETTE_OFFSET__ESIZE                      0x00000004
+#define NV30_3D_TEX_PALETTE_OFFSET__LEN                                0x00000008
+
+#define NV40_3D_TEX_SIZE1(i0)                                 (0x00001840 + 0x4*(i0))
+#define NV40_3D_TEX_SIZE1__ESIZE                               0x00000004
+#define NV40_3D_TEX_SIZE1__LEN                                 0x00000008
+#define NV40_3D_TEX_SIZE1_DEPTH__MASK                          0xfff00000
+#define NV40_3D_TEX_SIZE1_DEPTH__SHIFT                         20
+#define NV40_3D_TEX_SIZE1_PITCH__MASK                          0x0000ffff
+#define NV40_3D_TEX_SIZE1_PITCH__SHIFT                         0
+
+#define NV30_3D_VTX_ATTR_2F(i0)                                       (0x00001880 + 0x8*(i0))
+#define NV30_3D_VTX_ATTR_2F__ESIZE                             0x00000008
+#define NV30_3D_VTX_ATTR_2F__LEN                               0x00000010
+
+
+#define NV30_3D_VTX_ATTR_2F_X(i0)                             (0x00001880 + 0x8*(i0))
+
+#define NV30_3D_VTX_ATTR_2F_Y(i0)                             (0x00001884 + 0x8*(i0))
+
+#define NV30_3D_VTX_ATTR_2I(i0)                                       (0x00001900 + 0x4*(i0))
+#define NV30_3D_VTX_ATTR_2I__ESIZE                             0x00000004
+#define NV30_3D_VTX_ATTR_2I__LEN                               0x00000010
+#define NV30_3D_VTX_ATTR_2I_X__MASK                            0x0000ffff
+#define NV30_3D_VTX_ATTR_2I_X__SHIFT                           0
+#define NV30_3D_VTX_ATTR_2I_Y__MASK                            0xffff0000
+#define NV30_3D_VTX_ATTR_2I_Y__SHIFT                           16
+
+#define NV30_3D_VTX_ATTR_4UB(i0)                              (0x00001940 + 0x4*(i0))
+#define NV30_3D_VTX_ATTR_4UB__ESIZE                            0x00000004
+#define NV30_3D_VTX_ATTR_4UB__LEN                              0x00000010
+#define NV30_3D_VTX_ATTR_4UB_X__MASK                           0x000000ff
+#define NV30_3D_VTX_ATTR_4UB_X__SHIFT                          0
+#define NV30_3D_VTX_ATTR_4UB_Y__MASK                           0x0000ff00
+#define NV30_3D_VTX_ATTR_4UB_Y__SHIFT                          8
+#define NV30_3D_VTX_ATTR_4UB_Z__MASK                           0x00ff0000
+#define NV30_3D_VTX_ATTR_4UB_Z__SHIFT                          16
+#define NV30_3D_VTX_ATTR_4UB_W__MASK                           0xff000000
+#define NV30_3D_VTX_ATTR_4UB_W__SHIFT                          24
+
+#define NV30_3D_VTX_ATTR_4I(i0)                                       (0x00001980 + 0x8*(i0))
+#define NV30_3D_VTX_ATTR_4I__ESIZE                             0x00000008
+#define NV30_3D_VTX_ATTR_4I__LEN                               0x00000010
+
+#define NV30_3D_VTX_ATTR_4I_XY(i0)                            (0x00001980 + 0x8*(i0))
+#define NV30_3D_VTX_ATTR_4I_XY_X__MASK                         0x0000ffff
+#define NV30_3D_VTX_ATTR_4I_XY_X__SHIFT                                0
+#define NV30_3D_VTX_ATTR_4I_XY_Y__MASK                         0xffff0000
+#define NV30_3D_VTX_ATTR_4I_XY_Y__SHIFT                                16
+
+#define NV30_3D_VTX_ATTR_4I_ZW(i0)                            (0x00001984 + 0x8*(i0))
+#define NV30_3D_VTX_ATTR_4I_ZW_Z__MASK                         0x0000ffff
+#define NV30_3D_VTX_ATTR_4I_ZW_Z__SHIFT                                0
+#define NV30_3D_VTX_ATTR_4I_ZW_W__MASK                         0xffff0000
+#define NV30_3D_VTX_ATTR_4I_ZW_W__SHIFT                                16
+
+#define NV30_3D_TEX_OFFSET(i0)                                (0x00001a00 + 0x20*(i0))
+#define NV30_3D_TEX_OFFSET__ESIZE                              0x00000020
+#define NV30_3D_TEX_OFFSET__LEN                                        0x00000008
+
+#define NV30_3D_TEX_FORMAT(i0)                                (0x00001a04 + 0x20*(i0))
+#define NV30_3D_TEX_FORMAT__ESIZE                              0x00000020
+#define NV30_3D_TEX_FORMAT__LEN                                        0x00000008
+#define NV30_3D_TEX_FORMAT_DMA0                                        0x00000001
+#define NV30_3D_TEX_FORMAT_DMA1                                        0x00000002
+#define NV30_3D_TEX_FORMAT_CUBIC                               0x00000004
+#define NV30_3D_TEX_FORMAT_NO_BORDER                           0x00000008
+#define NV30_3D_TEX_FORMAT_DIMS__MASK                          0x000000f0
+#define NV30_3D_TEX_FORMAT_DIMS__SHIFT                         4
+#define NV30_3D_TEX_FORMAT_DIMS_1D                             0x00000010
+#define NV30_3D_TEX_FORMAT_DIMS_2D                             0x00000020
+#define NV30_3D_TEX_FORMAT_DIMS_3D                             0x00000030
+#define NV30_3D_TEX_FORMAT_FORMAT__MASK                                0x0000ff00
+#define NV30_3D_TEX_FORMAT_FORMAT__SHIFT                       8
+#define NV30_3D_TEX_FORMAT_FORMAT_L8                           0x00000000
+#define NV30_3D_TEX_FORMAT_FORMAT_I8                           0x00000100
+#define NV30_3D_TEX_FORMAT_FORMAT_A1R5G5B5                     0x00000200
+#define NV30_3D_TEX_FORMAT_FORMAT_A4R4G4B4                     0x00000400
+#define NV30_3D_TEX_FORMAT_FORMAT_R5G6B5                       0x00000500
+#define NV30_3D_TEX_FORMAT_FORMAT_A8R8G8B8                     0x00000600
+#define NV30_3D_TEX_FORMAT_FORMAT_X8R8G8B8                     0x00000700
+#define NV30_3D_TEX_FORMAT_FORMAT_INDEX8                       0x00000b00
+#define NV30_3D_TEX_FORMAT_FORMAT_DXT1                         0x00000c00
+#define NV30_3D_TEX_FORMAT_FORMAT_DXT3                         0x00000e00
+#define NV30_3D_TEX_FORMAT_FORMAT_DXT5                         0x00000f00
+#define NV30_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT                        0x00001000
+#define NV30_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT                  0x00001100
+#define NV30_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT                        0x00001200
+#define NV30_3D_TEX_FORMAT_FORMAT_L8_RECT                      0x00001300
+#define NV30_3D_TEX_FORMAT_FORMAT_DSDT8_RECT                   0x00001700
+#define NV30_3D_TEX_FORMAT_FORMAT_A8L8                         0x00001a00
+#define NV30_3D_TEX_FORMAT_FORMAT_I8_RECT                      0x00001b00
+#define NV30_3D_TEX_FORMAT_FORMAT_A4R4G4B4_RECT                        0x00001d00
+#define NV30_3D_TEX_FORMAT_FORMAT_R8G8B8_RECT                  0x00001e00
+#define NV30_3D_TEX_FORMAT_FORMAT_A8L8_RECT                    0x00002000
+#define NV30_3D_TEX_FORMAT_FORMAT_Z24                          0x00002a00
+#define NV30_3D_TEX_FORMAT_FORMAT_Z24_RECT                     0x00002b00
+#define NV30_3D_TEX_FORMAT_FORMAT_Z16                          0x00002c00
+#define NV30_3D_TEX_FORMAT_FORMAT_Z16_RECT                     0x00002d00
+#define NV30_3D_TEX_FORMAT_FORMAT_DSDT8                                0x00002800
+#define NV30_3D_TEX_FORMAT_FORMAT_HILO16                       0x00003300
+#define NV30_3D_TEX_FORMAT_FORMAT_HILO16_RECT                  0x00003600
+#define NV30_3D_TEX_FORMAT_FORMAT_HILO8                                0x00004400
+#define NV30_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8                 0x00004500
+#define NV30_3D_TEX_FORMAT_FORMAT_HILO8_RECT                   0x00004600
+#define NV30_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8_RECT            0x00004700
+#define NV30_3D_TEX_FORMAT_FORMAT_A16                          0x00003200
+#define NV30_3D_TEX_FORMAT_FORMAT_A16_RECT                     0x00003500
+#define NV30_3D_TEX_FORMAT_FORMAT_UNK3F                                0x00003f00
+#define NV30_3D_TEX_FORMAT_FORMAT_FLOAT_RGBA16_NV              0x00004a00
+#define NV30_3D_TEX_FORMAT_FORMAT_FLOAT_RGBA32_NV              0x00004b00
+#define NV30_3D_TEX_FORMAT_FORMAT_FLOAT_R32_NV                 0x00004c00
+#define NV40_3D_TEX_FORMAT_FORMAT__MASK                                0x00001f00
+#define NV40_3D_TEX_FORMAT_FORMAT__SHIFT                       8
+#define NV40_3D_TEX_FORMAT_FORMAT_L8                           0x00000100
+#define NV40_3D_TEX_FORMAT_FORMAT_A1R5G5B5                     0x00000200
+#define NV40_3D_TEX_FORMAT_FORMAT_A4R4G4B4                     0x00000300
+#define NV40_3D_TEX_FORMAT_FORMAT_R5G6B5                       0x00000400
+#define NV40_3D_TEX_FORMAT_FORMAT_A8R8G8B8                     0x00000500
+#define NV40_3D_TEX_FORMAT_FORMAT_DXT1                         0x00000600
+#define NV40_3D_TEX_FORMAT_FORMAT_DXT3                         0x00000700
+#define NV40_3D_TEX_FORMAT_FORMAT_DXT5                         0x00000800
+#define NV40_3D_TEX_FORMAT_FORMAT_A8L8                         0x00000b00
+#define NV40_3D_TEX_FORMAT_FORMAT_Z24                          0x00001000
+#define NV40_3D_TEX_FORMAT_FORMAT_Z16                          0x00001200
+#define NV40_3D_TEX_FORMAT_FORMAT_A16                          0x00001400
+#define NV40_3D_TEX_FORMAT_FORMAT_A16L16                       0x00001500
+#define NV40_3D_TEX_FORMAT_FORMAT_HILO8                                0x00001800
+#define NV40_3D_TEX_FORMAT_FORMAT_RGBA16F                      0x00001a00
+#define NV40_3D_TEX_FORMAT_FORMAT_RGBA32F                      0x00001b00
+#define NV40_3D_TEX_FORMAT_LINEAR                              0x00002000
+#define NV40_3D_TEX_FORMAT_RECT                                        0x00004000
+#define NV40_3D_TEX_FORMAT_MIPMAP_COUNT__MASK                  0x000f0000
+#define NV40_3D_TEX_FORMAT_MIPMAP_COUNT__SHIFT                 16
+#define NV30_3D_TEX_FORMAT_MIPMAP                              0x00080000
+#define NV30_3D_TEX_FORMAT_BASE_SIZE_U__MASK                   0x00f00000
+#define NV30_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT                  20
+#define NV30_3D_TEX_FORMAT_BASE_SIZE_V__MASK                   0x0f000000
+#define NV30_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT                  24
+#define NV30_3D_TEX_FORMAT_BASE_SIZE_W__MASK                   0xf0000000
+#define NV30_3D_TEX_FORMAT_BASE_SIZE_W__SHIFT                  28
+
+#define NV30_3D_TEX_WRAP(i0)                                  (0x00001a08 + 0x20*(i0))
+#define NV30_3D_TEX_WRAP__ESIZE                                        0x00000020
+#define NV30_3D_TEX_WRAP__LEN                                  0x00000008
+#define NV30_3D_TEX_WRAP_S__MASK                               0x000000ff
+#define NV30_3D_TEX_WRAP_S__SHIFT                              0
+#define NV30_3D_TEX_WRAP_S_REPEAT                              0x00000001
+#define NV30_3D_TEX_WRAP_S_MIRRORED_REPEAT                     0x00000002
+#define NV30_3D_TEX_WRAP_S_CLAMP_TO_EDGE                       0x00000003
+#define NV30_3D_TEX_WRAP_S_CLAMP_TO_BORDER                     0x00000004
+#define NV30_3D_TEX_WRAP_S_CLAMP                               0x00000005
+#define NV40_3D_TEX_WRAP_S_MIRROR_CLAMP_TO_EDGE                        0x00000006
+#define NV40_3D_TEX_WRAP_S_MIRROR_CLAMP_TO_BORDER              0x00000007
+#define NV40_3D_TEX_WRAP_S_MIRROR_CLAMP                                0x00000008
+#define NV40_3D_TEX_WRAP_ANISO_MIP_FILTER_OPTIMIZATION__MASK   0x00000070
+#define NV40_3D_TEX_WRAP_ANISO_MIP_FILTER_OPTIMIZATION__SHIFT  4
+#define NV40_3D_TEX_WRAP_ANISO_MIP_FILTER_OPTIMIZATION_OFF     0x00000000
+#define NV40_3D_TEX_WRAP_ANISO_MIP_FILTER_OPTIMIZATION_QUALITY 0x00000020
+#define NV40_3D_TEX_WRAP_ANISO_MIP_FILTER_OPTIMIZATION_PERFORMANCE     0x00000030
+#define NV40_3D_TEX_WRAP_ANISO_MIP_FILTER_OPTIMIZATION_HIGH_PERFORMANCE        0x00000070
+#define NV30_3D_TEX_WRAP_T__MASK                               0x00000f00
+#define NV30_3D_TEX_WRAP_T__SHIFT                              8
+#define NV30_3D_TEX_WRAP_T_REPEAT                              0x00000100
+#define NV30_3D_TEX_WRAP_T_MIRRORED_REPEAT                     0x00000200
+#define NV30_3D_TEX_WRAP_T_CLAMP_TO_EDGE                       0x00000300
+#define NV30_3D_TEX_WRAP_T_CLAMP_TO_BORDER                     0x00000400
+#define NV30_3D_TEX_WRAP_T_CLAMP                               0x00000500
+#define NV40_3D_TEX_WRAP_T_MIRROR_CLAMP_TO_EDGE                        0x00000600
+#define NV40_3D_TEX_WRAP_T_MIRROR_CLAMP_TO_BORDER              0x00000700
+#define NV40_3D_TEX_WRAP_T_MIRROR_CLAMP                                0x00000800
+#define NV30_3D_TEX_WRAP_EXPAND_NORMAL                         0x0000f000
+#define NV30_3D_TEX_WRAP_R__MASK                               0x000f0000
+#define NV30_3D_TEX_WRAP_R__SHIFT                              16
+#define NV30_3D_TEX_WRAP_R_REPEAT                              0x00010000
+#define NV30_3D_TEX_WRAP_R_MIRRORED_REPEAT                     0x00020000
+#define NV30_3D_TEX_WRAP_R_CLAMP_TO_EDGE                       0x00030000
+#define NV30_3D_TEX_WRAP_R_CLAMP_TO_BORDER                     0x00040000
+#define NV30_3D_TEX_WRAP_R_CLAMP                               0x00050000
+#define NV40_3D_TEX_WRAP_R_MIRROR_CLAMP_TO_EDGE                        0x00060000
+#define NV40_3D_TEX_WRAP_R_MIRROR_CLAMP_TO_BORDER              0x00070000
+#define NV40_3D_TEX_WRAP_R_MIRROR_CLAMP                                0x00080000
+#define NV40_3D_TEX_WRAP_GAMMA_DECREASE_FILTER__MASK           0x00f00000
+#define NV40_3D_TEX_WRAP_GAMMA_DECREASE_FILTER__SHIFT          20
+#define NV40_3D_TEX_WRAP_GAMMA_DECREASE_FILTER_NONE            0x00000000
+#define NV40_3D_TEX_WRAP_GAMMA_DECREASE_FILTER_RED             0x00100000
+#define NV40_3D_TEX_WRAP_GAMMA_DECREASE_FILTER_GREEN           0x00200000
+#define NV40_3D_TEX_WRAP_GAMMA_DECREASE_FILTER_BLUE            0x00400000
+#define NV40_3D_TEX_WRAP_GAMMA_DECREASE_FILTER_ALL             0x00f00000
+#define NV30_3D_TEX_WRAP_RCOMP__MASK                           0xf0000000
+#define NV30_3D_TEX_WRAP_RCOMP__SHIFT                          28
+#define NV30_3D_TEX_WRAP_RCOMP_NEVER                           0x00000000
+#define NV30_3D_TEX_WRAP_RCOMP_GREATER                         0x10000000
+#define NV30_3D_TEX_WRAP_RCOMP_EQUAL                           0x20000000
+#define NV30_3D_TEX_WRAP_RCOMP_GEQUAL                          0x30000000
+#define NV30_3D_TEX_WRAP_RCOMP_LESS                            0x40000000
+#define NV30_3D_TEX_WRAP_RCOMP_NOTEQUAL                                0x50000000
+#define NV30_3D_TEX_WRAP_RCOMP_LEQUAL                          0x60000000
+#define NV30_3D_TEX_WRAP_RCOMP_ALWAYS                          0x70000000
+
+#define NV30_3D_TEX_ENABLE(i0)                                (0x00001a0c + 0x20*(i0))
+#define NV30_3D_TEX_ENABLE__ESIZE                              0x00000020
+#define NV30_3D_TEX_ENABLE__LEN                                        0x00000008
+#define NV30_3D_TEX_ENABLE_ANISO__MASK                         0x00000030
+#define NV30_3D_TEX_ENABLE_ANISO__SHIFT                                4
+#define NV30_3D_TEX_ENABLE_ANISO_NONE                          0x00000000
+#define NV30_3D_TEX_ENABLE_ANISO_2X                            0x00000010
+#define NV30_3D_TEX_ENABLE_ANISO_4X                            0x00000020
+#define NV30_3D_TEX_ENABLE_ANISO_8X                            0x00000030
+#define NV40_3D_TEX_ENABLE_ANISO__MASK                         0x000000f0
+#define NV40_3D_TEX_ENABLE_ANISO__SHIFT                                4
+#define NV40_3D_TEX_ENABLE_ANISO_NONE                          0x00000000
+#define NV40_3D_TEX_ENABLE_ANISO_2X                            0x00000010
+#define NV40_3D_TEX_ENABLE_ANISO_4X                            0x00000020
+#define NV40_3D_TEX_ENABLE_ANISO_6X                            0x00000030
+#define NV40_3D_TEX_ENABLE_ANISO_8X                            0x00000040
+#define NV40_3D_TEX_ENABLE_ANISO_10X                           0x00000050
+#define NV40_3D_TEX_ENABLE_ANISO_12X                           0x00000060
+#define NV40_3D_TEX_ENABLE_ANISO_16X                           0x00000070
+#define NV30_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK                        0x0003c000
+#define NV30_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT               14
+#define NV40_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK                        0x00038000
+#define NV40_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT               15
+#define NV30_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK                        0x3c000000
+#define NV30_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT               26
+#define NV40_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK                        0x38000000
+#define NV40_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT               27
+#define NV30_3D_TEX_ENABLE_ENABLE                              0x40000000
+#define NV40_3D_TEX_ENABLE_ENABLE                              0x80000000
+
+#define NV30_3D_TEX_SWIZZLE(i0)                                       (0x00001a10 + 0x20*(i0))
+#define NV30_3D_TEX_SWIZZLE__ESIZE                             0x00000020
+#define NV30_3D_TEX_SWIZZLE__LEN                               0x00000008
+#define NV30_3D_TEX_SWIZZLE_S1_W__MASK                         0x00000003
+#define NV30_3D_TEX_SWIZZLE_S1_W__SHIFT                                0
+#define NV30_3D_TEX_SWIZZLE_S1_W_W                             0x00000000
+#define NV30_3D_TEX_SWIZZLE_S1_W_Z                             0x00000001
+#define NV30_3D_TEX_SWIZZLE_S1_W_Y                             0x00000002
+#define NV30_3D_TEX_SWIZZLE_S1_W_X                             0x00000003
+#define NV30_3D_TEX_SWIZZLE_S1_Z__MASK                         0x0000000c
+#define NV30_3D_TEX_SWIZZLE_S1_Z__SHIFT                                2
+#define NV30_3D_TEX_SWIZZLE_S1_Z_W                             0x00000000
+#define NV30_3D_TEX_SWIZZLE_S1_Z_Z                             0x00000004
+#define NV30_3D_TEX_SWIZZLE_S1_Z_Y                             0x00000008
+#define NV30_3D_TEX_SWIZZLE_S1_Z_X                             0x0000000c
+#define NV30_3D_TEX_SWIZZLE_S1_Y__MASK                         0x00000030
+#define NV30_3D_TEX_SWIZZLE_S1_Y__SHIFT                                4
+#define NV30_3D_TEX_SWIZZLE_S1_Y_W                             0x00000000
+#define NV30_3D_TEX_SWIZZLE_S1_Y_Z                             0x00000010
+#define NV30_3D_TEX_SWIZZLE_S1_Y_Y                             0x00000020
+#define NV30_3D_TEX_SWIZZLE_S1_Y_X                             0x00000030
+#define NV30_3D_TEX_SWIZZLE_S1_X__MASK                         0x000000c0
+#define NV30_3D_TEX_SWIZZLE_S1_X__SHIFT                                6
+#define NV30_3D_TEX_SWIZZLE_S1_X_W                             0x00000000
+#define NV30_3D_TEX_SWIZZLE_S1_X_Z                             0x00000040
+#define NV30_3D_TEX_SWIZZLE_S1_X_Y                             0x00000080
+#define NV30_3D_TEX_SWIZZLE_S1_X_X                             0x000000c0
+#define NV30_3D_TEX_SWIZZLE_S0_W__MASK                         0x00000300
+#define NV30_3D_TEX_SWIZZLE_S0_W__SHIFT                                8
+#define NV30_3D_TEX_SWIZZLE_S0_W_ZERO                          0x00000000
+#define NV30_3D_TEX_SWIZZLE_S0_W_ONE                           0x00000100
+#define NV30_3D_TEX_SWIZZLE_S0_W_S1                            0x00000200
+#define NV30_3D_TEX_SWIZZLE_S0_Z__MASK                         0x00000c00
+#define NV30_3D_TEX_SWIZZLE_S0_Z__SHIFT                                10
+#define NV30_3D_TEX_SWIZZLE_S0_Z_ZERO                          0x00000000
+#define NV30_3D_TEX_SWIZZLE_S0_Z_ONE                           0x00000400
+#define NV30_3D_TEX_SWIZZLE_S0_Z_S1                            0x00000800
+#define NV30_3D_TEX_SWIZZLE_S0_Y__MASK                         0x00003000
+#define NV30_3D_TEX_SWIZZLE_S0_Y__SHIFT                                12
+#define NV30_3D_TEX_SWIZZLE_S0_Y_ZERO                          0x00000000
+#define NV30_3D_TEX_SWIZZLE_S0_Y_ONE                           0x00001000
+#define NV30_3D_TEX_SWIZZLE_S0_Y_S1                            0x00002000
+#define NV30_3D_TEX_SWIZZLE_S0_X__MASK                         0x0000c000
+#define NV30_3D_TEX_SWIZZLE_S0_X__SHIFT                                14
+#define NV30_3D_TEX_SWIZZLE_S0_X_ZERO                          0x00000000
+#define NV30_3D_TEX_SWIZZLE_S0_X_ONE                           0x00004000
+#define NV30_3D_TEX_SWIZZLE_S0_X_S1                            0x00008000
+#define NV30_3D_TEX_SWIZZLE_RECT_PITCH__MASK                   0xffff0000
+#define NV30_3D_TEX_SWIZZLE_RECT_PITCH__SHIFT                  16
+
+#define NV30_3D_TEX_FILTER(i0)                                (0x00001a14 + 0x20*(i0))
+#define NV30_3D_TEX_FILTER__ESIZE                              0x00000020
+#define NV30_3D_TEX_FILTER__LEN                                        0x00000008
+#define NV30_3D_TEX_FILTER_LOD_BIAS__MASK                      0x00000f00
+#define NV30_3D_TEX_FILTER_LOD_BIAS__SHIFT                     8
+#define NV30_3D_TEX_FILTER_MIN__MASK                           0x000f0000
+#define NV30_3D_TEX_FILTER_MIN__SHIFT                          16
+#define NV30_3D_TEX_FILTER_MIN_NEAREST                         0x00010000
+#define NV30_3D_TEX_FILTER_MIN_LINEAR                          0x00020000
+#define NV30_3D_TEX_FILTER_MIN_NEAREST_MIPMAP_NEAREST          0x00030000
+#define NV30_3D_TEX_FILTER_MIN_LINEAR_MIPMAP_NEAREST           0x00040000
+#define NV30_3D_TEX_FILTER_MIN_NEAREST_MIPMAP_LINEAR           0x00050000
+#define NV30_3D_TEX_FILTER_MIN_LINEAR_MIPMAP_LINEAR            0x00060000
+#define NV30_3D_TEX_FILTER_MAG__MASK                           0x0f000000
+#define NV30_3D_TEX_FILTER_MAG__SHIFT                          24
+#define NV30_3D_TEX_FILTER_MAG_NEAREST                         0x01000000
+#define NV30_3D_TEX_FILTER_MAG_LINEAR                          0x02000000
+#define NV30_3D_TEX_FILTER_SIGNED_BLUE                         0x10000000
+#define NV30_3D_TEX_FILTER_SIGNED_GREEN                                0x20000000
+#define NV30_3D_TEX_FILTER_SIGNED_RED                          0x40000000
+#define NV30_3D_TEX_FILTER_SIGNED_ALPHA                                0x80000000
+
+#define NV30_3D_TEX_NPOT_SIZE(i0)                             (0x00001a18 + 0x20*(i0))
+#define NV30_3D_TEX_NPOT_SIZE__ESIZE                           0x00000020
+#define NV30_3D_TEX_NPOT_SIZE__LEN                             0x00000008
+#define NV30_3D_TEX_NPOT_SIZE_H__MASK                          0x0000ffff
+#define NV30_3D_TEX_NPOT_SIZE_H__SHIFT                         0
+#define NV30_3D_TEX_NPOT_SIZE_W__MASK                          0xffff0000
+#define NV30_3D_TEX_NPOT_SIZE_W__SHIFT                         16
+
+#define NV30_3D_TEX_BORDER_COLOR(i0)                          (0x00001a1c + 0x20*(i0))
+#define NV30_3D_TEX_BORDER_COLOR__ESIZE                                0x00000020
+#define NV30_3D_TEX_BORDER_COLOR__LEN                          0x00000008
+#define NV30_3D_TEX_BORDER_COLOR_B__MASK                       0x000000ff
+#define NV30_3D_TEX_BORDER_COLOR_B__SHIFT                      0
+#define NV30_3D_TEX_BORDER_COLOR_G__MASK                       0x0000ff00
+#define NV30_3D_TEX_BORDER_COLOR_G__SHIFT                      8
+#define NV30_3D_TEX_BORDER_COLOR_R__MASK                       0x00ff0000
+#define NV30_3D_TEX_BORDER_COLOR_R__SHIFT                      16
+#define NV30_3D_TEX_BORDER_COLOR_A__MASK                       0xff000000
+#define NV30_3D_TEX_BORDER_COLOR_A__SHIFT                      24
+
+#define NV30_3D_VTX_ATTR_4F(i0)                                       (0x00001c00 + 0x10*(i0))
+#define NV30_3D_VTX_ATTR_4F__ESIZE                             0x00000010
+#define NV30_3D_VTX_ATTR_4F__LEN                               0x00000010
+
+
+#define NV30_3D_VTX_ATTR_4F_X(i0)                             (0x00001c00 + 0x10*(i0))
+
+#define NV30_3D_VTX_ATTR_4F_Y(i0)                             (0x00001c04 + 0x10*(i0))
+
+#define NV30_3D_VTX_ATTR_4F_Z(i0)                             (0x00001c08 + 0x10*(i0))
+
+#define NV30_3D_VTX_ATTR_4F_W(i0)                             (0x00001c0c + 0x10*(i0))
+
+#define NV30_3D_FP_CONTROL                                     0x00001d60
+#define NV30_3D_FP_CONTROL_USED_REGS_MINUS1_DIV2__MASK         0x0000000f
+#define NV30_3D_FP_CONTROL_USED_REGS_MINUS1_DIV2__SHIFT                0
+#define NV30_3D_FP_CONTROL_USES_KIL                            0x00000080
+#define NV40_3D_FP_CONTROL_KIL                                 0x00000080
+#define NV40_3D_FP_CONTROL_TEMP_COUNT__MASK                    0xff000000
+#define NV40_3D_FP_CONTROL_TEMP_COUNT__SHIFT                   24
+
+#define NV30_3D_DEPTH_CONTROL                                  0x00001d78
+#define NV30_3D_DEPTH_CONTROL_CLAMP                            0x000000f0
+
+#define NV30_3D_MULTISAMPLE_CONTROL                            0x00001d7c
+#define NV30_3D_MULTISAMPLE_CONTROL_ENABLE                     0x00000001
+#define NV30_3D_MULTISAMPLE_CONTROL_SAMPLE_ALPHA_TO_COVERAGE   0x00000010
+#define NV30_3D_MULTISAMPLE_CONTROL_SAMPLE_ALPHA_TO_ONE                0x00000100
+#define NV30_3D_MULTISAMPLE_CONTROL_SAMPLE_COVERAGE__MASK      0xffff0000
+#define NV30_3D_MULTISAMPLE_CONTROL_SAMPLE_COVERAGE__SHIFT     16
+
+#define NV30_3D_COORD_CONVENTIONS                              0x00001d88
+#define NV30_3D_COORD_CONVENTIONS_HEIGHT__MASK                 0x00000fff
+#define NV30_3D_COORD_CONVENTIONS_HEIGHT__SHIFT                        0
+#define NV30_3D_COORD_CONVENTIONS_ORIGIN__MASK                 0x00001000
+#define NV30_3D_COORD_CONVENTIONS_ORIGIN__SHIFT                        12
+#define NV30_3D_COORD_CONVENTIONS_ORIGIN_NORMAL                        0x00000000
+#define NV30_3D_COORD_CONVENTIONS_ORIGIN_INVERTED              0x00001000
+#define NV30_3D_COORD_CONVENTIONS_CENTER__MASK                 0x00010000
+#define NV30_3D_COORD_CONVENTIONS_CENTER__SHIFT                        16
+#define NV30_3D_COORD_CONVENTIONS_CENTER_HALF_INTEGER          0x00000000
+#define NV30_3D_COORD_CONVENTIONS_CENTER_INTEGER               0x00010000
+
+#define NV30_3D_CLEAR_DEPTH_VALUE                              0x00001d8c
+
+#define NV30_3D_CLEAR_COLOR_VALUE                              0x00001d90
+#define NV30_3D_CLEAR_COLOR_VALUE_B__MASK                      0x000000ff
+#define NV30_3D_CLEAR_COLOR_VALUE_B__SHIFT                     0
+#define NV30_3D_CLEAR_COLOR_VALUE_G__MASK                      0x0000ff00
+#define NV30_3D_CLEAR_COLOR_VALUE_G__SHIFT                     8
+#define NV30_3D_CLEAR_COLOR_VALUE_R__MASK                      0x00ff0000
+#define NV30_3D_CLEAR_COLOR_VALUE_R__SHIFT                     16
+#define NV30_3D_CLEAR_COLOR_VALUE_A__MASK                      0xff000000
+#define NV30_3D_CLEAR_COLOR_VALUE_A__SHIFT                     24
+
+#define NV30_3D_CLEAR_BUFFERS                                  0x00001d94
+#define NV30_3D_CLEAR_BUFFERS_DEPTH                            0x00000001
+#define NV30_3D_CLEAR_BUFFERS_STENCIL                          0x00000002
+#define NV30_3D_CLEAR_BUFFERS_COLOR_R                          0x00000010
+#define NV30_3D_CLEAR_BUFFERS_COLOR_G                          0x00000020
+#define NV30_3D_CLEAR_BUFFERS_COLOR_B                          0x00000040
+#define NV30_3D_CLEAR_BUFFERS_COLOR_A                          0x00000080
+
+#define NV30_3D_DO_VERTICES                                    0x00001dac
+
+#define NV30_3D_LINE_STIPPLE_ENABLE                            0x00001db4
+
+#define NV30_3D_LINE_STIPPLE_PATTERN                           0x00001db8
+#define NV30_3D_LINE_STIPPLE_PATTERN_FACTOR__MASK              0x0000ffff
+#define NV30_3D_LINE_STIPPLE_PATTERN_FACTOR__SHIFT             0
+#define NV30_3D_LINE_STIPPLE_PATTERN_PATTERN__MASK             0xffff0000
+#define NV30_3D_LINE_STIPPLE_PATTERN_PATTERN__SHIFT            16
+
+#define NV30_3D_BACK_MATERIAL_SHININESS(i0)                   (0x00001e20 + 0x4*(i0))
+#define NV30_3D_BACK_MATERIAL_SHININESS__ESIZE                 0x00000004
+#define NV30_3D_BACK_MATERIAL_SHININESS__LEN                   0x00000006
+
+#define NV30_3D_VTX_ATTR_1F(i0)                                       (0x00001e40 + 0x4*(i0))
+#define NV30_3D_VTX_ATTR_1F__ESIZE                             0x00000004
+#define NV30_3D_VTX_ATTR_1F__LEN                               0x00000010
+
+#define NV30_3D_ENGINE                                         0x00001e94
+#define NV30_3D_ENGINE_FP                                      0x00000001
+#define NV30_3D_ENGINE_VP                                      0x00000002
+#define NV30_3D_ENGINE_FIXED                                   0x00000004
+
+#define NV30_3D_VP_UPLOAD_FROM_ID                              0x00001e9c
+
+#define NV30_3D_VP_START_FROM_ID                               0x00001ea0
+
+#define NV30_3D_POINT_PARAMETERS(i0)                          (0x00001ec0 + 0x4*(i0))
+#define NV30_3D_POINT_PARAMETERS__ESIZE                                0x00000004
+#define NV30_3D_POINT_PARAMETERS__LEN                          0x00000008
+
+#define NV30_3D_POINT_SIZE                                     0x00001ee0
+
+#define NV30_3D_POINT_PARAMETERS_ENABLE                                0x00001ee4
+
+#define NV30_3D_POINT_SPRITE                                   0x00001ee8
+#define NV30_3D_POINT_SPRITE_ENABLE                            0x00000001
+#define NV30_3D_POINT_SPRITE_R_MODE__MASK                      0x00000006
+#define NV30_3D_POINT_SPRITE_R_MODE__SHIFT                     1
+#define NV30_3D_POINT_SPRITE_R_MODE_ZERO                       0x00000000
+#define NV30_3D_POINT_SPRITE_R_MODE_R                          0x00000002
+#define NV30_3D_POINT_SPRITE_R_MODE_S                          0x00000004
+#define NV30_3D_POINT_SPRITE_COORD_REPLACE_0                   0x00000100
+#define NV30_3D_POINT_SPRITE_COORD_REPLACE_1                   0x00000200
+#define NV30_3D_POINT_SPRITE_COORD_REPLACE_2                   0x00000400
+#define NV30_3D_POINT_SPRITE_COORD_REPLACE_3                   0x00000800
+#define NV30_3D_POINT_SPRITE_COORD_REPLACE_4                   0x00001000
+#define NV30_3D_POINT_SPRITE_COORD_REPLACE_5                   0x00002000
+#define NV30_3D_POINT_SPRITE_COORD_REPLACE_6                   0x00004000
+#define NV30_3D_POINT_SPRITE_COORD_REPLACE_7                   0x00008000
+
+#define NV30_3D_VP_UPLOAD_CONST_ID                             0x00001efc
+
+#define NV30_3D_VP_UPLOAD_CONST(i0)                           (0x00001f00 + 0x10*(i0))
+#define NV30_3D_VP_UPLOAD_CONST__ESIZE                         0x00000010
+#define NV30_3D_VP_UPLOAD_CONST__LEN                           0x00000004
+
+
+#define NV30_3D_VP_UPLOAD_CONST_X(i0)                         (0x00001f00 + 0x10*(i0))
+
+#define NV30_3D_VP_UPLOAD_CONST_Y(i0)                         (0x00001f04 + 0x10*(i0))
+
+#define NV30_3D_VP_UPLOAD_CONST_Z(i0)                         (0x00001f08 + 0x10*(i0))
+
+#define NV30_3D_VP_UPLOAD_CONST_W(i0)                         (0x00001f0c + 0x10*(i0))
+
+#define NV30_3D_UNK1F80(i0)                                   (0x00001f80 + 0x4*(i0))
+#define NV30_3D_UNK1F80__ESIZE                                 0x00000004
+#define NV30_3D_UNK1F80__LEN                                   0x00000010
+
+#define NV40_3D_TEX_CACHE_CTL                                  0x00001fd8
+
+#define NV40_3D_VP_ATTRIB_EN                                   0x00001ff0
+
+#define NV40_3D_VP_RESULT_EN                                   0x00001ff4
+
+
+#endif /* NV30_40_3D_XML */
index 0c3d43fd57345a54b67a66b10302f702de9bc0ad..d6ede5b40a1a9be08d0c24565124006c58f7d53b 100644 (file)
@@ -14,11 +14,11 @@ nv30_sampler_state_init(struct pipe_context *pipe,
        if (cso->max_anisotropy >= 2)
        {
                if (cso->max_anisotropy >= 8)
-                       ps->en |= NV34TCL_TX_ENABLE_ANISO_8X;
+                       ps->en |= NV30_3D_TEX_ENABLE_ANISO_8X;
                else if (cso->max_anisotropy >= 4)
-                       ps->en |= NV34TCL_TX_ENABLE_ANISO_4X;
+                       ps->en |= NV30_3D_TEX_ENABLE_ANISO_4X;
                else if (cso->max_anisotropy >= 2)
-                       ps->en |= NV34TCL_TX_ENABLE_ANISO_2X;
+                       ps->en |= NV30_3D_TEX_ENABLE_ANISO_2X;
        }
 
        limit = CLAMP(cso->lod_bias, -16.0, 15.0 + (255.0 / 256.0));
@@ -27,7 +27,7 @@ nv30_sampler_state_init(struct pipe_context *pipe,
        ps->max_lod = (int)CLAMP(cso->max_lod, 0.0, 15.0);
        ps->min_lod = (int)CLAMP(cso->min_lod, 0.0, 15.0);
 
-       ps->en |= NV34TCL_TX_ENABLE_ENABLE;
+       ps->en |= NV30_3D_TEX_ENABLE_ENABLE;
 }
 
 void
@@ -42,10 +42,10 @@ nv30_sampler_view_init(struct pipe_context *pipe,
        assert(tf->fmt[0] >= 0);
 
        txf = sv->u.init_fmt;
-       txf |= (level != sv->base.last_level ? NV34TCL_TX_FORMAT_MIPMAP : 0);
-       txf |= util_logbase2(u_minify(pt->width0, level)) << NV34TCL_TX_FORMAT_BASE_SIZE_U_SHIFT;
-       txf |= util_logbase2(u_minify(pt->height0, level)) << NV34TCL_TX_FORMAT_BASE_SIZE_V_SHIFT;
-       txf |= util_logbase2(u_minify(pt->depth0, level)) << NV34TCL_TX_FORMAT_BASE_SIZE_W_SHIFT;
+       txf |= (level != sv->base.last_level ? NV30_3D_TEX_FORMAT_MIPMAP : 0);
+       txf |= util_logbase2(u_minify(pt->width0, level)) << NV30_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT;
+       txf |= util_logbase2(u_minify(pt->height0, level)) << NV30_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT;
+       txf |= util_logbase2(u_minify(pt->depth0, level)) << NV30_3D_TEX_FORMAT_BASE_SIZE_W__SHIFT;
        txf |=  0x10000;
 
        sv->u.nv30.fmt[0] = tf->fmt[0] | txf;
@@ -53,7 +53,7 @@ nv30_sampler_view_init(struct pipe_context *pipe,
        sv->u.nv30.fmt[2] = tf->fmt[2] | txf;
        sv->u.nv30.fmt[3] = tf->fmt[3] | txf;
 
-       sv->swizzle  |= (nvfx_subresource_pitch(pt, 0) << NV34TCL_TX_SWIZZLE_RECT_PITCH_SHIFT);
+       sv->swizzle  |= (nvfx_subresource_pitch(pt, 0) << NV30_3D_TEX_SWIZZLE_RECT_PITCH__SHIFT);
 
        if(pt->height0 <= 1 || util_format_is_compressed(sv->base.format))
                sv->u.nv30.rect = -1;
@@ -102,13 +102,13 @@ nv30_fragtex_set(struct nvfx_context *nvfx, int unit)
        txf = sv->u.nv30.fmt[ps->compare + (use_rect ? 2 : 0)];
 
        MARK_RING(chan, 9, 2);
-       OUT_RING(chan, RING_3D(NV34TCL_TX_OFFSET(unit), 8));
+       OUT_RING(chan, RING_3D(NV30_3D_TEX_OFFSET(unit), 8));
        OUT_RELOC(chan, bo, sv->offset, tex_flags | NOUVEAU_BO_LOW, 0, 0);
        OUT_RELOC(chan, bo, txf,
                tex_flags | NOUVEAU_BO_OR,
-               NV34TCL_TX_FORMAT_DMA0, NV34TCL_TX_FORMAT_DMA1);
+               NV30_3D_TEX_FORMAT_DMA0, NV30_3D_TEX_FORMAT_DMA1);
        OUT_RING(chan, (ps->wrap & sv->wrap_mask) | sv->wrap);
-       OUT_RING(chan, ps->en | (min_lod << NV34TCL_TX_ENABLE_MIPMAP_MIN_LOD_SHIFT) | (max_lod << NV34TCL_TX_ENABLE_MIPMAP_MAX_LOD_SHIFT));
+       OUT_RING(chan, ps->en | (min_lod << NV30_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT) | (max_lod << NV30_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT));
        OUT_RING(chan, sv->swizzle);
        OUT_RING(chan, ps->filt | sv->filt);
        OUT_RING(chan, sv->npot_size);
index 106ce71a079b5ef28f6ef8e8172802a79c290025..d4fb73702daaff49b41993b2678fe54cc370cc79 100644 (file)
@@ -14,19 +14,19 @@ nv40_sampler_state_init(struct pipe_context *pipe,
                ps->wrap |= (1 << 5);
 
                if (cso->max_anisotropy >= 16)
-                       ps->en |= NV40TCL_TEX_ENABLE_ANISO_16X;
+                       ps->en |= NV40_3D_TEX_ENABLE_ANISO_16X;
                else if (cso->max_anisotropy >= 12)
-                       ps->en |= NV40TCL_TEX_ENABLE_ANISO_12X;
+                       ps->en |= NV40_3D_TEX_ENABLE_ANISO_12X;
                else if (cso->max_anisotropy >= 10)
-                       ps->en |= NV40TCL_TEX_ENABLE_ANISO_10X;
+                       ps->en |= NV40_3D_TEX_ENABLE_ANISO_10X;
                else if (cso->max_anisotropy >= 8)
-                       ps->en |= NV40TCL_TEX_ENABLE_ANISO_8X;
+                       ps->en |= NV40_3D_TEX_ENABLE_ANISO_8X;
                else if (cso->max_anisotropy >= 6)
-                       ps->en |= NV40TCL_TEX_ENABLE_ANISO_6X;
+                       ps->en |= NV40_3D_TEX_ENABLE_ANISO_6X;
                else if (cso->max_anisotropy >= 4)
-                       ps->en |= NV40TCL_TEX_ENABLE_ANISO_4X;
+                       ps->en |= NV40_3D_TEX_ENABLE_ANISO_4X;
                else
-                       ps->en |= NV40TCL_TEX_ENABLE_ANISO_2X;
+                       ps->en |= NV40_3D_TEX_ENABLE_ANISO_2X;
        }
 
        limit = CLAMP(cso->lod_bias, -16.0, 15.0 + (255.0 / 256.0));
@@ -35,7 +35,7 @@ nv40_sampler_state_init(struct pipe_context *pipe,
        ps->max_lod = (int)(CLAMP(cso->max_lod, 0.0, 15.0 + (255.0 / 256.0)) * 256.0);
        ps->min_lod = (int)(CLAMP(cso->min_lod, 0.0, 15.0 + (255.0 / 256.0)) * 256.0);
 
-       ps->en |= NV40TCL_TEX_ENABLE_ENABLE;
+       ps->en |= NV40_3D_TEX_ENABLE_ENABLE;
 }
 
 void
@@ -52,21 +52,21 @@ nv40_sampler_view_init(struct pipe_context *pipe,
        txf = sv->u.init_fmt;
        txf |= 0x8000;
        if(pt->target == PIPE_TEXTURE_CUBE)
-               txf |= ((pt->last_level + 1) << NV40TCL_TEX_FORMAT_MIPMAP_COUNT_SHIFT);
+               txf |= ((pt->last_level + 1) << NV40_3D_TEX_FORMAT_MIPMAP_COUNT__SHIFT);
        else
-               txf |= (((sv->base.last_level - sv->base.first_level) + 1) << NV40TCL_TEX_FORMAT_MIPMAP_COUNT_SHIFT);
+               txf |= (((sv->base.last_level - sv->base.first_level) + 1) << NV40_3D_TEX_FORMAT_MIPMAP_COUNT__SHIFT);
 
        if (!mt->linear_pitch)
                sv->u.nv40.npot_size2 = 0;
        else {
                sv->u.nv40.npot_size2  = mt->linear_pitch;
-               txf |= NV40TCL_TEX_FORMAT_LINEAR;
+               txf |= NV40_3D_TEX_FORMAT_LINEAR;
        }
 
        sv->u.nv40.fmt[0] = tf->fmt[4] | txf;
        sv->u.nv40.fmt[1] = tf->fmt[5] | txf;
 
-       sv->u.nv40.npot_size2 |= (u_minify(pt->depth0, level) << NV40TCL_TEX_SIZE1_DEPTH_SHIFT);
+       sv->u.nv40.npot_size2 |= (u_minify(pt->depth0, level) << NV40_3D_TEX_SIZE1_DEPTH__SHIFT);
 
        sv->lod_offset = (sv->base.first_level - level) * 256;
        sv->max_lod_limit = (sv->base.last_level - level) * 256;
@@ -87,17 +87,17 @@ nv40_fragtex_set(struct nvfx_context *nvfx, int unit)
        txf = sv->u.nv40.fmt[ps->compare] | ps->fmt;
 
        MARK_RING(chan, 11, 2);
-       OUT_RING(chan, RING_3D(NV34TCL_TX_OFFSET(unit), 8));
+       OUT_RING(chan, RING_3D(NV30_3D_TEX_OFFSET(unit), 8));
        OUT_RELOC(chan, bo, sv->offset, tex_flags | NOUVEAU_BO_LOW, 0, 0);
        OUT_RELOC(chan, bo, txf, tex_flags | NOUVEAU_BO_OR,
-                       NV34TCL_TX_FORMAT_DMA0, NV34TCL_TX_FORMAT_DMA1);
+                       NV30_3D_TEX_FORMAT_DMA0, NV30_3D_TEX_FORMAT_DMA1);
        OUT_RING(chan, (ps->wrap & sv->wrap_mask) | sv->wrap);
        OUT_RING(chan, ps->en | (min_lod << 19) | (max_lod << 7));
        OUT_RING(chan, sv->swizzle);
        OUT_RING(chan, ps->filt | sv->filt);
        OUT_RING(chan, sv->npot_size);
        OUT_RING(chan, ps->bcol);
-       OUT_RING(chan, RING_3D(NV40TCL_TEX_SIZE1(unit), 1));
+       OUT_RING(chan, RING_3D(NV40_3D_TEX_SIZE1(unit), 1));
        OUT_RING(chan, sv->u.nv40.npot_size2);
 
        nvfx->hw_txf[unit] = txf;
index a164ba6c10b3a57a6fe33dde283e1b3e1b5aef17..48a9cd2b7c61b6c835339b423e9d76206ca0fd96 100644 (file)
@@ -18,7 +18,7 @@
 
 #include "nouveau/nouveau_winsys.h"
 #include "nouveau/nouveau_gldefs.h"
-
+#include "nv30-40_3d.xml.h"
 #include "nvfx_state.h"
 
 #define NOUVEAU_ERR(fmt, args...) \
@@ -343,25 +343,25 @@ static inline void nvfx_emit_vtx_attr(struct nouveau_channel* chan, unsigned att
 {
        switch (ncomp) {
        case 4:
-               OUT_RING(chan, RING_3D(NV34TCL_VTX_ATTR_4F_X(attrib), 4));
+               OUT_RING(chan, RING_3D(NV30_3D_VTX_ATTR_4F_X(attrib), 4));
                OUT_RING(chan, fui(v[0]));
                OUT_RING(chan, fui(v[1]));
                OUT_RING(chan,  fui(v[2]));
                OUT_RING(chan,  fui(v[3]));
                break;
        case 3:
-               OUT_RING(chan, RING_3D(NV34TCL_VTX_ATTR_3F_X(attrib), 3));
+               OUT_RING(chan, RING_3D(NV30_3D_VTX_ATTR_3F_X(attrib), 3));
                OUT_RING(chan,  fui(v[0]));
                OUT_RING(chan,  fui(v[1]));
                OUT_RING(chan,  fui(v[2]));
                break;
        case 2:
-               OUT_RING(chan, RING_3D(NV34TCL_VTX_ATTR_2F_X(attrib), 2));
+               OUT_RING(chan, RING_3D(NV30_3D_VTX_ATTR_2F_X(attrib), 2));
                OUT_RING(chan,  fui(v[0]));
                OUT_RING(chan,  fui(v[1]));
                break;
        case 1:
-               OUT_RING(chan, RING_3D(NV34TCL_VTX_ATTR_1F(attrib), 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VTX_ATTR_1F(attrib), 1));
                OUT_RING(chan,  fui(v[0]));
                break;
        }
index 4bf38a9c181890f4465895e019762be97fdc1eb5..61f888a8ea25ad8b0c4ca740890c0696d7c3f860 100644 (file)
@@ -29,11 +29,11 @@ nvfx_render_flush(struct draw_stage *stage, unsigned flags)
        struct nvfx_context *nvfx = rs->nvfx;
        struct nouveau_channel *chan = nvfx->screen->base.channel;
 
-       if (rs->prim != NV34TCL_VERTEX_BEGIN_END_STOP) {
+       if (rs->prim != NV30_3D_VERTEX_BEGIN_END_STOP) {
                assert(AVAIL_RING(chan) >= 2);
-               OUT_RING(chan, RING_3D(NV34TCL_VERTEX_BEGIN_END, 1));
-               OUT_RING(chan, NV34TCL_VERTEX_BEGIN_END_STOP);
-               rs->prim = NV34TCL_VERTEX_BEGIN_END_STOP;
+               OUT_RING(chan, RING_3D(NV30_3D_VERTEX_BEGIN_END, 1));
+               OUT_RING(chan, NV30_3D_VERTEX_BEGIN_END_STOP);
+               rs->prim = NV30_3D_VERTEX_BEGIN_END_STOP;
        }
 }
 
@@ -62,9 +62,9 @@ nvfx_render_prim(struct draw_stage *stage, struct prim_header *prim,
 
        /* Switch primitive modes if necessary */
        if (rs->prim != mode) {
-               if (rs->prim != NV34TCL_VERTEX_BEGIN_END_STOP) {
-                       OUT_RING(chan, RING_3D(NV34TCL_VERTEX_BEGIN_END, 1));
-                       OUT_RING(chan, NV34TCL_VERTEX_BEGIN_END_STOP);
+               if (rs->prim != NV30_3D_VERTEX_BEGIN_END_STOP) {
+                       OUT_RING(chan, RING_3D(NV30_3D_VERTEX_BEGIN_END, 1));
+                       OUT_RING(chan, NV30_3D_VERTEX_BEGIN_END_STOP);
                }
 
                /* XXX: any command a lot of times seems to (mostly) fix corruption that would otherwise happen */
@@ -79,12 +79,12 @@ nvfx_render_prim(struct draw_stage *stage, struct prim_header *prim,
                        }
                }
 
-               OUT_RING(chan, RING_3D(NV34TCL_VERTEX_BEGIN_END, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VERTEX_BEGIN_END, 1));
                OUT_RING  (chan, mode);
                rs->prim = mode;
        }
 
-       OUT_RING(chan, RING_3D_NI(NV34TCL_VERTEX_DATA, num_attribs * 4 * count));
+       OUT_RING(chan, RING_3D_NI(NV30_3D_VERTEX_DATA, num_attribs * 4 * count));
        if(no_elements) {
                OUT_RING(chan, 0);
                OUT_RING(chan, 0);
@@ -107,19 +107,19 @@ nvfx_render_prim(struct draw_stage *stage, struct prim_header *prim,
 static void
 nvfx_render_point(struct draw_stage *draw, struct prim_header *prim)
 {
-       nvfx_render_prim(draw, prim, NV34TCL_VERTEX_BEGIN_END_POINTS, 1);
+       nvfx_render_prim(draw, prim, NV30_3D_VERTEX_BEGIN_END_POINTS, 1);
 }
 
 static void
 nvfx_render_line(struct draw_stage *draw, struct prim_header *prim)
 {
-       nvfx_render_prim(draw, prim, NV34TCL_VERTEX_BEGIN_END_LINES, 2);
+       nvfx_render_prim(draw, prim, NV30_3D_VERTEX_BEGIN_END_LINES, 2);
 }
 
 static void
 nvfx_render_tri(struct draw_stage *draw, struct prim_header *prim)
 {
-       nvfx_render_prim(draw, prim, NV34TCL_VERTEX_BEGIN_END_TRIANGLES, 3);
+       nvfx_render_prim(draw, prim, NV30_3D_VERTEX_BEGIN_END_TRIANGLES, 3);
 }
 
 static void
index 23121ebe1ea563543da252488477b155e6572540..44c7968d88e4babd2661361426e572b5409d135c 100644 (file)
@@ -205,7 +205,7 @@ nvfx_fp_emit(struct nvfx_fpc *fpc, struct nvfx_insn insn)
        memset(hw, 0, sizeof(uint32_t) * 4);
 
        if (insn.op == NVFX_FP_OP_OPCODE_KIL)
-               fp->fp_control |= NV34TCL_FP_CONTROL_USES_KIL;
+               fp->fp_control |= NV30_3D_FP_CONTROL_USES_KIL;
        hw[0] |= (insn.op << NVFX_FP_OP_OPCODE_SHIFT);
        hw[0] |= (insn.mask << NVFX_FP_OP_OUTMASK_SHIFT);
        hw[2] |= (insn.scale << NVFX_FP_OP_DST_SCALE_SHIFT);
@@ -1070,10 +1070,10 @@ nvfx_fragprog_translate(struct nvfx_context *nvfx,
        for (unsigned i = 0; i < pfp->info.num_properties; ++i) {
                if (pfp->info.properties[i].name == TGSI_PROPERTY_FS_COORD_ORIGIN) {
                        if(pfp->info.properties[i].data[0])
-                               fp->coord_conventions |= NV34TCL_COORD_CONVENTIONS_ORIGIN_INVERTED;
+                               fp->coord_conventions |= NV30_3D_COORD_CONVENTIONS_ORIGIN_INVERTED;
                } else if (pfp->info.properties[i].name == TGSI_PROPERTY_FS_COORD_PIXEL_CENTER) {
                        if(pfp->info.properties[i].data[0])
-                               fp->coord_conventions |= NV34TCL_COORD_CONVENTIONS_CENTER_INTEGER;
+                               fp->coord_conventions |= NV30_3D_COORD_CONVENTIONS_CENTER_INTEGER;
                }
        }
 
@@ -1124,7 +1124,7 @@ nvfx_fragprog_translate(struct nvfx_context *nvfx,
        if(!nvfx->is_nv4x)
                fp->fp_control |= (fpc->num_regs-1)/2;
        else
-               fp->fp_control |= fpc->num_regs << NV40TCL_FP_CONTROL_TEMP_COUNT_SHIFT;
+               fp->fp_control |= fpc->num_regs << NV40_3D_FP_CONTROL_TEMP_COUNT__SHIFT;
 
        /* Terminate final instruction */
        if(fp->insn)
@@ -1497,17 +1497,17 @@ update:
                nvfx->hw_fragprog = fp;
 
                MARK_RING(chan, 8, 1);
-               OUT_RING(chan, RING_3D(NV34TCL_FP_ACTIVE_PROGRAM, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_FP_ACTIVE_PROGRAM, 1));
                OUT_RELOC(chan, fp->fpbo->bo, offset, NOUVEAU_BO_VRAM |
                              NOUVEAU_BO_GART | NOUVEAU_BO_RD | NOUVEAU_BO_LOW |
-                             NOUVEAU_BO_OR, NV34TCL_FP_ACTIVE_PROGRAM_DMA0,
-                             NV34TCL_FP_ACTIVE_PROGRAM_DMA1);
-               OUT_RING(chan, RING_3D(NV34TCL_FP_CONTROL, 1));
+                             NOUVEAU_BO_OR, NV30_3D_FP_ACTIVE_PROGRAM_DMA0,
+                             NV30_3D_FP_ACTIVE_PROGRAM_DMA1);
+               OUT_RING(chan, RING_3D(NV30_3D_FP_CONTROL, 1));
                OUT_RING(chan, fp->fp_control);
                if(!nvfx->is_nv4x) {
-                       OUT_RING(chan, RING_3D(NV34TCL_FP_REG_CONTROL, 1));
+                       OUT_RING(chan, RING_3D(NV30_3D_FP_REG_CONTROL, 1));
                        OUT_RING(chan, (1<<16)|0x4);
-                       OUT_RING(chan, RING_3D(NV34TCL_TX_UNITS_ENABLE, 1));
+                       OUT_RING(chan, RING_3D(NV30_3D_TEX_UNITS_ENABLE, 1));
                        OUT_RING(chan, fp->samplers);
                }
        }
@@ -1517,7 +1517,7 @@ update:
                if(pointsprite_control != nvfx->hw_pointsprite_control)
                {
                        WAIT_RING(chan, 2);
-                       OUT_RING(chan, RING_3D(NV34TCL_POINT_SPRITE, 1));
+                       OUT_RING(chan, RING_3D(NV30_3D_POINT_SPRITE, 1));
                        OUT_RING(chan, pointsprite_control);
                        nvfx->hw_pointsprite_control = pointsprite_control;
                }
@@ -1536,10 +1536,10 @@ nvfx_fragprog_relocate(struct nvfx_context *nvfx)
        unsigned fp_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RD; // TODO: GART?
        fp_flags |= NOUVEAU_BO_DUMMY;
        MARK_RING(chan, 2, 2);
-       OUT_RELOC(chan, bo, RING_3D(NV34TCL_FP_ACTIVE_PROGRAM, 1), fp_flags, 0, 0);
+       OUT_RELOC(chan, bo, RING_3D(NV30_3D_FP_ACTIVE_PROGRAM, 1), fp_flags, 0, 0);
        OUT_RELOC(chan, bo, offset, fp_flags | NOUVEAU_BO_LOW |
-                     NOUVEAU_BO_OR, NV34TCL_FP_ACTIVE_PROGRAM_DMA0,
-                     NV34TCL_FP_ACTIVE_PROGRAM_DMA1);
+                     NOUVEAU_BO_OR, NV30_3D_FP_ACTIVE_PROGRAM_DMA0,
+                     NV30_3D_FP_ACTIVE_PROGRAM_DMA1);
        nvfx->relocs_needed &=~ NVFX_RELOCATE_FRAGPROG;
 }
 
index 6503c7afcbf17aaf4f98b5a34ae7182c9b4112c9..1d6b4e24cbc97d5a4b2839cbf55102f8a03f4232 100644 (file)
@@ -12,12 +12,12 @@ nvfx_sampler_state_create(struct pipe_context *pipe,
        ps = MALLOC(sizeof(struct nvfx_sampler_state));
 
        /* on nv30, we use this as an internal flag */
-       ps->fmt = cso->normalized_coords ? 0 : NV40TCL_TEX_FORMAT_RECT;
+       ps->fmt = cso->normalized_coords ? 0 : NV40_3D_TEX_FORMAT_RECT;
        ps->en = 0;
        ps->filt = nvfx_tex_filter(cso) | 0x2000; /*voodoo*/
-       ps->wrap = (nvfx_tex_wrap_mode(cso->wrap_s) << NV34TCL_TX_WRAP_S_SHIFT) |
-                   (nvfx_tex_wrap_mode(cso->wrap_t) << NV34TCL_TX_WRAP_T_SHIFT) |
-                   (nvfx_tex_wrap_mode(cso->wrap_r) << NV34TCL_TX_WRAP_R_SHIFT);
+       ps->wrap = (nvfx_tex_wrap_mode(cso->wrap_s) << NV30_3D_TEX_WRAP_S__SHIFT) |
+                   (nvfx_tex_wrap_mode(cso->wrap_t) << NV30_3D_TEX_WRAP_T__SHIFT) |
+                   (nvfx_tex_wrap_mode(cso->wrap_r) << NV30_3D_TEX_WRAP_R__SHIFT);
        ps->compare = FALSE;
 
        if(cso->compare_mode == PIPE_TEX_COMPARE_R_TO_TEXTURE)
@@ -80,21 +80,21 @@ nvfx_create_sampler_view(struct pipe_context *pipe,
        pipe_resource_reference(&sv->base.texture, pt);
        sv->base.context = pipe;
 
-       txf = NV34TCL_TX_FORMAT_NO_BORDER;
+       txf = NV30_3D_TEX_FORMAT_NO_BORDER;
 
        switch (pt->target) {
        case PIPE_TEXTURE_CUBE:
-               txf |= NV34TCL_TX_FORMAT_CUBIC;
+               txf |= NV30_3D_TEX_FORMAT_CUBIC;
                /* fall-through */
        case PIPE_TEXTURE_2D:
        case PIPE_TEXTURE_RECT:
-               txf |= NV34TCL_TX_FORMAT_DIMS_2D;
+               txf |= NV30_3D_TEX_FORMAT_DIMS_2D;
                break;
        case PIPE_TEXTURE_3D:
-               txf |= NV34TCL_TX_FORMAT_DIMS_3D;
+               txf |= NV30_3D_TEX_FORMAT_DIMS_3D;
                break;
        case PIPE_TEXTURE_1D:
-               txf |= NV34TCL_TX_FORMAT_DIMS_1D;
+               txf |= NV30_3D_TEX_FORMAT_DIMS_1D;
                break;
        default:
                assert(0);
@@ -102,14 +102,14 @@ nvfx_create_sampler_view(struct pipe_context *pipe,
        sv->u.init_fmt = txf;
 
        sv->swizzle = 0
-                       | (tf->src[sv->base.swizzle_r] << NV34TCL_TX_SWIZZLE_S0_Z_SHIFT)
-                       | (tf->src[sv->base.swizzle_g] << NV34TCL_TX_SWIZZLE_S0_Y_SHIFT)
-                       | (tf->src[sv->base.swizzle_b] << NV34TCL_TX_SWIZZLE_S0_X_SHIFT)
-                       | (tf->src[sv->base.swizzle_a] << NV34TCL_TX_SWIZZLE_S0_W_SHIFT)
-                       | (tf->comp[sv->base.swizzle_r] << NV34TCL_TX_SWIZZLE_S1_Z_SHIFT)
-                       | (tf->comp[sv->base.swizzle_g] << NV34TCL_TX_SWIZZLE_S1_Y_SHIFT)
-                       | (tf->comp[sv->base.swizzle_b] << NV34TCL_TX_SWIZZLE_S1_X_SHIFT)
-                       | (tf->comp[sv->base.swizzle_a] << NV34TCL_TX_SWIZZLE_S1_W_SHIFT);
+                       | (tf->src[sv->base.swizzle_r] << NV30_3D_TEX_SWIZZLE_S0_Z__SHIFT)
+                       | (tf->src[sv->base.swizzle_g] << NV30_3D_TEX_SWIZZLE_S0_Y__SHIFT)
+                       | (tf->src[sv->base.swizzle_b] << NV30_3D_TEX_SWIZZLE_S0_X__SHIFT)
+                       | (tf->src[sv->base.swizzle_a] << NV30_3D_TEX_SWIZZLE_S0_W__SHIFT)
+                       | (tf->comp[sv->base.swizzle_r] << NV30_3D_TEX_SWIZZLE_S1_Z__SHIFT)
+                       | (tf->comp[sv->base.swizzle_g] << NV30_3D_TEX_SWIZZLE_S1_Y__SHIFT)
+                       | (tf->comp[sv->base.swizzle_b] << NV30_3D_TEX_SWIZZLE_S1_X__SHIFT)
+                       | (tf->comp[sv->base.swizzle_a] << NV30_3D_TEX_SWIZZLE_S1_W__SHIFT);
 
        sv->filt = tf->sign;
        sv->wrap = tf->wrap;
@@ -118,18 +118,18 @@ nvfx_create_sampler_view(struct pipe_context *pipe,
        if (pt->target == PIPE_TEXTURE_CUBE)
        {
                sv->offset = 0;
-               sv->npot_size = (pt->width0 << NV34TCL_TX_NPOT_SIZE_W_SHIFT) | pt->height0;
+               sv->npot_size = (pt->width0 << NV30_3D_TEX_NPOT_SIZE_W__SHIFT) | pt->height0;
        }
        else
        {
                sv->offset = nvfx_subresource_offset(pt, 0, sv->base.first_level, 0);
-               sv->npot_size = (u_minify(pt->width0, sv->base.first_level) << NV34TCL_TX_NPOT_SIZE_W_SHIFT) | u_minify(pt->height0, sv->base.first_level);
+               sv->npot_size = (u_minify(pt->width0, sv->base.first_level) << NV30_3D_TEX_NPOT_SIZE_W__SHIFT) | u_minify(pt->height0, sv->base.first_level);
 
                /* apparently, we need to ignore the t coordinate for 1D textures to fix piglit tex1d-2dborder */
                if(pt->target == PIPE_TEXTURE_1D)
                {
-                       sv->wrap_mask &=~ NV34TCL_TX_WRAP_T_MASK;
-                       sv->wrap |= NV34TCL_TX_WRAP_T_REPEAT;
+                       sv->wrap_mask &=~ NV30_3D_TEX_WRAP_T__MASK;
+                       sv->wrap |= NV30_3D_TEX_WRAP_T_REPEAT;
                }
        }
 
@@ -199,7 +199,7 @@ nvfx_fragtex_validate(struct nvfx_context *nvfx)
                } else {
                        WAIT_RING(chan, 2);
                        /* this is OK for nv40 too */
-                       OUT_RING(chan, RING_3D(NV34TCL_TX_ENABLE(unit), 1));
+                       OUT_RING(chan, RING_3D(NV30_3D_TEX_ENABLE(unit), 1));
                        OUT_RING(chan, 0);
                        nvfx->hw_samplers &= ~(1 << unit);
                }
@@ -227,10 +227,10 @@ nvfx_fragtex_relocate(struct nvfx_context *nvfx)
                bo = mt->base.bo;
 
                MARK_RING(chan, 3, 3);
-               OUT_RELOC(chan, bo, RING_3D(NV34TCL_TX_OFFSET(unit), 2), tex_flags | NOUVEAU_BO_DUMMY, 0, 0);
+               OUT_RELOC(chan, bo, RING_3D(NV30_3D_TEX_OFFSET(unit), 2), tex_flags | NOUVEAU_BO_DUMMY, 0, 0);
                OUT_RELOC(chan, bo, 0, tex_flags | NOUVEAU_BO_LOW | NOUVEAU_BO_DUMMY, 0, 0);
                OUT_RELOC(chan, bo, nvfx->hw_txf[unit], tex_flags | NOUVEAU_BO_OR | NOUVEAU_BO_DUMMY,
-                               NV34TCL_TX_FORMAT_DMA0, NV34TCL_TX_FORMAT_DMA1);
+                               NV30_3D_TEX_FORMAT_DMA0, NV30_3D_TEX_FORMAT_DMA1);
        }
        nvfx->relocs_needed &=~ NVFX_RELOCATE_FRAGTEX;
 }
@@ -246,32 +246,32 @@ nvfx_init_sampling_functions(struct nvfx_context *nvfx)
        nvfx->pipe.sampler_view_destroy = nvfx_sampler_view_destroy;
 }
 
-#define NV34TCL_TX_FORMAT_FORMAT_DXT1_RECT NV34TCL_TX_FORMAT_FORMAT_DXT1
-#define NV34TCL_TX_FORMAT_FORMAT_DXT3_RECT NV34TCL_TX_FORMAT_FORMAT_DXT3
-#define NV34TCL_TX_FORMAT_FORMAT_DXT5_RECT NV34TCL_TX_FORMAT_FORMAT_DXT5
+#define NV30_3D_TEX_FORMAT_FORMAT_DXT1_RECT NV30_3D_TEX_FORMAT_FORMAT_DXT1
+#define NV30_3D_TEX_FORMAT_FORMAT_DXT3_RECT NV30_3D_TEX_FORMAT_FORMAT_DXT3
+#define NV30_3D_TEX_FORMAT_FORMAT_DXT5_RECT NV30_3D_TEX_FORMAT_FORMAT_DXT5
 
-#define NV40TCL_TEX_FORMAT_FORMAT_HILO16 NV40TCL_TEX_FORMAT_FORMAT_A16L16
+#define NV40_3D_TEX_FORMAT_FORMAT_HILO16 NV40_3D_TEX_FORMAT_FORMAT_A16L16
 
-#define NV34TCL_TX_FORMAT_FORMAT_RGBA16F 0x00004a00
-#define NV34TCL_TX_FORMAT_FORMAT_RGBA16F_RECT NV34TCL_TX_FORMAT_FORMAT_RGBA16F
-#define NV34TCL_TX_FORMAT_FORMAT_RGBA32F 0x00004b00
-#define NV34TCL_TX_FORMAT_FORMAT_RGBA32F_RECT NV34TCL_TX_FORMAT_FORMAT_RGBA32F
-#define NV34TCL_TX_FORMAT_FORMAT_R32F 0x00004c00
-#define NV34TCL_TX_FORMAT_FORMAT_R32F_RECT NV34TCL_TX_FORMAT_FORMAT_R32F
+#define NV30_3D_TEX_FORMAT_FORMAT_RGBA16F 0x00004a00
+#define NV30_3D_TEX_FORMAT_FORMAT_RGBA16F_RECT NV30_3D_TEX_FORMAT_FORMAT_RGBA16F
+#define NV30_3D_TEX_FORMAT_FORMAT_RGBA32F 0x00004b00
+#define NV30_3D_TEX_FORMAT_FORMAT_RGBA32F_RECT NV30_3D_TEX_FORMAT_FORMAT_RGBA32F
+#define NV30_3D_TEX_FORMAT_FORMAT_R32F 0x00004c00
+#define NV30_3D_TEX_FORMAT_FORMAT_R32F_RECT NV30_3D_TEX_FORMAT_FORMAT_R32F
 
 // TODO: guess!
-#define NV40TCL_TEX_FORMAT_FORMAT_R32F 0x00001c00
+#define NV40_3D_TEX_FORMAT_FORMAT_R32F 0x00001c00
 
 #define SRGB 0x00700000
 
 #define __(m,tf,tfc,ts0x,ts0y,ts0z,ts0w,ts1x,ts1y,ts1z,ts1w,sign,wrap) \
 [PIPE_FORMAT_##m] = { \
-  {NV34TCL_TX_FORMAT_FORMAT_##tf, \
-  NV34TCL_TX_FORMAT_FORMAT_##tfc, \
-  NV34TCL_TX_FORMAT_FORMAT_##tf##_RECT, \
-  NV34TCL_TX_FORMAT_FORMAT_##tfc##_RECT, \
-  NV40TCL_TEX_FORMAT_FORMAT_##tf, \
-  NV40TCL_TEX_FORMAT_FORMAT_##tfc}, \
+  {NV30_3D_TEX_FORMAT_FORMAT_##tf, \
+  NV30_3D_TEX_FORMAT_FORMAT_##tfc, \
+  NV30_3D_TEX_FORMAT_FORMAT_##tf##_RECT, \
+  NV30_3D_TEX_FORMAT_FORMAT_##tfc##_RECT, \
+  NV40_3D_TEX_FORMAT_FORMAT_##tf, \
+  NV40_3D_TEX_FORMAT_FORMAT_##tfc}, \
   sign, wrap, \
   {ts0z, ts0y, ts0x, ts0w, 0, 1}, {ts1z, ts1y, ts1x, ts1w, 0, 0} \
 }
@@ -293,7 +293,7 @@ nvfx_init_sampling_functions(struct nvfx_context *nvfx)
 #define Z 1
 #define W 0
 
-#define SNORM ((NV34TCL_TX_FILTER_SIGNED_RED) | (NV34TCL_TX_FILTER_SIGNED_GREEN) | (NV34TCL_TX_FILTER_SIGNED_BLUE) | (NV34TCL_TX_FILTER_SIGNED_ALPHA))
+#define SNORM ((NV30_3D_TEX_FILTER_SIGNED_RED) | (NV30_3D_TEX_FILTER_SIGNED_GREEN) | (NV30_3D_TEX_FILTER_SIGNED_BLUE) | (NV30_3D_TEX_FILTER_SIGNED_ALPHA))
 #define UNORM 0
 
 struct nvfx_texture_format
index ffe7e983578fb9db68700674ed82e63a92f1d707..ebf47e6ed30715f249be2cac3a4bc73f2d72f6fe 100644 (file)
@@ -29,7 +29,7 @@ emit_edgeflag(void *priv, boolean enabled)
        struct push_context* ctx = priv;
        struct nouveau_channel *chan = ctx->chan;
 
-       OUT_RING(chan, RING_3D(NV34TCL_EDGEFLAG_ENABLE, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_EDGEFLAG, 1));
        OUT_RING(chan, enabled ? 1 : 0);
 }
 
@@ -44,7 +44,7 @@ emit_vertices_lookup8(void *priv, unsigned start, unsigned count)
                 unsigned push = MIN2(count, ctx->max_vertices_per_packet);
                 unsigned length = push * ctx->vertex_length;
 
-                OUT_RING(ctx->chan, RING_3D_NI(NV34TCL_VERTEX_DATA, length));
+                OUT_RING(ctx->chan, RING_3D_NI(NV30_3D_VERTEX_DATA, length));
                 ctx->translate->run_elts8(ctx->translate, elts, push, 0, ctx->chan->cur);
                 ctx->chan->cur += length;
 
@@ -64,7 +64,7 @@ emit_vertices_lookup16(void *priv, unsigned start, unsigned count)
                 unsigned push = MIN2(count, ctx->max_vertices_per_packet);
                 unsigned length = push * ctx->vertex_length;
 
-                OUT_RING(ctx->chan, RING_3D_NI(NV34TCL_VERTEX_DATA, length));
+                OUT_RING(ctx->chan, RING_3D_NI(NV30_3D_VERTEX_DATA, length));
                 ctx->translate->run_elts16(ctx->translate, elts, push, 0, ctx->chan->cur);
                 ctx->chan->cur += length;
 
@@ -84,7 +84,7 @@ emit_vertices_lookup32(void *priv, unsigned start, unsigned count)
                 unsigned push = MIN2(count, ctx->max_vertices_per_packet);
                 unsigned length = push * ctx->vertex_length;
 
-                OUT_RING(ctx->chan, RING_3D_NI(NV34TCL_VERTEX_DATA, length));
+                OUT_RING(ctx->chan, RING_3D_NI(NV30_3D_VERTEX_DATA, length));
                 ctx->translate->run_elts(ctx->translate, elts, push, 0, ctx->chan->cur);
                 ctx->chan->cur += length;
 
@@ -103,7 +103,7 @@ emit_vertices(void *priv, unsigned start, unsigned count)
                unsigned push = MIN2(count, ctx->max_vertices_per_packet);
                unsigned length = push * ctx->vertex_length;
 
-               OUT_RING(ctx->chan, RING_3D_NI(NV34TCL_VERTEX_DATA, length));
+               OUT_RING(ctx->chan, RING_3D_NI(NV30_3D_VERTEX_DATA, length));
                ctx->translate->run(ctx->translate, start, push, 0, ctx->chan->cur);
                ctx->chan->cur += length;
 
@@ -141,13 +141,13 @@ emit_ranges(void* priv, unsigned start, unsigned vc, unsigned reg)
 static void
 emit_ib_ranges(void* priv, unsigned start, unsigned vc)
 {
-       emit_ranges(priv, start, vc, NV34TCL_VB_INDEX_BATCH);
+       emit_ranges(priv, start, vc, NV30_3D_VB_INDEX_BATCH);
 }
 
 static void
 emit_vb_ranges(void* priv, unsigned start, unsigned vc)
 {
-       emit_ranges(priv, start, vc, NV34TCL_VB_VERTEX_BATCH);
+       emit_ranges(priv, start, vc, NV30_3D_VB_VERTEX_BATCH);
 }
 
 static INLINE void
@@ -159,7 +159,7 @@ emit_elt8(void* priv, unsigned start, unsigned vc)
        int idxbias = ctx->idxbias;
 
        if (vc & 1) {
-               OUT_RING(chan, RING_3D(NV34TCL_VB_ELEMENT_U32, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VB_ELEMENT_U32, 1));
                OUT_RING  (chan, elts[0]);
                elts++; vc--;
        }
@@ -168,7 +168,7 @@ emit_elt8(void* priv, unsigned start, unsigned vc)
                unsigned i;
                unsigned push = MIN2(vc, 2047 * 2);
 
-               OUT_RING(chan, RING_3D_NI(NV34TCL_VB_ELEMENT_U16, push >> 1));
+               OUT_RING(chan, RING_3D_NI(NV30_3D_VB_ELEMENT_U16, push >> 1));
                for (i = 0; i < push; i+=2)
                        OUT_RING(chan, ((elts[i+1] + idxbias) << 16) | (elts[i] + idxbias));
 
@@ -186,7 +186,7 @@ emit_elt16(void* priv, unsigned start, unsigned vc)
        int idxbias = ctx->idxbias;
 
        if (vc & 1) {
-               OUT_RING(chan, RING_3D(NV34TCL_VB_ELEMENT_U32, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VB_ELEMENT_U32, 1));
                OUT_RING  (chan, elts[0]);
                elts++; vc--;
        }
@@ -195,7 +195,7 @@ emit_elt16(void* priv, unsigned start, unsigned vc)
                unsigned i;
                unsigned push = MIN2(vc, 2047 * 2);
 
-               OUT_RING(chan, RING_3D_NI(NV34TCL_VB_ELEMENT_U16, push >> 1));
+               OUT_RING(chan, RING_3D_NI(NV30_3D_VB_ELEMENT_U16, push >> 1));
                for (i = 0; i < push; i+=2)
                        OUT_RING(chan, ((elts[i+1] + idxbias) << 16) | (elts[i] + idxbias));
 
@@ -215,7 +215,7 @@ emit_elt32(void* priv, unsigned start, unsigned vc)
        while (vc) {
                unsigned push = MIN2(vc, 2047);
 
-               OUT_RING(chan, RING_3D_NI(NV34TCL_VB_ELEMENT_U32, push));
+               OUT_RING(chan, RING_3D_NI(NV30_3D_VB_ELEMENT_U32, push));
                assert(AVAIL_RING(chan) >= push);
                if(idxbias)
                {
@@ -379,10 +379,10 @@ nvfx_push_vbo(struct pipe_context *pipe, const struct pipe_draw_info *info)
                                        }
                                }
 
-                               OUT_RING(chan, RING_3D(NV34TCL_VERTEX_BEGIN_END, 1));
+                               OUT_RING(chan, RING_3D(NV30_3D_VERTEX_BEGIN_END, 1));
                                OUT_RING(chan, hw_mode);
                                done = util_split_prim_next(&s, max_verts);
-                               OUT_RING(chan, RING_3D(NV34TCL_VERTEX_BEGIN_END, 1));
+                               OUT_RING(chan, RING_3D(NV30_3D_VERTEX_BEGIN_END, 1));
                                OUT_RING(chan, 0);
 
                                if(done)
index eeeb89766104df05eded8d6d1edcf15c317b2136..3935ffd7f92938366437e86c34f7724ed00f2da7 100644 (file)
@@ -73,9 +73,9 @@ nvfx_query_begin(struct pipe_context *pipe, struct pipe_query *pq)
        nouveau_notifier_reset(nvfx->screen->query, q->object->start);
 
        WAIT_RING(chan, 4);
-       OUT_RING(chan, RING_3D(NV34TCL_QUERY_RESET, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_QUERY_RESET, 1));
        OUT_RING(chan, 1);
-       OUT_RING(chan, RING_3D(NV34TCL_QUERY_ENABLE, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_QUERY_ENABLE, 1));
        OUT_RING(chan, 1);
 
        q->ready = FALSE;
@@ -93,10 +93,10 @@ nvfx_query_end(struct pipe_context *pipe, struct pipe_query *pq)
        assert(nvfx->query == pq);
 
        WAIT_RING(chan, 4);
-       OUT_RING(chan, RING_3D(NV34TCL_QUERY_GET, 1));
-       OUT_RING  (chan, (0x01 << NV34TCL_QUERY_GET_UNK24_SHIFT) |
-                  ((q->object->start * 32) << NV34TCL_QUERY_GET_OFFSET_SHIFT));
-       OUT_RING(chan, RING_3D(NV34TCL_QUERY_ENABLE, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_QUERY_GET, 1));
+       OUT_RING  (chan, (0x01 << NV30_3D_QUERY_GET_UNK24__SHIFT) |
+                  ((q->object->start * 32) << NV30_3D_QUERY_GET_OFFSET__SHIFT));
+       OUT_RING(chan, RING_3D(NV30_3D_QUERY_ENABLE, 1));
        OUT_RING(chan, 0);
        FIRE_RING(chan);
 
index 3900821de4837a3cb23886b0ac7b6fe93413c181..b72e6aa1a85f78d603f4a9e52c9cd2bd0c569a47 100644 (file)
@@ -4,15 +4,15 @@
 #include "util/u_simple_screen.h"
 
 #include "nouveau/nouveau_screen.h"
-
+#include "nouveau/nv_object.xml.h"
 #include "nvfx_context.h"
 #include "nvfx_screen.h"
 #include "nvfx_resource.h"
 #include "nvfx_tex.h"
 
-#define NV30TCL_CHIPSET_3X_MASK 0x00000003
-#define NV34TCL_CHIPSET_3X_MASK 0x00000010
-#define NV35TCL_CHIPSET_3X_MASK 0x000001e0
+#define NV30_3D_CHIPSET_3X_MASK 0x00000003
+#define NV34_3D_CHIPSET_3X_MASK 0x00000010
+#define NV35_3D_CHIPSET_3X_MASK 0x000001e0
 
 #define NV4X_GRCLASS4097_CHIPSETS 0x00000baf
 #define NV4X_GRCLASS4497_CHIPSETS 0x00005450
@@ -256,9 +256,9 @@ static void nv30_screen_init(struct nvfx_screen *screen)
 
        /* TODO: perhaps we should do some of this on nv40 too? */
        for (i=1; i<8; i++) {
-               OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_CLIP_HORIZ(i), 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VIEWPORT_CLIP_HORIZ(i), 1));
                OUT_RING(chan, 0);
-               OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_CLIP_VERT(i), 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VIEWPORT_CLIP_VERT(i), 1));
                OUT_RING(chan, 0);
        }
 
@@ -294,14 +294,14 @@ static void nv30_screen_init(struct nvfx_screen *screen)
        OUT_RING(chan, RING_3D(0x1d88, 1));
        OUT_RING(chan, 0x00001200);
 
-       OUT_RING(chan, RING_3D(NV34TCL_RC_ENABLE, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_RC_ENABLE, 1));
        OUT_RING(chan, 0);
 
-       OUT_RING(chan, RING_3D(NV34TCL_DEPTH_RANGE_NEAR, 2));
+       OUT_RING(chan, RING_3D(NV30_3D_DEPTH_RANGE_NEAR, 2));
        OUT_RING(chan, fui(0.0));
        OUT_RING(chan, fui(1.0));
 
-       OUT_RING(chan, RING_3D(NV34TCL_MULTISAMPLE_CONTROL, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_MULTISAMPLE_CONTROL, 1));
        OUT_RING(chan, 0xffff0000);
 
        /* enables use of vp rather than fixed-function somehow */
@@ -313,7 +313,7 @@ static void nv40_screen_init(struct nvfx_screen *screen)
 {
        struct nouveau_channel *chan = screen->base.channel;
 
-       OUT_RING(chan, RING_3D(NV40TCL_DMA_COLOR2, 2));
+       OUT_RING(chan, RING_3D(NV40_3D_DMA_COLOR2, 2));
        OUT_RING(chan, screen->base.channel->vram->handle);
        OUT_RING(chan, screen->base.channel->vram->handle);
 
@@ -343,8 +343,8 @@ static void nv40_screen_init(struct nvfx_screen *screen)
        OUT_RING(chan, RING_3D(0x1e94, 1));
        OUT_RING(chan, 0x00000001);
 
-       OUT_RING(chan, RING_3D(NV40TCL_MIPMAP_ROUNDING, 1));
-       OUT_RING(chan, NV40TCL_MIPMAP_ROUNDING_DOWN);
+       OUT_RING(chan, RING_3D(NV40_3D_MIPMAP_ROUNDING, 1));
+       OUT_RING(chan, NV40_3D_MIPMAP_ROUNDING_MODE_DOWN);
 }
 
 static unsigned
@@ -406,23 +406,23 @@ nvfx_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
 
        switch (dev->chipset & 0xf0) {
        case 0x30:
-               if (NV30TCL_CHIPSET_3X_MASK & (1 << (dev->chipset & 0x0f)))
-                       eng3d_class = 0x0397;
-               else if (NV34TCL_CHIPSET_3X_MASK & (1 << (dev->chipset & 0x0f)))
-                       eng3d_class = 0x0697;
-               else if (NV35TCL_CHIPSET_3X_MASK & (1 << (dev->chipset & 0x0f)))
-                       eng3d_class = 0x0497;
+               if (NV30_3D_CHIPSET_3X_MASK & (1 << (dev->chipset & 0x0f)))
+                       eng3d_class = NV30_3D;
+               else if (NV34_3D_CHIPSET_3X_MASK & (1 << (dev->chipset & 0x0f)))
+                       eng3d_class = NV34_3D;
+               else if (NV35_3D_CHIPSET_3X_MASK & (1 << (dev->chipset & 0x0f)))
+                       eng3d_class = NV35_3D;
                break;
        case 0x40:
                if (NV4X_GRCLASS4097_CHIPSETS & (1 << (dev->chipset & 0x0f)))
-                       eng3d_class = NV40TCL;
+                       eng3d_class = NV40_3D;
                else if (NV4X_GRCLASS4497_CHIPSETS & (1 << (dev->chipset & 0x0f)))
-                       eng3d_class = NV44TCL;
+                       eng3d_class = NV44_3D;
                screen->is_nv4x = ~0;
                break;
        case 0x60:
                if (NV6X_GRCLASS4497_CHIPSETS & (1 << (dev->chipset & 0x0f)))
-                       eng3d_class = NV44TCL;
+                       eng3d_class = NV44_3D;
                screen->is_nv4x = ~0;
                break;
        }
@@ -449,7 +449,7 @@ nvfx_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
        screen->vertex_buffer_reloc_flags = nvfx_screen_get_vertex_buffer_flags(screen);
 
        /* surely both nv3x and nv44 support index buffers too: find out how and test that */
-       if(eng3d_class == NV40TCL)
+       if(eng3d_class == NV40_3D)
                screen->index_buffer_reloc_flags = screen->vertex_buffer_reloc_flags;
 
        if(!screen->force_swtnl && screen->vertex_buffer_reloc_flags == screen->index_buffer_reloc_flags)
@@ -508,25 +508,25 @@ nvfx_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
 
        /* Static eng3d initialisation */
        /* note that we just started using the channel, so we must have space in the pushbuffer */
-       OUT_RING(chan, RING_3D(NV34TCL_DMA_NOTIFY, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_DMA_NOTIFY, 1));
        OUT_RING(chan, screen->sync->handle);
-       OUT_RING(chan, RING_3D(NV34TCL_DMA_TEXTURE0, 2));
+       OUT_RING(chan, RING_3D(NV30_3D_DMA_TEXTURE0, 2));
        OUT_RING(chan, chan->vram->handle);
        OUT_RING(chan, chan->gart->handle);
-       OUT_RING(chan, RING_3D(NV34TCL_DMA_COLOR1, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_DMA_COLOR1, 1));
        OUT_RING(chan, chan->vram->handle);
-       OUT_RING(chan, RING_3D(NV34TCL_DMA_COLOR0, 2));
+       OUT_RING(chan, RING_3D(NV30_3D_DMA_COLOR0, 2));
        OUT_RING(chan, chan->vram->handle);
        OUT_RING(chan, chan->vram->handle);
-       OUT_RING(chan, RING_3D(NV34TCL_DMA_VTXBUF0, 2));
+       OUT_RING(chan, RING_3D(NV30_3D_DMA_VTXBUF0, 2));
        OUT_RING(chan, chan->vram->handle);
        OUT_RING(chan, chan->gart->handle);
 
-       OUT_RING(chan, RING_3D(NV34TCL_DMA_FENCE, 2));
+       OUT_RING(chan, RING_3D(NV30_3D_DMA_FENCE, 2));
        OUT_RING(chan, 0);
        OUT_RING(chan, screen->query->handle);
 
-       OUT_RING(chan, RING_3D(NV34TCL_DMA_IN_MEMORY7, 2));
+       OUT_RING(chan, RING_3D(NV30_3D_DMA_UNK1AC, 2));
        OUT_RING(chan, chan->vram->handle);
        OUT_RING(chan, chan->vram->handle);
 
index 5bd7dc07f02ac16f56020c6459ddbd3936f566bd..b767846a99e57563379bf85f241dc32485ad1e0d 100644 (file)
@@ -20,26 +20,26 @@ nvfx_blend_state_create(struct pipe_context *pipe,
        struct nouveau_statebuf_builder sb = sb_init(bso->sb);
 
        if (cso->rt[0].blend_enable) {
-               sb_method(sb, NV34TCL_BLEND_FUNC_ENABLE, 3);
+               sb_method(sb, NV30_3D_BLEND_FUNC_ENABLE, 3);
                sb_data(sb, 1);
                sb_data(sb, (nvgl_blend_func(cso->rt[0].alpha_src_factor) << 16) |
                               nvgl_blend_func(cso->rt[0].rgb_src_factor));
                sb_data(sb, nvgl_blend_func(cso->rt[0].alpha_dst_factor) << 16 |
                              nvgl_blend_func(cso->rt[0].rgb_dst_factor));
                if(nvfx->screen->base.device->chipset < 0x40) {
-                       sb_method(sb, NV34TCL_BLEND_EQUATION, 1);
+                       sb_method(sb, NV30_3D_BLEND_EQUATION, 1);
                        sb_data(sb, nvgl_blend_eqn(cso->rt[0].rgb_func));
                } else {
-                       sb_method(sb, NV40TCL_BLEND_EQUATION, 1);
+                       sb_method(sb, NV40_3D_BLEND_EQUATION, 1);
                        sb_data(sb, nvgl_blend_eqn(cso->rt[0].alpha_func) << 16 |
                              nvgl_blend_eqn(cso->rt[0].rgb_func));
                }
        } else {
-               sb_method(sb, NV34TCL_BLEND_FUNC_ENABLE, 1);
+               sb_method(sb, NV30_3D_BLEND_FUNC_ENABLE, 1);
                sb_data(sb, 0);
        }
 
-       sb_method(sb, NV34TCL_COLOR_MASK, 1);
+       sb_method(sb, NV30_3D_COLOR_MASK, 1);
        sb_data(sb, (((cso->rt[0].colormask & PIPE_MASK_A) ? (0x01 << 24) : 0) |
               ((cso->rt[0].colormask & PIPE_MASK_R) ? (0x01 << 16) : 0) |
               ((cso->rt[0].colormask & PIPE_MASK_G) ? (0x01 <<  8) : 0) |
@@ -48,15 +48,15 @@ nvfx_blend_state_create(struct pipe_context *pipe,
        /* TODO: add NV40 MRT color mask */
 
        if (cso->logicop_enable) {
-               sb_method(sb, NV34TCL_COLOR_LOGIC_OP_ENABLE, 2);
+               sb_method(sb, NV30_3D_COLOR_LOGIC_OP_ENABLE, 2);
                sb_data(sb, 1);
                sb_data(sb, nvgl_logicop_func(cso->logicop_func));
        } else {
-               sb_method(sb, NV34TCL_COLOR_LOGIC_OP_ENABLE, 1);
+               sb_method(sb, NV30_3D_COLOR_LOGIC_OP_ENABLE, 1);
                sb_data(sb, 0);
        }
 
-       sb_method(sb, NV34TCL_DITHER_ENABLE, 1);
+       sb_method(sb, NV30_3D_DITHER_ENABLE, 1);
        sb_data(sb, cso->dither ? 1 : 0);
 
        bso->sb_len = sb_len(sb, bso->sb);
@@ -94,64 +94,64 @@ nvfx_rasterizer_state_create(struct pipe_context *pipe,
         *     sprite_coord_origin
         */
 
-       sb_method(sb, NV34TCL_SHADE_MODEL, 1);
-       sb_data(sb, cso->flatshade ? NV34TCL_SHADE_MODEL_FLAT :
-                                      NV34TCL_SHADE_MODEL_SMOOTH);
+       sb_method(sb, NV30_3D_SHADE_MODEL, 1);
+       sb_data(sb, cso->flatshade ? NV30_3D_SHADE_MODEL_FLAT :
+                                      NV30_3D_SHADE_MODEL_SMOOTH);
 
-       sb_method(sb, NV34TCL_VERTEX_TWO_SIDE_ENABLE, 1);
+       sb_method(sb, NV30_3D_VERTEX_TWO_SIDE_ENABLE, 1);
        sb_data(sb, cso->light_twoside);
 
-       sb_method(sb, NV34TCL_LINE_WIDTH, 2);
+       sb_method(sb, NV30_3D_LINE_WIDTH, 2);
        sb_data(sb, (unsigned char)(cso->line_width * 8.0) & 0xff);
        sb_data(sb, cso->line_smooth ? 1 : 0);
-       sb_method(sb, NV34TCL_LINE_STIPPLE_ENABLE, 2);
+       sb_method(sb, NV30_3D_LINE_STIPPLE_ENABLE, 2);
        sb_data(sb, cso->line_stipple_enable ? 1 : 0);
        sb_data(sb, (cso->line_stipple_pattern << 16) |
                       cso->line_stipple_factor);
 
-       sb_method(sb, NV34TCL_POINT_SIZE, 1);
+       sb_method(sb, NV30_3D_POINT_SIZE, 1);
        sb_data(sb, fui(cso->point_size));
 
-       sb_method(sb, NV34TCL_POLYGON_MODE_FRONT, 6);
+       sb_method(sb, NV30_3D_POLYGON_MODE_FRONT, 6);
         sb_data(sb, nvgl_polygon_mode(cso->fill_front));
         sb_data(sb, nvgl_polygon_mode(cso->fill_back));
        switch (cso->cull_face) {
        case PIPE_FACE_FRONT:
-               sb_data(sb, NV34TCL_CULL_FACE_FRONT);
+               sb_data(sb, NV30_3D_CULL_FACE_FRONT);
                break;
        case PIPE_FACE_BACK:
-               sb_data(sb, NV34TCL_CULL_FACE_BACK);
+               sb_data(sb, NV30_3D_CULL_FACE_BACK);
                break;
        case PIPE_FACE_FRONT_AND_BACK:
-               sb_data(sb, NV34TCL_CULL_FACE_FRONT_AND_BACK);
+               sb_data(sb, NV30_3D_CULL_FACE_FRONT_AND_BACK);
                break;
        default:
-               sb_data(sb, NV34TCL_CULL_FACE_BACK);
+               sb_data(sb, NV30_3D_CULL_FACE_BACK);
                break;
        }
        if (cso->front_ccw) {
-               sb_data(sb, NV34TCL_FRONT_FACE_CCW);
+               sb_data(sb, NV30_3D_FRONT_FACE_CCW);
        } else {
-               sb_data(sb, NV34TCL_FRONT_FACE_CW);
+               sb_data(sb, NV30_3D_FRONT_FACE_CW);
        }
        sb_data(sb, cso->poly_smooth ? 1 : 0);
        sb_data(sb, (cso->cull_face != PIPE_FACE_NONE) ? 1 : 0);
 
-       sb_method(sb, NV34TCL_POLYGON_STIPPLE_ENABLE, 1);
+       sb_method(sb, NV30_3D_POLYGON_STIPPLE_ENABLE, 1);
        sb_data(sb, cso->poly_stipple_enable ? 1 : 0);
 
-       sb_method(sb, NV34TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
+       sb_method(sb, NV30_3D_POLYGON_OFFSET_POINT_ENABLE, 3);
         sb_data(sb, cso->offset_point);
         sb_data(sb, cso->offset_line);
         sb_data(sb, cso->offset_tri);
 
        if (cso->offset_point || cso->offset_line || cso->offset_tri) {
-               sb_method(sb, NV34TCL_POLYGON_OFFSET_FACTOR, 2);
+               sb_method(sb, NV30_3D_POLYGON_OFFSET_FACTOR, 2);
                sb_data(sb, fui(cso->offset_scale));
                sb_data(sb, fui(cso->offset_units * 2));
        }
 
-       sb_method(sb, NV34TCL_FLATSHADE_FIRST, 1);
+       sb_method(sb, NV30_3D_FLATSHADE_FIRST, 1);
        sb_data(sb, cso->flatshade_first);
 
        rsso->pipe = *cso;
@@ -201,41 +201,41 @@ nvfx_depth_stencil_alpha_state_create(struct pipe_context *pipe,
        struct nvfx_zsa_state *zsaso = CALLOC(1, sizeof(*zsaso));
        struct nouveau_statebuf_builder sb = sb_init(zsaso->sb);
 
-       sb_method(sb, NV34TCL_DEPTH_FUNC, 1);
+       sb_method(sb, NV30_3D_DEPTH_FUNC, 1);
        sb_data  (sb, nvgl_comparison_op(cso->depth.func));
 
-       sb_method(sb, NV34TCL_ALPHA_FUNC_ENABLE, 3);
+       sb_method(sb, NV30_3D_ALPHA_FUNC_ENABLE, 3);
        sb_data  (sb, cso->alpha.enabled ? 1 : 0);
        sb_data  (sb, nvgl_comparison_op(cso->alpha.func));
        sb_data  (sb, float_to_ubyte(cso->alpha.ref_value));
 
        if (cso->stencil[0].enabled) {
-               sb_method(sb, NV34TCL_STENCIL_FRONT_ENABLE, 3);
+               sb_method(sb, NV30_3D_STENCIL_ENABLE(0), 3);
                sb_data  (sb, cso->stencil[0].enabled ? 1 : 0);
                sb_data  (sb, cso->stencil[0].writemask);
                sb_data  (sb, nvgl_comparison_op(cso->stencil[0].func));
-               sb_method(sb, NV34TCL_STENCIL_FRONT_FUNC_MASK, 4);
+               sb_method(sb, NV30_3D_STENCIL_FUNC_MASK(0), 4);
                sb_data  (sb, cso->stencil[0].valuemask);
                sb_data  (sb, nvgl_stencil_op(cso->stencil[0].fail_op));
                sb_data  (sb, nvgl_stencil_op(cso->stencil[0].zfail_op));
                sb_data  (sb, nvgl_stencil_op(cso->stencil[0].zpass_op));
        } else {
-               sb_method(sb, NV34TCL_STENCIL_FRONT_ENABLE, 1);
+               sb_method(sb, NV30_3D_STENCIL_ENABLE(0), 1);
                sb_data  (sb, 0);
        }
 
        if (cso->stencil[1].enabled) {
-               sb_method(sb, NV34TCL_STENCIL_BACK_ENABLE, 3);
+               sb_method(sb, NV30_3D_STENCIL_ENABLE(1), 3);
                sb_data  (sb, cso->stencil[1].enabled ? 1 : 0);
                sb_data  (sb, cso->stencil[1].writemask);
                sb_data  (sb, nvgl_comparison_op(cso->stencil[1].func));
-               sb_method(sb, NV34TCL_STENCIL_BACK_FUNC_MASK, 4);
+               sb_method(sb, NV30_3D_STENCIL_FUNC_MASK(1), 4);
                sb_data  (sb, cso->stencil[1].valuemask);
                sb_data  (sb, nvgl_stencil_op(cso->stencil[1].fail_op));
                sb_data  (sb, nvgl_stencil_op(cso->stencil[1].zfail_op));
                sb_data  (sb, nvgl_stencil_op(cso->stencil[1].zpass_op));
        } else {
-               sb_method(sb, NV34TCL_STENCIL_BACK_ENABLE, 1);
+               sb_method(sb, NV30_3D_STENCIL_ENABLE(1), 1);
                sb_data  (sb, 0);
        }
 
index 30ef12a95b6a299a7317d16c5741152aa8c85586..501fdd4430c986a63f11f639ce43766cca302487 100644 (file)
@@ -11,7 +11,7 @@ nvfx_state_viewport_validate(struct nvfx_context *nvfx)
 
        WAIT_RING(chan, 11);
        if(nvfx->render_mode == HW) {
-               OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_TRANSLATE_X, 8));
+               OUT_RING(chan, RING_3D(NV30_3D_VIEWPORT_TRANSLATE_X, 8));
                OUT_RINGf(chan, vpt->translate[0]);
                OUT_RINGf(chan, vpt->translate[1]);
                OUT_RINGf(chan, vpt->translate[2]);
@@ -23,7 +23,7 @@ nvfx_state_viewport_validate(struct nvfx_context *nvfx)
                OUT_RING(chan, RING_3D(0x1d78, 1));
                OUT_RING(chan, 1);
        } else {
-               OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_TRANSLATE_X, 8));
+               OUT_RING(chan, RING_3D(NV30_3D_VIEWPORT_TRANSLATE_X, 8));
                OUT_RINGf(chan, 0.0f);
                OUT_RINGf(chan, 0.0f);
                OUT_RINGf(chan, 0.0f);
@@ -49,7 +49,7 @@ nvfx_state_scissor_validate(struct nvfx_context *nvfx)
        nvfx->state.scissor_enabled = rast->scissor;
 
        WAIT_RING(chan, 3);
-       OUT_RING(chan, RING_3D(NV34TCL_SCISSOR_HORIZ, 2));
+       OUT_RING(chan, RING_3D(NV30_3D_SCISSOR_HORIZ, 2));
        if (nvfx->state.scissor_enabled) {
                OUT_RING(chan, ((s->maxx - s->minx) << 16) | s->minx);
                OUT_RING(chan, ((s->maxy - s->miny) << 16) | s->miny);
@@ -66,9 +66,9 @@ nvfx_state_sr_validate(struct nvfx_context *nvfx)
        struct pipe_stencil_ref *sr = &nvfx->stencil_ref;
 
        WAIT_RING(chan, 4);
-       OUT_RING(chan, RING_3D(NV34TCL_STENCIL_FRONT_FUNC_REF, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_STENCIL_FUNC_REF(0), 1));
        OUT_RING(chan, sr->ref_value[0]);
-       OUT_RING(chan, RING_3D(NV34TCL_STENCIL_BACK_FUNC_REF, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_STENCIL_FUNC_REF(1), 1));
        OUT_RING(chan, sr->ref_value[1]);
 }
 
@@ -79,7 +79,7 @@ nvfx_state_blend_colour_validate(struct nvfx_context *nvfx)
        struct pipe_blend_color *bcol = &nvfx->blend_colour;
 
        WAIT_RING(chan, 2);
-       OUT_RING(chan, RING_3D(NV34TCL_BLEND_COLOR, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_BLEND_COLOR, 1));
        OUT_RING(chan, ((float_to_ubyte(bcol->color[3]) << 24) |
                       (float_to_ubyte(bcol->color[0]) << 16) |
                       (float_to_ubyte(bcol->color[1]) <<  8) |
@@ -92,7 +92,7 @@ nvfx_state_stipple_validate(struct nvfx_context *nvfx)
        struct nouveau_channel *chan = nvfx->screen->base.channel;
 
        WAIT_RING(chan, 33);
-       OUT_RING(chan, RING_3D(NV34TCL_POLYGON_STIPPLE_PATTERN(0), 32));
+       OUT_RING(chan, RING_3D(NV30_3D_POLYGON_STIPPLE_PATTERN(0), 32));
        OUT_RINGp(chan, nvfx->stipple, 32);
 }
 
@@ -101,11 +101,11 @@ nvfx_coord_conventions_validate(struct nvfx_context* nvfx)
 {
        struct nouveau_channel* chan = nvfx->screen->base.channel;
        unsigned value = nvfx->hw_fragprog->coord_conventions;
-       if(value & NV34TCL_COORD_CONVENTIONS_ORIGIN_INVERTED)
-               value |= nvfx->framebuffer.height << NV34TCL_COORD_CONVENTIONS_HEIGHT_SHIFT;
+       if(value & NV30_3D_COORD_CONVENTIONS_ORIGIN_INVERTED)
+               value |= nvfx->framebuffer.height << NV30_3D_COORD_CONVENTIONS_HEIGHT__SHIFT;
 
        WAIT_RING(chan, 2);
-       OUT_RING(chan, RING_3D(NV34TCL_COORD_CONVENTIONS, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_COORD_CONVENTIONS, 1));
        OUT_RING(chan, value);
 }
 
@@ -116,27 +116,27 @@ nvfx_ucp_validate(struct nvfx_context* nvfx)
        unsigned enables[7] =
        {
                        0,
-                       NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE0,
-                       NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE0 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE1,
-                       NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE0 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE1 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE2,
-                       NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE0 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE1 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE2 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE3,
-                       NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE0 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE1 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE2 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE3 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE4,
-                       NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE0 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE1 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE2 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE3 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE4 | NV34TCL_VP_CLIP_PLANES_ENABLE_PLANE5,
+                       NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE0,
+                       NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE0 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE1,
+                       NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE0 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE1 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE2,
+                       NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE0 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE1 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE2 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE3,
+                       NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE0 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE1 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE2 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE3 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE4,
+                       NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE0 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE1 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE2 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE3 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE4 | NV30_3D_VP_CLIP_PLANES_ENABLE_PLANE5,
        };
 
        if(!nvfx->use_vp_clipping)
        {
                WAIT_RING(chan, 2);
-               OUT_RING(chan, RING_3D(NV34TCL_VP_CLIP_PLANES_ENABLE, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VP_CLIP_PLANES_ENABLE, 1));
                OUT_RING(chan, 0);
 
                WAIT_RING(chan, 6 * 4 + 1);
-               OUT_RING(chan, RING_3D(NV34TCL_VP_CLIP_PLANE_A(0), nvfx->clip.nr * 4));
+               OUT_RING(chan, RING_3D(NV30_3D_VP_CLIP_PLANE(0, 0), nvfx->clip.nr * 4));
                OUT_RINGp(chan, &nvfx->clip.ucp[0][0], nvfx->clip.nr * 4);
        }
 
        WAIT_RING(chan, 2);
-       OUT_RING(chan, RING_3D(NV34TCL_VP_CLIP_PLANES_ENABLE, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_VP_CLIP_PLANES_ENABLE, 1));
        OUT_RING(chan, enables[nvfx->clip.nr]);
 }
 
@@ -155,17 +155,17 @@ nvfx_vertprog_ucp_validate(struct nvfx_context* nvfx)
                if(vp->clip_nr >= 0)
                {
                        idx = vp->nr_insns - 7 + vp->clip_nr;
-                       OUT_RING(chan, RING_3D(NV34TCL_VP_UPLOAD_FROM_ID, 1));
+                       OUT_RING(chan, RING_3D(NV30_3D_VP_UPLOAD_FROM_ID, 1));
                        OUT_RING(chan,  vp->exec->start + idx);
-                       OUT_RING(chan, RING_3D(NV34TCL_VP_UPLOAD_INST(0), 4));
+                       OUT_RING(chan, RING_3D(NV30_3D_VP_UPLOAD_INST(0), 4));
                        OUT_RINGp (chan, vp->insns[idx].data, 4);
                }
 
                 /* set last instruction bit */
                idx = vp->nr_insns - 7 + nvfx->clip.nr;
-               OUT_RING(chan, RING_3D(NV34TCL_VP_UPLOAD_FROM_ID, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VP_UPLOAD_FROM_ID, 1));
                OUT_RING(chan,  vp->exec->start + idx);
-               OUT_RING(chan, RING_3D(NV34TCL_VP_UPLOAD_INST(0), 4));
+               OUT_RING(chan, RING_3D(NV30_3D_VP_UPLOAD_INST(0), 4));
                OUT_RINGp(chan, vp->insns[idx].data, 3);
                OUT_RING(chan, vp->insns[idx].data[3] | 1);
                vp->clip_nr = nvfx->clip.nr;
@@ -175,7 +175,7 @@ nvfx_vertprog_ucp_validate(struct nvfx_context* nvfx)
        WAIT_RING(chan, 6 * 6);
        for(i = 0; i < nvfx->clip.nr; ++i)
        {
-               OUT_RING(chan, RING_3D(NV34TCL_VP_UPLOAD_CONST_ID, 5));
+               OUT_RING(chan, RING_3D(NV30_3D_VP_UPLOAD_CONST_ID, 5));
                OUT_RING(chan, vp->data->start + i);
                OUT_RINGp (chan, nvfx->clip.ucp[i], 4);
        }
@@ -288,7 +288,7 @@ nvfx_state_validate_common(struct nvfx_context *nvfx)
                if(vp_output != nvfx->hw_vp_output)
                {
                        WAIT_RING(chan, 2);
-                       OUT_RING(chan, RING_3D(NV40TCL_VP_RESULT_EN, 1));
+                       OUT_RING(chan, RING_3D(NV40_3D_VP_RESULT_EN, 1));
                        OUT_RING(chan, vp_output);
                        nvfx->hw_vp_output = vp_output;
                }
@@ -321,7 +321,7 @@ nvfx_state_validate_common(struct nvfx_context *nvfx)
        if(dirty & NVFX_NEW_ZSA || (new_fb_mode >= 0))
        {
                WAIT_RING(chan, 3);
-               OUT_RING(chan, RING_3D(NV34TCL_DEPTH_WRITE_ENABLE, 2));
+               OUT_RING(chan, RING_3D(NV30_3D_DEPTH_WRITE_ENABLE, 2));
                OUT_RING(chan, nvfx->framebuffer.zsbuf && nvfx->zsa->pipe.depth.writemask);
                OUT_RING(chan, nvfx->framebuffer.zsbuf && nvfx->zsa->pipe.depth.enabled);
        }
@@ -335,9 +335,9 @@ nvfx_state_validate_common(struct nvfx_context *nvfx)
                if(nvfx->is_nv4x)
                {
                        WAIT_RING(chan, 4);
-                       OUT_RING(chan, RING_3D(NV40TCL_TEX_CACHE_CTL, 1));
+                       OUT_RING(chan, RING_3D(NV40_3D_TEX_CACHE_CTL, 1));
                        OUT_RING(chan, 2);
-                       OUT_RING(chan, RING_3D(NV40TCL_TEX_CACHE_CTL, 1));
+                       OUT_RING(chan, RING_3D(NV40_3D_TEX_CACHE_CTL, 1));
                        OUT_RING(chan, 1);
                }
        }
index 4b82c68765b8c8245cfcebcec52b8f4cdc96e9e8..4ffc4de45208b486b7ec4eb86c7ac65dbcd0055f 100644 (file)
@@ -102,10 +102,10 @@ nvfx_framebuffer_validate(struct nvfx_context *nvfx, unsigned prepare_result)
        unsigned w = fb->width;
        unsigned h = fb->height;
 
-       rt_enable = (NV34TCL_RT_ENABLE_COLOR0 << fb->nr_cbufs) - 1;
-       if (rt_enable & (NV34TCL_RT_ENABLE_COLOR1 |
-                        NV40TCL_RT_ENABLE_COLOR2 | NV40TCL_RT_ENABLE_COLOR3))
-               rt_enable |= NV34TCL_RT_ENABLE_MRT;
+       rt_enable = (NV30_3D_RT_ENABLE_COLOR0 << fb->nr_cbufs) - 1;
+       if (rt_enable & (NV30_3D_RT_ENABLE_COLOR1 |
+                        NV40_3D_RT_ENABLE_COLOR2 | NV40_3D_RT_ENABLE_COLOR3))
+               rt_enable |= NV30_3D_RT_ENABLE_MRT;
 
        nvfx->state.render_temps = 0;
 
@@ -125,63 +125,63 @@ nvfx_framebuffer_validate(struct nvfx_context *nvfx, unsigned prepare_result)
        if (prepare_result) {
                assert(!(fb->width & (fb->width - 1)) && !(fb->height & (fb->height - 1)));
 
-               rt_format = NV34TCL_RT_FORMAT_TYPE_SWIZZLED |
-                       (util_logbase2(fb->width) << NV34TCL_RT_FORMAT_LOG2_WIDTH_SHIFT) |
-                       (util_logbase2(fb->height) << NV34TCL_RT_FORMAT_LOG2_HEIGHT_SHIFT);
+               rt_format = NV30_3D_RT_FORMAT_TYPE_SWIZZLED |
+                       (util_logbase2(fb->width) << NV30_3D_RT_FORMAT_LOG2_WIDTH__SHIFT) |
+                       (util_logbase2(fb->height) << NV30_3D_RT_FORMAT_LOG2_HEIGHT__SHIFT);
        } else
-               rt_format = NV34TCL_RT_FORMAT_TYPE_LINEAR;
+               rt_format = NV30_3D_RT_FORMAT_TYPE_LINEAR;
 
        if(fb->nr_cbufs > 0) {
                switch (fb->cbufs[0]->format) {
                case PIPE_FORMAT_B8G8R8X8_UNORM:
-                       rt_format |= NV34TCL_RT_FORMAT_COLOR_X8R8G8B8;
+                       rt_format |= NV30_3D_RT_FORMAT_COLOR_X8R8G8B8;
                        break;
                case PIPE_FORMAT_B8G8R8A8_UNORM:
                case 0:
-                       rt_format |= NV34TCL_RT_FORMAT_COLOR_A8R8G8B8;
+                       rt_format |= NV30_3D_RT_FORMAT_COLOR_A8R8G8B8;
                        break;
                case PIPE_FORMAT_B5G6R5_UNORM:
-                       rt_format |= NV34TCL_RT_FORMAT_COLOR_R5G6B5;
+                       rt_format |= NV30_3D_RT_FORMAT_COLOR_R5G6B5;
                        break;
                case PIPE_FORMAT_R32G32B32A32_FLOAT:
-                       rt_format |= NV34TCL_RT_FORMAT_COLOR_A32B32G32R32_FLOAT;
+                       rt_format |= NV30_3D_RT_FORMAT_COLOR_A32B32G32R32_FLOAT;
                        break;
                case PIPE_FORMAT_R16G16B16A16_FLOAT:
-                       rt_format |= NV34TCL_RT_FORMAT_COLOR_A16B16G16R16_FLOAT;
+                       rt_format |= NV30_3D_RT_FORMAT_COLOR_A16B16G16R16_FLOAT;
                        break;
                default:
                        assert(0);
                }
        } else if(fb->zsbuf && util_format_get_blocksize(fb->zsbuf->format) == 2)
-               rt_format |= NV34TCL_RT_FORMAT_COLOR_R5G6B5;
+               rt_format |= NV30_3D_RT_FORMAT_COLOR_R5G6B5;
        else
-               rt_format |= NV34TCL_RT_FORMAT_COLOR_A8R8G8B8;
+               rt_format |= NV30_3D_RT_FORMAT_COLOR_A8R8G8B8;
 
        if(fb->zsbuf) {
                switch (fb->zsbuf->format) {
                case PIPE_FORMAT_Z16_UNORM:
-                       rt_format |= NV34TCL_RT_FORMAT_ZETA_Z16;
+                       rt_format |= NV30_3D_RT_FORMAT_ZETA_Z16;
                        break;
                case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
                case PIPE_FORMAT_X8Z24_UNORM:
                case 0:
-                       rt_format |= NV34TCL_RT_FORMAT_ZETA_Z24S8;
+                       rt_format |= NV30_3D_RT_FORMAT_ZETA_Z24S8;
                        break;
                default:
                        assert(0);
                }
        } else if(fb->nr_cbufs && util_format_get_blocksize(fb->cbufs[0]->format) == 2)
-               rt_format |= NV34TCL_RT_FORMAT_ZETA_Z16;
+               rt_format |= NV30_3D_RT_FORMAT_ZETA_Z16;
        else
-               rt_format |= NV34TCL_RT_FORMAT_ZETA_Z24S8;
+               rt_format |= NV30_3D_RT_FORMAT_ZETA_Z24S8;
 
        MARK_RING(chan, 42, 10);
 
-       if ((rt_enable & NV34TCL_RT_ENABLE_COLOR0) || fb->zsbuf) {
+       if ((rt_enable & NV30_3D_RT_ENABLE_COLOR0) || fb->zsbuf) {
                struct nvfx_render_target *rt0 = &nvfx->hw_rt[0];
                uint32_t pitch;
 
-               if(!(rt_enable & NV34TCL_RT_ENABLE_COLOR0))
+               if(!(rt_enable & NV30_3D_RT_ENABLE_COLOR0))
                        rt0 = &nvfx->hw_zeta;
 
                pitch = rt0->pitch;
@@ -196,23 +196,23 @@ nvfx_framebuffer_validate(struct nvfx_context *nvfx, unsigned prepare_result)
 
                //printf("rendering to bo %p [%i] at offset %i with pitch %i\n", rt0->bo, rt0->bo->handle, rt0->offset, pitch);
 
-               OUT_RING(chan, RING_3D(NV34TCL_DMA_COLOR0, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_DMA_COLOR0, 1));
                OUT_RELOC(chan, rt0->bo, 0,
                              rt_flags | NOUVEAU_BO_OR,
                              chan->vram->handle, chan->gart->handle);
-               OUT_RING(chan, RING_3D(NV34TCL_COLOR0_PITCH, 2));
+               OUT_RING(chan, RING_3D(NV30_3D_COLOR0_PITCH, 2));
                OUT_RING(chan, pitch);
                OUT_RELOC(chan, rt0->bo,
                              rt0->offset, rt_flags | NOUVEAU_BO_LOW,
                              0, 0);
        }
 
-       if (rt_enable & NV34TCL_RT_ENABLE_COLOR1) {
-               OUT_RING(chan, RING_3D(NV34TCL_DMA_COLOR1, 1));
+       if (rt_enable & NV30_3D_RT_ENABLE_COLOR1) {
+               OUT_RING(chan, RING_3D(NV30_3D_DMA_COLOR1, 1));
                OUT_RELOC(chan, nvfx->hw_rt[1].bo, 0,
                              rt_flags | NOUVEAU_BO_OR,
                              chan->vram->handle, chan->gart->handle);
-               OUT_RING(chan, RING_3D(NV34TCL_COLOR1_OFFSET, 2));
+               OUT_RING(chan, RING_3D(NV30_3D_COLOR1_OFFSET, 2));
                OUT_RELOC(chan, nvfx->hw_rt[1].bo,
                                nvfx->hw_rt[1].offset, rt_flags | NOUVEAU_BO_LOW,
                              0, 0);
@@ -221,69 +221,69 @@ nvfx_framebuffer_validate(struct nvfx_context *nvfx, unsigned prepare_result)
 
        if(nvfx->is_nv4x)
        {
-               if (rt_enable & NV40TCL_RT_ENABLE_COLOR2) {
-                       OUT_RING(chan, RING_3D(NV40TCL_DMA_COLOR2, 1));
+               if (rt_enable & NV40_3D_RT_ENABLE_COLOR2) {
+                       OUT_RING(chan, RING_3D(NV40_3D_DMA_COLOR2, 1));
                        OUT_RELOC(chan, nvfx->hw_rt[2].bo, 0,
                                      rt_flags | NOUVEAU_BO_OR,
                                      chan->vram->handle, chan->gart->handle);
-                       OUT_RING(chan, RING_3D(NV40TCL_COLOR2_OFFSET, 1));
+                       OUT_RING(chan, RING_3D(NV40_3D_COLOR2_OFFSET, 1));
                        OUT_RELOC(chan, nvfx->hw_rt[2].bo,
                                      nvfx->hw_rt[2].offset, rt_flags | NOUVEAU_BO_LOW,
                                      0, 0);
-                       OUT_RING(chan, RING_3D(NV40TCL_COLOR2_PITCH, 1));
+                       OUT_RING(chan, RING_3D(NV40_3D_COLOR2_PITCH, 1));
                        OUT_RING(chan, nvfx->hw_rt[2].pitch);
                }
 
-               if (rt_enable & NV40TCL_RT_ENABLE_COLOR3) {
-                       OUT_RING(chan, RING_3D(NV40TCL_DMA_COLOR3, 1));
+               if (rt_enable & NV40_3D_RT_ENABLE_COLOR3) {
+                       OUT_RING(chan, RING_3D(NV40_3D_DMA_COLOR3, 1));
                        OUT_RELOC(chan, nvfx->hw_rt[3].bo, 0,
                                      rt_flags | NOUVEAU_BO_OR,
                                      chan->vram->handle, chan->gart->handle);
-                       OUT_RING(chan, RING_3D(NV40TCL_COLOR3_OFFSET, 1));
+                       OUT_RING(chan, RING_3D(NV40_3D_COLOR3_OFFSET, 1));
                        OUT_RELOC(chan, nvfx->hw_rt[3].bo,
                                        nvfx->hw_rt[3].offset, rt_flags | NOUVEAU_BO_LOW,
                                      0, 0);
-                       OUT_RING(chan, RING_3D(NV40TCL_COLOR3_PITCH, 1));
+                       OUT_RING(chan, RING_3D(NV40_3D_COLOR3_PITCH, 1));
                        OUT_RING(chan, nvfx->hw_rt[3].pitch);
                }
        }
 
        if (fb->zsbuf) {
-               OUT_RING(chan, RING_3D(NV34TCL_DMA_ZETA, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_DMA_ZETA, 1));
                OUT_RELOC(chan, nvfx->hw_zeta.bo, 0,
                              rt_flags | NOUVEAU_BO_OR,
                              chan->vram->handle, chan->gart->handle);
-               OUT_RING(chan, RING_3D(NV34TCL_ZETA_OFFSET, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_ZETA_OFFSET, 1));
                /* TODO: reverse engineer LMA */
                OUT_RELOC(chan, nvfx->hw_zeta.bo,
                             nvfx->hw_zeta.offset, rt_flags | NOUVEAU_BO_LOW, 0, 0);
                if(nvfx->is_nv4x) {
-                       OUT_RING(chan, RING_3D(NV40TCL_ZETA_PITCH, 1));
+                       OUT_RING(chan, RING_3D(NV40_3D_ZETA_PITCH, 1));
                        OUT_RING(chan, nvfx->hw_zeta.pitch);
                }
        }
        else if(nvfx->is_nv4x) {
-               OUT_RING(chan, RING_3D(NV40TCL_ZETA_PITCH, 1));
+               OUT_RING(chan, RING_3D(NV40_3D_ZETA_PITCH, 1));
                OUT_RING(chan, 64);
        }
 
-       OUT_RING(chan, RING_3D(NV34TCL_RT_ENABLE, 1));
+       OUT_RING(chan, RING_3D(NV30_3D_RT_ENABLE, 1));
        OUT_RING(chan, rt_enable);
-       OUT_RING(chan, RING_3D(NV34TCL_RT_HORIZ, 3));
+       OUT_RING(chan, RING_3D(NV30_3D_RT_HORIZ, 3));
        OUT_RING(chan, (w << 16) | 0);
        OUT_RING(chan, (h << 16) | 0);
        OUT_RING(chan, rt_format);
-       OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_HORIZ, 2));
+       OUT_RING(chan, RING_3D(NV30_3D_VIEWPORT_HORIZ, 2));
        OUT_RING(chan, (w << 16) | 0);
        OUT_RING(chan, (h << 16) | 0);
-       OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_CLIP_HORIZ(0), 2));
+       OUT_RING(chan, RING_3D(NV30_3D_VIEWPORT_CLIP_HORIZ(0), 2));
        OUT_RING(chan, ((w - 1) << 16) | 0);
        OUT_RING(chan, ((h - 1) << 16) | 0);
 
        if(!nvfx->is_nv4x) {
                /* Wonder why this is needed, context should all be set to zero on init */
                /* TODO: we can most likely remove this, after putting it in context init */
-               OUT_RING(chan, RING_3D(NV34TCL_VIEWPORT_TX_ORIGIN, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VIEWPORT_TX_ORIGIN, 1));
                OUT_RING(chan, 0);
        }
        nvfx->relocs_needed &=~ NVFX_RELOCATE_FRAMEBUFFER;
@@ -299,22 +299,22 @@ nvfx_framebuffer_relocate(struct nvfx_context *nvfx)
 
 #define DO_(var, pfx, name) \
        if(var.bo) { \
-               OUT_RELOC(chan, var.bo, RING_3D(pfx##TCL_DMA_##name, 1), rt_flags, 0, 0); \
+               OUT_RELOC(chan, var.bo, RING_3D(pfx##_3D_DMA_##name, 1), rt_flags, 0, 0); \
                OUT_RELOC(chan, var.bo, 0, \
                        rt_flags | NOUVEAU_BO_OR, \
                        chan->vram->handle, chan->gart->handle); \
-               OUT_RELOC(chan, var.bo, RING_3D(pfx##TCL_##name##_OFFSET, 1), rt_flags, 0, 0); \
+               OUT_RELOC(chan, var.bo, RING_3D(pfx##_3D_##name##_OFFSET, 1), rt_flags, 0, 0); \
                OUT_RELOC(chan, var.bo, \
                        var.offset, rt_flags | NOUVEAU_BO_LOW, \
                        0, 0); \
        }
 
 #define DO(pfx, num) DO_(nvfx->hw_rt[num], pfx, COLOR##num)
-       DO(NV34, 0);
-       DO(NV34, 1);
+       DO(NV30, 0);
+       DO(NV30, 1);
        DO(NV40, 2);
        DO(NV40, 3);
 
-       DO_(nvfx->hw_zeta, NV34, ZETA);
+       DO_(nvfx->hw_zeta, NV30, ZETA);
        nvfx->relocs_needed &=~ NVFX_RELOCATE_FRAMEBUFFER;
 }
index e39f7f15a31f3f354d34a51910717d20451b7733..a6ce4cc15ed6a01b64c9bc3717e4588e8d47c9bd 100644 (file)
@@ -167,7 +167,7 @@ nvfx_get_blitter(struct pipe_context* pipe, int copy)
        {
                struct nouveau_channel* chan = nvfx->screen->base.channel;
                WAIT_RING(chan, 2);
-               OUT_RING(chan, RING_3D(NV34TCL_QUERY_ENABLE, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_QUERY_ENABLE, 1));
                OUT_RING(chan, 0);
        }
 
@@ -208,7 +208,7 @@ nvfx_put_blitter(struct pipe_context* pipe, struct blitter_context* blitter)
        {
                struct nouveau_channel* chan = nvfx->screen->base.channel;
                WAIT_RING(chan, 2);
-               OUT_RING(chan, RING_3D(NV34TCL_QUERY_ENABLE, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_QUERY_ENABLE, 1));
                OUT_RING(chan, 1);
        }
 }
index 34be936a891d93b3c76e32e10a7a3d48103a80a0..2f2d73780850ab8c14c03f3942e2e5d97995f747 100644 (file)
@@ -4,7 +4,7 @@
 #include "util/u_math.h"
 #include "pipe/p_defines.h"
 #include "pipe/p_state.h"
-#include <nouveau/nouveau_class.h>
+
 
 static inline unsigned
 nvfx_tex_wrap_mode(unsigned wrap) {
@@ -12,36 +12,36 @@ nvfx_tex_wrap_mode(unsigned wrap) {
 
        switch (wrap) {
        case PIPE_TEX_WRAP_REPEAT:
-               ret = NV34TCL_TX_WRAP_S_REPEAT;
+               ret = NV30_3D_TEX_WRAP_S_REPEAT;
                break;
        case PIPE_TEX_WRAP_MIRROR_REPEAT:
-               ret = NV34TCL_TX_WRAP_S_MIRRORED_REPEAT;
+               ret = NV30_3D_TEX_WRAP_S_MIRRORED_REPEAT;
                break;
        case PIPE_TEX_WRAP_CLAMP_TO_EDGE:
-               ret = NV34TCL_TX_WRAP_S_CLAMP_TO_EDGE;
+               ret = NV30_3D_TEX_WRAP_S_CLAMP_TO_EDGE;
                break;
        case PIPE_TEX_WRAP_CLAMP_TO_BORDER:
-               ret = NV34TCL_TX_WRAP_S_CLAMP_TO_BORDER;
+               ret = NV30_3D_TEX_WRAP_S_CLAMP_TO_BORDER;
                break;
        case PIPE_TEX_WRAP_CLAMP:
-               ret = NV34TCL_TX_WRAP_S_CLAMP;
+               ret = NV30_3D_TEX_WRAP_S_CLAMP;
                break;
        case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE:
-               ret = NV40TCL_TEX_WRAP_S_MIRROR_CLAMP_TO_EDGE;
+               ret = NV40_3D_TEX_WRAP_S_MIRROR_CLAMP_TO_EDGE;
                break;
        case PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER:
-               ret = NV40TCL_TEX_WRAP_S_MIRROR_CLAMP_TO_BORDER;
+               ret = NV40_3D_TEX_WRAP_S_MIRROR_CLAMP_TO_BORDER;
                break;
        case PIPE_TEX_WRAP_MIRROR_CLAMP:
-               ret = NV40TCL_TEX_WRAP_S_MIRROR_CLAMP;
+               ret = NV40_3D_TEX_WRAP_S_MIRROR_CLAMP;
                break;
        default:
                assert(0);
-               ret = NV34TCL_TX_WRAP_S_REPEAT;
+               ret = NV30_3D_TEX_WRAP_S_REPEAT;
                break;
        }
 
-       return ret >> NV34TCL_TX_WRAP_S_SHIFT;
+       return ret >> NV30_3D_TEX_WRAP_S__SHIFT;
 }
 
 static inline unsigned
@@ -49,21 +49,21 @@ nvfx_tex_wrap_compare_mode(unsigned func)
 {
        switch (func) {
        case PIPE_FUNC_NEVER:
-               return NV34TCL_TX_WRAP_RCOMP_NEVER;
+               return NV30_3D_TEX_WRAP_RCOMP_NEVER;
        case PIPE_FUNC_GREATER:
-               return NV34TCL_TX_WRAP_RCOMP_GREATER;
+               return NV30_3D_TEX_WRAP_RCOMP_GREATER;
        case PIPE_FUNC_EQUAL:
-               return NV34TCL_TX_WRAP_RCOMP_EQUAL;
+               return NV30_3D_TEX_WRAP_RCOMP_EQUAL;
        case PIPE_FUNC_GEQUAL:
-               return NV34TCL_TX_WRAP_RCOMP_GEQUAL;
+               return NV30_3D_TEX_WRAP_RCOMP_GEQUAL;
        case PIPE_FUNC_LESS:
-               return NV34TCL_TX_WRAP_RCOMP_LESS;
+               return NV30_3D_TEX_WRAP_RCOMP_LESS;
        case PIPE_FUNC_NOTEQUAL:
-               return NV34TCL_TX_WRAP_RCOMP_NOTEQUAL;
+               return NV30_3D_TEX_WRAP_RCOMP_NOTEQUAL;
        case PIPE_FUNC_LEQUAL:
-               return NV34TCL_TX_WRAP_RCOMP_LEQUAL;
+               return NV30_3D_TEX_WRAP_RCOMP_LEQUAL;
        case PIPE_FUNC_ALWAYS:
-               return NV34TCL_TX_WRAP_RCOMP_ALWAYS;
+               return NV30_3D_TEX_WRAP_RCOMP_ALWAYS;
        default:
                assert(0);
                return 0;
@@ -75,11 +75,11 @@ static inline unsigned nvfx_tex_filter(const struct pipe_sampler_state* cso)
        unsigned filter = 0;
        switch (cso->mag_img_filter) {
        case PIPE_TEX_FILTER_LINEAR:
-               filter |= NV34TCL_TX_FILTER_MAGNIFY_LINEAR;
+               filter |= NV30_3D_TEX_FILTER_MAG_LINEAR;
                break;
        case PIPE_TEX_FILTER_NEAREST:
        default:
-               filter |= NV34TCL_TX_FILTER_MAGNIFY_NEAREST;
+               filter |= NV30_3D_TEX_FILTER_MAG_NEAREST;
                break;
        }
 
@@ -87,14 +87,14 @@ static inline unsigned nvfx_tex_filter(const struct pipe_sampler_state* cso)
        case PIPE_TEX_FILTER_LINEAR:
                switch (cso->min_mip_filter) {
                case PIPE_TEX_MIPFILTER_NEAREST:
-                       filter |= NV34TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST;
+                       filter |= NV30_3D_TEX_FILTER_MIN_LINEAR_MIPMAP_NEAREST;
                        break;
                case PIPE_TEX_MIPFILTER_LINEAR:
-                       filter |= NV34TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR;
+                       filter |= NV30_3D_TEX_FILTER_MIN_LINEAR_MIPMAP_LINEAR;
                        break;
                case PIPE_TEX_MIPFILTER_NONE:
                default:
-                       filter |= NV34TCL_TX_FILTER_MINIFY_LINEAR;
+                       filter |= NV30_3D_TEX_FILTER_MIN_LINEAR;
                        break;
                }
                break;
@@ -102,14 +102,14 @@ static inline unsigned nvfx_tex_filter(const struct pipe_sampler_state* cso)
        default:
                switch (cso->min_mip_filter) {
                case PIPE_TEX_MIPFILTER_NEAREST:
-                       filter |= NV34TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST;
+                       filter |= NV30_3D_TEX_FILTER_MIN_NEAREST_MIPMAP_NEAREST;
                break;
                case PIPE_TEX_MIPFILTER_LINEAR:
-                       filter |= NV34TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR;
+                       filter |= NV30_3D_TEX_FILTER_MIN_NEAREST_MIPMAP_LINEAR;
                        break;
                case PIPE_TEX_MIPFILTER_NONE:
                default:
-                       filter |= NV34TCL_TX_FILTER_MINIFY_NEAREST;
+                       filter |= NV30_3D_TEX_FILTER_MIN_NEAREST;
                        break;
                }
                break;
index c35e926a7a14e794050303bc95043c96060a33a3..597664e77161eb50e1f25dcb6dd9d422130d0930 100644 (file)
@@ -9,7 +9,7 @@
 #include "nvfx_resource.h"
 
 #include "nouveau/nouveau_channel.h"
-#include "nouveau/nouveau_class.h"
+
 #include "nouveau/nouveau_pushbuf.h"
 
 static inline unsigned
@@ -266,7 +266,7 @@ nvfx_vbo_validate(struct nvfx_context *nvfx)
        }
 
 
-       OUT_RING(chan, RING_3D(NV34TCL_VTXFMT(0), elements));
+       OUT_RING(chan, RING_3D(NV30_3D_VTXFMT(0), elements));
        if(nvfx->use_vertex_buffers)
        {
                unsigned idx = 0;
@@ -281,7 +281,7 @@ nvfx_vbo_validate(struct nvfx_context *nvfx)
                                idx = ve->idx;
                        }
 
-                       OUT_RING(chan, nvfx->vtxelt->vtxfmt[idx] | (vb->stride << NV34TCL_VTXFMT_STRIDE_SHIFT));
+                       OUT_RING(chan, nvfx->vtxelt->vtxfmt[idx] | (vb->stride << NV30_3D_VTXFMT_STRIDE__SHIFT));
                        ++idx;
                }
                if(idx != nvfx->vtxelt->num_elements)
@@ -291,7 +291,7 @@ nvfx_vbo_validate(struct nvfx_context *nvfx)
                OUT_RINGp(chan, nvfx->vtxelt->vtxfmt, nvfx->vtxelt->num_elements);
 
        for(i = nvfx->vtxelt->num_elements; i < elements; ++i)
-               OUT_RING(chan, NV34TCL_VTXFMT_TYPE_32_FLOAT);
+               OUT_RING(chan, NV30_3D_VTXFMT_TYPE_V32_FLOAT);
 
        if(nvfx->is_nv4x) {
                unsigned i;
@@ -302,7 +302,7 @@ nvfx_vbo_validate(struct nvfx_context *nvfx)
                }
        }
 
-       OUT_RING(chan, RING_3D(NV34TCL_VTXBUF_ADDRESS(0), elements));
+       OUT_RING(chan, RING_3D(NV30_3D_VTXBUF(0), elements));
        if(nvfx->use_vertex_buffers)
        {
                unsigned idx = 0;
@@ -317,7 +317,7 @@ nvfx_vbo_validate(struct nvfx_context *nvfx)
                        OUT_RELOC(chan, bo,
                                        vb->buffer_offset + ve->src_offset + nvfx->base_vertex * vb->stride,
                                        vb_flags | NOUVEAU_BO_LOW | NOUVEAU_BO_OR,
-                                       0, NV34TCL_VTXBUF_ADDRESS_DMA1);
+                                       0, NV30_3D_VTXBUF_DMA1);
                        ++idx;
                }
 
@@ -350,11 +350,11 @@ nvfx_vbo_swtnl_validate(struct nvfx_context *nvfx)
 
        WAIT_RING(chan, (1 + 6 + 1 + 2) + elements * 2);
 
-       OUT_RING(chan, RING_3D(NV34TCL_VTXFMT(0), elements));
+       OUT_RING(chan, RING_3D(NV30_3D_VTXFMT(0), elements));
        for(unsigned i = 0; i < num_outputs; ++i)
-               OUT_RING(chan, (4 << NV34TCL_VTXFMT_SIZE_SHIFT) | NV34TCL_VTXFMT_TYPE_32_FLOAT);
+               OUT_RING(chan, (4 << NV30_3D_VTXFMT_SIZE__SHIFT) | NV30_3D_VTXFMT_TYPE_V32_FLOAT);
        for(unsigned i = num_outputs; i < elements; ++i)
-               OUT_RING(chan, NV34TCL_VTXFMT_TYPE_32_FLOAT);
+               OUT_RING(chan, NV30_3D_VTXFMT_TYPE_V32_FLOAT);
 
        if(nvfx->is_nv4x) {
                unsigned i;
@@ -365,7 +365,7 @@ nvfx_vbo_swtnl_validate(struct nvfx_context *nvfx)
                }
        }
 
-       OUT_RING(chan, RING_3D(NV34TCL_VTXBUF_ADDRESS(0), elements));
+       OUT_RING(chan, RING_3D(NV30_3D_VTXBUF(0), elements));
        for (unsigned i = 0; i < elements; i++)
                OUT_RING(chan, 0);
 
@@ -395,11 +395,11 @@ nvfx_vbo_relocate(struct nvfx_context *nvfx)
                 struct pipe_vertex_buffer *vb = &nvfx->vtxbuf[ve->vertex_buffer_index];
                 struct nouveau_bo* bo = nvfx_resource(vb->buffer)->bo;
 
-                OUT_RELOC(chan, bo, RING_3D(NV34TCL_VTXBUF_ADDRESS(ve->idx), 1),
+                OUT_RELOC(chan, bo, RING_3D(NV30_3D_VTXBUF(ve->idx), 1),
                                vb_flags, 0, 0);
                 OUT_RELOC(chan, bo, vb->buffer_offset + ve->src_offset + nvfx->base_vertex * vb->stride,
                                vb_flags | NOUVEAU_BO_LOW | NOUVEAU_BO_OR,
-                               0, NV34TCL_VTXBUF_ADDRESS_DMA1);
+                               0, NV30_3D_VTXBUF_DMA1);
        }
         nvfx->relocs_needed &=~ NVFX_RELOCATE_VTXBUF;
 }
@@ -408,7 +408,7 @@ static void
 nvfx_idxbuf_emit(struct nvfx_context* nvfx, unsigned ib_flags)
 {
        struct nouveau_channel* chan = nvfx->screen->base.channel;
-       unsigned ib_format = (nvfx->idxbuf.index_size == 2) ? NV34TCL_IDXBUF_FORMAT_TYPE_U16 : NV34TCL_IDXBUF_FORMAT_TYPE_U32;
+       unsigned ib_format = (nvfx->idxbuf.index_size == 2) ? NV30_3D_IDXBUF_FORMAT_TYPE_U16 : NV30_3D_IDXBUF_FORMAT_TYPE_U32;
        struct nouveau_bo* bo = nvfx_resource(nvfx->idxbuf.buffer)->bo;
        ib_flags |= nvfx->screen->index_buffer_reloc_flags | NOUVEAU_BO_RD;
 
@@ -416,12 +416,12 @@ nvfx_idxbuf_emit(struct nvfx_context* nvfx, unsigned ib_flags)
 
        MARK_RING(chan, 3, 3);
        if(ib_flags & NOUVEAU_BO_DUMMY)
-               OUT_RELOC(chan, bo, RING_3D(NV34TCL_IDXBUF_ADDRESS, 2), ib_flags, 0, 0);
+               OUT_RELOC(chan, bo, RING_3D(NV30_3D_IDXBUF_OFFSET, 2), ib_flags, 0, 0);
        else
-               OUT_RING(chan, RING_3D(NV34TCL_IDXBUF_ADDRESS, 2));
+               OUT_RING(chan, RING_3D(NV30_3D_IDXBUF_OFFSET, 2));
        OUT_RELOC(chan, bo, nvfx->idxbuf.offset + 1, ib_flags | NOUVEAU_BO_LOW, 0, 0);
        OUT_RELOC(chan, bo, ib_format, ib_flags | NOUVEAU_BO_OR,
-                       0, NV34TCL_IDXBUF_FORMAT_DMA1);
+                       0, NV30_3D_IDXBUF_FORMAT_DMA1);
        nvfx->relocs_needed &=~ NVFX_RELOCATE_IDXBUF;
 }
 
@@ -439,27 +439,27 @@ nvfx_idxbuf_relocate(struct nvfx_context* nvfx)
 
 unsigned nvfx_vertex_formats[PIPE_FORMAT_COUNT] =
 {
-       [PIPE_FORMAT_R32_FLOAT] = NV34TCL_VTXFMT_TYPE_32_FLOAT,
-       [PIPE_FORMAT_R32G32_FLOAT] = NV34TCL_VTXFMT_TYPE_32_FLOAT,
-       [PIPE_FORMAT_R32G32B32A32_FLOAT] = NV34TCL_VTXFMT_TYPE_32_FLOAT,
-       [PIPE_FORMAT_R32G32B32_FLOAT] = NV34TCL_VTXFMT_TYPE_32_FLOAT,
-       [PIPE_FORMAT_R16_FLOAT] = NV34TCL_VTXFMT_TYPE_16_FLOAT,
-       [PIPE_FORMAT_R16G16_FLOAT] = NV34TCL_VTXFMT_TYPE_16_FLOAT,
-       [PIPE_FORMAT_R16G16B16_FLOAT] = NV34TCL_VTXFMT_TYPE_16_FLOAT,
-       [PIPE_FORMAT_R16G16B16A16_FLOAT] = NV34TCL_VTXFMT_TYPE_16_FLOAT,
-       [PIPE_FORMAT_R8_UNORM] = NV34TCL_VTXFMT_TYPE_8_UNORM,
-       [PIPE_FORMAT_R8G8_UNORM] = NV34TCL_VTXFMT_TYPE_8_UNORM,
-       [PIPE_FORMAT_R8G8B8_UNORM] = NV34TCL_VTXFMT_TYPE_8_UNORM,
-       [PIPE_FORMAT_R8G8B8A8_UNORM] = NV34TCL_VTXFMT_TYPE_8_UNORM,
-       [PIPE_FORMAT_R8G8B8A8_USCALED] = NV34TCL_VTXFMT_TYPE_8_USCALED,
-       [PIPE_FORMAT_R16_SNORM] = NV34TCL_VTXFMT_TYPE_16_SNORM,
-       [PIPE_FORMAT_R16G16_SNORM] = NV34TCL_VTXFMT_TYPE_16_SNORM,
-       [PIPE_FORMAT_R16G16B16_SNORM] = NV34TCL_VTXFMT_TYPE_16_SNORM,
-       [PIPE_FORMAT_R16G16B16A16_SNORM] = NV34TCL_VTXFMT_TYPE_16_SNORM,
-       [PIPE_FORMAT_R16_SSCALED] = NV34TCL_VTXFMT_TYPE_16_SSCALED,
-       [PIPE_FORMAT_R16G16_SSCALED] = NV34TCL_VTXFMT_TYPE_16_SSCALED,
-       [PIPE_FORMAT_R16G16B16_SSCALED] = NV34TCL_VTXFMT_TYPE_16_SSCALED,
-       [PIPE_FORMAT_R16G16B16A16_SSCALED] = NV34TCL_VTXFMT_TYPE_16_SSCALED,
+       [PIPE_FORMAT_R32_FLOAT] = NV30_3D_VTXFMT_TYPE_V32_FLOAT,
+       [PIPE_FORMAT_R32G32_FLOAT] = NV30_3D_VTXFMT_TYPE_V32_FLOAT,
+       [PIPE_FORMAT_R32G32B32_FLOAT] = NV30_3D_VTXFMT_TYPE_V32_FLOAT,
+       [PIPE_FORMAT_R32G32B32A32_FLOAT] = NV30_3D_VTXFMT_TYPE_V32_FLOAT,
+       [PIPE_FORMAT_R16_FLOAT] = NV30_3D_VTXFMT_TYPE_V16_FLOAT,
+       [PIPE_FORMAT_R16G16_FLOAT] = NV30_3D_VTXFMT_TYPE_V16_FLOAT,
+       [PIPE_FORMAT_R16G16B16_FLOAT] = NV30_3D_VTXFMT_TYPE_V16_FLOAT,
+       [PIPE_FORMAT_R16G16B16A16_FLOAT] = NV30_3D_VTXFMT_TYPE_V16_FLOAT,
+       [PIPE_FORMAT_R8_UNORM] = NV30_3D_VTXFMT_TYPE_U8_UNORM,
+       [PIPE_FORMAT_R8G8_UNORM] = NV30_3D_VTXFMT_TYPE_U8_UNORM,
+       [PIPE_FORMAT_R8G8B8_UNORM] = NV30_3D_VTXFMT_TYPE_U8_UNORM,
+       [PIPE_FORMAT_R8G8B8A8_UNORM] = NV30_3D_VTXFMT_TYPE_U8_UNORM,
+       [PIPE_FORMAT_R8G8B8A8_USCALED] = NV30_3D_VTXFMT_TYPE_U8_USCALED,
+       [PIPE_FORMAT_R16_SNORM] = NV30_3D_VTXFMT_TYPE_V16_SNORM,
+       [PIPE_FORMAT_R16G16_SNORM] = NV30_3D_VTXFMT_TYPE_V16_SNORM,
+       [PIPE_FORMAT_R16G16B16_SNORM] = NV30_3D_VTXFMT_TYPE_V16_SNORM,
+       [PIPE_FORMAT_R16G16B16A16_SNORM] = NV30_3D_VTXFMT_TYPE_V16_SNORM,
+       [PIPE_FORMAT_R16_SSCALED] = NV30_3D_VTXFMT_TYPE_V16_SSCALED,
+       [PIPE_FORMAT_R16G16_SSCALED] = NV30_3D_VTXFMT_TYPE_V16_SSCALED,
+       [PIPE_FORMAT_R16G16B16_SSCALED] = NV30_3D_VTXFMT_TYPE_V16_SSCALED,
+       [PIPE_FORMAT_R16G16B16A16_SSCALED] = NV30_3D_VTXFMT_TYPE_V16_SSCALED,
 };
 
 static void *
@@ -514,7 +514,7 @@ nvfx_vtxelts_state_create(struct pipe_context *pipe,
                if(ve->instance_divisor)
                {
                        struct nvfx_low_frequency_element* lfve;
-                       cso->vtxfmt[i] = NV34TCL_VTXFMT_TYPE_32_FLOAT;
+                       cso->vtxfmt[i] = NV30_3D_VTXFMT_TYPE_V32_FLOAT;
 
                        //if(ve->frequency == PIPE_ELEMENT_FREQUENCY_CONSTANT)
                        if(0)
@@ -549,14 +549,14 @@ nvfx_vtxelts_state_create(struct pipe_context *pipe,
                        if(type)
                        {
                                transkey.element[idx].output_format = ve->src_format;
-                               cso->vtxfmt[i] = (ncomp << NV34TCL_VTXFMT_SIZE_SHIFT) | type;
+                               cso->vtxfmt[i] = (ncomp << NV30_3D_VTXFMT_SIZE__SHIFT) | type;
                        }
                        else
                        {
                                unsigned float32[4] = {PIPE_FORMAT_R32_FLOAT, PIPE_FORMAT_R32G32_FLOAT, PIPE_FORMAT_R32G32B32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT};
                                transkey.element[idx].output_format = float32[ncomp - 1];
                                cso->needs_translate = TRUE;
-                               cso->vtxfmt[i] = (ncomp << NV34TCL_VTXFMT_SIZE_SHIFT) | NV34TCL_VTXFMT_TYPE_32_FLOAT;
+                               cso->vtxfmt[i] = (ncomp << NV30_3D_VTXFMT_SIZE__SHIFT) | NV30_3D_VTXFMT_TYPE_V32_FLOAT;
                        }
                        transkey.element[idx].output_offset = transkey.output_stride;
                        transkey.output_stride += (util_format_get_stride(transkey.element[idx].output_format, 1) + 3) & ~3;
index ba4ece7c5669722441e5f827ad654378b1e6ab15..570bb452b5ef0d01b4e2e66318f86a8ebefd4936 100644 (file)
@@ -1310,7 +1310,7 @@ nvfx_vertprog_validate(struct nvfx_context *nvfx)
                 * WAIT_RING(chan, 512 * 6);
                for (i = 0; i < 512; i++) {
                        float v[4] = {0.1, 0,2, 0.3, 0.4};
-                       OUT_RING(chan, RING_3D(NV34TCL_VP_UPLOAD_CONST_ID, 5));
+                       OUT_RING(chan, RING_3D(NV30_3D_VP_UPLOAD_CONST_ID, 5));
                        OUT_RING(chan, i);
                        OUT_RINGp(chan, (uint32_t *)v, 4);
                        printf("frob %i\n", i);
@@ -1332,7 +1332,7 @@ nvfx_vertprog_validate(struct nvfx_context *nvfx)
 
                        //printf("upload into %i + %i: %f %f %f %f\n", vp->data->start, i, vpd->value[0], vpd->value[1], vpd->value[2], vpd->value[3]);
 
-                       OUT_RING(chan, RING_3D(NV34TCL_VP_UPLOAD_CONST_ID, 5));
+                       OUT_RING(chan, RING_3D(NV30_3D_VP_UPLOAD_CONST_ID, 5));
                        OUT_RING(chan, i + vp->data->start);
                        OUT_RINGp(chan, (uint32_t *)vpd->value, 4);
                }
@@ -1341,10 +1341,10 @@ nvfx_vertprog_validate(struct nvfx_context *nvfx)
        /* Upload vtxprog */
        if (upload_code) {
                WAIT_RING(chan, 2 + 5 * vp->nr_insns);
-               OUT_RING(chan, RING_3D(NV34TCL_VP_UPLOAD_FROM_ID, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VP_UPLOAD_FROM_ID, 1));
                OUT_RING(chan, vp->exec->start);
                for (i = 0; i < vp->nr_insns; i++) {
-                       OUT_RING(chan, RING_3D(NV34TCL_VP_UPLOAD_INST(0), 4));
+                       OUT_RING(chan, RING_3D(NV30_3D_VP_UPLOAD_INST(0), 4));
                        //printf("%08x %08x %08x %08x\n", vp->insns[i].data[0], vp->insns[i].data[1], vp->insns[i].data[2], vp->insns[i].data[3]);
                        OUT_RINGp(chan, vp->insns[i].data, 4);
                }
@@ -1354,10 +1354,10 @@ nvfx_vertprog_validate(struct nvfx_context *nvfx)
        if(nvfx->dirty & (NVFX_NEW_VERTPROG))
        {
                WAIT_RING(chan, 6);
-               OUT_RING(chan, RING_3D(NV34TCL_VP_START_FROM_ID, 1));
+               OUT_RING(chan, RING_3D(NV30_3D_VP_START_FROM_ID, 1));
                OUT_RING(chan, vp->exec->start);
                if(nvfx->is_nv4x) {
-                       OUT_RING(chan, RING_3D(NV40TCL_VP_ATTRIB_EN, 1));
+                       OUT_RING(chan, RING_3D(NV40_3D_VP_ATTRIB_EN, 1));
                        OUT_RING(chan, vp->ir);
                }
        }