summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Bumiller <[email protected]>2010-07-24 12:49:15 +0200
committerChristoph Bumiller <[email protected]>2010-07-24 14:48:15 +0200
commitf3af1201c578443dd0f72e73470dd1763888a41d (patch)
tree493447913d238317d327a20fd5e23129292c7f17
parent633f5ac6124b1b57152c09becba92d176e905ae9 (diff)
nouveau: update nouveau_class.h
Adds nvc0, new vertex formats, and dual source blending values.
-rw-r--r--src/gallium/drivers/nouveau/nouveau_class.h1171
-rw-r--r--src/gallium/drivers/nv50/nv50_state.c55
-rw-r--r--src/gallium/drivers/nv50/nv50_vbo.c17
3 files changed, 1159 insertions, 84 deletions
diff --git a/src/gallium/drivers/nouveau/nouveau_class.h b/src/gallium/drivers/nouveau/nouveau_class.h
index adfdd37b1b6..975fd8f35a2 100644
--- a/src/gallium/drivers/nouveau/nouveau_class.h
+++ b/src/gallium/drivers/nouveau/nouveau_class.h
@@ -735,6 +735,45 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT_HIGH 0x0000023c
+#define NVC0_MEMORY_TO_MEMORY_FORMAT 0x00009039
+
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_NOP 0x00000100
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_SERIALIZE 0x00000110
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_IN 0x00000204
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_IN 0x00000208
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_IN 0x0000020c
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_IN 0x00000210
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Z 0x00000214
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_OUT 0x00000220
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_OUT 0x00000224
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_OUT 0x00000228
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_OUT 0x0000022c
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Z 0x00000230
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT_HIGH 0x00000238
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT_LOW 0x0000023c
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_EXEC 0x00000300
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_EXEC_PUSH (1 << 0)
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_EXEC_LINEAR_IN (1 << 4)
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_EXEC_LINEAR_OUT (1 << 8)
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_EXEC_NOTIFY (1 << 13)
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_EXEC_INC_SHIFT 20
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_EXEC_INC_MASK 0x00f00000
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_DATA 0x00000304
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN_HIGH 0x0000030c
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN_LOW 0x00000310
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_PITCH_IN 0x00000314
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_PITCH_OUT 0x00000318
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_LINE_LENGTH_IN 0x0000031c
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_LINE_COUNT 0x00000320
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_NOTIFY_ADDRESS_HIGH 0x0000032c
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_NOTIFY_ADDRESS_LOW 0x00000330
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_NOTIFY 0x00000334
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_X 0x00000344
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Y 0x00000348
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_X 0x0000034c
+#define NVC0_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Y 0x00000350
+
+
#define NV01_MEMORY_LOCAL_BANKED 0x0000003d
@@ -4507,6 +4546,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV20TCL_VTXFMT_TYPE_SHIFT 0
#define NV20TCL_VTXFMT_TYPE_MASK 0x0000000f
#define NV20TCL_VTXFMT_TYPE_FLOAT 0x00000002
+#define NV20TCL_VTXFMT_TYPE_HALF 0x00000003
#define NV20TCL_VTXFMT_TYPE_UBYTE 0x00000004
#define NV20TCL_VTXFMT_TYPE_USHORT 0x00000005
#define NV20TCL_VTXFMT_SIZE_SHIFT 4
@@ -6990,6 +7030,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV40TCL_VTXFMT_TYPE_SHIFT 0
#define NV40TCL_VTXFMT_TYPE_MASK 0x0000000f
#define NV40TCL_VTXFMT_TYPE_FLOAT 0x00000002
+#define NV40TCL_VTXFMT_TYPE_HALF 0x00000003
#define NV40TCL_VTXFMT_TYPE_UBYTE 0x00000004
#define NV40TCL_VTXFMT_TYPE_USHORT 0x00000005
#define NV40TCL_VTXFMT_SIZE_SHIFT 4
@@ -7699,7 +7740,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_DMA_TIC 0x000001a0
#define NV50TCL_DMA_TEXTURE 0x000001a4
#define NV50TCL_DMA_STRMOUT 0x000001a8
-#define NV50TCL_DMA_UNK01AC 0x000001ac
+#define NV50TCL_DMA_CLIPID 0x000001ac
#define NV50TCL_DMA_COLOR(x) (0x000001c0+((x)*4))
#define NV50TCL_DMA_COLOR__SIZE 0x00000008
#define NV50TCL_RT_ADDRESS_HIGH(x) (0x00000200+((x)*32))
@@ -7916,8 +7957,20 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_DEPTH_RANGE_FAR__SIZE 0x00000010
#define NV50TCL_VIEWPORT_CLIP_HORIZ(x) (0x00000d00+((x)*8))
#define NV50TCL_VIEWPORT_CLIP_HORIZ__SIZE 0x00000008
+#define NV50TCL_VIEWPORT_CLIP_HORIZ_MIN_SHIFT 0
+#define NV50TCL_VIEWPORT_CLIP_HORIZ_MIN_MASK 0x0000ffff
+#define NV50TCL_VIEWPORT_CLIP_HORIZ_MAX_SHIFT 16
+#define NV50TCL_VIEWPORT_CLIP_HORIZ_MAX_MASK 0xffff0000
#define NV50TCL_VIEWPORT_CLIP_VERT(x) (0x00000d04+((x)*8))
#define NV50TCL_VIEWPORT_CLIP_VERT__SIZE 0x00000008
+#define NV50TCL_VIEWPORT_CLIP_VERT_MIN_SHIFT 0
+#define NV50TCL_VIEWPORT_CLIP_VERT_MIN_MASK 0x0000ffff
+#define NV50TCL_VIEWPORT_CLIP_VERT_MAX_SHIFT 16
+#define NV50TCL_VIEWPORT_CLIP_VERT_MAX_MASK 0xffff0000
+#define NV50TCL_CLIPID_REGION_HORIZ(x) (0x00000d40+((x)*8))
+#define NV50TCL_CLIPID_REGION_HORIZ__SIZE 0x00000004
+#define NV50TCL_CLIPID_REGION_VERT(x) (0x00000d44+((x)*8))
+#define NV50TCL_CLIPID_REGION_VERT__SIZE 0x00000004
#define NV50TCL_VERTEX_BUFFER_FIRST 0x00000d74
#define NV50TCL_VERTEX_BUFFER_COUNT 0x00000d78
#define NV50TCL_CLEAR_COLOR(x) (0x00000d80+((x)*4))
@@ -7975,14 +8028,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_GP_ADDRESS_LOW 0x00000f74
#define NV50TCL_VP_ADDRESS_HIGH 0x00000f7c
#define NV50TCL_VP_ADDRESS_LOW 0x00000f80
-#define NV50TCL_UNK0F84_ADDRESS_HIGH 0x00000f84
-#define NV50TCL_UNK0F84_ADDRESS_LOW 0x00000f88
+#define NV50TCL_VERTEX_RUNOUT_HIGH 0x00000f84
+#define NV50TCL_VERTEX_RUNOUT_LOW 0x00000f88
#define NV50TCL_DEPTH_BOUNDS(x) (0x00000f9c+((x)*4))
#define NV50TCL_DEPTH_BOUNDS__SIZE 0x00000002
#define NV50TCL_FP_ADDRESS_HIGH 0x00000fa4
#define NV50TCL_FP_ADDRESS_LOW 0x00000fa8
#define NV50TCL_MSAA_MASK(x) (0x00000fbc+((x)*4))
#define NV50TCL_MSAA_MASK__SIZE 0x00000004
+#define NV50TCL_CLIPID_ADDRESS_HIGH 0x00000fcc
+#define NV50TCL_CLIPID_ADDRESS_LOW 0x00000fd0
#define NV50TCL_ZETA_ADDRESS_HIGH 0x00000fe0
#define NV50TCL_ZETA_ADDRESS_LOW 0x00000fe4
#define NV50TCL_ZETA_FORMAT 0x00000fe8
@@ -8112,37 +8167,45 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_BLEND_EQUATION_RGB_FUNC_SUBTRACT 0x0000800a
#define NV50TCL_BLEND_EQUATION_RGB_FUNC_REVERSE_SUBTRACT 0x0000800b
#define NV50TCL_BLEND_FUNC_SRC_RGB 0x00001344
-#define NV50TCL_BLEND_FUNC_SRC_RGB_ZERO 0x00000000
-#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE 0x00000001
-#define NV50TCL_BLEND_FUNC_SRC_RGB_SRC_COLOR 0x00000300
-#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_COLOR 0x00000301
-#define NV50TCL_BLEND_FUNC_SRC_RGB_SRC_ALPHA 0x00000302
-#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_ALPHA 0x00000303
-#define NV50TCL_BLEND_FUNC_SRC_RGB_DST_ALPHA 0x00000304
-#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_ALPHA 0x00000305
-#define NV50TCL_BLEND_FUNC_SRC_RGB_DST_COLOR 0x00000306
-#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_COLOR 0x00000307
-#define NV50TCL_BLEND_FUNC_SRC_RGB_SRC_ALPHA_SATURATE 0x00000308
-#define NV50TCL_BLEND_FUNC_SRC_RGB_CONSTANT_COLOR 0x00008001
-#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_COLOR 0x00008002
-#define NV50TCL_BLEND_FUNC_SRC_RGB_CONSTANT_ALPHA 0x00008003
-#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_ALPHA 0x00008004
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ZERO 0x00004000
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE 0x00004001
+#define NV50TCL_BLEND_FUNC_SRC_RGB_SRC_COLOR 0x00004300
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_COLOR 0x00004301
+#define NV50TCL_BLEND_FUNC_SRC_RGB_SRC_ALPHA 0x00004302
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NV50TCL_BLEND_FUNC_SRC_RGB_DST_ALPHA 0x00004304
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_ALPHA 0x00004305
+#define NV50TCL_BLEND_FUNC_SRC_RGB_DST_COLOR 0x00004306
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_COLOR 0x00004307
+#define NV50TCL_BLEND_FUNC_SRC_RGB_SRC_ALPHA_SATURATE 0x00004308
+#define NV50TCL_BLEND_FUNC_SRC_RGB_CONSTANT_COLOR 0x0000c001
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NV50TCL_BLEND_FUNC_SRC_RGB_CONSTANT_ALPHA 0x0000c003
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NV50TCL_BLEND_FUNC_SRC_RGB_SRC1_COLOR 0x0000c900
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NV50TCL_BLEND_FUNC_SRC_RGB_SRC1_ALPHA 0x0000c902
+#define NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC1_ALPHA 0x0000c903
#define NV50TCL_BLEND_FUNC_DST_RGB 0x00001348
-#define NV50TCL_BLEND_FUNC_DST_RGB_ZERO 0x00000000
-#define NV50TCL_BLEND_FUNC_DST_RGB_ONE 0x00000001
-#define NV50TCL_BLEND_FUNC_DST_RGB_SRC_COLOR 0x00000300
-#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC_COLOR 0x00000301
-#define NV50TCL_BLEND_FUNC_DST_RGB_SRC_ALPHA 0x00000302
-#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC_ALPHA 0x00000303
-#define NV50TCL_BLEND_FUNC_DST_RGB_DST_ALPHA 0x00000304
-#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_DST_ALPHA 0x00000305
-#define NV50TCL_BLEND_FUNC_DST_RGB_DST_COLOR 0x00000306
-#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_DST_COLOR 0x00000307
-#define NV50TCL_BLEND_FUNC_DST_RGB_SRC_ALPHA_SATURATE 0x00000308
-#define NV50TCL_BLEND_FUNC_DST_RGB_CONSTANT_COLOR 0x00008001
-#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_CONSTANT_COLOR 0x00008002
-#define NV50TCL_BLEND_FUNC_DST_RGB_CONSTANT_ALPHA 0x00008003
-#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_CONSTANT_ALPHA 0x00008004
+#define NV50TCL_BLEND_FUNC_DST_RGB_ZERO 0x00004000
+#define NV50TCL_BLEND_FUNC_DST_RGB_ONE 0x00004001
+#define NV50TCL_BLEND_FUNC_DST_RGB_SRC_COLOR 0x00004300
+#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC_COLOR 0x00004301
+#define NV50TCL_BLEND_FUNC_DST_RGB_SRC_ALPHA 0x00004302
+#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NV50TCL_BLEND_FUNC_DST_RGB_DST_ALPHA 0x00004304
+#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_DST_ALPHA 0x00004305
+#define NV50TCL_BLEND_FUNC_DST_RGB_DST_COLOR 0x00004306
+#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_DST_COLOR 0x00004307
+#define NV50TCL_BLEND_FUNC_DST_RGB_SRC_ALPHA_SATURATE 0x00004308
+#define NV50TCL_BLEND_FUNC_DST_RGB_CONSTANT_COLOR 0x0000c001
+#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NV50TCL_BLEND_FUNC_DST_RGB_CONSTANT_ALPHA 0x0000c003
+#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NV50TCL_BLEND_FUNC_DST_RGB_SRC1_COLOR 0x0000c900
+#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NV50TCL_BLEND_FUNC_DST_RGB_SRC1_ALPHA 0x0000c902
+#define NV50TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC1_ALPHA 0x0000c903
#define NV50TCL_BLEND_EQUATION_ALPHA 0x0000134c
#define NV50TCL_BLEND_EQUATION_ALPHA_FUNC_ADD 0x00008006
#define NV50TCL_BLEND_EQUATION_ALPHA_MIN 0x00008007
@@ -8150,37 +8213,45 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_BLEND_EQUATION_ALPHA_FUNC_SUBTRACT 0x0000800a
#define NV50TCL_BLEND_EQUATION_ALPHA_FUNC_REVERSE_SUBTRACT 0x0000800b
#define NV50TCL_BLEND_FUNC_SRC_ALPHA 0x00001350
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ZERO 0x00000000
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE 0x00000001
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_SRC_COLOR 0x00000300
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC_COLOR 0x00000301
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA 0x00000302
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC_ALPHA 0x00000303
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_DST_ALPHA 0x00000304
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_DST_ALPHA 0x00000305
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_DST_COLOR 0x00000306
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_DST_COLOR 0x00000307
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA_SATURATE 0x00000308
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_CONSTANT_COLOR 0x00008001
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_CONSTANT_COLOR 0x00008002
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_CONSTANT_ALPHA 0x00008003
-#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_CONSTANT_ALPHA 0x00008004
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ZERO 0x00004000
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE 0x00004001
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_SRC_COLOR 0x00004300
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC_COLOR 0x00004301
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA 0x00004302
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_DST_ALPHA 0x00004304
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_DST_ALPHA 0x00004305
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_DST_COLOR 0x00004306
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_DST_COLOR 0x00004307
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA_SATURATE 0x00004308
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_CONSTANT_COLOR 0x0000c001
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_CONSTANT_ALPHA 0x0000c003
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_SRC1_COLOR 0x0000c900
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_SRC1_ALPHA 0x0000c902
+#define NV50TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC1_ALPHA 0x0000c903
#define NV50TCL_BLEND_FUNC_DST_ALPHA 0x00001358
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_ZERO 0x00000000
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE 0x00000001
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_SRC_COLOR 0x00000300
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC_COLOR 0x00000301
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_SRC_ALPHA 0x00000302
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC_ALPHA 0x00000303
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_DST_ALPHA 0x00000304
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_DST_ALPHA 0x00000305
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_DST_COLOR 0x00000306
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_DST_COLOR 0x00000307
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_SRC_ALPHA_SATURATE 0x00000308
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_CONSTANT_COLOR 0x00008001
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_CONSTANT_COLOR 0x00008002
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_CONSTANT_ALPHA 0x00008003
-#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_CONSTANT_ALPHA 0x00008004
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ZERO 0x00004000
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE 0x00004001
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_SRC_COLOR 0x00004300
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC_COLOR 0x00004301
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_SRC_ALPHA 0x00004302
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_DST_ALPHA 0x00004304
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_DST_ALPHA 0x00004305
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_DST_COLOR 0x00004306
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_DST_COLOR 0x00004307
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_SRC_ALPHA_SATURATE 0x00004308
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_CONSTANT_COLOR 0x0000c001
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_CONSTANT_ALPHA 0x0000c003
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_SRC1_COLOR 0x0000c900
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_SRC1_ALPHA 0x0000c902
+#define NV50TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC1_ALPHA 0x0000c903
#define NV50TCL_BLEND_ENABLE(x) (0x00001360+((x)*4))
#define NV50TCL_BLEND_ENABLE__SIZE 0x00000008
#define NV50TCL_STENCIL_FRONT_ENABLE 0x00001380
@@ -8239,6 +8310,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_FP_START_ID 0x00001414
#define NV50TCL_GP_VERTEX_OUTPUT_COUNT 0x00001420
#define NV50TCL_VB_ELEMENT_BASE 0x00001434
+#define NV50TCL_INSTANCE_BASE 0x00001438
#define NV50TCL_CODE_CB_FLUSH 0x00001440
#define NV50TCL_BIND_TSC(x) (0x00001444+((x)*8))
#define NV50TCL_BIND_TSC__SIZE 0x00000003
@@ -8256,6 +8328,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_BIND_TIC_TIC_MASK 0x7ffffe00
#define NV50TCL_STRMOUT_MAP(x) (0x00001480+((x)*4))
#define NV50TCL_STRMOUT_MAP__SIZE 0x00000020
+#define NV50TCL_CLIPID_HEIGHT 0x00001504
#define NV50TCL_VP_CLIP_DISTANCE_ENABLE 0x00001510
#define NV50TCL_VP_CLIP_DISTANCE_ENABLE_0 (1 << 0)
#define NV50TCL_VP_CLIP_DISTANCE_ENABLE_1 (1 << 1)
@@ -8340,7 +8413,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_GP_BUILTIN_RESULT_EN 0x000015cc
#define NV50TCL_GP_BUILTIN_RESULT_EN_VPORT_IDX (1 << 0)
#define NV50TCL_GP_BUILTIN_RESULT_EN_LAYER_IDX (1 << 16)
-#define NV50TCL_MULTISAMPLE_SAMPLES_LOG2 0x000015d0
+#define NV50TCL_MULTISAMPLE_MODE 0x000015d0
+#define NV50TCL_MULTISAMPLE_MODE_1X 0x00000000
+#define NV50TCL_MULTISAMPLE_MODE_2XMS 0x00000001
+#define NV50TCL_MULTISAMPLE_MODE_4XMS 0x00000002
+#define NV50TCL_MULTISAMPLE_MODE_8XMS 0x00000004
+#define NV50TCL_MULTISAMPLE_MODE_4XMS_4XCS 0x00000008
+#define NV50TCL_MULTISAMPLE_MODE_4XMS_12XCS 0x00000009
+#define NV50TCL_MULTISAMPLE_MODE_8XMS_8XCS 0x0000000a
#define NV50TCL_VERTEX_BEGIN 0x000015dc
#define NV50TCL_VERTEX_BEGIN_POINTS 0x00000000
#define NV50TCL_VERTEX_BEGIN_LINES 0x00000001
@@ -8356,6 +8436,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_VERTEX_BEGIN_LINE_STRIP_ADJACENCY 0x0000000b
#define NV50TCL_VERTEX_BEGIN_TRIANGLES_ADJACENCY 0x0000000c
#define NV50TCL_VERTEX_BEGIN_TRIANGLE_STRIP_ADJACENCY 0x0000000d
+#define NV50TCL_VERTEX_BEGIN_PATCHES 0x0000000e
#define NV50TCL_VERTEX_END 0x000015e0
#define NV50TCL_EDGEFLAG_ENABLE 0x000015e4
#define NV50TCL_VB_ELEMENT_U32 0x000015e8
@@ -8369,6 +8450,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_VB_ELEMENT_U16_I0_MASK 0x0000ffff
#define NV50TCL_VB_ELEMENT_U16_I1_SHIFT 16
#define NV50TCL_VB_ELEMENT_U16_I1_MASK 0xffff0000
+#define NV50TCL_VERTEX_BASE_HIGH 0x000015f4
+#define NV50TCL_VERTEX_BASE_LOW 0x000015f8
#define NV50TCL_VERTEX_DATA 0x00001640
#define NV50TCL_PRIM_RESTART_ENABLE 0x00001644
#define NV50TCL_PRIM_RESTART_INDEX 0x00001648
@@ -8754,7 +8837,14 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_VIEWPORT_TRANSFORM_EN 0x0000192c
#define NV50TCL_VIEW_VOLUME_CLIP_CTRL 0x0000193c
#define NV50TCL_VIEWPORT_CLIP_RECTS_EN 0x0000194c
+#define NV50TCL_VIEWPORT_CLIP_MODE 0x00001950
+#define NV50TCL_VIEWPORT_CLIP_MODE_INCLUDE 0x00000000
+#define NV50TCL_VIEWPORT_CLIP_MODE_EXCLUDE 0x00000001
+#define NV50TCL_VIEWPORT_CLIP_MODE_UNKNOWN 0x00000002
#define NV50TCL_FP_CTRL_UNK196C 0x0000196c
+#define NV50TCL_CLIPID_ENABLE 0x0000197c
+#define NV50TCL_CLIPID_WIDTH 0x00001980
+#define NV50TCL_CLIPID_ID 0x00001984
#define NV50TCL_FP_INTERPOLANT_CTRL 0x00001988
#define NV50TCL_FP_INTERPOLANT_CTRL_UMASK_SHIFT 24
#define NV50TCL_FP_INTERPOLANT_CTRL_UMASK_MASK 0xff000000
@@ -8855,19 +8945,20 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_8_8 0x00c00000
#define NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_16 0x00d80000
#define NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_8 0x00e80000
+#define NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_2_10_10_10 0x01800000
#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SHIFT 25
-#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_MASK 0x7e000000
-#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_FLOAT 0x7e000000
-#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_UNORM 0x24000000
-#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SNORM 0x12000000
-#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_USCALED 0x5a000000
-#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SSCALED 0x6c000000
-#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_UINT 0x48000000
-#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SINT 0x36000000
+#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_MASK 0x0e000000
+#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_FLOAT 0x0e000000
+#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_UNORM 0x02000000
+#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SNORM 0x04000000
+#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_USCALED 0x0a000000
+#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SSCALED 0x0c000000
+#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_UINT 0x08000000
+#define NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SINT 0x06000000
#define NV50TCL_VERTEX_ARRAY_ATTRIB_BGRA (1 << 31)
#define NV50TCL_QUERY_ADDRESS_HIGH 0x00001b00
#define NV50TCL_QUERY_ADDRESS_LOW 0x00001b04
-#define NV50TCL_QUERY_COUNTER 0x00001b08
+#define NV50TCL_QUERY_SEQUENCE 0x00001b08
#define NV50TCL_QUERY_GET 0x00001b0c
@@ -9022,4 +9113,938 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#define NV50_COMPUTE_USER_PARAM__SIZE 0x00000040
+#define NVC0TCL 0x00009097
+
+#define NVC0TCL_SEMAPHORE_ADDRESS_HIGH 0x00000010
+#define NVC0TCL_SEMAPHORE_ADDRESS_LOW 0x00000014
+#define NVC0TCL_NOP 0x00000100
+#define NVC0TCL_NOTIFY_ADDRESS_HIGH 0x00000104
+#define NVC0TCL_NOTIFY_ADDRESS_LOW 0x00000108
+#define NVC0TCL_NOTIFY 0x0000010c
+#define NVC0TCL_SERIALIZE 0x00000110
+#define NVC0TCL_EARLY_FRAGMENT_TESTS 0x00000210
+#define NVC0TCL_TESS_MODE 0x00000320
+#define NVC0TCL_TESS_MODE_PRIM_SHIFT 0
+#define NVC0TCL_TESS_MODE_PRIM_MASK 0x0000000f
+#define NVC0TCL_TESS_MODE_PRIM_ISOLINES 0x00000000
+#define NVC0TCL_TESS_MODE_PRIM_TRIANGLES 0x00000001
+#define NVC0TCL_TESS_MODE_PRIM_QUADS 0x00000002
+#define NVC0TCL_TESS_MODE_SPACING_SHIFT 4
+#define NVC0TCL_TESS_MODE_SPACING_MASK 0x000000f0
+#define NVC0TCL_TESS_MODE_SPACING_EQUAL 0x00000000
+#define NVC0TCL_TESS_MODE_SPACING_FRACTIONAL_ODD 0x00000010
+#define NVC0TCL_TESS_MODE_SPACING_FRACTIONAL_EVEN 0x00000020
+#define NVC0TCL_TESS_MODE_CW (1 << 8)
+#define NVC0TCL_TESS_MODE_CONNECTED (1 << 9)
+#define NVC0TCL_TESS_LEVEL_OUTER(x) (0x00000324+((x)*4))
+#define NVC0TCL_TESS_LEVEL_OUTER__SIZE 0x00000004
+#define NVC0TCL_TESS_LEVEL_INNER(x) (0x00000334+((x)*4))
+#define NVC0TCL_TESS_LEVEL_INNER__SIZE 0x00000002
+#define NVC0TCL_RASTERIZE_ENABLE 0x0000037c
+#define NVC0TCL_TFB_BUFFER_ENABLE(x) (0x00000380+((x)*32))
+#define NVC0TCL_TFB_BUFFER_ENABLE__SIZE 0x00000004
+#define NVC0TCL_TFB_ADDRESS_HIGH(x) (0x00000384+((x)*32))
+#define NVC0TCL_TFB_ADDRESS_HIGH__SIZE 0x00000004
+#define NVC0TCL_TFB_ADDRESS_LOW(x) (0x00000388+((x)*32))
+#define NVC0TCL_TFB_ADDRESS_LOW__SIZE 0x00000004
+#define NVC0TCL_TFB_BUFFER_SIZE(x) (0x0000038c+((x)*32))
+#define NVC0TCL_TFB_BUFFER_SIZE__SIZE 0x00000004
+#define NVC0TCL_TFB_PRIMITIVE_ID(x) (0x00000390+((x)*32))
+#define NVC0TCL_TFB_PRIMITIVE_ID__SIZE 0x00000004
+#define NVC0TCL_TFB_UNK0700(x) (0x00000700+((x)*16))
+#define NVC0TCL_TFB_UNK0700__SIZE 0x00000004
+#define NVC0TCL_TFB_VARYING_COUNT(x) (0x00000704+((x)*16))
+#define NVC0TCL_TFB_VARYING_COUNT__SIZE 0x00000004
+#define NVC0TCL_TFB_BUFFER_STRIDE(x) (0x00000708+((x)*16))
+#define NVC0TCL_TFB_BUFFER_STRIDE__SIZE 0x00000004
+#define NVC0TCL_TFB_ENABLE 0x00000744
+#define NVC0TCL_LOCAL_BASE 0x0000077c
+#define NVC0TCL_UNK0790_ADDRESS_HIGH 0x00000790
+#define NVC0TCL_UNK0790_ADDRESS_LOW 0x00000794
+#define NVC0TCL_RT_ADDRESS_HIGH(x) (0x00000800+((x)*32))
+#define NVC0TCL_RT_ADDRESS_HIGH__SIZE 0x00000008
+#define NVC0TCL_RT_ADDRESS_LOW(x) (0x00000804+((x)*32))
+#define NVC0TCL_RT_ADDRESS_LOW__SIZE 0x00000008
+#define NVC0TCL_RT_HORIZ(x) (0x00000808+((x)*32))
+#define NVC0TCL_RT_HORIZ__SIZE 0x00000008
+#define NVC0TCL_RT_VERT(x) (0x0000080c+((x)*32))
+#define NVC0TCL_RT_VERT__SIZE 0x00000008
+#define NVC0TCL_RT_FORMAT(x) (0x00000810+((x)*32))
+#define NVC0TCL_RT_FORMAT__SIZE 0x00000008
+#define NVC0TCL_RT_FORMAT_R32G32B32A32_FLOAT 0x000000c0
+#define NVC0TCL_RT_FORMAT_R32G32B32A32_SINT 0x000000c1
+#define NVC0TCL_RT_FORMAT_R32G32B32A32_UINT 0x000000c2
+#define NVC0TCL_RT_FORMAT_R32G32B32X32_FLOAT 0x000000c3
+#define NVC0TCL_RT_FORMAT_R16G16B16A16_UNORM 0x000000c6
+#define NVC0TCL_RT_FORMAT_R16G16B16A16_SNORM 0x000000c7
+#define NVC0TCL_RT_FORMAT_R16G16B16A16_SINT 0x000000c8
+#define NVC0TCL_RT_FORMAT_R16G16B16A16_UINT 0x000000c9
+#define NVC0TCL_RT_FORMAT_R16G16B16A16_FLOAT 0x000000ca
+#define NVC0TCL_RT_FORMAT_R32G32_FLOAT 0x000000cb
+#define NVC0TCL_RT_FORMAT_R32G32_SINT 0x000000cc
+#define NVC0TCL_RT_FORMAT_R32G32_UINT 0x000000cd
+#define NVC0TCL_RT_FORMAT_R16G16B16X16_FLOAT 0x000000ce
+#define NVC0TCL_RT_FORMAT_A8R8G8B8_UNORM 0x000000cf
+#define NVC0TCL_RT_FORMAT_A8R8G8B8_SRGB 0x000000d0
+#define NVC0TCL_RT_FORMAT_A2B10G10R10_UNORM 0x000000d1
+#define NVC0TCL_RT_FORMAT_A2B10G10R10_UINT 0x000000d2
+#define NVC0TCL_RT_FORMAT_A8B8G8R8_UNORM 0x000000d5
+#define NVC0TCL_RT_FORMAT_A8B8G8R8_SRGB 0x000000d6
+#define NVC0TCL_RT_FORMAT_A8B8G8R8_SNORM 0x000000d7
+#define NVC0TCL_RT_FORMAT_A8B8G8R8_SINT 0x000000d8
+#define NVC0TCL_RT_FORMAT_A8B8G8R8_UINT 0x000000d9
+#define NVC0TCL_RT_FORMAT_R16G16_UNORM 0x000000da
+#define NVC0TCL_RT_FORMAT_R16G16_SNORM 0x000000db
+#define NVC0TCL_RT_FORMAT_R16G16_SINT 0x000000dc
+#define NVC0TCL_RT_FORMAT_R16G16_UINT 0x000000dd
+#define NVC0TCL_RT_FORMAT_R16G16_FLOAT 0x000000de
+#define NVC0TCL_RT_FORMAT_A2R10G10B10_UNORM 0x000000df
+#define NVC0TCL_RT_FORMAT_B10G11R11_FLOAT 0x000000e0
+#define NVC0TCL_RT_FORMAT_R32_FLOAT 0x000000e5
+#define NVC0TCL_RT_FORMAT_X8R8G8B8_UNORM 0x000000e6
+#define NVC0TCL_RT_FORMAT_X8R8G8B8_SRGB 0x000000e7
+#define NVC0TCL_RT_FORMAT_R5G6B5_UNORM 0x000000e8
+#define NVC0TCL_RT_FORMAT_A1R5G5B5_UNORM 0x000000e9
+#define NVC0TCL_RT_FORMAT_R8G8_UNORM 0x000000ea
+#define NVC0TCL_RT_FORMAT_R8G8_SNORM 0x000000eb
+#define NVC0TCL_RT_FORMAT_R8G8_SINT 0x000000ec
+#define NVC0TCL_RT_FORMAT_R8G8_UINT 0x000000ed
+#define NVC0TCL_RT_FORMAT_R16_UNORM 0x000000ee
+#define NVC0TCL_RT_FORMAT_R16_SNORM 0x000000ef
+#define NVC0TCL_RT_FORMAT_R16_SINT 0x000000f0
+#define NVC0TCL_RT_FORMAT_R16_UINT 0x000000f1
+#define NVC0TCL_RT_FORMAT_R16_FLOAT 0x000000f2
+#define NVC0TCL_RT_FORMAT_R8_UNORM 0x000000f3
+#define NVC0TCL_RT_FORMAT_R8_SNORM 0x000000f4
+#define NVC0TCL_RT_FORMAT_R8_SINT 0x000000f5
+#define NVC0TCL_RT_FORMAT_R8_UINT 0x000000f6
+#define NVC0TCL_RT_FORMAT_A8_UNORM 0x000000f7
+#define NVC0TCL_RT_FORMAT_X1R5G5B5_UNORM 0x000000f8
+#define NVC0TCL_RT_FORMAT_X8B8G8R8_UNORM 0x000000f9
+#define NVC0TCL_RT_FORMAT_X8B8G8R8_SRGB 0x000000fa
+#define NVC0TCL_RT_TILE_MODE(x) (0x00000814+((x)*32))
+#define NVC0TCL_RT_TILE_MODE__SIZE 0x00000008
+#define NVC0TCL_RT_ARRAY_MODE(x) (0x00000818+((x)*32))
+#define NVC0TCL_RT_ARRAY_MODE__SIZE 0x00000008
+#define NVC0TCL_RT_ARRAY_MODE_LAYERS_SHIFT 0
+#define NVC0TCL_RT_ARRAY_MODE_LAYERS_MASK 0x0000ffff
+#define NVC0TCL_RT_ARRAY_MODE_VOLUME (1 << 16)
+#define NVC0TCL_RT_LAYER_STRIDE(x) (0x0000081c+((x)*32))
+#define NVC0TCL_RT_LAYER_STRIDE__SIZE 0x00000008
+#define NVC0TCL_VIEWPORT_SCALE_X(x) (0x00000a00+((x)*32))
+#define NVC0TCL_VIEWPORT_SCALE_X__SIZE 0x00000010
+#define NVC0TCL_VIEWPORT_SCALE_Y(x) (0x00000a04+((x)*32))
+#define NVC0TCL_VIEWPORT_SCALE_Y__SIZE 0x00000010
+#define NVC0TCL_VIEWPORT_SCALE_Z(x) (0x00000a08+((x)*32))
+#define NVC0TCL_VIEWPORT_SCALE_Z__SIZE 0x00000010
+#define NVC0TCL_VIEWPORT_TRANSLATE_X(x) (0x00000a0c+((x)*32))
+#define NVC0TCL_VIEWPORT_TRANSLATE_X__SIZE 0x00000010
+#define NVC0TCL_VIEWPORT_TRANSLATE_Y(x) (0x00000a10+((x)*32))
+#define NVC0TCL_VIEWPORT_TRANSLATE_Y__SIZE 0x00000010
+#define NVC0TCL_VIEWPORT_TRANSLATE_Z(x) (0x00000a14+((x)*32))
+#define NVC0TCL_VIEWPORT_TRANSLATE_Z__SIZE 0x00000010
+#define NVC0TCL_VIEWPORT_HORIZ(x) (0x00000c00+((x)*16))
+#define NVC0TCL_VIEWPORT_HORIZ__SIZE 0x00000010
+#define NVC0TCL_VIEWPORT_HORIZ_X_SHIFT 0
+#define NVC0TCL_VIEWPORT_HORIZ_X_MASK 0x0000ffff
+#define NVC0TCL_VIEWPORT_HORIZ_W_SHIFT 16
+#define NVC0TCL_VIEWPORT_HORIZ_W_MASK 0xffff0000
+#define NVC0TCL_VIEWPORT_VERT(x) (0x00000c04+((x)*16))
+#define NVC0TCL_VIEWPORT_VERT__SIZE 0x00000010
+#define NVC0TCL_VIEWPORT_VERT_Y_SHIFT 0
+#define NVC0TCL_VIEWPORT_VERT_Y_MASK 0x0000ffff
+#define NVC0TCL_VIEWPORT_VERT_H_SHIFT 16
+#define NVC0TCL_VIEWPORT_VERT_H_MASK 0xffff0000
+#define NVC0TCL_DEPTH_RANGE_NEAR(x) (0x00000c08+((x)*16))
+#define NVC0TCL_DEPTH_RANGE_NEAR__SIZE 0x00000010
+#define NVC0TCL_DEPTH_RANGE_FAR(x) (0x00000c0c+((x)*16))
+#define NVC0TCL_DEPTH_RANGE_FAR__SIZE 0x00000010
+#define NVC0TCL_VIEWPORT_CLIP_HORIZ(x) (0x00000d00+((x)*8))
+#define NVC0TCL_VIEWPORT_CLIP_HORIZ__SIZE 0x00000008
+#define NVC0TCL_VIEWPORT_CLIP_HORIZ_MIN_SHIFT 0
+#define NVC0TCL_VIEWPORT_CLIP_HORIZ_MIN_MASK 0x0000ffff
+#define NVC0TCL_VIEWPORT_CLIP_HORIZ_MAX_SHIFT 16
+#define NVC0TCL_VIEWPORT_CLIP_HORIZ_MAX_MASK 0xffff0000
+#define NVC0TCL_VIEWPORT_CLIP_VERT(x) (0x00000d04+((x)*8))
+#define NVC0TCL_VIEWPORT_CLIP_VERT__SIZE 0x00000008
+#define NVC0TCL_VIEWPORT_CLIP_VERT_MIN_SHIFT 0
+#define NVC0TCL_VIEWPORT_CLIP_VERT_MIN_MASK 0x0000ffff
+#define NVC0TCL_VIEWPORT_CLIP_VERT_MAX_SHIFT 16
+#define NVC0TCL_VIEWPORT_CLIP_VERT_MAX_MASK 0xffff0000
+#define NVC0TCL_CLIPID_REGION_HORIZ(x) (0x00000d40+((x)*8))
+#define NVC0TCL_CLIPID_REGION_HORIZ__SIZE 0x00000004
+#define NVC0TCL_CLIPID_REGION_VERT(x) (0x00000d44+((x)*8))
+#define NVC0TCL_CLIPID_REGION_VERT__SIZE 0x00000004
+#define NVC0TCL_VERTEX_BUFFER_FIRST 0x00000d74
+#define NVC0TCL_VERTEX_BUFFER_COUNT 0x00000d78
+#define NVC0TCL_CLEAR_COLOR(x) (0x00000d80+((x)*4))
+#define NVC0TCL_CLEAR_COLOR__SIZE 0x00000004
+#define NVC0TCL_CLEAR_DEPTH 0x00000d90
+#define NVC0TCL_STACK_ADDRESS_HIGH 0x00000d94
+#define NVC0TCL_STACK_ADDRESS_LOW 0x00000d98
+#define NVC0TCL_STACK_SIZE_LOG 0x00000d9c
+#define NVC0TCL_CLEAR_STENCIL 0x00000da0
+#define NVC0TCL_POLYGON_SMOOTH_ENABLE 0x00000db4
+#define NVC0TCL_POLYGON_OFFSET_POINT_ENABLE 0x00000dc0
+#define NVC0TCL_POLYGON_OFFSET_LINE_ENABLE 0x00000dc4
+#define NVC0TCL_POLYGON_OFFSET_FILL_ENABLE 0x00000dc8
+#define NVC0TCL_PATCH_VERTICES 0x00000dcc
+#define NVC0TCL_WATCHDOG_TIMER 0x00000de4
+#define NVC0TCL_WINDOW_OFFSET_X 0x00000df8
+#define NVC0TCL_WINDOW_OFFSET_Y 0x00000dfc
+#define NVC0TCL_SCISSOR_ENABLE(x) (0x00000e00+((x)*16))
+#define NVC0TCL_SCISSOR_ENABLE__SIZE 0x00000010
+#define NVC0TCL_SCISSOR_HORIZ(x) (0x00000e04+((x)*16))
+#define NVC0TCL_SCISSOR_HORIZ__SIZE 0x00000010
+#define NVC0TCL_SCISSOR_HORIZ_MIN_SHIFT 0
+#define NVC0TCL_SCISSOR_HORIZ_MIN_MASK 0x0000ffff
+#define NVC0TCL_SCISSOR_HORIZ_MAX_SHIFT 16
+#define NVC0TCL_SCISSOR_HORIZ_MAX_MASK 0xffff0000
+#define NVC0TCL_SCISSOR_VERT(x) (0x00000e08+((x)*16))
+#define NVC0TCL_SCISSOR_VERT__SIZE 0x00000010
+#define NVC0TCL_SCISSOR_VERT_MIN_SHIFT 0
+#define NVC0TCL_SCISSOR_VERT_MIN_MASK 0x0000ffff
+#define NVC0TCL_SCISSOR_VERT_MAX_SHIFT 16
+#define NVC0TCL_SCISSOR_VERT_MAX_MASK 0xffff0000
+#define NVC0TCL_LOCAL_WARPS_LOG_ALLOC 0x00000f44
+#define NVC0TCL_LOCAL_WARPS_NO_CLAMP 0x00000f48
+#define NVC0TCL_STACK_WARPS_LOG_ALLOC 0x00000f4c
+#define NVC0TCL_STACK_WARPS_NO_CLAMP 0x00000f50
+#define NVC0TCL_STENCIL_BACK_FUNC_REF 0x00000f54
+#define NVC0TCL_STENCIL_BACK_MASK 0x00000f58
+#define NVC0TCL_STENCIL_BACK_FUNC_MASK 0x00000f5c
+#define NVC0TCL_VERTEX_RUNOUT_HIGH 0x00000f84
+#define NVC0TCL_VERTEX_RUNOUT_LOW 0x00000f88
+#define NVC0TCL_DEPTH_BOUNDS(x) (0x00000f9c+((x)*4))
+#define NVC0TCL_DEPTH_BOUNDS__SIZE 0x00000002
+#define NVC0TCL_MSAA_MASK(x) (0x00000fbc+((x)*4))
+#define NVC0TCL_MSAA_MASK__SIZE 0x00000004
+#define NVC0TCL_CLIPID_ADDRESS_HIGH 0x00000fcc
+#define NVC0TCL_CLIPID_ADDRESS_LOW 0x00000fd0
+#define NVC0TCL_ZETA_ADDRESS_HIGH 0x00000fe0
+#define NVC0TCL_ZETA_ADDRESS_LOW 0x00000fe4
+#define NVC0TCL_ZETA_FORMAT 0x00000fe8
+#define NVC0TCL_ZETA_FORMAT_Z32_FLOAT 0x0000000a
+#define NVC0TCL_ZETA_FORMAT_Z16_UNORM 0x00000013
+#define NVC0TCL_ZETA_FORMAT_Z24S8_UNORM 0x00000014
+#define NVC0TCL_ZETA_FORMAT_X8Z24_UNORM 0x00000015
+#define NVC0TCL_ZETA_FORMAT_S8Z24_UNORM 0x00000016
+#define NVC0TCL_ZETA_FORMAT_Z32_FLOAT_X24S8_UNORM 0x00000019
+#define NVC0TCL_ZETA_TILE_MODE 0x00000fec
+#define NVC0TCL_ZETA_LAYER_STRIDE 0x00000ff0
+#define NVC0TCL_SCREEN_SCISSOR_HORIZ 0x00000ff4
+#define NVC0TCL_SCREEN_SCISSOR_HORIZ_W_SHIFT 16
+#define NVC0TCL_SCREEN_SCISSOR_HORIZ_W_MASK 0xffff0000
+#define NVC0TCL_SCREEN_SCISSOR_HORIZ_X_SHIFT 0
+#define NVC0TCL_SCREEN_SCISSOR_HORIZ_X_MASK 0x0000ffff
+#define NVC0TCL_SCREEN_SCISSOR_VERT 0x00000ff8
+#define NVC0TCL_SCREEN_SCISSOR_VERT_H_SHIFT 16
+#define NVC0TCL_SCREEN_SCISSOR_VERT_H_MASK 0xffff0000
+#define NVC0TCL_SCREEN_SCISSOR_VERT_Y_SHIFT 0
+#define NVC0TCL_SCREEN_SCISSOR_VERT_Y_MASK 0x0000ffff
+#define NVC0TCL_VTX_ATTR_DEFINE 0x0000114c
+#define NVC0TCL_VTX_ATTR_DEFINE_ATTR_SHIFT 0
+#define NVC0TCL_VTX_ATTR_DEFINE_ATTR_MASK 0x0000003f
+#define NVC0TCL_VTX_ATTR_DEFINE_COMP_SHIFT 8
+#define NVC0TCL_VTX_ATTR_DEFINE_COMP_MASK 0x00000f00
+#define NVC0TCL_VTX_ATTR_DEFINE_SIZE_SHIFT 12
+#define NVC0TCL_VTX_ATTR_DEFINE_SIZE_MASK 0x0000f000
+#define NVC0TCL_VTX_ATTR_DEFINE_TYPE_SHIFT 16
+#define NVC0TCL_VTX_ATTR_DEFINE_TYPE_MASK 0x000f0000
+#define NVC0TCL_VTX_ATTR_DEFINE_TYPE_FLOAT 0x00070000
+#define NVC0TCL_VTX_ATTR_DEFINE_TYPE_UNORM 0x00010000
+#define NVC0TCL_VTX_ATTR_DEFINE_TYPE_SNORM 0x00020000
+#define NVC0TCL_VTX_ATTR_DEFINE_TYPE_USCALED 0x00050000
+#define NVC0TCL_VTX_ATTR_DEFINE_TYPE_SSCALED 0x00060000
+#define NVC0TCL_VTX_ATTR_DEFINE_TYPE_UINT 0x00040000
+#define NVC0TCL_VTX_ATTR_DEFINE_TYPE_SINT 0x00030000
+#define NVC0TCL_VTX_ATTR_DATA(x) (0x00001150+((x)*4))
+#define NVC0TCL_VTX_ATTR_DATA__SIZE 0x00000004
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT(x) (0x00001160+((x)*4))
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT__SIZE 0x00000020
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_BUFFER_SHIFT 0
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_BUFFER_MASK 0x0000003f
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_CONST (1 << 6)
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_OFFSET_SHIFT 7
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_OFFSET_MASK 0x001fff80
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_SHIFT 21
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_MASK 0x07e00000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_32_32_32_32 0x00200000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_32_32_32 0x00400000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_16_16_16_16 0x00600000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_32_32 0x00800000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_16_16_16 0x00a00000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_8_8_8_8 0x01400000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_16_16 0x01e00000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_32 0x02400000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_8_8_8 0x02600000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_8_8 0x03000000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_16 0x03600000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_8 0x03a00000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_FORMAT_2_10_10_10 0x06000000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_TYPE_SHIFT 27
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_TYPE_MASK 0x78000000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_TYPE_FLOAT 0x38000000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_TYPE_UNORM 0x08000000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_TYPE_SNORM 0x10000000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_TYPE_USCALED 0x28000000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_TYPE_SSCALED 0x30000000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_TYPE_UINT 0x20000000
+#define NVC0TCL_VERTEX_ATTRIB_FORMAT_TYPE_SINT 0x18000000
+#define NVC0TCL_RT_CONTROL 0x0000121c
+#define NVC0TCL_RT_CONTROL_COUNT_SHIFT 0
+#define NVC0TCL_RT_CONTROL_COUNT_MASK 0x0000000f
+#define NVC0TCL_RT_CONTROL_MAP0_SHIFT 4
+#define NVC0TCL_RT_CONTROL_MAP0_MASK 0x00000070
+#define NVC0TCL_RT_CONTROL_MAP1_SHIFT 7
+#define NVC0TCL_RT_CONTROL_MAP1_MASK 0x00000380
+#define NVC0TCL_RT_CONTROL_MAP2_SHIFT 10
+#define NVC0TCL_RT_CONTROL_MAP2_MASK 0x00001c00
+#define NVC0TCL_RT_CONTROL_MAP3_SHIFT 13
+#define NVC0TCL_RT_CONTROL_MAP3_MASK 0x0000e000
+#define NVC0TCL_RT_CONTROL_MAP4_SHIFT 16
+#define NVC0TCL_RT_CONTROL_MAP4_MASK 0x00070000
+#define NVC0TCL_RT_CONTROL_MAP5_SHIFT 19
+#define NVC0TCL_RT_CONTROL_MAP5_MASK 0x00380000
+#define NVC0TCL_RT_CONTROL_MAP6_SHIFT 22
+#define NVC0TCL_RT_CONTROL_MAP6_MASK 0x01c00000
+#define NVC0TCL_RT_CONTROL_MAP7_SHIFT 25
+#define NVC0TCL_RT_CONTROL_MAP7_MASK 0x0e000000
+#define NVC0TCL_ZETA_HORIZ 0x00001228
+#define NVC0TCL_ZETA_VERT 0x0000122c
+#define NVC0TCL_ZETA_ARRAY_MODE 0x00001230
+#define NVC0TCL_ZETA_ARRAY_MODE_LAYERS_SHIFT 0
+#define NVC0TCL_ZETA_ARRAY_MODE_LAYERS_MASK 0x0000ffff
+#define NVC0TCL_ZETA_ARRAY_MODE_UNK (1 << 16)
+#define NVC0TCL_LINKED_TSC 0x00001234
+#define NVC0TCL_FP_RESULT_COUNT 0x00001298
+#define NVC0TCL_DEPTH_TEST_ENABLE 0x000012cc
+#define NVC0TCL_SHADE_MODEL 0x000012d4
+#define NVC0TCL_SHADE_MODEL_FLAT 0x00001d00
+#define NVC0TCL_SHADE_MODEL_SMOOTH 0x00001d01
+#define NVC0TCL_BLEND_INDEPENDENT 0x000012e4
+#define NVC0TCL_DEPTH_WRITE_ENABLE 0x000012e8
+#define NVC0TCL_ALPHA_TEST_ENABLE 0x000012ec
+#define NVC0TCL_PM_SET(x) (0x000012f0+((x)*4))
+#define NVC0TCL_PM_SET__SIZE 0x00000004
+#define NVC0TCL_VB_ELEMENT_U8_SETUP 0x00001300
+#define NVC0TCL_VB_ELEMENT_U8_SETUP_OFFSET_SHIFT 30
+#define NVC0TCL_VB_ELEMENT_U8_SETUP_OFFSET_MASK 0xc0000000
+#define NVC0TCL_VB_ELEMENT_U8_SETUP_COUNT_SHIFT 0
+#define NVC0TCL_VB_ELEMENT_U8_SETUP_COUNT_MASK 0x3fffffff
+#define NVC0TCL_VB_ELEMENT_U8 0x00001304
+#define NVC0TCL_VB_ELEMENT_U8_I0_SHIFT 0
+#define NVC0TCL_VB_ELEMENT_U8_I0_MASK 0x000000ff
+#define NVC0TCL_VB_ELEMENT_U8_I1_SHIFT 8
+#define NVC0TCL_VB_ELEMENT_U8_I1_MASK 0x0000ff00
+#define NVC0TCL_VB_ELEMENT_U8_I2_SHIFT 16
+#define NVC0TCL_VB_ELEMENT_U8_I2_MASK 0x00ff0000
+#define NVC0TCL_VB_ELEMENT_U8_I3_SHIFT 24
+#define NVC0TCL_VB_ELEMENT_U8_I3_MASK 0xff000000
+#define NVC0TCL_DEPTH_TEST_FUNC 0x0000130c
+#define NVC0TCL_DEPTH_TEST_FUNC_NEVER 0x00000200
+#define NVC0TCL_DEPTH_TEST_FUNC_LESS 0x00000201
+#define NVC0TCL_DEPTH_TEST_FUNC_EQUAL 0x00000202
+#define NVC0TCL_DEPTH_TEST_FUNC_LEQUAL 0x00000203
+#define NVC0TCL_DEPTH_TEST_FUNC_GREATER 0x00000204
+#define NVC0TCL_DEPTH_TEST_FUNC_NOTEQUAL 0x00000205
+#define NVC0TCL_DEPTH_TEST_FUNC_GEQUAL 0x00000206
+#define NVC0TCL_DEPTH_TEST_FUNC_ALWAYS 0x00000207
+#define NVC0TCL_ALPHA_TEST_REF 0x00001310
+#define NVC0TCL_ALPHA_TEST_FUNC 0x00001314
+#define NVC0TCL_ALPHA_TEST_FUNC_NEVER 0x00000200
+#define NVC0TCL_ALPHA_TEST_FUNC_LESS 0x00000201
+#define NVC0TCL_ALPHA_TEST_FUNC_EQUAL 0x00000202
+#define NVC0TCL_ALPHA_TEST_FUNC_LEQUAL 0x00000203
+#define NVC0TCL_ALPHA_TEST_FUNC_GREATER 0x00000204
+#define NVC0TCL_ALPHA_TEST_FUNC_NOTEQUAL 0x00000205
+#define NVC0TCL_ALPHA_TEST_FUNC_GEQUAL 0x00000206
+#define NVC0TCL_ALPHA_TEST_FUNC_ALWAYS 0x00000207
+#define NVC0TCL_BLEND_COLOR(x) (0x0000131c+((x)*4))
+#define NVC0TCL_BLEND_COLOR__SIZE 0x00000004
+#define NVC0TCL_TIC_FLUSH 0x00001330
+#define NVC0TCL_TSC_FLUSH 0x00001334
+#define NVC0TCL_TEX_CACHE_CTL 0x00001338
+#define NVC0TCL_BLEND_EQUATION_RGB 0x00001340
+#define NVC0TCL_BLEND_EQUATION_RGB_FUNC_ADD 0x00008006
+#define NVC0TCL_BLEND_EQUATION_RGB_MIN 0x00008007
+#define NVC0TCL_BLEND_EQUATION_RGB_MAX 0x00008008
+#define NVC0TCL_BLEND_EQUATION_RGB_FUNC_SUBTRACT 0x0000800a
+#define NVC0TCL_BLEND_EQUATION_RGB_FUNC_REVERSE_SUBTRACT 0x0000800b
+#define NVC0TCL_BLEND_FUNC_SRC_RGB 0x00001344
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ZERO 0x00004000
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ONE 0x00004001
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_SRC_COLOR 0x00004300
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_COLOR 0x00004301
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_SRC_ALPHA 0x00004302
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_DST_ALPHA 0x00004304
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_ALPHA 0x00004305
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_DST_COLOR 0x00004306
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_COLOR 0x00004307
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_SRC_ALPHA_SATURATE 0x00004308
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_CONSTANT_COLOR 0x0000c001
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_CONSTANT_ALPHA 0x0000c003
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_SRC1_COLOR 0x0000c900
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_SRC1_ALPHA 0x0000c902
+#define NVC0TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC1_ALPHA 0x0000c903
+#define NVC0TCL_BLEND_FUNC_DST_RGB 0x00001348
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ZERO 0x00004000
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ONE 0x00004001
+#define NVC0TCL_BLEND_FUNC_DST_RGB_SRC_COLOR 0x00004300
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC_COLOR 0x00004301
+#define NVC0TCL_BLEND_FUNC_DST_RGB_SRC_ALPHA 0x00004302
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NVC0TCL_BLEND_FUNC_DST_RGB_DST_ALPHA 0x00004304
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_DST_ALPHA 0x00004305
+#define NVC0TCL_BLEND_FUNC_DST_RGB_DST_COLOR 0x00004306
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_DST_COLOR 0x00004307
+#define NVC0TCL_BLEND_FUNC_DST_RGB_SRC_ALPHA_SATURATE 0x00004308
+#define NVC0TCL_BLEND_FUNC_DST_RGB_CONSTANT_COLOR 0x0000c001
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NVC0TCL_BLEND_FUNC_DST_RGB_CONSTANT_ALPHA 0x0000c003
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NVC0TCL_BLEND_FUNC_DST_RGB_SRC1_COLOR 0x0000c900
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NVC0TCL_BLEND_FUNC_DST_RGB_SRC1_ALPHA 0x0000c902
+#define NVC0TCL_BLEND_FUNC_DST_RGB_ONE_MINUS_SRC1_ALPHA 0x0000c903
+#define NVC0TCL_BLEND_EQUATION_ALPHA 0x0000134c
+#define NVC0TCL_BLEND_EQUATION_ALPHA_FUNC_ADD 0x00008006
+#define NVC0TCL_BLEND_EQUATION_ALPHA_MIN 0x00008007
+#define NVC0TCL_BLEND_EQUATION_ALPHA_MAX 0x00008008
+#define NVC0TCL_BLEND_EQUATION_ALPHA_FUNC_SUBTRACT 0x0000800a
+#define NVC0TCL_BLEND_EQUATION_ALPHA_FUNC_REVERSE_SUBTRACT 0x0000800b
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA 0x00001350
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ZERO 0x00004000
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ONE 0x00004001
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_SRC_COLOR 0x00004300
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC_COLOR 0x00004301
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA 0x00004302
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_DST_ALPHA 0x00004304
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_DST_ALPHA 0x00004305
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_DST_COLOR 0x00004306
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_DST_COLOR 0x00004307
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_SRC_ALPHA_SATURATE 0x00004308
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_CONSTANT_COLOR 0x0000c001
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_CONSTANT_ALPHA 0x0000c003
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_SRC1_COLOR 0x0000c900
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_SRC1_ALPHA 0x0000c902
+#define NVC0TCL_BLEND_FUNC_SRC_ALPHA_ONE_MINUS_SRC1_ALPHA 0x0000c903
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA 0x00001358
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ZERO 0x00004000
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ONE 0x00004001
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_SRC_COLOR 0x00004300
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC_COLOR 0x00004301
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_SRC_ALPHA 0x00004302
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_DST_ALPHA 0x00004304
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_DST_ALPHA 0x00004305
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_DST_COLOR 0x00004306
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_DST_COLOR 0x00004307
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_SRC_ALPHA_SATURATE 0x00004308
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_CONSTANT_COLOR 0x0000c001
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_CONSTANT_ALPHA 0x0000c003
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_SRC1_COLOR 0x0000c900
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_SRC1_ALPHA 0x0000c902
+#define NVC0TCL_BLEND_FUNC_DST_ALPHA_ONE_MINUS_SRC1_ALPHA 0x0000c903
+#define NVC0TCL_STENCIL_ENABLE 0x00001380
+#define NVC0TCL_STENCIL_FRONT_OP_FAIL 0x00001384
+#define NVC0TCL_STENCIL_FRONT_OP_FAIL_ZERO 0x00000000
+#define NVC0TCL_STENCIL_FRONT_OP_FAIL_INVERT 0x0000150a
+#define NVC0TCL_STENCIL_FRONT_OP_FAIL_KEEP 0x00001e00
+#define NVC0TCL_STENCIL_FRONT_OP_FAIL_REPLACE 0x00001e01
+#define NVC0TCL_STENCIL_FRONT_OP_FAIL_INCR 0x00001e02
+#define NVC0TCL_STENCIL_FRONT_OP_FAIL_DECR 0x00001e03
+#define NVC0TCL_STENCIL_FRONT_OP_FAIL_INCR_WRAP 0x00008507
+#define NVC0TCL_STENCIL_FRONT_OP_FAIL_DECR_WRAP 0x00008508
+#define NVC0TCL_STENCIL_FRONT_OP_ZFAIL 0x00001388
+#define NVC0TCL_STENCIL_FRONT_OP_ZFAIL_ZERO 0x00000000
+#define NVC0TCL_STENCIL_FRONT_OP_ZFAIL_INVERT 0x0000150a
+#define NVC0TCL_STENCIL_FRONT_OP_ZFAIL_KEEP 0x00001e00
+#define NVC0TCL_STENCIL_FRONT_OP_ZFAIL_REPLACE 0x00001e01
+#define NVC0TCL_STENCIL_FRONT_OP_ZFAIL_INCR 0x00001e02
+#define NVC0TCL_STENCIL_FRONT_OP_ZFAIL_DECR 0x00001e03
+#define NVC0TCL_STENCIL_FRONT_OP_ZFAIL_INCR_WRAP 0x00008507
+#define NVC0TCL_STENCIL_FRONT_OP_ZFAIL_DECR_WRAP 0x00008508
+#define NVC0TCL_STENCIL_FRONT_OP_ZPASS 0x0000138c
+#define NVC0TCL_STENCIL_FRONT_OP_ZPASS_ZERO 0x00000000
+#define NVC0TCL_STENCIL_FRONT_OP_ZPASS_INVERT 0x0000150a
+#define NVC0TCL_STENCIL_FRONT_OP_ZPASS_KEEP 0x00001e00
+#define NVC0TCL_STENCIL_FRONT_OP_ZPASS_REPLACE 0x00001e01
+#define NVC0TCL_STENCIL_FRONT_OP_ZPASS_INCR 0x00001e02
+#define NVC0TCL_STENCIL_FRONT_OP_ZPASS_DECR 0x00001e03
+#define NVC0TCL_STENCIL_FRONT_OP_ZPASS_INCR_WRAP 0x00008507
+#define NVC0TCL_STENCIL_FRONT_OP_ZPASS_DECR_WRAP 0x00008508
+#define NVC0TCL_STENCIL_FRONT_FUNC_FUNC 0x00001390
+#define NVC0TCL_STENCIL_FRONT_FUNC_FUNC_NEVER 0x00000200
+#define NVC0TCL_STENCIL_FRONT_FUNC_FUNC_LESS 0x00000201
+#define NVC0TCL_STENCIL_FRONT_FUNC_FUNC_EQUAL 0x00000202
+#define NVC0TCL_STENCIL_FRONT_FUNC_FUNC_LEQUAL 0x00000203
+#define NVC0TCL_STENCIL_FRONT_FUNC_FUNC_GREATER 0x00000204
+#define NVC0TCL_STENCIL_FRONT_FUNC_FUNC_NOTEQUAL 0x00000205
+#define NVC0TCL_STENCIL_FRONT_FUNC_FUNC_GEQUAL 0x00000206
+#define NVC0TCL_STENCIL_FRONT_FUNC_FUNC_ALWAYS 0x00000207
+#define NVC0TCL_STENCIL_FRONT_FUNC_REF 0x00001394
+#define NVC0TCL_STENCIL_FRONT_MASK 0x00001398
+#define NVC0TCL_STENCIL_FRONT_FUNC_MASK 0x0000139c
+#define NVC0TCL_FRAG_COLOR_CLAMP_EN 0x000013a8
+#define NVC0TCL_Y_ORIGIN_BOTTOM 0x000013ac
+#define NVC0TCL_LINE_WIDTH(x) (0x000013b0+((x)*4))
+#define NVC0TCL_LINE_WIDTH__SIZE 0x00000002
+#define NVC0TCL_POINT_COORD_REPLACE_MAP(x) (0x000013c0+((x)*4))
+#define NVC0TCL_POINT_COORD_REPLACE_MAP__SIZE 0x00000008
+#define NVC0TCL_GP_VERTEX_OUTPUT_COUNT 0x00001420
+#define NVC0TCL_FENCE 0x0000142c
+#define NVC0TCL_VB_ELEMENT_BASE 0x00001434
+#define NVC0TCL_INSTANCE_BASE 0x00001438
+#define NVC0TCL_CODE_CB_FLUSH 0x00001440
+#define NVC0TCL_CLIPID_HEIGHT 0x00001504
+#define NVC0TCL_VP_CLIP_DISTANCE_ENABLE 0x00001510
+#define NVC0TCL_VP_CLIP_DISTANCE_ENABLE_0 (1 << 0)
+#define NVC0TCL_VP_CLIP_DISTANCE_ENABLE_1 (1 << 1)
+#define NVC0TCL_VP_CLIP_DISTANCE_ENABLE_2 (1 << 2)
+#define NVC0TCL_VP_CLIP_DISTANCE_ENABLE_3 (1 << 3)
+#define NVC0TCL_VP_CLIP_DISTANCE_ENABLE_4 (1 << 4)
+#define NVC0TCL_VP_CLIP_DISTANCE_ENABLE_5 (1 << 5)
+#define NVC0TCL_VP_CLIP_DISTANCE_ENABLE_6 (1 << 6)
+#define NVC0TCL_VP_CLIP_DISTANCE_ENABLE_7 (1 << 7)
+#define NVC0TCL_SAMPLECNT_ENABLE 0x00001514
+#define NVC0TCL_POINT_SIZE 0x00001518
+#define NVC0TCL_POINT_SPRITE_ENABLE 0x00001520
+#define NVC0TCL_SAMPLECNT_RESET 0x00001530
+#define NVC0TCL_MULTISAMPLE_ZETA_ENABLE 0x00001534
+#define NVC0TCL_ZETA_ENABLE 0x00001538
+#define NVC0TCL_MULTISAMPLE_CTRL 0x0000153c
+#define NVC0TCL_MULTISAMPLE_CTRL_ALPHA_TO_COVERAGE (1 << 0)
+#define NVC0TCL_MULTISAMPLE_CTRL_ALPHA_TO_ONE (1 << 4)
+#define NVC0TCL_NOPERSPECTIVE_BITMAP(x) (0x00001540+((x)*4))
+#define NVC0TCL_NOPERSPECTIVE_BITMAP__SIZE 0x00000004
+#define NVC0TCL_COND_ADDRESS_HIGH 0x00001550
+#define NVC0TCL_COND_ADDRESS_LOW 0x00001554
+#define NVC0TCL_COND_MODE 0x00001558
+#define NVC0TCL_COND_MODE_NEVER 0x00000000
+#define NVC0TCL_COND_MODE_ALWAYS 0x00000001
+#define NVC0TCL_COND_MODE_RES 0x00000002
+#define NVC0TCL_COND_MODE_NOT_RES_AND_NOT_ID 0x00000003
+#define NVC0TCL_COND_MODE_RES_OR_ID 0x00000004
+#define NVC0TCL_TSC_ADDRESS_HIGH 0x0000155c
+#define NVC0TCL_TSC_ADDRESS_LOW 0x00001560
+#define NVC0TCL_TSC_LIMIT 0x00001564
+#define NVC0TCL_POLYGON_OFFSET_FACTOR 0x0000156c
+#define NVC0TCL_LINE_SMOOTH_ENABLE 0x00001570
+#define NVC0TCL_TIC_ADDRESS_HIGH 0x00001574
+#define NVC0TCL_TIC_ADDRESS_LOW 0x00001578
+#define NVC0TCL_TIC_LIMIT 0x0000157c
+#define NVC0TCL_PM_CONTROL(x) (0x00001580+((x)*4))
+#define NVC0TCL_PM_CONTROL__SIZE 0x00000004
+#define NVC0TCL_PM_CONTROL_UNK0 (1 << 0)
+#define NVC0TCL_PM_CONTROL_UNK1_SHIFT 4
+#define NVC0TCL_PM_CONTROL_UNK1_MASK 0x00000070
+#define NVC0TCL_PM_CONTROL_UNK2_SHIFT 8
+#define NVC0TCL_PM_CONTROL_UNK2_MASK 0xffffff00
+#define NVC0TCL_STENCIL_TWO_SIDE_ENABLE 0x00001594
+#define NVC0TCL_STENCIL_BACK_OP_FAIL 0x00001598
+#define NVC0TCL_STENCIL_BACK_OP_FAIL_ZERO 0x00000000
+#define NVC0TCL_STENCIL_BACK_OP_FAIL_INVERT 0x0000150a
+#define NVC0TCL_STENCIL_BACK_OP_FAIL_KEEP 0x00001e00
+#define NVC0TCL_STENCIL_BACK_OP_FAIL_REPLACE 0x00001e01
+#define NVC0TCL_STENCIL_BACK_OP_FAIL_INCR 0x00001e02
+#define NVC0TCL_STENCIL_BACK_OP_FAIL_DECR 0x00001e03
+#define NVC0TCL_STENCIL_BACK_OP_FAIL_INCR_WRAP 0x00008507
+#define NVC0TCL_STENCIL_BACK_OP_FAIL_DECR_WRAP 0x00008508
+#define NVC0TCL_STENCIL_BACK_OP_ZFAIL 0x0000159c
+#define NVC0TCL_STENCIL_BACK_OP_ZFAIL_ZERO 0x00000000
+#define NVC0TCL_STENCIL_BACK_OP_ZFAIL_INVERT 0x0000150a
+#define NVC0TCL_STENCIL_BACK_OP_ZFAIL_KEEP 0x00001e00
+#define NVC0TCL_STENCIL_BACK_OP_ZFAIL_REPLACE 0x00001e01
+#define NVC0TCL_STENCIL_BACK_OP_ZFAIL_INCR 0x00001e02
+#define NVC0TCL_STENCIL_BACK_OP_ZFAIL_DECR 0x00001e03
+#define NVC0TCL_STENCIL_BACK_OP_ZFAIL_INCR_WRAP 0x00008507
+#define NVC0TCL_STENCIL_BACK_OP_ZFAIL_DECR_WRAP 0x00008508
+#define NVC0TCL_STENCIL_BACK_OP_ZPASS 0x000015a0
+#define NVC0TCL_STENCIL_BACK_OP_ZPASS_ZERO 0x00000000
+#define NVC0TCL_STENCIL_BACK_OP_ZPASS_INVERT 0x0000150a
+#define NVC0TCL_STENCIL_BACK_OP_ZPASS_KEEP 0x00001e00
+#define NVC0TCL_STENCIL_BACK_OP_ZPASS_REPLACE 0x00001e01
+#define NVC0TCL_STENCIL_BACK_OP_ZPASS_INCR 0x00001e02
+#define NVC0TCL_STENCIL_BACK_OP_ZPASS_DECR 0x00001e03
+#define NVC0TCL_STENCIL_BACK_OP_ZPASS_INCR_WRAP 0x00008507
+#define NVC0TCL_STENCIL_BACK_OP_ZPASS_DECR_WRAP 0x00008508
+#define NVC0TCL_STENCIL_BACK_FUNC_FUNC 0x000015a4
+#define NVC0TCL_STENCIL_BACK_FUNC_FUNC_NEVER 0x00000200
+#define NVC0TCL_STENCIL_BACK_FUNC_FUNC_LESS 0x00000201
+#define NVC0TCL_STENCIL_BACK_FUNC_FUNC_EQUAL 0x00000202
+#define NVC0TCL_STENCIL_BACK_FUNC_FUNC_LEQUAL 0x00000203
+#define NVC0TCL_STENCIL_BACK_FUNC_FUNC_GREATER 0x00000204
+#define NVC0TCL_STENCIL_BACK_FUNC_FUNC_NOTEQUAL 0x00000205
+#define NVC0TCL_STENCIL_BACK_FUNC_FUNC_GEQUAL 0x00000206
+#define NVC0TCL_STENCIL_BACK_FUNC_FUNC_ALWAYS 0x00000207
+#define NVC0TCL_MULTISAMPLE_COLOR_ENABLE 0x000015b4
+#define NVC0TCL_FRAMEBUFFER_SRGB 0x000015b8
+#define NVC0TCL_POLYGON_OFFSET_UNITS 0x000015bc
+#define NVC0TCL_GP_BUILTIN_RESULT_EN 0x000015cc
+#define NVC0TCL_GP_BUILTIN_RESULT_EN_VPORT (1 << 0)
+#define NVC0TCL_GP_BUILTIN_RESULT_EN_LAYER (1 << 16)
+#define NVC0TCL_MULTISAMPLE_MODE 0x000015d0
+#define NVC0TCL_MULTISAMPLE_MODE_1X 0x00000000
+#define NVC0TCL_MULTISAMPLE_MODE_2XMS 0x00000001
+#define NVC0TCL_MULTISAMPLE_MODE_4XMS 0x00000002
+#define NVC0TCL_MULTISAMPLE_MODE_8XMS 0x00000004
+#define NVC0TCL_MULTISAMPLE_MODE_4XMS_4XCS 0x00000008
+#define NVC0TCL_MULTISAMPLE_MODE_4XMS_12XCS 0x00000009
+#define NVC0TCL_MULTISAMPLE_MODE_8XMS_8XCS 0x0000000a
+#define NVC0TCL_EDGEFLAG_ENABLE 0x000015e4
+#define NVC0TCL_VB_ELEMENT_U32 0x000015e8
+#define NVC0TCL_VB_ELEMENT_U16_SETUP 0x000015ec
+#define NVC0TCL_VB_ELEMENT_U16_SETUP_OFFSET_SHIFT 30
+#define NVC0TCL_VB_ELEMENT_U16_SETUP_OFFSET_MASK 0xc0000000
+#define NVC0TCL_VB_ELEMENT_U16_SETUP_COUNT_SHIFT 0
+#define NVC0TCL_VB_ELEMENT_U16_SETUP_COUNT_MASK 0x3fffffff
+#define NVC0TCL_VB_ELEMENT_U16 0x000015f0
+#define NVC0TCL_VB_ELEMENT_U16_I0_SHIFT 0
+#define NVC0TCL_VB_ELEMENT_U16_I0_MASK 0x0000ffff
+#define NVC0TCL_VB_ELEMENT_U16_I1_SHIFT 16
+#define NVC0TCL_VB_ELEMENT_U16_I1_MASK 0xffff0000
+#define NVC0TCL_VERTEX_BASE_HIGH 0x000015f4
+#define NVC0TCL_VERTEX_BASE_LOW 0x000015f8
+#define NVC0TCL_CODE_ADDRESS_HIGH 0x00001608
+#define NVC0TCL_CODE_ADDRESS_LOW 0x0000160c
+#define NVC0TCL_VERTEX_BEGIN 0x00001618
+#define NVC0TCL_VERTEX_BEGIN_MODE_SHIFT 0
+#define NVC0TCL_VERTEX_BEGIN_MODE_MASK 0x0000000f
+#define NVC0TCL_VERTEX_BEGIN_MODE_POINTS 0x00000000
+#define NVC0TCL_VERTEX_BEGIN_MODE_LINES 0x00000001
+#define NVC0TCL_VERTEX_BEGIN_MODE_LINE_LOOP 0x00000002
+#define NVC0TCL_VERTEX_BEGIN_MODE_LINE_STRIP 0x00000003
+#define NVC0TCL_VERTEX_BEGIN_MODE_TRIANGLES 0x00000004
+#define NVC0TCL_VERTEX_BEGIN_MODE_TRIANGLE_STRIP 0x00000005
+#define NVC0TCL_VERTEX_BEGIN_MODE_TRIANGLE_FAN 0x00000006
+#define NVC0TCL_VERTEX_BEGIN_MODE_QUADS 0x00000007
+#define NVC0TCL_VERTEX_BEGIN_MODE_QUAD_STRIP 0x00000008
+#define NVC0TCL_VERTEX_BEGIN_MODE_POLYGON 0x00000009
+#define NVC0TCL_VERTEX_BEGIN_MODE_LINES_ADJACENCY 0x0000000a
+#define NVC0TCL_VERTEX_BEGIN_MODE_LINE_STRIP_ADJACENCY 0x0000000b
+#define NVC0TCL_VERTEX_BEGIN_MODE_TRIANGLES_ADJACENCY 0x0000000c
+#define NVC0TCL_VERTEX_BEGIN_MODE_TRIANGLE_STRIP_ADJACENCY 0x0000000d
+#define NVC0TCL_VERTEX_BEGIN_MODE_PATCHES 0x0000000e
+#define NVC0TCL_VERTEX_BEGIN_INSTANCE (1 << 26)
+#define NVC0TCL_VERTEX_END 0x00001614
+#define NVC0TCL_VERTEX_DATA 0x00001640
+#define NVC0TCL_PRIM_RESTART_ENABLE 0x00001644
+#define NVC0TCL_PRIM_RESTART_INDEX 0x00001648
+#define NVC0TCL_POINT_SMOOTH_ENABLE 0x00001658
+#define NVC0TCL_POINT_SPRITE_CTRL 0x00001660
+#define NVC0TCL_LINE_STIPPLE_ENABLE 0x0000166c
+#define NVC0TCL_LINE_STIPPLE_PATTERN 0x00001680
+#define NVC0TCL_PROVOKING_VERTEX_LAST 0x00001684
+#define NVC0TCL_VERTEX_TWO_SIDE_ENABLE 0x00001688
+#define NVC0TCL_POLYGON_STIPPLE_ENABLE 0x0000168c
+#define NVC0TCL_POLYGON_STIPPLE_PATTERN(x) (0x00001700+((x)*4))
+#define NVC0TCL_POLYGON_STIPPLE_PATTERN__SIZE 0x00000020
+#define NVC0TCL_UNK17BC_ADDRESS_HIGH 0x000017bc
+#define NVC0TCL_UNK17BC_ADDRESS_LOW 0x000017c0
+#define NVC0TCL_UNK17BC_LIMIT 0x000017c4
+#define NVC0TCL_VP_POINT_SIZE_EN 0x00001910
+#define NVC0TCL_CULL_FACE_ENABLE 0x00001918
+#define NVC0TCL_FRONT_FACE 0x0000191c
+#define NVC0TCL_FRONT_FACE_CW 0x00000900
+#define NVC0TCL_FRONT_FACE_CCW 0x00000901
+#define NVC0TCL_CULL_FACE 0x00001920
+#define NVC0TCL_CULL_FACE_FRONT 0x00000404
+#define NVC0TCL_CULL_FACE_BACK 0x00000405
+#define NVC0TCL_CULL_FACE_FRONT_AND_BACK 0x00000408
+#define NVC0TCL_VIEWPORT_TRANSFORM_EN 0x0000192c
+#define NVC0TCL_VIEW_VOLUME_CLIP_CTRL 0x0000193c
+#define NVC0TCL_VIEWPORT_CLIP_RECTS_EN 0x0000194c
+#define NVC0TCL_VIEWPORT_CLIP_MODE 0x00001950
+#define NVC0TCL_VIEWPORT_CLIP_MODE_INCLUDE 0x00000000
+#define NVC0TCL_VIEWPORT_CLIP_MODE_EXCLUDE 0x00000001
+#define NVC0TCL_VIEWPORT_CLIP_MODE_UNKNOWN 0x00000002
+#define NVC0TCL_FP_ZORDER_CTRL 0x0000196c
+#define NVC0TCL_CLIPID_ENABLE 0x0000197c
+#define NVC0TCL_CLIPID_WIDTH 0x00001980
+#define NVC0TCL_CLIPID_ID 0x00001984
+#define NVC0TCL_REG_MODE 0x000019a0
+#define NVC0TCL_REG_MODE_PACKED 0x00000001
+#define NVC0TCL_REG_MODE_STRIPED 0x00000002
+#define NVC0TCL_FP_CONTROL 0x000019a8
+#define NVC0TCL_FP_CONTROL_MULTIPLE_RESULTS (1 << 0)
+#define NVC0TCL_FP_CONTROL_EXPORTS_Z (1 << 8)
+#define NVC0TCL_FP_CONTROL_USES_KIL (1 << 20)
+#define NVC0TCL_DEPTH_BOUNDS_EN 0x000019bc
+#define NVC0TCL_LOGIC_OP_ENABLE 0x000019c4
+#define NVC0TCL_LOGIC_OP 0x000019c8
+#define NVC0TCL_LOGIC_OP_CLEAR 0x00001500
+#define NVC0TCL_LOGIC_OP_AND 0x00001501
+#define NVC0TCL_LOGIC_OP_AND_REVERSE 0x00001502
+#define NVC0TCL_LOGIC_OP_COPY 0x00001503
+#define NVC0TCL_LOGIC_OP_AND_INVERTED 0x00001504
+#define NVC0TCL_LOGIC_OP_NOOP 0x00001505
+#define NVC0TCL_LOGIC_OP_XOR 0x00001506
+#define NVC0TCL_LOGIC_OP_OR 0x00001507
+#define NVC0TCL_LOGIC_OP_NOR 0x00001508
+#define NVC0TCL_LOGIC_OP_EQUIV 0x00001509
+#define NVC0TCL_LOGIC_OP_INVERT 0x0000150a
+#define NVC0TCL_LOGIC_OP_OR_REVERSE 0x0000150b
+#define NVC0TCL_LOGIC_OP_COPY_INVERTED 0x0000150c
+#define NVC0TCL_LOGIC_OP_OR_INVERTED 0x0000150d
+#define NVC0TCL_LOGIC_OP_NAND 0x0000150e
+#define NVC0TCL_LOGIC_OP_SET 0x0000150f
+#define NVC0TCL_CLEAR_BUFFERS 0x000019d0
+#define NVC0TCL_CLEAR_BUFFERS_Z (1 << 0)
+#define NVC0TCL_CLEAR_BUFFERS_S (1 << 1)
+#define NVC0TCL_CLEAR_BUFFERS_R (1 << 2)
+#define NVC0TCL_CLEAR_BUFFERS_G (1 << 3)
+#define NVC0TCL_CLEAR_BUFFERS_B (1 << 4)
+#define NVC0TCL_CLEAR_BUFFERS_A (1 << 5)
+#define NVC0TCL_CLEAR_BUFFERS_RT_SHIFT 6
+#define NVC0TCL_CLEAR_BUFFERS_RT_MASK 0x000003c0
+#define NVC0TCL_CLEAR_BUFFERS_LAYER_SHIFT 10
+#define NVC0TCL_CLEAR_BUFFERS_LAYER_MASK 0x0007fc00
+#define NVC0TCL_COLOR_MASK(x) (0x00001a00+((x)*4))
+#define NVC0TCL_COLOR_MASK__SIZE 0x00000008
+#define NVC0TCL_COLOR_MASK_R_SHIFT 0
+#define NVC0TCL_COLOR_MASK_R_MASK 0x0000000f
+#define NVC0TCL_COLOR_MASK_G_SHIFT 4
+#define NVC0TCL_COLOR_MASK_G_MASK 0x000000f0
+#define NVC0TCL_COLOR_MASK_B_SHIFT 8
+#define NVC0TCL_COLOR_MASK_B_MASK 0x00000f00
+#define NVC0TCL_COLOR_MASK_A_SHIFT 12
+#define NVC0TCL_COLOR_MASK_A_MASK 0x0000f000
+#define NVC0TCL_QUERY_ADDRESS_HIGH 0x00001b00
+#define NVC0TCL_QUERY_ADDRESS_LOW 0x00001b04
+#define NVC0TCL_QUERY_SEQUENCE 0x00001b08
+#define NVC0TCL_QUERY_GET 0x00001b0c
+#define NVC0TCL_VERTEX_ARRAY_FETCH(x) (0x00001c00+((x)*16))
+#define NVC0TCL_VERTEX_ARRAY_FETCH__SIZE 0x00000020
+#define NVC0TCL_VERTEX_ARRAY_FETCH_STRIDE_SHIFT 0
+#define NVC0TCL_VERTEX_ARRAY_FETCH_STRIDE_MASK 0x00000fff
+#define NVC0TCL_VERTEX_ARRAY_FETCH_ENABLE (1 << 12)
+#define NVC0TCL_BLEND_EQUATIONI_RGB(x) (0x00001e04+((x)*32))
+#define NVC0TCL_BLEND_EQUATIONI_RGB__SIZE 0x00000008
+#define NVC0TCL_BLEND_EQUATIONI_RGB_FUNC_ADD 0x00008006
+#define NVC0TCL_BLEND_EQUATIONI_RGB_MIN 0x00008007
+#define NVC0TCL_BLEND_EQUATIONI_RGB_MAX 0x00008008
+#define NVC0TCL_BLEND_EQUATIONI_RGB_FUNC_SUBTRACT 0x0000800a
+#define NVC0TCL_BLEND_EQUATIONI_RGB_FUNC_REVERSE_SUBTRACT 0x0000800b
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB(x) (0x00001e08+((x)*32))
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB__SIZE 0x00000008
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ZERO 0x00004000
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ONE 0x00004001
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_SRC_COLOR 0x00004300
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ONE_MINUS_SRC_COLOR 0x00004301
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_SRC_ALPHA 0x00004302
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_DST_ALPHA 0x00004304
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ONE_MINUS_DST_ALPHA 0x00004305
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_DST_COLOR 0x00004306
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ONE_MINUS_DST_COLOR 0x00004307
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_SRC_ALPHA_SATURATE 0x00004308
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_CONSTANT_COLOR 0x0000c001
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_CONSTANT_ALPHA 0x0000c003
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_SRC1_COLOR 0x0000c900
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_SRC1_ALPHA 0x0000c902
+#define NVC0TCL_BLEND_FUNCI_SRC_RGB_ONE_MINUS_SRC1_ALPHA 0x0000c903
+#define NVC0TCL_BLEND_FUNCI_DST_RGB(x) (0x00001e0c+((x)*32))
+#define NVC0TCL_BLEND_FUNCI_DST_RGB__SIZE 0x00000008
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ZERO 0x00004000
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ONE 0x00004001
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_SRC_COLOR 0x00004300
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ONE_MINUS_SRC_COLOR 0x00004301
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_SRC_ALPHA 0x00004302
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_DST_ALPHA 0x00004304
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ONE_MINUS_DST_ALPHA 0x00004305
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_DST_COLOR 0x00004306
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ONE_MINUS_DST_COLOR 0x00004307
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_SRC_ALPHA_SATURATE 0x00004308
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_CONSTANT_COLOR 0x0000c001
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_CONSTANT_ALPHA 0x0000c003
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_SRC1_COLOR 0x0000c900
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_SRC1_ALPHA 0x0000c902
+#define NVC0TCL_BLEND_FUNCI_DST_RGB_ONE_MINUS_SRC1_ALPHA 0x0000c903
+#define NVC0TCL_BLEND_EQUATIONI_ALPHA(x) (0x00001e10+((x)*32))
+#define NVC0TCL_BLEND_EQUATIONI_ALPHA__SIZE 0x00000008
+#define NVC0TCL_BLEND_EQUATIONI_ALPHA_FUNC_ADD 0x00008006
+#define NVC0TCL_BLEND_EQUATIONI_ALPHA_MIN 0x00008007
+#define NVC0TCL_BLEND_EQUATIONI_ALPHA_MAX 0x00008008
+#define NVC0TCL_BLEND_EQUATIONI_ALPHA_FUNC_SUBTRACT 0x0000800a
+#define NVC0TCL_BLEND_EQUATIONI_ALPHA_FUNC_REVERSE_SUBTRACT 0x0000800b
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA(x) (0x00001e14+((x)*32))
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA__SIZE 0x00000008
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ZERO 0x00004000
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ONE 0x00004001
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_SRC_COLOR 0x00004300
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ONE_MINUS_SRC_COLOR 0x00004301
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_SRC_ALPHA 0x00004302
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_DST_ALPHA 0x00004304
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ONE_MINUS_DST_ALPHA 0x00004305
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_DST_COLOR 0x00004306
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ONE_MINUS_DST_COLOR 0x00004307
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_SRC_ALPHA_SATURATE 0x00004308
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_CONSTANT_COLOR 0x0000c001
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_CONSTANT_ALPHA 0x0000c003
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_SRC1_COLOR 0x0000c900
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_SRC1_ALPHA 0x0000c902
+#define NVC0TCL_BLEND_FUNCI_SRC_ALPHA_ONE_MINUS_SRC1_ALPHA 0x0000c903
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA(x) (0x00001e18+((x)*32))
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA__SIZE 0x00000008
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ZERO 0x00004000
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ONE 0x00004001
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_SRC_COLOR 0x00004300
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ONE_MINUS_SRC_COLOR 0x00004301
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_SRC_ALPHA 0x00004302
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ONE_MINUS_SRC_ALPHA 0x00004303
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_DST_ALPHA 0x00004304
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ONE_MINUS_DST_ALPHA 0x00004305
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_DST_COLOR 0x00004306
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ONE_MINUS_DST_COLOR 0x00004307
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_SRC_ALPHA_SATURATE 0x00004308
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_CONSTANT_COLOR 0x0000c001
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ONE_MINUS_CONSTANT_COLOR 0x0000c002
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_CONSTANT_ALPHA 0x0000c003
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ONE_MINUS_CONSTANT_ALPHA 0x0000c004
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_SRC1_COLOR 0x0000c900
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ONE_MINUS_SRC1_COLOR 0x0000c901
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_SRC1_ALPHA 0x0000c902
+#define NVC0TCL_BLEND_FUNCI_DST_ALPHA_ONE_MINUS_SRC1_ALPHA 0x0000c903
+#define NVC0TCL_SP_SELECT(x) (0x00002000+((x)*64))
+#define NVC0TCL_SP_SELECT__SIZE 0x00000006
+#define NVC0TCL_SP_SELECT_ENABLE (1 << 0)
+#define NVC0TCL_SP_SELECT_PROGRAM_SHIFT 4
+#define NVC0TCL_SP_SELECT_PROGRAM_MASK 0x000000f0
+#define NVC0TCL_SP_START_ID(x) (0x00002004+((x)*64))
+#define NVC0TCL_SP_START_ID__SIZE 0x00000006
+#define NVC0TCL_SP_GPR_ALLOC(x) (0x0000200c+((x)*64))
+#define NVC0TCL_SP_GPR_ALLOC__SIZE 0x00000006
+#define NVC0TCL_CB_SIZE 0x00002380
+#define NVC0TCL_CB_BIND(x) (0x00002410+((x)*32))
+#define NVC0TCL_CB_BIND__SIZE 0x00000005
+#define NVC0TCL_CB_BIND_VALID (1 << 0)
+#define NVC0TCL_CB_BIND_INDEX_SHIFT 4
+#define NVC0TCL_CB_BIND_INDEX_MASK 0x000000f0
+#define NVC0TCL_BIND_TIC(x) (0x00002404+((x)*32))
+#define NVC0TCL_BIND_TIC__SIZE 0x00000005
+#define NVC0TCL_BIND_TIC_ACTIVE (1 << 0)
+#define NVC0TCL_BIND_TIC_TEXTURE_SHIFT 1
+#define NVC0TCL_BIND_TIC_TEXTURE_MASK 0x000001fe
+#define NVC0TCL_BIND_TIC_TIC_SHIFT 9
+#define NVC0TCL_BIND_TIC_TIC_MASK 0x7ffffe00
+#define NVC0TCL_TEX_LIMITS(x) (0x00002200+((x)*16))
+#define NVC0TCL_TEX_LIMITS__SIZE 0x00000005
+#define NVC0TCL_TEX_LIMITS_SAMPLERS_LOG2_SHIFT 0
+#define NVC0TCL_TEX_LIMITS_SAMPLERS_LOG2_MASK 0x0000000f
+#define NVC0TCL_TEX_LIMITS_TEXTURES_LOG2_SHIFT 4
+#define NVC0TCL_TEX_LIMITS_TEXTURES_LOG2_MASK 0x000000f0
+#define NVC0TCL_CB_ADDR_HIGH 0x00002384
+#define NVC0TCL_CB_ADDR_LOW 0x00002388
+#define NVC0TCL_CB_POS 0x0000238c
+#define NVC0TCL_CB_DATA(x) (0x00002390+((x)*4))
+#define NVC0TCL_CB_DATA__SIZE 0x00000010
+#define NVC0TCL_TFB_VARYING_LOCS(x) (0x00002800+((x)*4))
+#define NVC0TCL_TFB_VARYING_LOCS__SIZE 0x00000080
+#define NVC0TCL_UNK_UPLOAD_POS 0x00003800
+#define NVC0TCL_UNK_UPLOAD_DATA 0x00003804
+#define NVC0TCL_VERTEX_ARRAY_SELECT 0x00003820
+#define NVC0TCL_VERTEX_ARRAY_ADDRESS 0x00003824
+#define NVC0TCL_BLEND_ENABLEI 0x00003858
+#define NVC0TCL_POLYGON_MODE_FRONT 0x00003868
+#define NVC0TCL_POLYGON_MODE_FRONT_POINT 0x00001b00
+#define NVC0TCL_POLYGON_MODE_FRONT_LINE 0x00001b01
+#define NVC0TCL_POLYGON_MODE_FRONT_FILL 0x00001b02
+#define NVC0TCL_POLYGON_MODE_BACK 0x00003870
+#define NVC0TCL_POLYGON_MODE_BACK_POINT 0x00001b00
+#define NVC0TCL_POLYGON_MODE_BACK_LINE 0x00001b01
+#define NVC0TCL_POLYGON_MODE_BACK_FILL 0x00001b02
+#define NVC0TCL_GP_SELECT 0x00003878
+#define NVC0TCL_GP_SELECT_ENABLE (1 << 0)
+#define NVC0TCL_GP_SELECT_PROGRAM_SHIFT 4
+#define NVC0TCL_GP_SELECT_PROGRAM_MASK 0x000000f0
+#define NVC0TCL_TEP_SELECT 0x00003880
+#define NVC0TCL_TEP_SELECT_ENABLE (1 << 0)
+#define NVC0TCL_TEP_SELECT_PROGRAM_SHIFT 4
+#define NVC0TCL_TEP_SELECT_PROGRAM_MASK 0x000000f0
+
+
+#define NVC0_COMPUTE 0x000090c0
+
+#define NVC0_COMPUTE_NOP 0x00000100
+#define NVC0_COMPUTE_NOTIFY 0x00000104
+#define NVC0_COMPUTE_SERIALIZE 0x00000110
+#define NVC0_COMPUTE_LOCAL_SIZE 0x00000204
+#define NVC0_COMPUTE_SHARED_BASE 0x00000214
+#define NVC0_COMPUTE_GRIDDIM_YX 0x00000238
+#define NVC0_COMPUTE_GRIDDIM_YX_X_SHIFT 0
+#define NVC0_COMPUTE_GRIDDIM_YX_X_MASK 0x0000ffff
+#define NVC0_COMPUTE_GRIDDIM_YX_Y_SHIFT 16
+#define NVC0_COMPUTE_GRIDDIM_YX_Y_MASK 0xffff0000
+#define NVC0_COMPUTE_GRIDDIM_Z 0x0000023c
+#define NVC0_COMPUTE_SHARED_SIZE 0x0000024c
+#define NVC0_COMPUTE_BLOCK_ALLOC 0x00000250
+#define NVC0_COMPUTE_BLOCK_ALLOC_THREADS_SHIFT 0
+#define NVC0_COMPUTE_BLOCK_ALLOC_THREADS_MASK 0x0000ffff
+#define NVC0_COMPUTE_BLOCK_ALLOC_BARRIERS_SHIFT 16
+#define NVC0_COMPUTE_BLOCK_ALLOC_BARRIERS_MASK 0xffff0000
+#define NVC0_COMPUTE_CP_GPR_ALLOC 0x000002c0
+#define NVC0_COMPUTE_GLOBAL_BASE 0x000002c8
+#define NVC0_COMPUTE_GLOBAL_BASE_HIGH_SHIFT 0
+#define NVC0_COMPUTE_GLOBAL_BASE_HIGH_MASK 0x000000ff
+#define NVC0_COMPUTE_GLOBAL_BASE_INDEX_SHIFT 16
+#define NVC0_COMPUTE_GLOBAL_BASE_INDEX_MASK 0x00ff0000
+#define NVC0_COMPUTE_GLOBAL_BASE_FLAGS_SHIFT 28
+#define NVC0_COMPUTE_GLOBAL_BASE_FLAGS_MASK 0xf0000000
+#define NVC0_COMPUTE_LAUNCH 0x00000368
+#define NVC0_COMPUTE_BLOCKDIM_YX 0x000003ac
+#define NVC0_COMPUTE_BLOCKDIM_YX_X_SHIFT 0
+#define NVC0_COMPUTE_BLOCKDIM_YX_X_MASK 0x0000ffff
+#define NVC0_COMPUTE_BLOCKDIM_YX_Y_SHIFT 16
+#define NVC0_COMPUTE_BLOCKDIM_YX_Y_MASK 0xffff0000
+#define NVC0_COMPUTE_BLOCKDIM_Z 0x000003b0
+#define NVC0_COMPUTE_CP_START_ID 0x000003b4
+#define NVC0_COMPUTE_LOCAL_BASE 0x0000077c
+#define NVC0_COMPUTE_UNK0790_ADDRESS_HIGH 0x00000790
+#define NVC0_COMPUTE_UNK0790_ADDRESS_LOW 0x00000794
+#define NVC0_COMPUTE_LINKED_TSC 0x00001234
+#define NVC0_COMPUTE_TSC_ADDRESS_HIGH 0x0000155c
+#define NVC0_COMPUTE_TSC_ADDRESS_LOW 0x00001560
+#define NVC0_COMPUTE_TSC_LIMIT 0x00001564
+#define NVC0_COMPUTE_TIC_ADDRESS_HIGH 0x00001574
+#define NVC0_COMPUTE_TIC_ADDRESS_LOW 0x00001578
+#define NVC0_COMPUTE_TIC_LIMIT 0x0000157c
+#define NVC0_COMPUTE_CODE_ADDRESS_HIGH 0x00001608
+#define NVC0_COMPUTE_CODE_ADDRESS_LOW 0x0000160c
+#define NVC0_COMPUTE_CB_BIND 0x00001694
+#define NVC0_COMPUTE_CB_BIND_INDEX_SHIFT 1
+#define NVC0_COMPUTE_CB_BIND_INDEX_MASK 0xfffffffe
+#define NVC0_COMPUTE_CB_BIND_VALID (1 << 0)
+#define NVC0_COMPUTE_QUERY_ADDRESS_HIGH 0x00001b00
+#define NVC0_COMPUTE_QUERY_ADDRESS_LOW 0x00001b04
+#define NVC0_COMPUTE_QUERY_SEQUENCE 0x00001b08
+#define NVC0_COMPUTE_QUERY_GET 0x00001b0c
+#define NVC0_COMPUTE_CB_ADDRESS_HIGH 0x00002384
+#define NVC0_COMPUTE_CB_ADDRESS_LOW 0x00002388
+#define NVC0_COMPUTE_CB_POS 0x0000238c
+#define NVC0_COMPUTE_CB_DATA 0x00002390
+
+
#endif /* NOUVEAU_REG_H */
diff --git a/src/gallium/drivers/nv50/nv50_state.c b/src/gallium/drivers/nv50/nv50_state.c
index 0d744ab7881..88fee3630be 100644
--- a/src/gallium/drivers/nv50/nv50_state.c
+++ b/src/gallium/drivers/nv50/nv50_state.c
@@ -48,6 +48,53 @@ nv50_colormask(unsigned mask)
return cmask;
}
+static INLINE uint32_t
+nv50_blend_func(unsigned factor)
+{
+ switch (factor) {
+ case PIPE_BLENDFACTOR_ZERO:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ZERO;
+ case PIPE_BLENDFACTOR_ONE:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ONE;
+ case PIPE_BLENDFACTOR_SRC_COLOR:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_SRC_COLOR;
+ case PIPE_BLENDFACTOR_INV_SRC_COLOR:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_COLOR;
+ case PIPE_BLENDFACTOR_SRC_ALPHA:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_SRC_ALPHA;
+ case PIPE_BLENDFACTOR_INV_SRC_ALPHA:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC_ALPHA;
+ case PIPE_BLENDFACTOR_DST_ALPHA:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_DST_ALPHA;
+ case PIPE_BLENDFACTOR_INV_DST_ALPHA:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_ALPHA;
+ case PIPE_BLENDFACTOR_DST_COLOR:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_DST_COLOR;
+ case PIPE_BLENDFACTOR_INV_DST_COLOR:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_DST_COLOR;
+ case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_SRC_ALPHA_SATURATE;
+ case PIPE_BLENDFACTOR_CONST_COLOR:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_CONSTANT_COLOR;
+ case PIPE_BLENDFACTOR_INV_CONST_COLOR:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_COLOR;
+ case PIPE_BLENDFACTOR_CONST_ALPHA:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_CONSTANT_ALPHA;
+ case PIPE_BLENDFACTOR_INV_CONST_ALPHA:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_CONSTANT_ALPHA;
+ case PIPE_BLENDFACTOR_SRC1_COLOR:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_SRC1_COLOR;
+ case PIPE_BLENDFACTOR_INV_SRC1_COLOR:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC1_COLOR;
+ case PIPE_BLENDFACTOR_SRC1_ALPHA:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_SRC1_ALPHA;
+ case PIPE_BLENDFACTOR_INV_SRC1_ALPHA:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ONE_MINUS_SRC1_ALPHA;
+ default:
+ return NV50TCL_BLEND_FUNC_SRC_RGB_ZERO;
+ }
+}
+
static void *
nv50_blend_state_create(struct pipe_context *pipe,
const struct pipe_blend_state *cso)
@@ -80,12 +127,12 @@ nv50_blend_state_create(struct pipe_context *pipe,
if (blend_enabled) {
so_method(so, tesla, NV50TCL_BLEND_EQUATION_RGB, 5);
so_data (so, nvgl_blend_eqn(cso->rt[0].rgb_func));
- so_data (so, 0x4000 | nvgl_blend_func(cso->rt[0].rgb_src_factor));
- so_data (so, 0x4000 | nvgl_blend_func(cso->rt[0].rgb_dst_factor));
+ so_data (so, nv50_blend_func(cso->rt[0].rgb_src_factor));
+ so_data (so, nv50_blend_func(cso->rt[0].rgb_dst_factor));
so_data (so, nvgl_blend_eqn(cso->rt[0].alpha_func));
- so_data (so, 0x4000 | nvgl_blend_func(cso->rt[0].alpha_src_factor));
+ so_data (so, nv50_blend_func(cso->rt[0].alpha_src_factor));
so_method(so, tesla, NV50TCL_BLEND_FUNC_DST_ALPHA, 1);
- so_data (so, 0x4000 | nvgl_blend_func(cso->rt[0].alpha_dst_factor));
+ so_data (so, nv50_blend_func(cso->rt[0].alpha_dst_factor));
}
if (cso->logicop_enable == 0 ) {
diff --git a/src/gallium/drivers/nv50/nv50_vbo.c b/src/gallium/drivers/nv50/nv50_vbo.c
index 6bd52884b57..996844b18f1 100644
--- a/src/gallium/drivers/nv50/nv50_vbo.c
+++ b/src/gallium/drivers/nv50/nv50_vbo.c
@@ -29,6 +29,9 @@
#include "nv50_context.h"
#include "nv50_resource.h"
+/* VERTEX_ARRAY_ATTRIB_TYPE is duplicated for unknown reason */
+#define NV50_VAT(x) ((x) | ((x) << 3))
+
static INLINE uint32_t
nv50_vbo_type_to_hw(enum pipe_format format)
{
@@ -39,22 +42,22 @@ nv50_vbo_type_to_hw(enum pipe_format format)
switch (desc->channel[0].type) {
case UTIL_FORMAT_TYPE_FLOAT:
- return NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_FLOAT;
+ return NV50_VAT(NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_FLOAT);
case UTIL_FORMAT_TYPE_UNSIGNED:
if (desc->channel[0].normalized) {
- return NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_UNORM;
+ return NV50_VAT(NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_UNORM);
}
- return NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_USCALED;
+ return NV50_VAT(NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_USCALED);
case UTIL_FORMAT_TYPE_SIGNED:
if (desc->channel[0].normalized) {
- return NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SNORM;
+ return NV50_VAT(NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SNORM);
}
- return NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SSCALED;
+ return NV50_VAT(NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SSCALED);
/*
case PIPE_FORMAT_TYPE_UINT:
- return NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_UINT;
+ return NV50_VAT(NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_UINT);
case PIPE_FORMAT_TYPE_SINT:
- return NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SINT; */
+ return NV50_VAT(NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SINT); */
default:
return 0;
}