Merge remote branch 'origin/nv50-compiler'
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Wed, 15 Sep 2010 15:34:40 +0000 (17:34 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Wed, 15 Sep 2010 15:34:40 +0000 (17:34 +0200)
Conflicts:
src/gallium/drivers/nouveau/nouveau_class.h
src/gallium/drivers/nv50/nv50_screen.c

1  2 
src/gallium/drivers/nv50/nv50_formats.c
src/gallium/drivers/nv50/nv50_program.h
src/gallium/drivers/nv50/nv50_reg.h
src/gallium/drivers/nv50/nv50_screen.c

index 0000000000000000000000000000000000000000,e1c7dae3063b5c55ee6d3b3e6ad393e8e2007449..3be39d5337a086f452eb3769ea2be5f6671fdcd2
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,452 +1,452 @@@
 -#include "nouveau/nouveau_class.h"
+ /*
+  * Copyright 2010 Christoph Bumiller
+  *
+  * 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 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 AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  * SOFTWARE.
+  */
+ #include "nv50_screen.h"
+ #include "nv50_texture.h"
++#include "nv50_reg.h"
+ #include "pipe/p_defines.h"
+ #define A_(cr, cg, cb, ca, t0, t1, t2, t3, sz, r)         \
+    NV50TIC_0_0_MAPR_##cr | NV50TIC_0_0_TYPER_##t0 |         \
+    NV50TIC_0_0_MAPG_##cg | NV50TIC_0_0_TYPEG_##t1 |       \
+    NV50TIC_0_0_MAPB_##cb | NV50TIC_0_0_TYPEB_##t2 |       \
+    NV50TIC_0_0_MAPA_##ca | NV50TIC_0_0_TYPEA_##t3 |         \
+    NV50TIC_0_0_FMT_##sz,                                    \
+    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_##sz |                \
+    NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_##t0 |                  \
+    (NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_##t0 << 3) | (r << 31)
+ #define B_(cr, cg, cb, ca, t0, t1, t2, t3, sz, r)   \
+    NV50TIC_0_0_MAPR_##cr | NV50TIC_0_0_TYPER_##t0 | \
+    NV50TIC_0_0_MAPG_##cg | NV50TIC_0_0_TYPEG_##t1 | \
+    NV50TIC_0_0_MAPB_##cb | NV50TIC_0_0_TYPEB_##t2 | \
+    NV50TIC_0_0_MAPA_##ca | NV50TIC_0_0_TYPEA_##t3 | \
+    NV50TIC_0_0_FMT_##sz, 0
+ #define VERTEX_BUFFER PIPE_BIND_VERTEX_BUFFER
+ #define SAMPLER_VIEW  PIPE_BIND_SAMPLER_VIEW
+ #define RENDER_TARGET PIPE_BIND_RENDER_TARGET
+ #define DEPTH_STENCIL PIPE_BIND_DEPTH_STENCIL
+ #define SCANOUT       PIPE_BIND_SCANOUT
+ /* for vertex buffers: */
+ #define NV50TIC_0_0_FMT_8_8_8 NV50TIC_0_0_FMT_8_8_8_8
+ #define NV50TIC_0_0_FMT_16_16_16 NV50TIC_0_0_FMT_16_16_16_16
+ #define NV50TIC_0_0_FMT_32_32_32 NV50TIC_0_0_FMT_32_32_32_32
+ const struct nv50_format nv50_format_table[PIPE_FORMAT_COUNT] =
+ {
+    /* COMMON FORMATS */
+    [PIPE_FORMAT_B8G8R8A8_UNORM] = { NV50TCL_RT_FORMAT_A8R8G8B8_UNORM,
+     A_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
+    [PIPE_FORMAT_B8G8R8X8_UNORM] = { NV50TCL_RT_FORMAT_X8R8G8B8_UNORM,
+     A_(C2, C1, C0, ONE, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
+    [PIPE_FORMAT_B8G8R8A8_SRGB] = { NV50TCL_RT_FORMAT_A8R8G8B8_SRGB,
+     A_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_B8G8R8X8_SRGB] = { NV50TCL_RT_FORMAT_X8R8G8B8_SRGB,
+     A_(C2, C1, C0, ONE, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 1),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_B5G6R5_UNORM] = { NV50TCL_RT_FORMAT_R5G6B5_UNORM,
+     B_(C2, C1, C0, ONE, UNORM, UNORM, UNORM, UNORM, 5_6_5, 1),
+     SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
+    [PIPE_FORMAT_B5G5R5A1_UNORM] = { NV50TCL_RT_FORMAT_A1R5G5B5_UNORM,
+     B_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 1_5_5_5, 1),
+     SAMPLER_VIEW | RENDER_TARGET | SCANOUT },
+    [PIPE_FORMAT_B4G4R4A4_UNORM] = { 0,
+     B_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 4_4_4_4, 1),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_R10G10B10A2_UNORM] = { NV50TCL_RT_FORMAT_A2B10G10R10_UNORM,
+     A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 2_10_10_10, 0),
+     SAMPLER_VIEW | RENDER_TARGET | VERTEX_BUFFER | SCANOUT },
+    [PIPE_FORMAT_B10G10R10A2_UNORM] = { NV50TCL_RT_FORMAT_A2R10G10B10_UNORM,
+     A_(C2, C1, C0, C3, UNORM, UNORM, UNORM, UNORM, 2_10_10_10, 1),
+     SAMPLER_VIEW | RENDER_TARGET | VERTEX_BUFFER },
+    /* DEPTH/STENCIL FORMATS */
+    [PIPE_FORMAT_Z16_UNORM] = { NV50TCL_ZETA_FORMAT_Z16_UNORM,
+     B_(C0, C0, C0, ONE, UNORM, UINT, UINT, UINT, 16_DEPTH, 0),
+     SAMPLER_VIEW | DEPTH_STENCIL },
+    [PIPE_FORMAT_Z24_UNORM_S8_USCALED] = { NV50TCL_ZETA_FORMAT_S8Z24_UNORM,
+     B_(C0, C0, C0, ONE, UNORM, UINT, UINT, UINT, 8_24, 0),
+     SAMPLER_VIEW | DEPTH_STENCIL },
+    [PIPE_FORMAT_Z24X8_UNORM] = { NV50TCL_ZETA_FORMAT_X8Z24_UNORM,
+     B_(C0, C0, C0, ONE, UNORM, UINT, UINT, UINT, 8_24, 0),
+     SAMPLER_VIEW | DEPTH_STENCIL },
+    [PIPE_FORMAT_S8_USCALED_Z24_UNORM] = { NV50TCL_ZETA_FORMAT_S8Z24_UNORM,
+     B_(C1, C1, C1, ONE, UINT, UNORM, UINT, UINT, 24_8, 0),
+     SAMPLER_VIEW | DEPTH_STENCIL },
+    [PIPE_FORMAT_Z32_FLOAT] = { NV50TCL_ZETA_FORMAT_Z32_FLOAT,
+     B_(C0, C0, C0, ONE, FLOAT, UINT, UINT, UINT, 32_DEPTH, 0),
+     SAMPLER_VIEW | DEPTH_STENCIL },
+    [PIPE_FORMAT_Z32_FLOAT_S8X24_USCALED] = {
+     NV50TCL_ZETA_FORMAT_Z32_FLOAT_X24S8_UNORM,
+     B_(C0, C0, C0, ONE, FLOAT, UINT, UINT, UINT, 32_8, 0),
+     SAMPLER_VIEW | DEPTH_STENCIL },
+    /* LUMINANCE, ALPHA, INTENSITY */
+    [PIPE_FORMAT_L8_UNORM] = { 0,
+     A_(C0, C0, C0, ONE, UNORM, UNORM, UNORM, UNORM, 8, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_L8_SRGB] = { 0,
+     A_(C0, C0, C0, ONE, UNORM, UNORM, UNORM, UNORM, 8, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_I8_UNORM] = { 0,
+     A_(C0, C0, C0, C0, UNORM, UNORM, UNORM, UNORM, 8, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_A8_UNORM] = { NV50TCL_RT_FORMAT_A8_UNORM,
+     A_(ZERO, ZERO, ZERO, C0, UNORM, UNORM, UNORM, UNORM, 8, 0),
+     SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_L8A8_UNORM] = { 0,
+     A_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_L8A8_SRGB] = { 0,
+     A_(C0, C0, C0, C1, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
+     SAMPLER_VIEW },
+    /* DXT, RGTC */
+    [PIPE_FORMAT_DXT1_RGB] = { 0,
+     B_(C0, C1, C2, ONE, UNORM, UNORM, UNORM, UNORM, DXT1, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_DXT1_RGBA] = { 0,
+     B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT1, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_DXT3_RGBA] = { 0,
+     B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT3, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_DXT5_RGBA] = { 0,
+     B_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, DXT5, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_RGTC1_UNORM] = { 0,
+     B_(C0, ZERO, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, RGTC1, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_RGTC1_SNORM] = { 0,
+     B_(C0, ZERO, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, RGTC1, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_RGTC2_UNORM] = { 0,
+     B_(C0, C1, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, RGTC2, 0),
+     SAMPLER_VIEW },
+    [PIPE_FORMAT_RGTC2_SNORM] = { 0,
+     B_(C0, C1, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, RGTC2, 0),
+     SAMPLER_VIEW },
+    /* FLOAT 16 */
+    [PIPE_FORMAT_R16G16B16A16_FLOAT] = { NV50TCL_RT_FORMAT_R16G16B16A16_FLOAT,
+     A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 16_16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R16G16B16_FLOAT] = { NV50TCL_RT_FORMAT_R16G16B16X16_FLOAT,
+     A_(C0, C1, C2, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R16G16_FLOAT] = { NV50TCL_RT_FORMAT_R16G16_FLOAT,
+     A_(C0, C1, ZERO, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R16_FLOAT] = { NV50TCL_RT_FORMAT_R16_FLOAT,
+     A_(C0, ZERO, ZERO, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    /* FLOAT 32 */
+    [PIPE_FORMAT_R32G32B32A32_FLOAT] = { NV50TCL_RT_FORMAT_R32G32B32A32_FLOAT,
+     A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R32G32B32_FLOAT] = { NV50TCL_RT_FORMAT_R32G32B32X32_FLOAT,
+     A_(C0, C1, C2, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R32G32_FLOAT] = { NV50TCL_RT_FORMAT_R32G32_FLOAT,
+     A_(C0, C1, ZERO, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R32_FLOAT] = { NV50TCL_RT_FORMAT_R32_FLOAT,
+     A_(C0, ZERO, ZERO, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    /* ODD FORMATS */
+    [PIPE_FORMAT_R11G11B10_FLOAT] = { NV50TCL_RT_FORMAT_B10G11R11_FLOAT,
+     B_(C0, C1, C2, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 10_11_11, 0),
+     SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R9G9B9E5_FLOAT] = { 0,
+     B_(C0, C1, C2, ONE, FLOAT, FLOAT, FLOAT, FLOAT, 5_9_9_9, 0),
+     SAMPLER_VIEW },
+    /* SNORM 32 */
+    [PIPE_FORMAT_R32G32B32A32_SNORM] = { 0,
+     A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32G32B32_SNORM] = { 0,
+     A_(C0, C1, C2, ONE, SNORM, SNORM, SNORM, SNORM, 32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32G32_SNORM] = { 0,
+     A_(C0, C1, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32_SNORM] = { 0,
+     A_(C0, ZERO, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    /* UNORM 32 */
+    [PIPE_FORMAT_R32G32B32A32_UNORM] = { 0,
+     A_(C0, C1, C2, C3, FLOAT, FLOAT, FLOAT, FLOAT, 32_32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32G32B32_UNORM] = { 0,
+     A_(C0, C1, C2, ONE, UNORM, UNORM, UNORM, UNORM, 32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32G32_UNORM] = { 0,
+     A_(C0, C1, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32_UNORM] = { 0,
+     A_(C0, ZERO, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    /* SNORM 16 */
+    [PIPE_FORMAT_R16G16B16A16_SNORM] = { NV50TCL_RT_FORMAT_R16G16B16A16_SNORM,
+     A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 16_16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R16G16B16_SNORM] = { 0,
+     A_(C0, C1, C2, ONE, SNORM, SNORM, SNORM, SNORM, 16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R16G16_SNORM] = { NV50TCL_RT_FORMAT_R16G16_SNORM,
+     A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R16_SNORM] = { 0,
+     A_(C0, ZERO, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    /* UNORM 16 */
+    [PIPE_FORMAT_R16G16B16A16_UNORM] = { NV50TCL_RT_FORMAT_R16G16B16A16_UNORM,
+     A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 16_16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R16G16B16_UNORM] = { 0,
+     A_(C0, C1, C2, ONE, UNORM, UNORM, UNORM, UNORM, 16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R16G16_UNORM] = { NV50TCL_RT_FORMAT_R16G16_UNORM,
+     A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R16_UNORM] = { 0,
+     A_(C0, ZERO, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    /* SNORM 8 */
+    [PIPE_FORMAT_R8G8B8A8_SNORM] = { NV50TCL_RT_FORMAT_A8B8G8R8_SNORM,
+     A_(C0, C1, C2, C3, SNORM, SNORM, SNORM, SNORM, 8_8_8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R8G8B8_SNORM] = { 0,
+     A_(C0, C1, C2, ONE, SNORM, SNORM, SNORM, SNORM, 8_8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R8G8_SNORM] = { NV50TCL_RT_FORMAT_R8G8_SNORM,
+     A_(C0, C1, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R8_SNORM] = { NV50TCL_RT_FORMAT_R8_SNORM,
+     A_(C0, ZERO, ZERO, ONE, SNORM, SNORM, SNORM, SNORM, 8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    /* UNORM 8 */
+    [PIPE_FORMAT_R8G8B8A8_UNORM] = { NV50TCL_RT_FORMAT_A8B8G8R8_UNORM,
+     A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R8G8B8A8_SRGB] = { NV50TCL_RT_FORMAT_A8B8G8R8_SRGB,
+     A_(C0, C1, C2, C3, UNORM, UNORM, UNORM, UNORM, 8_8_8_8, 0),
+     SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R8G8B8_UNORM] = { NV50TCL_RT_FORMAT_X8B8G8R8_UNORM,
+     A_(C0, C1, C2, ONE, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R8G8B8_SRGB] = { NV50TCL_RT_FORMAT_X8B8G8R8_SRGB,
+     A_(C0, C1, C2, ONE, UNORM, UNORM, UNORM, UNORM, 8_8_8, 0),
+     SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R8G8_UNORM] = { NV50TCL_RT_FORMAT_R8G8_UNORM,
+     A_(C0, C1, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    [PIPE_FORMAT_R8_UNORM] = { NV50TCL_RT_FORMAT_R8_UNORM,
+     A_(C0, ZERO, ZERO, ONE, UNORM, UNORM, UNORM, UNORM, 8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW | RENDER_TARGET },
+    /* SSCALED 32 */
+    [PIPE_FORMAT_R32G32B32A32_SSCALED] = { 0,
+     A_(C0, C1, C2, C3, SSCALED, SSCALED, SSCALED, SSCALED, 32_32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32G32B32_SSCALED] = { 0,
+     A_(C0, C1, C2, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32G32_SSCALED] = { 0,
+     A_(C0, C1, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32_SSCALED] = { 0,
+     A_(C0, ZERO, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    /* USCALED 32 */
+    [PIPE_FORMAT_R32G32B32A32_USCALED] = { 0,
+     A_(C0, C1, C2, C3, USCALED, USCALED, USCALED, USCALED, 32_32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32G32B32_USCALED] = { 0,
+     A_(C0, C1, C2, ONE, USCALED, USCALED, USCALED, USCALED, 32_32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32G32_USCALED] = { 0,
+     A_(C0, C1, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 32_32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R32_USCALED] = { 0,
+     A_(C0, ZERO, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 32, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    /* SSCALED 16 */
+    [PIPE_FORMAT_R16G16B16A16_SSCALED] = { 0,
+     A_(C0, C1, C2, C3, SSCALED, SSCALED, SSCALED, SSCALED, 16_16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R16G16B16_SSCALED] = { 0,
+     A_(C0, C1, C2, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R16G16_SSCALED] = { 0,
+     A_(C0, C1, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R16_SSCALED] = { 0,
+     A_(C0, ZERO, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    /* USCALED 16 */
+    [PIPE_FORMAT_R16G16B16A16_USCALED] = { 0,
+     A_(C0, C1, C2, C3, USCALED, USCALED, USCALED, USCALED, 16_16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R16G16B16_USCALED] = { 0,
+     A_(C0, C1, C2, ONE, USCALED, USCALED, USCALED, USCALED, 16_16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R16G16_USCALED] = { 0,
+     A_(C0, C1, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 16_16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R16_USCALED] = { 0,
+     A_(C0, ZERO, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 16, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    /* SSCALED 8 */
+    [PIPE_FORMAT_R8G8B8A8_SSCALED] = { 0,
+     A_(C0, C1, C2, C3, SSCALED, SSCALED, SSCALED, SSCALED, 8_8_8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R8G8B8_SSCALED] = { 0,
+     A_(C0, C1, C2, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 8_8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R8G8_SSCALED] = { 0,
+     A_(C0, C1, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R8_SSCALED] = { 0,
+     A_(C0, ZERO, ZERO, ONE, SSCALED, SSCALED, SSCALED, SSCALED, 8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    /* USCALED 8 */
+    [PIPE_FORMAT_R8G8B8A8_USCALED] = { 0,
+     A_(C0, C1, C2, C3, USCALED, USCALED, USCALED, USCALED, 8_8_8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R8G8B8_USCALED] = { 0,
+     A_(C0, C1, C2, ONE, USCALED, USCALED, USCALED, USCALED, 8_8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R8G8_USCALED] = { 0,
+     A_(C0, C1, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 8_8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+    [PIPE_FORMAT_R8_USCALED] = { 0,
+     A_(C0, ZERO, ZERO, ONE, USCALED, USCALED, USCALED, USCALED, 8, 0),
+     VERTEX_BUFFER | SAMPLER_VIEW },
+ };
index 1e3ad6bff058d0baab1bb215401faae4a5dc3537,d8b6e8d6d149e346e21547657b5c38a4bac29513..97d2933c3ee25e2c024e4de602943b9e95c61210
  
  #include "pipe/p_state.h"
  #include "tgsi/tgsi_scan.h"
 -#include "nouveau/nouveau_class.h"
  
- struct nv50_program_exec {
-       struct nv50_program_exec *next;
+ #define NV50_CAP_MAX_PROGRAM_TEMPS 64
  
-       unsigned inst[2];
-       struct {
-               int index;
-               unsigned mask;
-               unsigned shift;
-       } param;
- };
- struct nv50_sreg4 {
-       uint8_t hw; /* hw index, nv50 wants flat FP inputs last */
-       uint8_t id; /* tgsi index */
+ struct nv50_varying {
+    uint8_t id; /* tgsi index */
+    uint8_t hw; /* hw index, nv50 wants flat FP inputs last */
  
-       uint8_t mask;
-       boolean linear;
+    uint8_t mask   : 4;
+    uint8_t linear : 1;
+    uint8_t pad    : 3;
  
-       ubyte sn, si; /* semantic name & index */
+    ubyte sn; /* semantic name */
+    ubyte si; /* semantic index */
  };
  
  struct nv50_program {
index e2a8e5134401b732186e81be02bca699d297cc02,0000000000000000000000000000000000000000..365576fdd07f047eafd8237c587c63f017eccd14
mode 100644,000000..100644
--- /dev/null
@@@ -1,1774 -1,0 +1,1824 @@@
- #define  NV50TCL_DMA_UNK01AC                                                          0x000001ac
 +/*************************************************************************
 +
 +   Autogenerated file, do not edit !
 +
 +   This file was generated by renouveau-gen from renouveau.xml, the
 +   XML database of nvidia objects and methods. renouveau-gen and
 +   renouveau.xml can be found in CVS module renouveau of sourceforge.net
 +   project nouveau:
 +
 +cvs -z3 -d:pserver:anonymous@nouveau.cvs.sourceforge.net:/cvsroot/nouveau co -P renouveau
 +
 +**************************************************************************
 +
 +   Copyright (C) 2006-2008 :
 +   Dmitry Baryshkov,
 +   Laurent Carlier,
 +   Matthieu Castet,
 +   Dawid Gajownik,
 +   Jeremy Kolb,
 +   Stephane Loeuillet,
 +   Patrice Mandin,
 +   Stephane Marchesin,
 +   Serge Martin,
 +   Sylvain Munaut,
 +   Simon Raffeiner,
 +   Ben Skeggs,
 +   Erik Waling,
 +   koala_br,
 +
 +All Rights Reserved.
 +
 +Permission is hereby granted, free of charge, to any person obtaining
 +a copy of this software and associated documentation files (the
 +"Software"), to deal in the Software without restriction, including
 +without limitation 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.
 +
 +*************************************************************************/
 +
 +
 +#ifndef NOUVEAU_REG_H
 +#define NOUVEAU_REG_H 1
 +
 +
 +#define NV04_MEMORY_TO_MEMORY_FORMAT                                                  0x00000039
 +
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_NOP                                             0x00000100
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_NOTIFY                                          0x00000104
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY                                      0x00000180
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_IN                                   0x00000184
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_OUT                                  0x00000188
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN                                               0x0000030c
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT                                      0x00000310
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_PITCH_IN                                                0x00000314
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_PITCH_OUT                                               0x00000318
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_LINE_LENGTH_IN                                  0x0000031c
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_LINE_COUNT                                      0x00000320
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT                                          0x00000324
 +#define   NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_INPUT_INC_SHIFT                         0
 +#define   NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_INPUT_INC_MASK                          0x000000ff
 +#define   NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_OUTPUT_INC_SHIFT                                8
 +#define   NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_OUTPUT_INC_MASK                         0x0000ff00
 +#define  NV04_MEMORY_TO_MEMORY_FORMAT_BUF_NOTIFY                                      0x00000328
 +
 +
 +#define NV50_MEMORY_TO_MEMORY_FORMAT                                                  0x00005039
 +
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_SERIALIZE                                               0x00000110
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_IN                                               0x00000200
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_IN                                  0x00000204
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_IN                                 0x00000208
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_IN                                        0x0000020c
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_IN                                 0x00000210
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Z                            0x00000214
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN                              0x00000218
 +#define   NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_X_SHIFT                     0
 +#define   NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_X_MASK                      0x0000ffff
 +#define   NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Y_SHIFT                     16
 +#define   NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Y_MASK                      0xffff0000
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_OUT                                      0x0000021c
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_OUT                                 0x00000220
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_OUT                                        0x00000224
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_OUT                                       0x00000228
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_OUT                                        0x0000022c
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Z                           0x00000230
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT                             0x00000234
 +#define   NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_X_SHIFT                    0
 +#define   NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_X_MASK                     0x0000ffff
 +#define   NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Y_SHIFT                    16
 +#define   NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Y_MASK                     0xffff0000
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN_HIGH                                  0x00000238
 +#define  NV50_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT_HIGH                                 0x0000023c
 +
 +
 +#define NV50_2D                                                                               0x0000502d
 +
 +#define  NV50_2D_NOP                                                                  0x00000100
 +#define  NV50_2D_NOTIFY                                                                       0x00000104
 +#define  NV50_2D_SERIALIZE                                                            0x00000110
 +#define  NV50_2D_DMA_NOTIFY                                                           0x00000180
 +#define  NV50_2D_DMA_DST                                                              0x00000184
 +#define  NV50_2D_DMA_SRC                                                              0x00000188
 +#define  NV50_2D_DMA_COND                                                             0x0000018c
 +#define  NV50_2D_DST_FORMAT                                                           0x00000200
 +#define   NV50_2D_DST_FORMAT_R32G32B32A32_FLOAT                                               0x000000c0
 +#define   NV50_2D_DST_FORMAT_R32G32B32A32_SINT                                                0x000000c1
 +#define   NV50_2D_DST_FORMAT_R32G32B32A32_UINT                                                0x000000c2
 +#define   NV50_2D_DST_FORMAT_R32G32B32X32_FLOAT                                               0x000000c3
 +#define   NV50_2D_DST_FORMAT_R16G16B16A16_UNORM                                               0x000000c6
 +#define   NV50_2D_DST_FORMAT_R16G16B16A16_SNORM                                               0x000000c7
 +#define   NV50_2D_DST_FORMAT_R16G16B16A16_SINT                                                0x000000c8
 +#define   NV50_2D_DST_FORMAT_R16G16B16A16_UINT                                                0x000000c9
 +#define   NV50_2D_DST_FORMAT_R16G16B16A16_FLOAT                                               0x000000ca
 +#define   NV50_2D_DST_FORMAT_R32G32_FLOAT                                             0x000000cb
 +#define   NV50_2D_DST_FORMAT_R32G32_SINT                                              0x000000cc
 +#define   NV50_2D_DST_FORMAT_R32G32_UINT                                              0x000000cd
 +#define   NV50_2D_DST_FORMAT_R16G16B16X16_FLOAT                                               0x000000ce
 +#define   NV50_2D_DST_FORMAT_A8R8G8B8_UNORM                                           0x000000cf
 +#define   NV50_2D_DST_FORMAT_A8R8G8B8_SRGB                                            0x000000d0
 +#define   NV50_2D_DST_FORMAT_A2B10G10R10_UNORM                                                0x000000d1
 +#define   NV50_2D_DST_FORMAT_A2B10G10R10_UINT                                         0x000000d2
 +#define   NV50_2D_DST_FORMAT_A8B8G8R8_UNORM                                           0x000000d5
 +#define   NV50_2D_DST_FORMAT_A8B8G8R8_SRGB                                            0x000000d6
 +#define   NV50_2D_DST_FORMAT_A8B8G8R8_SNORM                                           0x000000d7
 +#define   NV50_2D_DST_FORMAT_A8B8G8R8_SINT                                            0x000000d8
 +#define   NV50_2D_DST_FORMAT_A8B8G8R8_UINT                                            0x000000d9
 +#define   NV50_2D_DST_FORMAT_R16G16_UNORM                                             0x000000da
 +#define   NV50_2D_DST_FORMAT_R16G16_SNORM                                             0x000000db
 +#define   NV50_2D_DST_FORMAT_R16G16_SINT                                              0x000000dc
 +#define   NV50_2D_DST_FORMAT_R16G16_UINT                                              0x000000dd
 +#define   NV50_2D_DST_FORMAT_R16G16_FLOAT                                             0x000000de
 +#define   NV50_2D_DST_FORMAT_A2R10G10B10_UNORM                                                0x000000df
 +#define   NV50_2D_DST_FORMAT_B10G11R11_FLOAT                                          0x000000e0
 +#define   NV50_2D_DST_FORMAT_R32_FLOAT                                                        0x000000e5
 +#define   NV50_2D_DST_FORMAT_X8R8G8B8_UNORM                                           0x000000e6
 +#define   NV50_2D_DST_FORMAT_X8R8G8B8_SRGB                                            0x000000e7
 +#define   NV50_2D_DST_FORMAT_R5G6B5_UNORM                                             0x000000e8
 +#define   NV50_2D_DST_FORMAT_A1R5G5B5_UNORM                                           0x000000e9
 +#define   NV50_2D_DST_FORMAT_R8G8_UNORM                                                       0x000000ea
 +#define   NV50_2D_DST_FORMAT_R8G8_SNORM                                                       0x000000eb
 +#define   NV50_2D_DST_FORMAT_R8G8_SINT                                                        0x000000ec
 +#define   NV50_2D_DST_FORMAT_R8G8_UINT                                                        0x000000ed
 +#define   NV50_2D_DST_FORMAT_R16_UNORM                                                        0x000000ee
 +#define   NV50_2D_DST_FORMAT_R16_SNORM                                                        0x000000ef
 +#define   NV50_2D_DST_FORMAT_R16_SINT                                                 0x000000f0
 +#define   NV50_2D_DST_FORMAT_R16_UINT                                                 0x000000f1
 +#define   NV50_2D_DST_FORMAT_R16_FLOAT                                                        0x000000f2
 +#define   NV50_2D_DST_FORMAT_R8_UNORM                                                 0x000000f3
 +#define   NV50_2D_DST_FORMAT_R8_SNORM                                                 0x000000f4
 +#define   NV50_2D_DST_FORMAT_R8_SINT                                                  0x000000f5
 +#define   NV50_2D_DST_FORMAT_R8_UINT                                                  0x000000f6
 +#define   NV50_2D_DST_FORMAT_A8_UNORM                                                 0x000000f7
 +#define   NV50_2D_DST_FORMAT_X1R5G5B5_UNORM                                           0x000000f8
 +#define   NV50_2D_DST_FORMAT_X8B8G8R8_UNORM                                           0x000000f9
 +#define   NV50_2D_DST_FORMAT_X8B8G8R8_SRGB                                            0x000000fa
 +#define  NV50_2D_DST_LINEAR                                                           0x00000204
 +#define  NV50_2D_DST_TILE_MODE                                                                0x00000208
 +#define  NV50_2D_DST_DEPTH                                                            0x0000020c
 +#define  NV50_2D_DST_LAYER                                                            0x00000210
 +#define  NV50_2D_DST_PITCH                                                            0x00000214
 +#define  NV50_2D_DST_WIDTH                                                            0x00000218
 +#define  NV50_2D_DST_HEIGHT                                                           0x0000021c
 +#define  NV50_2D_DST_ADDRESS_HIGH                                                     0x00000220
 +#define  NV50_2D_DST_ADDRESS_LOW                                                      0x00000224
 +#define  NV50_2D_SRC_FORMAT                                                           0x00000230
 +#define   NV50_2D_SRC_FORMAT_R32G32B32A32_FLOAT                                               0x000000c0
 +#define   NV50_2D_SRC_FORMAT_R32G32B32A32_SINT                                                0x000000c1
 +#define   NV50_2D_SRC_FORMAT_R32G32B32A32_UINT                                                0x000000c2
 +#define   NV50_2D_SRC_FORMAT_R32G32B32X32_FLOAT                                               0x000000c3
 +#define   NV50_2D_SRC_FORMAT_R16G16B16A16_UNORM                                               0x000000c6
 +#define   NV50_2D_SRC_FORMAT_R16G16B16A16_SNORM                                               0x000000c7
 +#define   NV50_2D_SRC_FORMAT_R16G16B16A16_SINT                                                0x000000c8
 +#define   NV50_2D_SRC_FORMAT_R16G16B16A16_UINT                                                0x000000c9
 +#define   NV50_2D_SRC_FORMAT_R16G16B16A16_FLOAT                                               0x000000ca
 +#define   NV50_2D_SRC_FORMAT_R32G32_FLOAT                                             0x000000cb
 +#define   NV50_2D_SRC_FORMAT_R32G32_SINT                                              0x000000cc
 +#define   NV50_2D_SRC_FORMAT_R32G32_UINT                                              0x000000cd
 +#define   NV50_2D_SRC_FORMAT_R16G16B16X16_FLOAT                                               0x000000ce
 +#define   NV50_2D_SRC_FORMAT_A8R8G8B8_UNORM                                           0x000000cf
 +#define   NV50_2D_SRC_FORMAT_A8R8G8B8_SRGB                                            0x000000d0
 +#define   NV50_2D_SRC_FORMAT_A2B10G10R10_UNORM                                                0x000000d1
 +#define   NV50_2D_SRC_FORMAT_A2B10G10R10_UINT                                         0x000000d2
 +#define   NV50_2D_SRC_FORMAT_A8B8G8R8_UNORM                                           0x000000d5
 +#define   NV50_2D_SRC_FORMAT_A8B8G8R8_SRGB                                            0x000000d6
 +#define   NV50_2D_SRC_FORMAT_A8B8G8R8_SNORM                                           0x000000d7
 +#define   NV50_2D_SRC_FORMAT_A8B8G8R8_SINT                                            0x000000d8
 +#define   NV50_2D_SRC_FORMAT_A8B8G8R8_UINT                                            0x000000d9
 +#define   NV50_2D_SRC_FORMAT_R16G16_UNORM                                             0x000000da
 +#define   NV50_2D_SRC_FORMAT_R16G16_SNORM                                             0x000000db
 +#define   NV50_2D_SRC_FORMAT_R16G16_SINT                                              0x000000dc
 +#define   NV50_2D_SRC_FORMAT_R16G16_UINT                                              0x000000dd
 +#define   NV50_2D_SRC_FORMAT_R16G16_FLOAT                                             0x000000de
 +#define   NV50_2D_SRC_FORMAT_A2R10G10B10_UNORM                                                0x000000df
 +#define   NV50_2D_SRC_FORMAT_B10G11R11_FLOAT                                          0x000000e0
 +#define   NV50_2D_SRC_FORMAT_R32_FLOAT                                                        0x000000e5
 +#define   NV50_2D_SRC_FORMAT_X8R8G8B8_UNORM                                           0x000000e6
 +#define   NV50_2D_SRC_FORMAT_X8R8G8B8_SRGB                                            0x000000e7
 +#define   NV50_2D_SRC_FORMAT_R5G6B5_UNORM                                             0x000000e8
 +#define   NV50_2D_SRC_FORMAT_A1R5G5B5_UNORM                                           0x000000e9
 +#define   NV50_2D_SRC_FORMAT_R8G8_UNORM                                                       0x000000ea
 +#define   NV50_2D_SRC_FORMAT_R8G8_SNORM                                                       0x000000eb
 +#define   NV50_2D_SRC_FORMAT_R8G8_SINT                                                        0x000000ec
 +#define   NV50_2D_SRC_FORMAT_R8G8_UINT                                                        0x000000ed
 +#define   NV50_2D_SRC_FORMAT_R16_UNORM                                                        0x000000ee
 +#define   NV50_2D_SRC_FORMAT_R16_SNORM                                                        0x000000ef
 +#define   NV50_2D_SRC_FORMAT_R16_SINT                                                 0x000000f0
 +#define   NV50_2D_SRC_FORMAT_R16_UINT                                                 0x000000f1
 +#define   NV50_2D_SRC_FORMAT_R16_FLOAT                                                        0x000000f2
 +#define   NV50_2D_SRC_FORMAT_R8_UNORM                                                 0x000000f3
 +#define   NV50_2D_SRC_FORMAT_R8_SNORM                                                 0x000000f4
 +#define   NV50_2D_SRC_FORMAT_R8_SINT                                                  0x000000f5
 +#define   NV50_2D_SRC_FORMAT_R8_UINT                                                  0x000000f6
 +#define   NV50_2D_SRC_FORMAT_A8_UNORM                                                 0x000000f7
 +#define   NV50_2D_SRC_FORMAT_X1R5G5B5_UNORM                                           0x000000f8
 +#define   NV50_2D_SRC_FORMAT_X8B8G8R8_UNORM                                           0x000000f9
 +#define   NV50_2D_SRC_FORMAT_X8B8G8R8_SRGB                                            0x000000fa
 +#define  NV50_2D_SRC_LINEAR                                                           0x00000234
 +#define  NV50_2D_SRC_TILE_MODE                                                                0x00000238
 +#define  NV50_2D_SRC_DEPTH                                                            0x0000023c
 +#define  NV50_2D_SRC_LAYER                                                            0x00000240
 +#define  NV50_2D_SRC_PITCH                                                            0x00000244
 +#define  NV50_2D_SRC_WIDTH                                                            0x00000248
 +#define  NV50_2D_SRC_HEIGHT                                                           0x0000024c
 +#define  NV50_2D_SRC_ADDRESS_HIGH                                                     0x00000250
 +#define  NV50_2D_SRC_ADDRESS_LOW                                                      0x00000254
 +#define  NV50_2D_COND_ADDRESS_HIGH                                                    0x00000264
 +#define  NV50_2D_COND_ADDRESS_LOW                                                     0x00000268
 +#define  NV50_2D_COND_MODE                                                            0x0000026c
 +#define   NV50_2D_COND_MODE_NEVER                                                     0x00000000
 +#define   NV50_2D_COND_MODE_ALWAYS                                                    0x00000001
 +#define   NV50_2D_COND_MODE_RES                                                               0x00000002
 +#define   NV50_2D_COND_MODE_NOT_RES_AND_NOT_ID                                                0x00000003
 +#define   NV50_2D_COND_MODE_RES_OR_ID                                                 0x00000004
 +#define  NV50_2D_CLIP_X                                                                       0x00000280
 +#define  NV50_2D_CLIP_Y                                                                       0x00000284
 +#define  NV50_2D_CLIP_W                                                                       0x00000288
 +#define  NV50_2D_CLIP_H                                                                       0x0000028c
 +#define  NV50_2D_CLIP_ENABLE                                                          0x00000290
 +#define  NV50_2D_COLOR_KEY_FORMAT                                                     0x00000294
 +#define   NV50_2D_COLOR_KEY_FORMAT_16BPP                                              0x00000000
 +#define   NV50_2D_COLOR_KEY_FORMAT_15BPP                                              0x00000001
 +#define   NV50_2D_COLOR_KEY_FORMAT_24BPP                                              0x00000002
 +#define   NV50_2D_COLOR_KEY_FORMAT_30BPP                                              0x00000003
 +#define   NV50_2D_COLOR_KEY_FORMAT_8BPP                                                       0x00000004
 +#define   NV50_2D_COLOR_KEY_FORMAT_16BPP2                                             0x00000005
 +#define   NV50_2D_COLOR_KEY_FORMAT_32BPP                                              0x00000006
 +#define  NV50_2D_COLOR_KEY                                                            0x00000298
 +#define  NV50_2D_COLOR_KEY_ENABLE                                                     0x0000029c
 +#define  NV50_2D_ROP                                                                  0x000002a0
 +#define  NV50_2D_OPERATION                                                            0x000002ac
 +#define   NV50_2D_OPERATION_SRCCOPY_AND                                                       0x00000000
 +#define   NV50_2D_OPERATION_ROP_AND                                                   0x00000001
 +#define   NV50_2D_OPERATION_BLEND_AND                                                 0x00000002
 +#define   NV50_2D_OPERATION_SRCCOPY                                                   0x00000003
 +#define   NV50_2D_OPERATION_SRCCOPY_PREMULT                                           0x00000004
 +#define   NV50_2D_OPERATION_BLEND_PREMULT                                             0x00000005
 +#define  NV50_2D_PATTERN_FORMAT                                                               0x000002e8
 +#define   NV50_2D_PATTERN_FORMAT_16BPP                                                        0x00000000
 +#define   NV50_2D_PATTERN_FORMAT_15BPP                                                        0x00000001
 +#define   NV50_2D_PATTERN_FORMAT_32BPP                                                        0x00000002
 +#define   NV50_2D_PATTERN_FORMAT_8BPP                                                 0x00000003
 +#define  NV50_2D_PATTERN_COLOR(x)                                                     (0x000002f0+((x)*4))
 +#define  NV50_2D_PATTERN_COLOR__SIZE                                                  0x00000002
 +#define  NV50_2D_PATTERN_BITMAP(x)                                                    (0x000002f8+((x)*4))
 +#define  NV50_2D_PATTERN_BITMAP__SIZE                                                 0x00000002
 +#define  NV50_2D_DRAW_SHAPE                                                           0x00000580
 +#define   NV50_2D_DRAW_SHAPE_POINTS                                                   0x00000000
 +#define   NV50_2D_DRAW_SHAPE_LINES                                                    0x00000001
 +#define   NV50_2D_DRAW_SHAPE_LINE_STRIP                                                       0x00000002
 +#define   NV50_2D_DRAW_SHAPE_TRIANGLES                                                        0x00000003
 +#define   NV50_2D_DRAW_SHAPE_RECTANGLES                                                       0x00000004
 +#define  NV50_2D_DRAW_COLOR_FORMAT                                                    0x00000584
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R32G32B32A32_FLOAT                                        0x000000c0
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R32G32B32A32_SINT                                 0x000000c1
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R32G32B32A32_UINT                                 0x000000c2
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R32G32B32X32_FLOAT                                        0x000000c3
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16B16A16_UNORM                                        0x000000c6
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16B16A16_SNORM                                        0x000000c7
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16B16A16_SINT                                 0x000000c8
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16B16A16_UINT                                 0x000000c9
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16B16A16_FLOAT                                        0x000000ca
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R32G32_FLOAT                                      0x000000cb
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R32G32_SINT                                               0x000000cc
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R32G32_UINT                                               0x000000cd
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16B16X16_FLOAT                                        0x000000ce
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A8R8G8B8_UNORM                                    0x000000cf
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A8R8G8B8_SRGB                                     0x000000d0
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A2B10G10R10_UNORM                                 0x000000d1
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A2B10G10R10_UINT                                  0x000000d2
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A8B8G8R8_UNORM                                    0x000000d5
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A8B8G8R8_SRGB                                     0x000000d6
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A8B8G8R8_SNORM                                    0x000000d7
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A8B8G8R8_SINT                                     0x000000d8
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A8B8G8R8_UINT                                     0x000000d9
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16_UNORM                                      0x000000da
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16_SNORM                                      0x000000db
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16_SINT                                               0x000000dc
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16_UINT                                               0x000000dd
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16G16_FLOAT                                      0x000000de
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A2R10G10B10_UNORM                                 0x000000df
 +#define   NV50_2D_DRAW_COLOR_FORMAT_B10G11R11_FLOAT                                   0x000000e0
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R32_FLOAT                                         0x000000e5
 +#define   NV50_2D_DRAW_COLOR_FORMAT_X8R8G8B8_UNORM                                    0x000000e6
 +#define   NV50_2D_DRAW_COLOR_FORMAT_X8R8G8B8_SRGB                                     0x000000e7
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R5G6B5_UNORM                                      0x000000e8
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A1R5G5B5_UNORM                                    0x000000e9
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R8G8_UNORM                                                0x000000ea
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R8G8_SNORM                                                0x000000eb
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R8G8_SINT                                         0x000000ec
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R8G8_UINT                                         0x000000ed
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16_UNORM                                         0x000000ee
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16_SNORM                                         0x000000ef
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16_SINT                                          0x000000f0
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16_UINT                                          0x000000f1
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R16_FLOAT                                         0x000000f2
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R8_UNORM                                          0x000000f3
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R8_SNORM                                          0x000000f4
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R8_SINT                                           0x000000f5
 +#define   NV50_2D_DRAW_COLOR_FORMAT_R8_UINT                                           0x000000f6
 +#define   NV50_2D_DRAW_COLOR_FORMAT_A8_UNORM                                          0x000000f7
 +#define   NV50_2D_DRAW_COLOR_FORMAT_X1R5G5B5_UNORM                                    0x000000f8
 +#define   NV50_2D_DRAW_COLOR_FORMAT_X8B8G8R8_UNORM                                    0x000000f9
 +#define   NV50_2D_DRAW_COLOR_FORMAT_X8B8G8R8_SRGB                                     0x000000fa
 +#define  NV50_2D_DRAW_COLOR                                                           0x00000588
 +#define  NV50_2D_DRAW_POINT16                                                         0x000005e0
 +#define   NV50_2D_DRAW_POINT16_X_SHIFT                                                        0
 +#define   NV50_2D_DRAW_POINT16_X_MASK                                                 0x0000ffff
 +#define   NV50_2D_DRAW_POINT16_Y_SHIFT                                                        16
 +#define   NV50_2D_DRAW_POINT16_Y_MASK                                                 0xffff0000
 +#define  NV50_2D_DRAW_POINT32_X(x)                                                    (0x00000600+((x)*8))
 +#define  NV50_2D_DRAW_POINT32_X__SIZE                                                 0x00000040
 +#define  NV50_2D_DRAW_POINT32_Y(x)                                                    (0x00000604+((x)*8))
 +#define  NV50_2D_DRAW_POINT32_Y__SIZE                                                 0x00000040
 +#define  NV50_2D_SIFC_BITMAP_ENABLE                                                   0x00000800
 +#define  NV50_2D_SIFC_FORMAT                                                          0x00000804
 +#define   NV50_2D_SIFC_FORMAT_R32G32B32A32_FLOAT                                      0x000000c0
 +#define   NV50_2D_SIFC_FORMAT_R32G32B32A32_SINT                                               0x000000c1
 +#define   NV50_2D_SIFC_FORMAT_R32G32B32A32_UINT                                               0x000000c2
 +#define   NV50_2D_SIFC_FORMAT_R32G32B32X32_FLOAT                                      0x000000c3
 +#define   NV50_2D_SIFC_FORMAT_R16G16B16A16_UNORM                                      0x000000c6
 +#define   NV50_2D_SIFC_FORMAT_R16G16B16A16_SNORM                                      0x000000c7
 +#define   NV50_2D_SIFC_FORMAT_R16G16B16A16_SINT                                               0x000000c8
 +#define   NV50_2D_SIFC_FORMAT_R16G16B16A16_UINT                                               0x000000c9
 +#define   NV50_2D_SIFC_FORMAT_R16G16B16A16_FLOAT                                      0x000000ca
 +#define   NV50_2D_SIFC_FORMAT_R32G32_FLOAT                                            0x000000cb
 +#define   NV50_2D_SIFC_FORMAT_R32G32_SINT                                             0x000000cc
 +#define   NV50_2D_SIFC_FORMAT_R32G32_UINT                                             0x000000cd
 +#define   NV50_2D_SIFC_FORMAT_R16G16B16X16_FLOAT                                      0x000000ce
 +#define   NV50_2D_SIFC_FORMAT_A8R8G8B8_UNORM                                          0x000000cf
 +#define   NV50_2D_SIFC_FORMAT_A8R8G8B8_SRGB                                           0x000000d0
 +#define   NV50_2D_SIFC_FORMAT_A2B10G10R10_UNORM                                               0x000000d1
 +#define   NV50_2D_SIFC_FORMAT_A2B10G10R10_UINT                                                0x000000d2
 +#define   NV50_2D_SIFC_FORMAT_A8B8G8R8_UNORM                                          0x000000d5
 +#define   NV50_2D_SIFC_FORMAT_A8B8G8R8_SRGB                                           0x000000d6
 +#define   NV50_2D_SIFC_FORMAT_A8B8G8R8_SNORM                                          0x000000d7
 +#define   NV50_2D_SIFC_FORMAT_A8B8G8R8_SINT                                           0x000000d8
 +#define   NV50_2D_SIFC_FORMAT_A8B8G8R8_UINT                                           0x000000d9
 +#define   NV50_2D_SIFC_FORMAT_R16G16_UNORM                                            0x000000da
 +#define   NV50_2D_SIFC_FORMAT_R16G16_SNORM                                            0x000000db
 +#define   NV50_2D_SIFC_FORMAT_R16G16_SINT                                             0x000000dc
 +#define   NV50_2D_SIFC_FORMAT_R16G16_UINT                                             0x000000dd
 +#define   NV50_2D_SIFC_FORMAT_R16G16_FLOAT                                            0x000000de
 +#define   NV50_2D_SIFC_FORMAT_A2R10G10B10_UNORM                                               0x000000df
 +#define   NV50_2D_SIFC_FORMAT_B10G11R11_FLOAT                                         0x000000e0
 +#define   NV50_2D_SIFC_FORMAT_R32_FLOAT                                                       0x000000e5
 +#define   NV50_2D_SIFC_FORMAT_X8R8G8B8_UNORM                                          0x000000e6
 +#define   NV50_2D_SIFC_FORMAT_X8R8G8B8_SRGB                                           0x000000e7
 +#define   NV50_2D_SIFC_FORMAT_R5G6B5_UNORM                                            0x000000e8
 +#define   NV50_2D_SIFC_FORMAT_A1R5G5B5_UNORM                                          0x000000e9
 +#define   NV50_2D_SIFC_FORMAT_R8G8_UNORM                                              0x000000ea
 +#define   NV50_2D_SIFC_FORMAT_R8G8_SNORM                                              0x000000eb
 +#define   NV50_2D_SIFC_FORMAT_R8G8_SINT                                                       0x000000ec
 +#define   NV50_2D_SIFC_FORMAT_R8G8_UINT                                                       0x000000ed
 +#define   NV50_2D_SIFC_FORMAT_R16_UNORM                                                       0x000000ee
 +#define   NV50_2D_SIFC_FORMAT_R16_SNORM                                                       0x000000ef
 +#define   NV50_2D_SIFC_FORMAT_R16_SINT                                                        0x000000f0
 +#define   NV50_2D_SIFC_FORMAT_R16_UINT                                                        0x000000f1
 +#define   NV50_2D_SIFC_FORMAT_R16_FLOAT                                                       0x000000f2
 +#define   NV50_2D_SIFC_FORMAT_R8_UNORM                                                        0x000000f3
 +#define   NV50_2D_SIFC_FORMAT_R8_SNORM                                                        0x000000f4
 +#define   NV50_2D_SIFC_FORMAT_R8_SINT                                                 0x000000f5
 +#define   NV50_2D_SIFC_FORMAT_R8_UINT                                                 0x000000f6
 +#define   NV50_2D_SIFC_FORMAT_A8_UNORM                                                        0x000000f7
 +#define   NV50_2D_SIFC_FORMAT_X1R5G5B5_UNORM                                          0x000000f8
 +#define   NV50_2D_SIFC_FORMAT_X8B8G8R8_UNORM                                          0x000000f9
 +#define   NV50_2D_SIFC_FORMAT_X8B8G8R8_SRGB                                           0x000000fa
 +#define  NV50_2D_SIFC_BITMAP_UNK808                                                   0x00000808
 +#define  NV50_2D_SIFC_BITMAP_LSB_FIRST                                                        0x0000080c
 +#define  NV50_2D_SIFC_BITMAP_LINE_PACK_MODE                                           0x00000810
 +#define   NV50_2D_SIFC_BITMAP_LINE_PACK_MODE_PACKED                                   0x00000000
 +#define   NV50_2D_SIFC_BITMAP_LINE_PACK_MODE_ALIGN_BYTE                                       0x00000001
 +#define   NV50_2D_SIFC_BITMAP_LINE_PACK_MODE_ALIGN_WORD                                       0x00000002
 +#define  NV50_2D_SIFC_BITMAP_COLOR_BIT0                                                       0x00000814
 +#define  NV50_2D_SIFC_BITMAP_COLOR_BIT1                                                       0x00000818
 +#define  NV50_2D_SIFC_BITMAP_WRITE_BIT0_ENABLE                                                0x0000081c
 +#define  NV50_2D_SIFC_WIDTH                                                           0x00000838
 +#define  NV50_2D_SIFC_HEIGHT                                                          0x0000083c
 +#define  NV50_2D_SIFC_DX_DU_FRACT                                                     0x00000840
 +#define  NV50_2D_SIFC_DX_DU_INT                                                               0x00000844
 +#define  NV50_2D_SIFC_DY_DV_FRACT                                                     0x00000848
 +#define  NV50_2D_SIFC_DY_DV_INT                                                               0x0000084c
 +#define  NV50_2D_SIFC_DST_X_FRACT                                                     0x00000850
 +#define  NV50_2D_SIFC_DST_X_INT                                                               0x00000854
 +#define  NV50_2D_SIFC_DST_Y_FRACT                                                     0x00000858
 +#define  NV50_2D_SIFC_DST_Y_INT                                                               0x0000085c
 +#define  NV50_2D_SIFC_DATA                                                            0x00000860
 +#define  NV50_2D_BLIT_DST_X                                                           0x000008b0
 +#define  NV50_2D_BLIT_DST_Y                                                           0x000008b4
 +#define  NV50_2D_BLIT_DST_W                                                           0x000008b8
 +#define  NV50_2D_BLIT_DST_H                                                           0x000008bc
 +#define  NV50_2D_BLIT_DU_DX_FRACT                                                     0x000008c0
 +#define  NV50_2D_BLIT_DU_DX_INT                                                               0x000008c4
 +#define  NV50_2D_BLIT_DV_DY_FRACT                                                     0x000008c8
 +#define  NV50_2D_BLIT_DV_DY_INT                                                               0x000008cc
 +#define  NV50_2D_BLIT_SRC_X_FRACT                                                     0x000008d0
 +#define  NV50_2D_BLIT_SRC_X_INT                                                               0x000008d4
 +#define  NV50_2D_BLIT_SRC_Y_FRACT                                                     0x000008d8
 +#define  NV50_2D_BLIT_SRC_Y_INT                                                               0x000008dc
 +
 +
 +#define NV50TCL                                                                               0x00005097
 +
 +#define  NV50TCL_NOP                                                                  0x00000100
 +#define  NV50TCL_NOTIFY                                                                       0x00000104
 +#define  NV50TCL_SERIALIZE                                                            0x00000110
 +#define  NV50TCL_DMA_NOTIFY                                                           0x00000180
 +#define  NV50TCL_DMA_ZETA                                                             0x00000184
 +#define  NV50TCL_DMA_QUERY                                                            0x00000188
 +#define  NV50TCL_DMA_VTXBUF0                                                          0x0000018c
 +#define  NV50TCL_DMA_LOCAL                                                            0x00000190
 +#define  NV50TCL_DMA_STACK                                                            0x00000194
 +#define  NV50TCL_DMA_CODE_CB                                                          0x00000198
 +#define  NV50TCL_DMA_TSC                                                              0x0000019c
 +#define  NV50TCL_DMA_TIC                                                              0x000001a0
 +#define  NV50TCL_DMA_TEXTURE                                                          0x000001a4
 +#define  NV50TCL_DMA_STRMOUT                                                          0x000001a8
- #define  NV50TCL_UNK0F84_ADDRESS_HIGH                                                 0x00000f84
- #define  NV50TCL_UNK0F84_ADDRESS_LOW                                                  0x00000f88
++#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))
 +#define  NV50TCL_RT_ADDRESS_HIGH__SIZE                                                        0x00000008
 +#define  NV50TCL_RT_ADDRESS_LOW(x)                                                    (0x00000204+((x)*32))
 +#define  NV50TCL_RT_ADDRESS_LOW__SIZE                                                 0x00000008
 +#define  NV50TCL_RT_FORMAT(x)                                                         (0x00000208+((x)*32))
 +#define  NV50TCL_RT_FORMAT__SIZE                                                      0x00000008
 +#define   NV50TCL_RT_FORMAT_R32G32B32A32_FLOAT                                                0x000000c0
 +#define   NV50TCL_RT_FORMAT_R32G32B32A32_SINT                                         0x000000c1
 +#define   NV50TCL_RT_FORMAT_R32G32B32A32_UINT                                         0x000000c2
 +#define   NV50TCL_RT_FORMAT_R32G32B32X32_FLOAT                                                0x000000c3
 +#define   NV50TCL_RT_FORMAT_R16G16B16A16_UNORM                                                0x000000c6
 +#define   NV50TCL_RT_FORMAT_R16G16B16A16_SNORM                                                0x000000c7
 +#define   NV50TCL_RT_FORMAT_R16G16B16A16_SINT                                         0x000000c8
 +#define   NV50TCL_RT_FORMAT_R16G16B16A16_UINT                                         0x000000c9
 +#define   NV50TCL_RT_FORMAT_R16G16B16A16_FLOAT                                                0x000000ca
 +#define   NV50TCL_RT_FORMAT_R32G32_FLOAT                                              0x000000cb
 +#define   NV50TCL_RT_FORMAT_R32G32_SINT                                                       0x000000cc
 +#define   NV50TCL_RT_FORMAT_R32G32_UINT                                                       0x000000cd
 +#define   NV50TCL_RT_FORMAT_R16G16B16X16_FLOAT                                                0x000000ce
 +#define   NV50TCL_RT_FORMAT_A8R8G8B8_UNORM                                            0x000000cf
 +#define   NV50TCL_RT_FORMAT_A8R8G8B8_SRGB                                             0x000000d0
 +#define   NV50TCL_RT_FORMAT_A2B10G10R10_UNORM                                         0x000000d1
 +#define   NV50TCL_RT_FORMAT_A2B10G10R10_UINT                                          0x000000d2
 +#define   NV50TCL_RT_FORMAT_A8B8G8R8_UNORM                                            0x000000d5
 +#define   NV50TCL_RT_FORMAT_A8B8G8R8_SRGB                                             0x000000d6
 +#define   NV50TCL_RT_FORMAT_A8B8G8R8_SNORM                                            0x000000d7
 +#define   NV50TCL_RT_FORMAT_A8B8G8R8_SINT                                             0x000000d8
 +#define   NV50TCL_RT_FORMAT_A8B8G8R8_UINT                                             0x000000d9
 +#define   NV50TCL_RT_FORMAT_R16G16_UNORM                                              0x000000da
 +#define   NV50TCL_RT_FORMAT_R16G16_SNORM                                              0x000000db
 +#define   NV50TCL_RT_FORMAT_R16G16_SINT                                                       0x000000dc
 +#define   NV50TCL_RT_FORMAT_R16G16_UINT                                                       0x000000dd
 +#define   NV50TCL_RT_FORMAT_R16G16_FLOAT                                              0x000000de
 +#define   NV50TCL_RT_FORMAT_A2R10G10B10_UNORM                                         0x000000df
 +#define   NV50TCL_RT_FORMAT_B10G11R11_FLOAT                                           0x000000e0
 +#define   NV50TCL_RT_FORMAT_R32_FLOAT                                                 0x000000e5
 +#define   NV50TCL_RT_FORMAT_X8R8G8B8_UNORM                                            0x000000e6
 +#define   NV50TCL_RT_FORMAT_X8R8G8B8_SRGB                                             0x000000e7
 +#define   NV50TCL_RT_FORMAT_R5G6B5_UNORM                                              0x000000e8
 +#define   NV50TCL_RT_FORMAT_A1R5G5B5_UNORM                                            0x000000e9
 +#define   NV50TCL_RT_FORMAT_R8G8_UNORM                                                        0x000000ea
 +#define   NV50TCL_RT_FORMAT_R8G8_SNORM                                                        0x000000eb
 +#define   NV50TCL_RT_FORMAT_R8G8_SINT                                                 0x000000ec
 +#define   NV50TCL_RT_FORMAT_R8G8_UINT                                                 0x000000ed
 +#define   NV50TCL_RT_FORMAT_R16_UNORM                                                 0x000000ee
 +#define   NV50TCL_RT_FORMAT_R16_SNORM                                                 0x000000ef
 +#define   NV50TCL_RT_FORMAT_R16_SINT                                                  0x000000f0
 +#define   NV50TCL_RT_FORMAT_R16_UINT                                                  0x000000f1
 +#define   NV50TCL_RT_FORMAT_R16_FLOAT                                                 0x000000f2
 +#define   NV50TCL_RT_FORMAT_R8_UNORM                                                  0x000000f3
 +#define   NV50TCL_RT_FORMAT_R8_SNORM                                                  0x000000f4
 +#define   NV50TCL_RT_FORMAT_R8_SINT                                                   0x000000f5
 +#define   NV50TCL_RT_FORMAT_R8_UINT                                                   0x000000f6
 +#define   NV50TCL_RT_FORMAT_A8_UNORM                                                  0x000000f7
 +#define   NV50TCL_RT_FORMAT_X1R5G5B5_UNORM                                            0x000000f8
 +#define   NV50TCL_RT_FORMAT_X8B8G8R8_UNORM                                            0x000000f9
 +#define   NV50TCL_RT_FORMAT_X8B8G8R8_SRGB                                             0x000000fa
 +#define  NV50TCL_RT_TILE_MODE(x)                                                      (0x0000020c+((x)*32))
 +#define  NV50TCL_RT_TILE_MODE__SIZE                                                   0x00000008
 +#define  NV50TCL_RT_LAYER_STRIDE(x)                                                   (0x00000210+((x)*32))
 +#define  NV50TCL_RT_LAYER_STRIDE__SIZE                                                        0x00000008
 +#define  NV50TCL_VTX_ATTR_1F(x)                                                               (0x00000300+((x)*4))
 +#define  NV50TCL_VTX_ATTR_1F__SIZE                                                    0x00000010
 +#define  NV50TCL_VTX_ATTR_2H(x)                                                               (0x00000340+((x)*4))
 +#define  NV50TCL_VTX_ATTR_2H__SIZE                                                    0x00000010
 +#define   NV50TCL_VTX_ATTR_2H_X_SHIFT                                                 0
 +#define   NV50TCL_VTX_ATTR_2H_X_MASK                                                  0x0000ffff
 +#define   NV50TCL_VTX_ATTR_2H_Y_SHIFT                                                 16
 +#define   NV50TCL_VTX_ATTR_2H_Y_MASK                                                  0xffff0000
 +#define  NV50TCL_VTX_ATTR_2F_X(x)                                                     (0x00000380+((x)*8))
 +#define  NV50TCL_VTX_ATTR_2F_X__SIZE                                                  0x00000010
 +#define  NV50TCL_VTX_ATTR_2F_Y(x)                                                     (0x00000384+((x)*8))
 +#define  NV50TCL_VTX_ATTR_2F_Y__SIZE                                                  0x00000010
 +#define  NV50TCL_VTX_ATTR_3F_X(x)                                                     (0x00000400+((x)*16))
 +#define  NV50TCL_VTX_ATTR_3F_X__SIZE                                                  0x00000010
 +#define  NV50TCL_VTX_ATTR_3F_Y(x)                                                     (0x00000404+((x)*16))
 +#define  NV50TCL_VTX_ATTR_3F_Y__SIZE                                                  0x00000010
 +#define  NV50TCL_VTX_ATTR_3F_Z(x)                                                     (0x00000408+((x)*16))
 +#define  NV50TCL_VTX_ATTR_3F_Z__SIZE                                                  0x00000010
 +#define  NV50TCL_VTX_ATTR_4F_X(x)                                                     (0x00000500+((x)*16))
 +#define  NV50TCL_VTX_ATTR_4F_X__SIZE                                                  0x00000010
 +#define  NV50TCL_VTX_ATTR_4F_Y(x)                                                     (0x00000504+((x)*16))
 +#define  NV50TCL_VTX_ATTR_4F_Y__SIZE                                                  0x00000010
 +#define  NV50TCL_VTX_ATTR_4F_Z(x)                                                     (0x00000508+((x)*16))
 +#define  NV50TCL_VTX_ATTR_4F_Z__SIZE                                                  0x00000010
 +#define  NV50TCL_VTX_ATTR_4F_W(x)                                                     (0x0000050c+((x)*16))
 +#define  NV50TCL_VTX_ATTR_4F_W__SIZE                                                  0x00000010
 +#define  NV50TCL_VTX_ATTR_4H_0(x)                                                     (0x00000600+((x)*8))
 +#define  NV50TCL_VTX_ATTR_4H_0__SIZE                                                  0x00000010
 +#define   NV50TCL_VTX_ATTR_4H_0_X_SHIFT                                                       0
 +#define   NV50TCL_VTX_ATTR_4H_0_X_MASK                                                        0x0000ffff
 +#define   NV50TCL_VTX_ATTR_4H_0_Y_SHIFT                                                       16
 +#define   NV50TCL_VTX_ATTR_4H_0_Y_MASK                                                        0xffff0000
 +#define  NV50TCL_VTX_ATTR_4H_1(x)                                                     (0x00000604+((x)*8))
 +#define  NV50TCL_VTX_ATTR_4H_1__SIZE                                                  0x00000010
 +#define   NV50TCL_VTX_ATTR_4H_1_Z_SHIFT                                                       0
 +#define   NV50TCL_VTX_ATTR_4H_1_Z_MASK                                                        0x0000ffff
 +#define   NV50TCL_VTX_ATTR_4H_1_W_SHIFT                                                       16
 +#define   NV50TCL_VTX_ATTR_4H_1_W_MASK                                                        0xffff0000
 +#define  NV50TCL_VTX_ATTR_2I(x)                                                               (0x00000680+((x)*4))
 +#define  NV50TCL_VTX_ATTR_2I__SIZE                                                    0x00000010
 +#define   NV50TCL_VTX_ATTR_2I_X_SHIFT                                                 0
 +#define   NV50TCL_VTX_ATTR_2I_X_MASK                                                  0x0000ffff
 +#define   NV50TCL_VTX_ATTR_2I_Y_SHIFT                                                 16
 +#define   NV50TCL_VTX_ATTR_2I_Y_MASK                                                  0xffff0000
 +#define  NV50TCL_VTX_ATTR_2NI(x)                                                      (0x000006c0+((x)*4))
 +#define  NV50TCL_VTX_ATTR_2NI__SIZE                                                   0x00000010
 +#define   NV50TCL_VTX_ATTR_2NI_X_SHIFT                                                        0
 +#define   NV50TCL_VTX_ATTR_2NI_X_MASK                                                 0x0000ffff
 +#define   NV50TCL_VTX_ATTR_2NI_Y_SHIFT                                                        16
 +#define   NV50TCL_VTX_ATTR_2NI_Y_MASK                                                 0xffff0000
 +#define  NV50TCL_VTX_ATTR_4I_0(x)                                                     (0x00000700+((x)*8))
 +#define  NV50TCL_VTX_ATTR_4I_0__SIZE                                                  0x00000010
 +#define   NV50TCL_VTX_ATTR_4I_0_X_SHIFT                                                       0
 +#define   NV50TCL_VTX_ATTR_4I_0_X_MASK                                                        0x0000ffff
 +#define   NV50TCL_VTX_ATTR_4I_0_Y_SHIFT                                                       16
 +#define   NV50TCL_VTX_ATTR_4I_0_Y_MASK                                                        0xffff0000
 +#define  NV50TCL_VTX_ATTR_4I_1(x)                                                     (0x00000704+((x)*8))
 +#define  NV50TCL_VTX_ATTR_4I_1__SIZE                                                  0x00000010
 +#define   NV50TCL_VTX_ATTR_4I_1_Z_SHIFT                                                       0
 +#define   NV50TCL_VTX_ATTR_4I_1_Z_MASK                                                        0x0000ffff
 +#define   NV50TCL_VTX_ATTR_4I_1_W_SHIFT                                                       16
 +#define   NV50TCL_VTX_ATTR_4I_1_W_MASK                                                        0xffff0000
 +#define  NV50TCL_VTX_ATTR_4NI_0(x)                                                    (0x00000780+((x)*8))
 +#define  NV50TCL_VTX_ATTR_4NI_0__SIZE                                                 0x00000010
 +#define   NV50TCL_VTX_ATTR_4NI_0_X_SHIFT                                              0
 +#define   NV50TCL_VTX_ATTR_4NI_0_X_MASK                                                       0x0000ffff
 +#define   NV50TCL_VTX_ATTR_4NI_0_Y_SHIFT                                              16
 +#define   NV50TCL_VTX_ATTR_4NI_0_Y_MASK                                                       0xffff0000
 +#define  NV50TCL_VTX_ATTR_4NI_1(x)                                                    (0x00000784+((x)*8))
 +#define  NV50TCL_VTX_ATTR_4NI_1__SIZE                                                 0x00000010
 +#define   NV50TCL_VTX_ATTR_4NI_1_Z_SHIFT                                              0
 +#define   NV50TCL_VTX_ATTR_4NI_1_Z_MASK                                                       0x0000ffff
 +#define   NV50TCL_VTX_ATTR_4NI_1_W_SHIFT                                              16
 +#define   NV50TCL_VTX_ATTR_4NI_1_W_MASK                                                       0xffff0000
 +#define  NV50TCL_VTX_ATTR_4UB(x)                                                      (0x00000800+((x)*4))
 +#define  NV50TCL_VTX_ATTR_4UB__SIZE                                                   0x00000010
 +#define   NV50TCL_VTX_ATTR_4UB_X_SHIFT                                                        0
 +#define   NV50TCL_VTX_ATTR_4UB_X_MASK                                                 0x000000ff
 +#define   NV50TCL_VTX_ATTR_4UB_Y_SHIFT                                                        8
 +#define   NV50TCL_VTX_ATTR_4UB_Y_MASK                                                 0x0000ff00
 +#define   NV50TCL_VTX_ATTR_4UB_Z_SHIFT                                                        16
 +#define   NV50TCL_VTX_ATTR_4UB_Z_MASK                                                 0x00ff0000
 +#define   NV50TCL_VTX_ATTR_4UB_W_SHIFT                                                        24
 +#define   NV50TCL_VTX_ATTR_4UB_W_MASK                                                 0xff000000
 +#define  NV50TCL_VTX_ATTR_4B(x)                                                               (0x00000840+((x)*4))
 +#define  NV50TCL_VTX_ATTR_4B__SIZE                                                    0x00000010
 +#define   NV50TCL_VTX_ATTR_4B_X_SHIFT                                                 0
 +#define   NV50TCL_VTX_ATTR_4B_X_MASK                                                  0x000000ff
 +#define   NV50TCL_VTX_ATTR_4B_Y_SHIFT                                                 8
 +#define   NV50TCL_VTX_ATTR_4B_Y_MASK                                                  0x0000ff00
 +#define   NV50TCL_VTX_ATTR_4B_Z_SHIFT                                                 16
 +#define   NV50TCL_VTX_ATTR_4B_Z_MASK                                                  0x00ff0000
 +#define   NV50TCL_VTX_ATTR_4B_W_SHIFT                                                 24
 +#define   NV50TCL_VTX_ATTR_4B_W_MASK                                                  0xff000000
 +#define  NV50TCL_VTX_ATTR_4NUB(x)                                                     (0x00000880+((x)*4))
 +#define  NV50TCL_VTX_ATTR_4NUB__SIZE                                                  0x00000010
 +#define   NV50TCL_VTX_ATTR_4NUB_X_SHIFT                                                       0
 +#define   NV50TCL_VTX_ATTR_4NUB_X_MASK                                                        0x000000ff
 +#define   NV50TCL_VTX_ATTR_4NUB_Y_SHIFT                                                       8
 +#define   NV50TCL_VTX_ATTR_4NUB_Y_MASK                                                        0x0000ff00
 +#define   NV50TCL_VTX_ATTR_4NUB_Z_SHIFT                                                       16
 +#define   NV50TCL_VTX_ATTR_4NUB_Z_MASK                                                        0x00ff0000
 +#define   NV50TCL_VTX_ATTR_4NUB_W_SHIFT                                                       24
 +#define   NV50TCL_VTX_ATTR_4NUB_W_MASK                                                        0xff000000
 +#define  NV50TCL_VTX_ATTR_4NB(x)                                                      (0x000008c0+((x)*4))
 +#define  NV50TCL_VTX_ATTR_4NB__SIZE                                                   0x00000010
 +#define   NV50TCL_VTX_ATTR_4NB_X_SHIFT                                                        0
 +#define   NV50TCL_VTX_ATTR_4NB_X_MASK                                                 0x000000ff
 +#define   NV50TCL_VTX_ATTR_4NB_Y_SHIFT                                                        8
 +#define   NV50TCL_VTX_ATTR_4NB_Y_MASK                                                 0x0000ff00
 +#define   NV50TCL_VTX_ATTR_4NB_Z_SHIFT                                                        16
 +#define   NV50TCL_VTX_ATTR_4NB_Z_MASK                                                 0x00ff0000
 +#define   NV50TCL_VTX_ATTR_4NB_W_SHIFT                                                        24
 +#define   NV50TCL_VTX_ATTR_4NB_W_MASK                                                 0xff000000
 +#define  NV50TCL_VERTEX_ARRAY_FORMAT(x)                                                       (0x00000900+((x)*16))
 +#define  NV50TCL_VERTEX_ARRAY_FORMAT__SIZE                                            0x00000010
 +#define   NV50TCL_VERTEX_ARRAY_FORMAT_STRIDE_SHIFT                                    0
 +#define   NV50TCL_VERTEX_ARRAY_FORMAT_STRIDE_MASK                                     0x00000fff
 +#define   NV50TCL_VERTEX_ARRAY_FORMAT_ENABLE                                          (1 << 29)
 +#define  NV50TCL_VERTEX_ARRAY_START_HIGH(x)                                           (0x00000904+((x)*16))
 +#define  NV50TCL_VERTEX_ARRAY_START_HIGH__SIZE                                                0x00000010
 +#define  NV50TCL_VERTEX_ARRAY_START_LOW(x)                                            (0x00000908+((x)*16))
 +#define  NV50TCL_VERTEX_ARRAY_START_LOW__SIZE                                         0x00000010
 +#define  NV50TCL_VIEWPORT_SCALE_X(x)                                                  (0x00000a00+((x)*32))
 +#define  NV50TCL_VIEWPORT_SCALE_X__SIZE                                                       0x00000010
 +#define  NV50TCL_VIEWPORT_SCALE_Y(x)                                                  (0x00000a04+((x)*32))
 +#define  NV50TCL_VIEWPORT_SCALE_Y__SIZE                                                       0x00000010
 +#define  NV50TCL_VIEWPORT_SCALE_Z(x)                                                  (0x00000a08+((x)*32))
 +#define  NV50TCL_VIEWPORT_SCALE_Z__SIZE                                                       0x00000010
 +#define  NV50TCL_VIEWPORT_TRANSLATE_X(x)                                              (0x00000a0c+((x)*32))
 +#define  NV50TCL_VIEWPORT_TRANSLATE_X__SIZE                                           0x00000010
 +#define  NV50TCL_VIEWPORT_TRANSLATE_Y(x)                                              (0x00000a10+((x)*32))
 +#define  NV50TCL_VIEWPORT_TRANSLATE_Y__SIZE                                           0x00000010
 +#define  NV50TCL_VIEWPORT_TRANSLATE_Z(x)                                              (0x00000a14+((x)*32))
 +#define  NV50TCL_VIEWPORT_TRANSLATE_Z__SIZE                                           0x00000010
 +#define  NV50TCL_VIEWPORT_HORIZ(x)                                                    (0x00000c00+((x)*16))
 +#define  NV50TCL_VIEWPORT_HORIZ__SIZE                                                 0x00000010
 +#define   NV50TCL_VIEWPORT_HORIZ_X_SHIFT                                              0
 +#define   NV50TCL_VIEWPORT_HORIZ_X_MASK                                                       0x0000ffff
 +#define   NV50TCL_VIEWPORT_HORIZ_W_SHIFT                                              16
 +#define   NV50TCL_VIEWPORT_HORIZ_W_MASK                                                       0xffff0000
 +#define  NV50TCL_VIEWPORT_VERT(x)                                                     (0x00000c04+((x)*16))
 +#define  NV50TCL_VIEWPORT_VERT__SIZE                                                  0x00000010
 +#define   NV50TCL_VIEWPORT_VERT_Y_SHIFT                                                       0
 +#define   NV50TCL_VIEWPORT_VERT_Y_MASK                                                        0x0000ffff
 +#define   NV50TCL_VIEWPORT_VERT_H_SHIFT                                                       16
 +#define   NV50TCL_VIEWPORT_VERT_H_MASK                                                        0xffff0000
 +#define  NV50TCL_DEPTH_RANGE_NEAR(x)                                                  (0x00000c08+((x)*16))
 +#define  NV50TCL_DEPTH_RANGE_NEAR__SIZE                                                       0x00000010
 +#define  NV50TCL_DEPTH_RANGE_FAR(x)                                                   (0x00000c0c+((x)*16))
 +#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))
 +#define  NV50TCL_CLEAR_COLOR__SIZE                                                    0x00000004
 +#define  NV50TCL_CLEAR_DEPTH                                                          0x00000d90
 +#define  NV50TCL_STACK_ADDRESS_HIGH                                                   0x00000d94
 +#define  NV50TCL_STACK_ADDRESS_LOW                                                    0x00000d98
 +#define  NV50TCL_STACK_SIZE_LOG                                                               0x00000d9c
 +#define  NV50TCL_CLEAR_STENCIL                                                                0x00000da0
 +#define  NV50TCL_STRMOUT_PRIMITIVE_COUNT                                              0x00000da8
 +#define  NV50TCL_POLYGON_MODE_FRONT                                                   0x00000dac
 +#define   NV50TCL_POLYGON_MODE_FRONT_POINT                                            0x00001b00
 +#define   NV50TCL_POLYGON_MODE_FRONT_LINE                                             0x00001b01
 +#define   NV50TCL_POLYGON_MODE_FRONT_FILL                                             0x00001b02
 +#define  NV50TCL_POLYGON_MODE_BACK                                                    0x00000db0
 +#define   NV50TCL_POLYGON_MODE_BACK_POINT                                             0x00001b00
 +#define   NV50TCL_POLYGON_MODE_BACK_LINE                                              0x00001b01
 +#define   NV50TCL_POLYGON_MODE_BACK_FILL                                              0x00001b02
 +#define  NV50TCL_POLYGON_SMOOTH_ENABLE                                                        0x00000db4
 +#define  NV50TCL_POLYGON_OFFSET_POINT_ENABLE                                          0x00000dc0
 +#define  NV50TCL_POLYGON_OFFSET_LINE_ENABLE                                           0x00000dc4
 +#define  NV50TCL_POLYGON_OFFSET_FILL_ENABLE                                           0x00000dc8
 +#define  NV50TCL_WATCHDOG_TIMER                                                               0x00000de4
 +#define  NV50TCL_WINDOW_OFFSET_X                                                      0x00000df8
 +#define  NV50TCL_WINDOW_OFFSET_Y                                                      0x00000dfc
 +#define  NV50TCL_SCISSOR_ENABLE(x)                                                    (0x00000e00+((x)*16))
 +#define  NV50TCL_SCISSOR_ENABLE__SIZE                                                 0x00000010
 +#define  NV50TCL_SCISSOR_HORIZ(x)                                                     (0x00000e04+((x)*16))
 +#define  NV50TCL_SCISSOR_HORIZ__SIZE                                                  0x00000010
 +#define   NV50TCL_SCISSOR_HORIZ_MIN_SHIFT                                             0
 +#define   NV50TCL_SCISSOR_HORIZ_MIN_MASK                                              0x0000ffff
 +#define   NV50TCL_SCISSOR_HORIZ_MAX_SHIFT                                             16
 +#define   NV50TCL_SCISSOR_HORIZ_MAX_MASK                                              0xffff0000
 +#define  NV50TCL_SCISSOR_VERT(x)                                                      (0x00000e08+((x)*16))
 +#define  NV50TCL_SCISSOR_VERT__SIZE                                                   0x00000010
 +#define   NV50TCL_SCISSOR_VERT_MIN_SHIFT                                              0
 +#define   NV50TCL_SCISSOR_VERT_MIN_MASK                                                       0x0000ffff
 +#define   NV50TCL_SCISSOR_VERT_MAX_SHIFT                                              16
 +#define   NV50TCL_SCISSOR_VERT_MAX_MASK                                                       0xffff0000
 +#define  NV50TCL_CB_ADDR                                                              0x00000f00
 +#define   NV50TCL_CB_ADDR_ID_SHIFT                                                    8
 +#define   NV50TCL_CB_ADDR_ID_MASK                                                     0x003fff00
 +#define   NV50TCL_CB_ADDR_BUFFER_SHIFT                                                        0
 +#define   NV50TCL_CB_ADDR_BUFFER_MASK                                                 0x0000007f
 +#define  NV50TCL_CB_DATA(x)                                                           (0x00000f04+((x)*4))
 +#define  NV50TCL_CB_DATA__SIZE                                                                0x00000010
 +#define  NV50TCL_LOCAL_WARPS_LOG_ALLOC                                                        0x00000f44
 +#define  NV50TCL_LOCAL_WARPS_NO_CLAMP                                                 0x00000f48
 +#define  NV50TCL_STACK_WARPS_LOG_ALLOC                                                        0x00000f4c
 +#define  NV50TCL_STACK_WARPS_NO_CLAMP                                                 0x00000f50
 +#define  NV50TCL_STENCIL_BACK_FUNC_REF                                                        0x00000f54
 +#define  NV50TCL_STENCIL_BACK_MASK                                                    0x00000f58
 +#define  NV50TCL_STENCIL_BACK_FUNC_MASK                                                       0x00000f5c
 +#define  NV50TCL_GP_ADDRESS_HIGH                                                      0x00000f70
 +#define  NV50TCL_GP_ADDRESS_LOW                                                               0x00000f74
 +#define  NV50TCL_VP_ADDRESS_HIGH                                                      0x00000f7c
 +#define  NV50TCL_VP_ADDRESS_LOW                                                               0x00000f80
- #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_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
 +#define   NV50TCL_ZETA_FORMAT_Z32_FLOAT                                                       0x0000000a
 +#define   NV50TCL_ZETA_FORMAT_Z16_UNORM                                                       0x00000013
 +#define   NV50TCL_ZETA_FORMAT_Z24S8_UNORM                                             0x00000014
 +#define   NV50TCL_ZETA_FORMAT_X8Z24_UNORM                                             0x00000015
 +#define   NV50TCL_ZETA_FORMAT_S8Z24_UNORM                                             0x00000016
 +#define   NV50TCL_ZETA_FORMAT_Z32_FLOAT_X24S8_UNORM                                   0x00000019
 +#define  NV50TCL_ZETA_TILE_MODE                                                               0x00000fec
 +#define  NV50TCL_ZETA_LAYER_STRIDE                                                    0x00000ff0
 +#define  NV50TCL_SCREEN_SCISSOR_HORIZ                                                 0x00000ff4
 +#define   NV50TCL_SCREEN_SCISSOR_HORIZ_W_SHIFT                                                16
 +#define   NV50TCL_SCREEN_SCISSOR_HORIZ_W_MASK                                         0xffff0000
 +#define   NV50TCL_SCREEN_SCISSOR_HORIZ_X_SHIFT                                                0
 +#define   NV50TCL_SCREEN_SCISSOR_HORIZ_X_MASK                                         0x0000ffff
 +#define  NV50TCL_SCREEN_SCISSOR_VERT                                                  0x00000ff8
 +#define   NV50TCL_SCREEN_SCISSOR_VERT_H_SHIFT                                         16
 +#define   NV50TCL_SCREEN_SCISSOR_VERT_H_MASK                                          0xffff0000
 +#define   NV50TCL_SCREEN_SCISSOR_VERT_Y_SHIFT                                         0
 +#define   NV50TCL_SCREEN_SCISSOR_VERT_Y_MASK                                          0x0000ffff
 +#define  NV50TCL_VERTEX_ARRAY_LIMIT_HIGH(x)                                           (0x00001080+((x)*8))
 +#define  NV50TCL_VERTEX_ARRAY_LIMIT_HIGH__SIZE                                                0x00000010
 +#define  NV50TCL_VERTEX_ARRAY_LIMIT_LOW(x)                                            (0x00001084+((x)*8))
 +#define  NV50TCL_VERTEX_ARRAY_LIMIT_LOW__SIZE                                         0x00000010
 +#define  NV50TCL_RT_CONTROL                                                           0x0000121c
 +#define   NV50TCL_RT_CONTROL_COUNT_SHIFT                                              0
 +#define   NV50TCL_RT_CONTROL_COUNT_MASK                                                       0x0000000f
 +#define   NV50TCL_RT_CONTROL_MAP0_SHIFT                                                       4
 +#define   NV50TCL_RT_CONTROL_MAP0_MASK                                                        0x00000070
 +#define   NV50TCL_RT_CONTROL_MAP1_SHIFT                                                       7
 +#define   NV50TCL_RT_CONTROL_MAP1_MASK                                                        0x00000380
 +#define   NV50TCL_RT_CONTROL_MAP2_SHIFT                                                       10
 +#define   NV50TCL_RT_CONTROL_MAP2_MASK                                                        0x00001c00
 +#define   NV50TCL_RT_CONTROL_MAP3_SHIFT                                                       13
 +#define   NV50TCL_RT_CONTROL_MAP3_MASK                                                        0x0000e000
 +#define   NV50TCL_RT_CONTROL_MAP4_SHIFT                                                       16
 +#define   NV50TCL_RT_CONTROL_MAP4_MASK                                                        0x00070000
 +#define   NV50TCL_RT_CONTROL_MAP5_SHIFT                                                       19
 +#define   NV50TCL_RT_CONTROL_MAP5_MASK                                                        0x00380000
 +#define   NV50TCL_RT_CONTROL_MAP6_SHIFT                                                       22
 +#define   NV50TCL_RT_CONTROL_MAP6_MASK                                                        0x01c00000
 +#define   NV50TCL_RT_CONTROL_MAP7_SHIFT                                                       25
 +#define   NV50TCL_RT_CONTROL_MAP7_MASK                                                        0x0e000000
 +#define  NV50TCL_RT_ARRAY_MODE                                                                0x00001224
 +#define   NV50TCL_RT_ARRAY_MODE_LAYERS_SHIFT                                          0
 +#define   NV50TCL_RT_ARRAY_MODE_LAYERS_MASK                                           0x0000ffff
 +#define   NV50TCL_RT_ARRAY_MODE_VOLUME                                                        (1 << 16)
 +#define  NV50TCL_ZETA_HORIZ                                                           0x00001228
 +#define  NV50TCL_ZETA_VERT                                                            0x0000122c
 +#define  NV50TCL_ZETA_ARRAY_MODE                                                      0x00001230
 +#define   NV50TCL_ZETA_ARRAY_MODE_LAYERS_SHIFT                                                0
 +#define   NV50TCL_ZETA_ARRAY_MODE_LAYERS_MASK                                         0x0000ffff
 +#define   NV50TCL_ZETA_ARRAY_MODE_UNK                                                 (1 << 16)
 +#define  NV50TCL_LINKED_TSC                                                           0x00001234
 +#define  NV50TCL_RT_HORIZ(x)                                                          (0x00001240+((x)*8))
 +#define  NV50TCL_RT_HORIZ__SIZE                                                               0x00000008
 +#define  NV50TCL_RT_VERT(x)                                                           (0x00001244+((x)*8))
 +#define  NV50TCL_RT_VERT__SIZE                                                                0x00000008
 +#define  NV50TCL_CB_DEF_ADDRESS_HIGH                                                  0x00001280
 +#define  NV50TCL_CB_DEF_ADDRESS_LOW                                                   0x00001284
 +#define  NV50TCL_CB_DEF_SET                                                           0x00001288
 +#define   NV50TCL_CB_DEF_SET_SIZE_SHIFT                                                       0
 +#define   NV50TCL_CB_DEF_SET_SIZE_MASK                                                        0x0000ffff
 +#define   NV50TCL_CB_DEF_SET_BUFFER_SHIFT                                             16
 +#define   NV50TCL_CB_DEF_SET_BUFFER_MASK                                              0x007f0000
 +#define  NV50TCL_STRMOUT_BUFFERS_CTRL                                                 0x00001294
 +#define   NV50TCL_STRMOUT_BUFFERS_CTRL_INTERLEAVED                                    (1 <<  0)
 +#define   NV50TCL_STRMOUT_BUFFERS_CTRL_SEPARATE_SHIFT                                 4
 +#define   NV50TCL_STRMOUT_BUFFERS_CTRL_SEPARATE_MASK                                  0x000000f0
 +#define   NV50TCL_STRMOUT_BUFFERS_CTRL_STRIDE_SHIFT                                   8
 +#define   NV50TCL_STRMOUT_BUFFERS_CTRL_STRIDE_MASK                                    0x0000ff00
 +#define  NV50TCL_FP_RESULT_COUNT                                                      0x00001298
 +#define  NV50TCL_DEPTH_TEST_ENABLE                                                    0x000012cc
 +#define  NV50TCL_SHADE_MODEL                                                          0x000012d4
 +#define   NV50TCL_SHADE_MODEL_FLAT                                                    0x00001d00
 +#define   NV50TCL_SHADE_MODEL_SMOOTH                                                  0x00001d01
 +#define  NV50TCL_LOCAL_ADDRESS_HIGH                                                   0x000012d8
 +#define  NV50TCL_LOCAL_ADDRESS_LOW                                                    0x000012dc
 +#define  NV50TCL_LOCAL_SIZE_LOG                                                               0x000012e0
 +#define  NV50TCL_DEPTH_WRITE_ENABLE                                                   0x000012e8
 +#define  NV50TCL_ALPHA_TEST_ENABLE                                                    0x000012ec
 +#define  NV50TCL_PM_SET(x)                                                            (0x000012f0+((x)*4))
 +#define  NV50TCL_PM_SET__SIZE                                                         0x00000004
 +#define  NV50TCL_VB_ELEMENT_U8_SETUP                                                  0x00001300
 +#define   NV50TCL_VB_ELEMENT_U8_SETUP_OFFSET_SHIFT                                    30
 +#define   NV50TCL_VB_ELEMENT_U8_SETUP_OFFSET_MASK                                     0xc0000000
 +#define   NV50TCL_VB_ELEMENT_U8_SETUP_COUNT_SHIFT                                     0
 +#define   NV50TCL_VB_ELEMENT_U8_SETUP_COUNT_MASK                                      0x3fffffff
 +#define  NV50TCL_VB_ELEMENT_U8                                                                0x00001304
 +#define   NV50TCL_VB_ELEMENT_U8_I0_SHIFT                                              0
 +#define   NV50TCL_VB_ELEMENT_U8_I0_MASK                                                       0x000000ff
 +#define   NV50TCL_VB_ELEMENT_U8_I1_SHIFT                                              8
 +#define   NV50TCL_VB_ELEMENT_U8_I1_MASK                                                       0x0000ff00
 +#define   NV50TCL_VB_ELEMENT_U8_I2_SHIFT                                              16
 +#define   NV50TCL_VB_ELEMENT_U8_I2_MASK                                                       0x00ff0000
 +#define   NV50TCL_VB_ELEMENT_U8_I3_SHIFT                                              24
 +#define   NV50TCL_VB_ELEMENT_U8_I3_MASK                                                       0xff000000
 +#define  NV50TCL_DEPTH_TEST_FUNC                                                      0x0000130c
 +#define   NV50TCL_DEPTH_TEST_FUNC_NEVER                                                       0x00000200
 +#define   NV50TCL_DEPTH_TEST_FUNC_LESS                                                        0x00000201
 +#define   NV50TCL_DEPTH_TEST_FUNC_EQUAL                                                       0x00000202
 +#define   NV50TCL_DEPTH_TEST_FUNC_LEQUAL                                              0x00000203
 +#define   NV50TCL_DEPTH_TEST_FUNC_GREATER                                             0x00000204
 +#define   NV50TCL_DEPTH_TEST_FUNC_NOTEQUAL                                            0x00000205
 +#define   NV50TCL_DEPTH_TEST_FUNC_GEQUAL                                              0x00000206
 +#define   NV50TCL_DEPTH_TEST_FUNC_ALWAYS                                              0x00000207
 +#define  NV50TCL_ALPHA_TEST_REF                                                               0x00001310
 +#define  NV50TCL_ALPHA_TEST_FUNC                                                      0x00001314
 +#define   NV50TCL_ALPHA_TEST_FUNC_NEVER                                                       0x00000200
 +#define   NV50TCL_ALPHA_TEST_FUNC_LESS                                                        0x00000201
 +#define   NV50TCL_ALPHA_TEST_FUNC_EQUAL                                                       0x00000202
 +#define   NV50TCL_ALPHA_TEST_FUNC_LEQUAL                                              0x00000203
 +#define   NV50TCL_ALPHA_TEST_FUNC_GREATER                                             0x00000204
 +#define   NV50TCL_ALPHA_TEST_FUNC_NOTEQUAL                                            0x00000205
 +#define   NV50TCL_ALPHA_TEST_FUNC_GEQUAL                                              0x00000206
 +#define   NV50TCL_ALPHA_TEST_FUNC_ALWAYS                                              0x00000207
 +#define  NV50TCL_BLEND_COLOR(x)                                                               (0x0000131c+((x)*4))
 +#define  NV50TCL_BLEND_COLOR__SIZE                                                    0x00000004
 +#define  NV50TCL_TIC_FLUSH                                                            0x00001330
 +#define  NV50TCL_TSC_FLUSH                                                            0x00001334
 +#define  NV50TCL_TEX_CACHE_CTL                                                                0x00001338
 +#define  NV50TCL_BLEND_EQUATION_RGB                                                   0x00001340
 +#define   NV50TCL_BLEND_EQUATION_RGB_FUNC_ADD                                         0x00008006
 +#define   NV50TCL_BLEND_EQUATION_RGB_MIN                                              0x00008007
 +#define   NV50TCL_BLEND_EQUATION_RGB_MAX                                              0x00008008
 +#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_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_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_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_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
 +#define   NV50TCL_BLEND_EQUATION_ALPHA_MAX                                            0x00008008
 +#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_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_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_MULTISAMPLE_SAMPLES_LOG2                                             0x000015d0
++#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
 +#define  NV50TCL_STENCIL_FRONT_OP_FAIL                                                        0x00001384
 +#define   NV50TCL_STENCIL_FRONT_OP_FAIL_ZERO                                          0x00000000
 +#define   NV50TCL_STENCIL_FRONT_OP_FAIL_INVERT                                                0x0000150a
 +#define   NV50TCL_STENCIL_FRONT_OP_FAIL_KEEP                                          0x00001e00
 +#define   NV50TCL_STENCIL_FRONT_OP_FAIL_REPLACE                                               0x00001e01
 +#define   NV50TCL_STENCIL_FRONT_OP_FAIL_INCR                                          0x00001e02
 +#define   NV50TCL_STENCIL_FRONT_OP_FAIL_DECR                                          0x00001e03
 +#define   NV50TCL_STENCIL_FRONT_OP_FAIL_INCR_WRAP                                     0x00008507
 +#define   NV50TCL_STENCIL_FRONT_OP_FAIL_DECR_WRAP                                     0x00008508
 +#define  NV50TCL_STENCIL_FRONT_OP_ZFAIL                                                       0x00001388
 +#define   NV50TCL_STENCIL_FRONT_OP_ZFAIL_ZERO                                         0x00000000
 +#define   NV50TCL_STENCIL_FRONT_OP_ZFAIL_INVERT                                               0x0000150a
 +#define   NV50TCL_STENCIL_FRONT_OP_ZFAIL_KEEP                                         0x00001e00
 +#define   NV50TCL_STENCIL_FRONT_OP_ZFAIL_REPLACE                                      0x00001e01
 +#define   NV50TCL_STENCIL_FRONT_OP_ZFAIL_INCR                                         0x00001e02
 +#define   NV50TCL_STENCIL_FRONT_OP_ZFAIL_DECR                                         0x00001e03
 +#define   NV50TCL_STENCIL_FRONT_OP_ZFAIL_INCR_WRAP                                    0x00008507
 +#define   NV50TCL_STENCIL_FRONT_OP_ZFAIL_DECR_WRAP                                    0x00008508
 +#define  NV50TCL_STENCIL_FRONT_OP_ZPASS                                                       0x0000138c
 +#define   NV50TCL_STENCIL_FRONT_OP_ZPASS_ZERO                                         0x00000000
 +#define   NV50TCL_STENCIL_FRONT_OP_ZPASS_INVERT                                               0x0000150a
 +#define   NV50TCL_STENCIL_FRONT_OP_ZPASS_KEEP                                         0x00001e00
 +#define   NV50TCL_STENCIL_FRONT_OP_ZPASS_REPLACE                                      0x00001e01
 +#define   NV50TCL_STENCIL_FRONT_OP_ZPASS_INCR                                         0x00001e02
 +#define   NV50TCL_STENCIL_FRONT_OP_ZPASS_DECR                                         0x00001e03
 +#define   NV50TCL_STENCIL_FRONT_OP_ZPASS_INCR_WRAP                                    0x00008507
 +#define   NV50TCL_STENCIL_FRONT_OP_ZPASS_DECR_WRAP                                    0x00008508
 +#define  NV50TCL_STENCIL_FRONT_FUNC_FUNC                                              0x00001390
 +#define   NV50TCL_STENCIL_FRONT_FUNC_FUNC_NEVER                                               0x00000200
 +#define   NV50TCL_STENCIL_FRONT_FUNC_FUNC_LESS                                                0x00000201
 +#define   NV50TCL_STENCIL_FRONT_FUNC_FUNC_EQUAL                                               0x00000202
 +#define   NV50TCL_STENCIL_FRONT_FUNC_FUNC_LEQUAL                                      0x00000203
 +#define   NV50TCL_STENCIL_FRONT_FUNC_FUNC_GREATER                                     0x00000204
 +#define   NV50TCL_STENCIL_FRONT_FUNC_FUNC_NOTEQUAL                                    0x00000205
 +#define   NV50TCL_STENCIL_FRONT_FUNC_FUNC_GEQUAL                                      0x00000206
 +#define   NV50TCL_STENCIL_FRONT_FUNC_FUNC_ALWAYS                                      0x00000207
 +#define  NV50TCL_STENCIL_FRONT_FUNC_REF                                                       0x00001394
 +#define  NV50TCL_STENCIL_FRONT_MASK                                                   0x00001398
 +#define  NV50TCL_STENCIL_FRONT_FUNC_MASK                                              0x0000139c
 +#define  NV50TCL_FRAG_COLOR_CLAMP_EN                                                  0x000013a8
 +#define  NV50TCL_Y_ORIGIN_BOTTOM                                                      0x000013ac
 +#define  NV50TCL_LINE_WIDTH                                                           0x000013b0
 +#define  NV50TCL_TEX_LIMITS(x)                                                                (0x000013b4+((x)*4))
 +#define  NV50TCL_TEX_LIMITS__SIZE                                                     0x00000003
 +#define   NV50TCL_TEX_LIMITS_SAMPLERS_LOG2_SHIFT                                      0
 +#define   NV50TCL_TEX_LIMITS_SAMPLERS_LOG2_MASK                                               0x0000000f
 +#define   NV50TCL_TEX_LIMITS_TEXTURES_LOG2_SHIFT                                      4
 +#define   NV50TCL_TEX_LIMITS_TEXTURES_LOG2_MASK                                               0x000000f0
 +#define  NV50TCL_POINT_COORD_REPLACE_MAP(x)                                           (0x000013c0+((x)*4))
 +#define  NV50TCL_POINT_COORD_REPLACE_MAP__SIZE                                                0x00000008
 +#define  NV50TCL_VP_START_ID                                                          0x0000140c
 +#define  NV50TCL_GP_START_ID                                                          0x00001410
 +#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
 +#define   NV50TCL_BIND_TSC_VALID                                                      (1 <<  0)
 +#define   NV50TCL_BIND_TSC_SAMPLER_SHIFT                                              4
 +#define   NV50TCL_BIND_TSC_SAMPLER_MASK                                                       0x000000f0
 +#define   NV50TCL_BIND_TSC_TSC_SHIFT                                                  12
 +#define   NV50TCL_BIND_TSC_TSC_MASK                                                   0x001ff000
 +#define  NV50TCL_BIND_TIC(x)                                                          (0x00001448+((x)*8))
 +#define  NV50TCL_BIND_TIC__SIZE                                                               0x00000003
 +#define   NV50TCL_BIND_TIC_VALID                                                      (1 <<  0)
 +#define   NV50TCL_BIND_TIC_TEXTURE_SHIFT                                              1
 +#define   NV50TCL_BIND_TIC_TEXTURE_MASK                                                       0x000001fe
 +#define   NV50TCL_BIND_TIC_TIC_SHIFT                                                  9
 +#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)
 +#define   NV50TCL_VP_CLIP_DISTANCE_ENABLE_2                                           (1 <<  2)
 +#define   NV50TCL_VP_CLIP_DISTANCE_ENABLE_3                                           (1 <<  3)
 +#define   NV50TCL_VP_CLIP_DISTANCE_ENABLE_4                                           (1 <<  4)
 +#define   NV50TCL_VP_CLIP_DISTANCE_ENABLE_5                                           (1 <<  5)
 +#define   NV50TCL_VP_CLIP_DISTANCE_ENABLE_6                                           (1 <<  6)
 +#define   NV50TCL_VP_CLIP_DISTANCE_ENABLE_7                                           (1 <<  7)
 +#define  NV50TCL_SAMPLECNT_ENABLE                                                     0x00001514
 +#define  NV50TCL_POINT_SIZE                                                           0x00001518
 +#define  NV50TCL_POINT_SPRITE_ENABLE                                                  0x00001520
 +#define  NV50TCL_SAMPLECNT_RESET                                                      0x00001530
 +#define  NV50TCL_ZETA_ENABLE                                                          0x00001538
 +#define  NV50TCL_MULTISAMPLE_CTRL                                                     0x0000153c
 +#define   NV50TCL_MULTISAMPLE_CTRL_ALPHA_TO_COVERAGE                                  (1 <<  0)
 +#define   NV50TCL_MULTISAMPLE_CTRL_ALPHA_TO_ONE                                               (1 <<  4)
 +#define  NV50TCL_NOPERSPECTIVE_BITMAP(x)                                              (0x00001540+((x)*4))
 +#define  NV50TCL_NOPERSPECTIVE_BITMAP__SIZE                                           0x00000004
 +#define  NV50TCL_COND_ADDRESS_HIGH                                                    0x00001550
 +#define  NV50TCL_COND_ADDRESS_LOW                                                     0x00001554
 +#define  NV50TCL_COND_MODE                                                            0x00001558
 +#define   NV50TCL_COND_MODE_NEVER                                                     0x00000000
 +#define   NV50TCL_COND_MODE_ALWAYS                                                    0x00000001
 +#define   NV50TCL_COND_MODE_RES                                                               0x00000002
 +#define   NV50TCL_COND_MODE_NOT_RES_AND_NOT_ID                                                0x00000003
 +#define   NV50TCL_COND_MODE_RES_OR_ID                                                 0x00000004
 +#define  NV50TCL_TSC_ADDRESS_HIGH                                                     0x0000155c
 +#define  NV50TCL_TSC_ADDRESS_LOW                                                      0x00001560
 +#define  NV50TCL_TSC_LIMIT                                                            0x00001564
 +#define  NV50TCL_POLYGON_OFFSET_FACTOR                                                        0x0000156c
 +#define  NV50TCL_LINE_SMOOTH_ENABLE                                                   0x00001570
 +#define  NV50TCL_TIC_ADDRESS_HIGH                                                     0x00001574
 +#define  NV50TCL_TIC_ADDRESS_LOW                                                      0x00001578
 +#define  NV50TCL_TIC_LIMIT                                                            0x0000157c
 +#define  NV50TCL_PM_CONTROL(x)                                                                (0x00001580+((x)*4))
 +#define  NV50TCL_PM_CONTROL__SIZE                                                     0x00000004
 +#define   NV50TCL_PM_CONTROL_UNK0                                                     (1 <<  0)
 +#define   NV50TCL_PM_CONTROL_UNK1_SHIFT                                                       4
 +#define   NV50TCL_PM_CONTROL_UNK1_MASK                                                        0x00000070
 +#define   NV50TCL_PM_CONTROL_UNK2_SHIFT                                                       8
 +#define   NV50TCL_PM_CONTROL_UNK2_MASK                                                        0xffffff00
 +#define  NV50TCL_STENCIL_BACK_ENABLE                                                  0x00001594
 +#define  NV50TCL_STENCIL_BACK_OP_FAIL                                                 0x00001598
 +#define   NV50TCL_STENCIL_BACK_OP_FAIL_ZERO                                           0x00000000
 +#define   NV50TCL_STENCIL_BACK_OP_FAIL_INVERT                                         0x0000150a
 +#define   NV50TCL_STENCIL_BACK_OP_FAIL_KEEP                                           0x00001e00
 +#define   NV50TCL_STENCIL_BACK_OP_FAIL_REPLACE                                                0x00001e01
 +#define   NV50TCL_STENCIL_BACK_OP_FAIL_INCR                                           0x00001e02
 +#define   NV50TCL_STENCIL_BACK_OP_FAIL_DECR                                           0x00001e03
 +#define   NV50TCL_STENCIL_BACK_OP_FAIL_INCR_WRAP                                      0x00008507
 +#define   NV50TCL_STENCIL_BACK_OP_FAIL_DECR_WRAP                                      0x00008508
 +#define  NV50TCL_STENCIL_BACK_OP_ZFAIL                                                        0x0000159c
 +#define   NV50TCL_STENCIL_BACK_OP_ZFAIL_ZERO                                          0x00000000
 +#define   NV50TCL_STENCIL_BACK_OP_ZFAIL_INVERT                                                0x0000150a
 +#define   NV50TCL_STENCIL_BACK_OP_ZFAIL_KEEP                                          0x00001e00
 +#define   NV50TCL_STENCIL_BACK_OP_ZFAIL_REPLACE                                               0x00001e01
 +#define   NV50TCL_STENCIL_BACK_OP_ZFAIL_INCR                                          0x00001e02
 +#define   NV50TCL_STENCIL_BACK_OP_ZFAIL_DECR                                          0x00001e03
 +#define   NV50TCL_STENCIL_BACK_OP_ZFAIL_INCR_WRAP                                     0x00008507
 +#define   NV50TCL_STENCIL_BACK_OP_ZFAIL_DECR_WRAP                                     0x00008508
 +#define  NV50TCL_STENCIL_BACK_OP_ZPASS                                                        0x000015a0
 +#define   NV50TCL_STENCIL_BACK_OP_ZPASS_ZERO                                          0x00000000
 +#define   NV50TCL_STENCIL_BACK_OP_ZPASS_INVERT                                                0x0000150a
 +#define   NV50TCL_STENCIL_BACK_OP_ZPASS_KEEP                                          0x00001e00
 +#define   NV50TCL_STENCIL_BACK_OP_ZPASS_REPLACE                                               0x00001e01
 +#define   NV50TCL_STENCIL_BACK_OP_ZPASS_INCR                                          0x00001e02
 +#define   NV50TCL_STENCIL_BACK_OP_ZPASS_DECR                                          0x00001e03
 +#define   NV50TCL_STENCIL_BACK_OP_ZPASS_INCR_WRAP                                     0x00008507
 +#define   NV50TCL_STENCIL_BACK_OP_ZPASS_DECR_WRAP                                     0x00008508
 +#define  NV50TCL_STENCIL_BACK_FUNC_FUNC                                                       0x000015a4
 +#define   NV50TCL_STENCIL_BACK_FUNC_FUNC_NEVER                                                0x00000200
 +#define   NV50TCL_STENCIL_BACK_FUNC_FUNC_LESS                                         0x00000201
 +#define   NV50TCL_STENCIL_BACK_FUNC_FUNC_EQUAL                                                0x00000202
 +#define   NV50TCL_STENCIL_BACK_FUNC_FUNC_LEQUAL                                               0x00000203
 +#define   NV50TCL_STENCIL_BACK_FUNC_FUNC_GREATER                                      0x00000204
 +#define   NV50TCL_STENCIL_BACK_FUNC_FUNC_NOTEQUAL                                     0x00000205
 +#define   NV50TCL_STENCIL_BACK_FUNC_FUNC_GEQUAL                                               0x00000206
 +#define   NV50TCL_STENCIL_BACK_FUNC_FUNC_ALWAYS                                               0x00000207
 +#define  NV50TCL_FRAMEBUFFER_SRGB                                                     0x000015b8
 +#define  NV50TCL_POLYGON_OFFSET_UNITS                                                 0x000015bc
 +#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_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_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
 +#define   NV50TCL_VERTEX_BEGIN_LINE_LOOP                                              0x00000002
 +#define   NV50TCL_VERTEX_BEGIN_LINE_STRIP                                             0x00000003
 +#define   NV50TCL_VERTEX_BEGIN_TRIANGLES                                              0x00000004
 +#define   NV50TCL_VERTEX_BEGIN_TRIANGLE_STRIP                                         0x00000005
 +#define   NV50TCL_VERTEX_BEGIN_TRIANGLE_FAN                                           0x00000006
 +#define   NV50TCL_VERTEX_BEGIN_QUADS                                                  0x00000007
 +#define   NV50TCL_VERTEX_BEGIN_QUAD_STRIP                                             0x00000008
 +#define   NV50TCL_VERTEX_BEGIN_POLYGON                                                        0x00000009
 +#define   NV50TCL_VERTEX_BEGIN_LINES_ADJACENCY                                                0x0000000a
 +#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
 +#define  NV50TCL_VB_ELEMENT_U16_SETUP                                                 0x000015ec
 +#define   NV50TCL_VB_ELEMENT_U16_SETUP_OFFSET_SHIFT                                   30
 +#define   NV50TCL_VB_ELEMENT_U16_SETUP_OFFSET_MASK                                    0xc0000000
 +#define   NV50TCL_VB_ELEMENT_U16_SETUP_COUNT_SHIFT                                    0
 +#define   NV50TCL_VB_ELEMENT_U16_SETUP_COUNT_MASK                                     0x3fffffff
 +#define  NV50TCL_VB_ELEMENT_U16                                                               0x000015f0
 +#define   NV50TCL_VB_ELEMENT_U16_I0_SHIFT                                             0
 +#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
 +#define  NV50TCL_VP_GP_BUILTIN_ATTR_EN                                                        0x0000164c
 +#define   NV50TCL_VP_GP_BUILTIN_ATTR_EN_VERTEX_ID                                     (1 <<  0)
 +#define   NV50TCL_VP_GP_BUILTIN_ATTR_EN_INSTANCE_ID                                   (1 <<  4)
 +#define   NV50TCL_VP_GP_BUILTIN_ATTR_EN_PRIMITIVE_ID                                  (1 <<  8)
 +#define   NV50TCL_VP_GP_BUILTIN_ATTR_EN_UNK12                                         (1 << 12)
 +#define  NV50TCL_VP_ATTR_EN_0                                                         0x00001650
 +#define   NV50TCL_VP_ATTR_EN_0_7_SHIFT                                                        28
 +#define   NV50TCL_VP_ATTR_EN_0_7_MASK                                                 0xf0000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_XNNN                                                        0x10000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_NYNN                                                        0x20000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_XYNN                                                        0x30000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_NNZN                                                        0x40000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_XNZN                                                        0x50000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_NYZN                                                        0x60000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_XYZN                                                        0x70000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_NNNW                                                        0x80000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_XNNW                                                        0x90000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_NYNW                                                        0xa0000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_XYNW                                                        0xb0000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_NNZW                                                        0xc0000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_XNZW                                                        0xd0000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_NYZW                                                        0xe0000000
 +#define    NV50TCL_VP_ATTR_EN_0_7_XYZW                                                        0xf0000000
 +#define   NV50TCL_VP_ATTR_EN_0_6_SHIFT                                                        24
 +#define   NV50TCL_VP_ATTR_EN_0_6_MASK                                                 0x0f000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_XNNN                                                        0x01000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_NYNN                                                        0x02000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_XYNN                                                        0x03000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_NNZN                                                        0x04000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_XNZN                                                        0x05000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_NYZN                                                        0x06000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_XYZN                                                        0x07000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_NNNW                                                        0x08000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_XNNW                                                        0x09000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_NYNW                                                        0x0a000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_XYNW                                                        0x0b000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_NNZW                                                        0x0c000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_XNZW                                                        0x0d000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_NYZW                                                        0x0e000000
 +#define    NV50TCL_VP_ATTR_EN_0_6_XYZW                                                        0x0f000000
 +#define   NV50TCL_VP_ATTR_EN_0_5_SHIFT                                                        20
 +#define   NV50TCL_VP_ATTR_EN_0_5_MASK                                                 0x00f00000
 +#define    NV50TCL_VP_ATTR_EN_0_5_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_0_5_XNNN                                                        0x00100000
 +#define    NV50TCL_VP_ATTR_EN_0_5_NYNN                                                        0x00200000
 +#define    NV50TCL_VP_ATTR_EN_0_5_XYNN                                                        0x00300000
 +#define    NV50TCL_VP_ATTR_EN_0_5_NNZN                                                        0x00400000
 +#define    NV50TCL_VP_ATTR_EN_0_5_XNZN                                                        0x00500000
 +#define    NV50TCL_VP_ATTR_EN_0_5_NYZN                                                        0x00600000
 +#define    NV50TCL_VP_ATTR_EN_0_5_XYZN                                                        0x00700000
 +#define    NV50TCL_VP_ATTR_EN_0_5_NNNW                                                        0x00800000
 +#define    NV50TCL_VP_ATTR_EN_0_5_XNNW                                                        0x00900000
 +#define    NV50TCL_VP_ATTR_EN_0_5_NYNW                                                        0x00a00000
 +#define    NV50TCL_VP_ATTR_EN_0_5_XYNW                                                        0x00b00000
 +#define    NV50TCL_VP_ATTR_EN_0_5_NNZW                                                        0x00c00000
 +#define    NV50TCL_VP_ATTR_EN_0_5_XNZW                                                        0x00d00000
 +#define    NV50TCL_VP_ATTR_EN_0_5_NYZW                                                        0x00e00000
 +#define    NV50TCL_VP_ATTR_EN_0_5_XYZW                                                        0x00f00000
 +#define   NV50TCL_VP_ATTR_EN_0_4_SHIFT                                                        16
 +#define   NV50TCL_VP_ATTR_EN_0_4_MASK                                                 0x000f0000
 +#define    NV50TCL_VP_ATTR_EN_0_4_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_0_4_XNNN                                                        0x00010000
 +#define    NV50TCL_VP_ATTR_EN_0_4_NYNN                                                        0x00020000
 +#define    NV50TCL_VP_ATTR_EN_0_4_XYNN                                                        0x00030000
 +#define    NV50TCL_VP_ATTR_EN_0_4_NNZN                                                        0x00040000
 +#define    NV50TCL_VP_ATTR_EN_0_4_XNZN                                                        0x00050000
 +#define    NV50TCL_VP_ATTR_EN_0_4_NYZN                                                        0x00060000
 +#define    NV50TCL_VP_ATTR_EN_0_4_XYZN                                                        0x00070000
 +#define    NV50TCL_VP_ATTR_EN_0_4_NNNW                                                        0x00080000
 +#define    NV50TCL_VP_ATTR_EN_0_4_XNNW                                                        0x00090000
 +#define    NV50TCL_VP_ATTR_EN_0_4_NYNW                                                        0x000a0000
 +#define    NV50TCL_VP_ATTR_EN_0_4_XYNW                                                        0x000b0000
 +#define    NV50TCL_VP_ATTR_EN_0_4_NNZW                                                        0x000c0000
 +#define    NV50TCL_VP_ATTR_EN_0_4_XNZW                                                        0x000d0000
 +#define    NV50TCL_VP_ATTR_EN_0_4_NYZW                                                        0x000e0000
 +#define    NV50TCL_VP_ATTR_EN_0_4_XYZW                                                        0x000f0000
 +#define   NV50TCL_VP_ATTR_EN_0_3_SHIFT                                                        12
 +#define   NV50TCL_VP_ATTR_EN_0_3_MASK                                                 0x0000f000
 +#define    NV50TCL_VP_ATTR_EN_0_3_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_0_3_XNNN                                                        0x00001000
 +#define    NV50TCL_VP_ATTR_EN_0_3_NYNN                                                        0x00002000
 +#define    NV50TCL_VP_ATTR_EN_0_3_XYNN                                                        0x00003000
 +#define    NV50TCL_VP_ATTR_EN_0_3_NNZN                                                        0x00004000
 +#define    NV50TCL_VP_ATTR_EN_0_3_XNZN                                                        0x00005000
 +#define    NV50TCL_VP_ATTR_EN_0_3_NYZN                                                        0x00006000
 +#define    NV50TCL_VP_ATTR_EN_0_3_XYZN                                                        0x00007000
 +#define    NV50TCL_VP_ATTR_EN_0_3_NNNW                                                        0x00008000
 +#define    NV50TCL_VP_ATTR_EN_0_3_XNNW                                                        0x00009000
 +#define    NV50TCL_VP_ATTR_EN_0_3_NYNW                                                        0x0000a000
 +#define    NV50TCL_VP_ATTR_EN_0_3_XYNW                                                        0x0000b000
 +#define    NV50TCL_VP_ATTR_EN_0_3_NNZW                                                        0x0000c000
 +#define    NV50TCL_VP_ATTR_EN_0_3_XNZW                                                        0x0000d000
 +#define    NV50TCL_VP_ATTR_EN_0_3_NYZW                                                        0x0000e000
 +#define    NV50TCL_VP_ATTR_EN_0_3_XYZW                                                        0x0000f000
 +#define   NV50TCL_VP_ATTR_EN_0_2_SHIFT                                                        8
 +#define   NV50TCL_VP_ATTR_EN_0_2_MASK                                                 0x00000f00
 +#define    NV50TCL_VP_ATTR_EN_0_2_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_0_2_XNNN                                                        0x00000100
 +#define    NV50TCL_VP_ATTR_EN_0_2_NYNN                                                        0x00000200
 +#define    NV50TCL_VP_ATTR_EN_0_2_XYNN                                                        0x00000300
 +#define    NV50TCL_VP_ATTR_EN_0_2_NNZN                                                        0x00000400
 +#define    NV50TCL_VP_ATTR_EN_0_2_XNZN                                                        0x00000500
 +#define    NV50TCL_VP_ATTR_EN_0_2_NYZN                                                        0x00000600
 +#define    NV50TCL_VP_ATTR_EN_0_2_XYZN                                                        0x00000700
 +#define    NV50TCL_VP_ATTR_EN_0_2_NNNW                                                        0x00000800
 +#define    NV50TCL_VP_ATTR_EN_0_2_XNNW                                                        0x00000900
 +#define    NV50TCL_VP_ATTR_EN_0_2_NYNW                                                        0x00000a00
 +#define    NV50TCL_VP_ATTR_EN_0_2_XYNW                                                        0x00000b00
 +#define    NV50TCL_VP_ATTR_EN_0_2_NNZW                                                        0x00000c00
 +#define    NV50TCL_VP_ATTR_EN_0_2_XNZW                                                        0x00000d00
 +#define    NV50TCL_VP_ATTR_EN_0_2_NYZW                                                        0x00000e00
 +#define    NV50TCL_VP_ATTR_EN_0_2_XYZW                                                        0x00000f00
 +#define   NV50TCL_VP_ATTR_EN_0_1_SHIFT                                                        4
 +#define   NV50TCL_VP_ATTR_EN_0_1_MASK                                                 0x000000f0
 +#define    NV50TCL_VP_ATTR_EN_0_1_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_0_1_XNNN                                                        0x00000010
 +#define    NV50TCL_VP_ATTR_EN_0_1_NYNN                                                        0x00000020
 +#define    NV50TCL_VP_ATTR_EN_0_1_XYNN                                                        0x00000030
 +#define    NV50TCL_VP_ATTR_EN_0_1_NNZN                                                        0x00000040
 +#define    NV50TCL_VP_ATTR_EN_0_1_XNZN                                                        0x00000050
 +#define    NV50TCL_VP_ATTR_EN_0_1_NYZN                                                        0x00000060
 +#define    NV50TCL_VP_ATTR_EN_0_1_XYZN                                                        0x00000070
 +#define    NV50TCL_VP_ATTR_EN_0_1_NNNW                                                        0x00000080
 +#define    NV50TCL_VP_ATTR_EN_0_1_XNNW                                                        0x00000090
 +#define    NV50TCL_VP_ATTR_EN_0_1_NYNW                                                        0x000000a0
 +#define    NV50TCL_VP_ATTR_EN_0_1_XYNW                                                        0x000000b0
 +#define    NV50TCL_VP_ATTR_EN_0_1_NNZW                                                        0x000000c0
 +#define    NV50TCL_VP_ATTR_EN_0_1_XNZW                                                        0x000000d0
 +#define    NV50TCL_VP_ATTR_EN_0_1_NYZW                                                        0x000000e0
 +#define    NV50TCL_VP_ATTR_EN_0_1_XYZW                                                        0x000000f0
 +#define   NV50TCL_VP_ATTR_EN_0_0_SHIFT                                                        0
 +#define   NV50TCL_VP_ATTR_EN_0_0_MASK                                                 0x0000000f
 +#define    NV50TCL_VP_ATTR_EN_0_0_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_0_0_XNNN                                                        0x00000001
 +#define    NV50TCL_VP_ATTR_EN_0_0_NYNN                                                        0x00000002
 +#define    NV50TCL_VP_ATTR_EN_0_0_XYNN                                                        0x00000003
 +#define    NV50TCL_VP_ATTR_EN_0_0_NNZN                                                        0x00000004
 +#define    NV50TCL_VP_ATTR_EN_0_0_XNZN                                                        0x00000005
 +#define    NV50TCL_VP_ATTR_EN_0_0_NYZN                                                        0x00000006
 +#define    NV50TCL_VP_ATTR_EN_0_0_XYZN                                                        0x00000007
 +#define    NV50TCL_VP_ATTR_EN_0_0_NNNW                                                        0x00000008
 +#define    NV50TCL_VP_ATTR_EN_0_0_XNNW                                                        0x00000009
 +#define    NV50TCL_VP_ATTR_EN_0_0_NYNW                                                        0x0000000a
 +#define    NV50TCL_VP_ATTR_EN_0_0_XYNW                                                        0x0000000b
 +#define    NV50TCL_VP_ATTR_EN_0_0_NNZW                                                        0x0000000c
 +#define    NV50TCL_VP_ATTR_EN_0_0_XNZW                                                        0x0000000d
 +#define    NV50TCL_VP_ATTR_EN_0_0_NYZW                                                        0x0000000e
 +#define    NV50TCL_VP_ATTR_EN_0_0_XYZW                                                        0x0000000f
 +#define  NV50TCL_VP_ATTR_EN_1                                                         0x00001654
 +#define   NV50TCL_VP_ATTR_EN_1_15_SHIFT                                                       28
 +#define   NV50TCL_VP_ATTR_EN_1_15_MASK                                                        0xf0000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_NONE                                                       0x00000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_XNNN                                                       0x10000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_NYNN                                                       0x20000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_XYNN                                                       0x30000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_NNZN                                                       0x40000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_XNZN                                                       0x50000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_NYZN                                                       0x60000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_XYZN                                                       0x70000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_NNNW                                                       0x80000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_XNNW                                                       0x90000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_NYNW                                                       0xa0000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_XYNW                                                       0xb0000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_NNZW                                                       0xc0000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_XNZW                                                       0xd0000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_NYZW                                                       0xe0000000
 +#define    NV50TCL_VP_ATTR_EN_1_15_XYZW                                                       0xf0000000
 +#define   NV50TCL_VP_ATTR_EN_1_14_SHIFT                                                       24
 +#define   NV50TCL_VP_ATTR_EN_1_14_MASK                                                        0x0f000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_NONE                                                       0x00000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_XNNN                                                       0x01000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_NYNN                                                       0x02000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_XYNN                                                       0x03000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_NNZN                                                       0x04000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_XNZN                                                       0x05000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_NYZN                                                       0x06000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_XYZN                                                       0x07000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_NNNW                                                       0x08000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_XNNW                                                       0x09000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_NYNW                                                       0x0a000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_XYNW                                                       0x0b000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_NNZW                                                       0x0c000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_XNZW                                                       0x0d000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_NYZW                                                       0x0e000000
 +#define    NV50TCL_VP_ATTR_EN_1_14_XYZW                                                       0x0f000000
 +#define   NV50TCL_VP_ATTR_EN_1_13_SHIFT                                                       20
 +#define   NV50TCL_VP_ATTR_EN_1_13_MASK                                                        0x00f00000
 +#define    NV50TCL_VP_ATTR_EN_1_13_NONE                                                       0x00000000
 +#define    NV50TCL_VP_ATTR_EN_1_13_XNNN                                                       0x00100000
 +#define    NV50TCL_VP_ATTR_EN_1_13_NYNN                                                       0x00200000
 +#define    NV50TCL_VP_ATTR_EN_1_13_XYNN                                                       0x00300000
 +#define    NV50TCL_VP_ATTR_EN_1_13_NNZN                                                       0x00400000
 +#define    NV50TCL_VP_ATTR_EN_1_13_XNZN                                                       0x00500000
 +#define    NV50TCL_VP_ATTR_EN_1_13_NYZN                                                       0x00600000
 +#define    NV50TCL_VP_ATTR_EN_1_13_XYZN                                                       0x00700000
 +#define    NV50TCL_VP_ATTR_EN_1_13_NNNW                                                       0x00800000
 +#define    NV50TCL_VP_ATTR_EN_1_13_XNNW                                                       0x00900000
 +#define    NV50TCL_VP_ATTR_EN_1_13_NYNW                                                       0x00a00000
 +#define    NV50TCL_VP_ATTR_EN_1_13_XYNW                                                       0x00b00000
 +#define    NV50TCL_VP_ATTR_EN_1_13_NNZW                                                       0x00c00000
 +#define    NV50TCL_VP_ATTR_EN_1_13_XNZW                                                       0x00d00000
 +#define    NV50TCL_VP_ATTR_EN_1_13_NYZW                                                       0x00e00000
 +#define    NV50TCL_VP_ATTR_EN_1_13_XYZW                                                       0x00f00000
 +#define   NV50TCL_VP_ATTR_EN_1_12_SHIFT                                                       16
 +#define   NV50TCL_VP_ATTR_EN_1_12_MASK                                                        0x000f0000
 +#define    NV50TCL_VP_ATTR_EN_1_12_NONE                                                       0x00000000
 +#define    NV50TCL_VP_ATTR_EN_1_12_XNNN                                                       0x00010000
 +#define    NV50TCL_VP_ATTR_EN_1_12_NYNN                                                       0x00020000
 +#define    NV50TCL_VP_ATTR_EN_1_12_XYNN                                                       0x00030000
 +#define    NV50TCL_VP_ATTR_EN_1_12_NNZN                                                       0x00040000
 +#define    NV50TCL_VP_ATTR_EN_1_12_XNZN                                                       0x00050000
 +#define    NV50TCL_VP_ATTR_EN_1_12_NYZN                                                       0x00060000
 +#define    NV50TCL_VP_ATTR_EN_1_12_XYZN                                                       0x00070000
 +#define    NV50TCL_VP_ATTR_EN_1_12_NNNW                                                       0x00080000
 +#define    NV50TCL_VP_ATTR_EN_1_12_XNNW                                                       0x00090000
 +#define    NV50TCL_VP_ATTR_EN_1_12_NYNW                                                       0x000a0000
 +#define    NV50TCL_VP_ATTR_EN_1_12_XYNW                                                       0x000b0000
 +#define    NV50TCL_VP_ATTR_EN_1_12_NNZW                                                       0x000c0000
 +#define    NV50TCL_VP_ATTR_EN_1_12_XNZW                                                       0x000d0000
 +#define    NV50TCL_VP_ATTR_EN_1_12_NYZW                                                       0x000e0000
 +#define    NV50TCL_VP_ATTR_EN_1_12_XYZW                                                       0x000f0000
 +#define   NV50TCL_VP_ATTR_EN_1_11_SHIFT                                                       12
 +#define   NV50TCL_VP_ATTR_EN_1_11_MASK                                                        0x0000f000
 +#define    NV50TCL_VP_ATTR_EN_1_11_NONE                                                       0x00000000
 +#define    NV50TCL_VP_ATTR_EN_1_11_XNNN                                                       0x00001000
 +#define    NV50TCL_VP_ATTR_EN_1_11_NYNN                                                       0x00002000
 +#define    NV50TCL_VP_ATTR_EN_1_11_XYNN                                                       0x00003000
 +#define    NV50TCL_VP_ATTR_EN_1_11_NNZN                                                       0x00004000
 +#define    NV50TCL_VP_ATTR_EN_1_11_XNZN                                                       0x00005000
 +#define    NV50TCL_VP_ATTR_EN_1_11_NYZN                                                       0x00006000
 +#define    NV50TCL_VP_ATTR_EN_1_11_XYZN                                                       0x00007000
 +#define    NV50TCL_VP_ATTR_EN_1_11_NNNW                                                       0x00008000
 +#define    NV50TCL_VP_ATTR_EN_1_11_XNNW                                                       0x00009000
 +#define    NV50TCL_VP_ATTR_EN_1_11_NYNW                                                       0x0000a000
 +#define    NV50TCL_VP_ATTR_EN_1_11_XYNW                                                       0x0000b000
 +#define    NV50TCL_VP_ATTR_EN_1_11_NNZW                                                       0x0000c000
 +#define    NV50TCL_VP_ATTR_EN_1_11_XNZW                                                       0x0000d000
 +#define    NV50TCL_VP_ATTR_EN_1_11_NYZW                                                       0x0000e000
 +#define    NV50TCL_VP_ATTR_EN_1_11_XYZW                                                       0x0000f000
 +#define   NV50TCL_VP_ATTR_EN_1_10_SHIFT                                                       8
 +#define   NV50TCL_VP_ATTR_EN_1_10_MASK                                                        0x00000f00
 +#define    NV50TCL_VP_ATTR_EN_1_10_NONE                                                       0x00000000
 +#define    NV50TCL_VP_ATTR_EN_1_10_XNNN                                                       0x00000100
 +#define    NV50TCL_VP_ATTR_EN_1_10_NYNN                                                       0x00000200
 +#define    NV50TCL_VP_ATTR_EN_1_10_XYNN                                                       0x00000300
 +#define    NV50TCL_VP_ATTR_EN_1_10_NNZN                                                       0x00000400
 +#define    NV50TCL_VP_ATTR_EN_1_10_XNZN                                                       0x00000500
 +#define    NV50TCL_VP_ATTR_EN_1_10_NYZN                                                       0x00000600
 +#define    NV50TCL_VP_ATTR_EN_1_10_XYZN                                                       0x00000700
 +#define    NV50TCL_VP_ATTR_EN_1_10_NNNW                                                       0x00000800
 +#define    NV50TCL_VP_ATTR_EN_1_10_XNNW                                                       0x00000900
 +#define    NV50TCL_VP_ATTR_EN_1_10_NYNW                                                       0x00000a00
 +#define    NV50TCL_VP_ATTR_EN_1_10_XYNW                                                       0x00000b00
 +#define    NV50TCL_VP_ATTR_EN_1_10_NNZW                                                       0x00000c00
 +#define    NV50TCL_VP_ATTR_EN_1_10_XNZW                                                       0x00000d00
 +#define    NV50TCL_VP_ATTR_EN_1_10_NYZW                                                       0x00000e00
 +#define    NV50TCL_VP_ATTR_EN_1_10_XYZW                                                       0x00000f00
 +#define   NV50TCL_VP_ATTR_EN_1_9_SHIFT                                                        4
 +#define   NV50TCL_VP_ATTR_EN_1_9_MASK                                                 0x000000f0
 +#define    NV50TCL_VP_ATTR_EN_1_9_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_1_9_XNNN                                                        0x00000010
 +#define    NV50TCL_VP_ATTR_EN_1_9_NYNN                                                        0x00000020
 +#define    NV50TCL_VP_ATTR_EN_1_9_XYNN                                                        0x00000030
 +#define    NV50TCL_VP_ATTR_EN_1_9_NNZN                                                        0x00000040
 +#define    NV50TCL_VP_ATTR_EN_1_9_XNZN                                                        0x00000050
 +#define    NV50TCL_VP_ATTR_EN_1_9_NYZN                                                        0x00000060
 +#define    NV50TCL_VP_ATTR_EN_1_9_XYZN                                                        0x00000070
 +#define    NV50TCL_VP_ATTR_EN_1_9_NNNW                                                        0x00000080
 +#define    NV50TCL_VP_ATTR_EN_1_9_XNNW                                                        0x00000090
 +#define    NV50TCL_VP_ATTR_EN_1_9_NYNW                                                        0x000000a0
 +#define    NV50TCL_VP_ATTR_EN_1_9_XYNW                                                        0x000000b0
 +#define    NV50TCL_VP_ATTR_EN_1_9_NNZW                                                        0x000000c0
 +#define    NV50TCL_VP_ATTR_EN_1_9_XNZW                                                        0x000000d0
 +#define    NV50TCL_VP_ATTR_EN_1_9_NYZW                                                        0x000000e0
 +#define    NV50TCL_VP_ATTR_EN_1_9_XYZW                                                        0x000000f0
 +#define   NV50TCL_VP_ATTR_EN_1_8_SHIFT                                                        0
 +#define   NV50TCL_VP_ATTR_EN_1_8_MASK                                                 0x0000000f
 +#define    NV50TCL_VP_ATTR_EN_1_8_NONE                                                        0x00000000
 +#define    NV50TCL_VP_ATTR_EN_1_8_XNNN                                                        0x00000001
 +#define    NV50TCL_VP_ATTR_EN_1_8_NYNN                                                        0x00000002
 +#define    NV50TCL_VP_ATTR_EN_1_8_XYNN                                                        0x00000003
 +#define    NV50TCL_VP_ATTR_EN_1_8_NNZN                                                        0x00000004
 +#define    NV50TCL_VP_ATTR_EN_1_8_XNZN                                                        0x00000005
 +#define    NV50TCL_VP_ATTR_EN_1_8_NYZN                                                        0x00000006
 +#define    NV50TCL_VP_ATTR_EN_1_8_XYZN                                                        0x00000007
 +#define    NV50TCL_VP_ATTR_EN_1_8_NNNW                                                        0x00000008
 +#define    NV50TCL_VP_ATTR_EN_1_8_XNNW                                                        0x00000009
 +#define    NV50TCL_VP_ATTR_EN_1_8_NYNW                                                        0x0000000a
 +#define    NV50TCL_VP_ATTR_EN_1_8_XYNW                                                        0x0000000b
 +#define    NV50TCL_VP_ATTR_EN_1_8_NNZW                                                        0x0000000c
 +#define    NV50TCL_VP_ATTR_EN_1_8_XNZW                                                        0x0000000d
 +#define    NV50TCL_VP_ATTR_EN_1_8_NYZW                                                        0x0000000e
 +#define    NV50TCL_VP_ATTR_EN_1_8_XYZW                                                        0x0000000f
 +#define  NV50TCL_POINT_SPRITE_CTRL                                                    0x00001660
 +#define  NV50TCL_LINE_STIPPLE_ENABLE                                                  0x0000166c
 +#define  NV50TCL_LINE_STIPPLE_PATTERN                                                 0x00001680
 +#define  NV50TCL_PROVOKING_VERTEX_LAST                                                        0x00001684
 +#define  NV50TCL_VERTEX_TWO_SIDE_ENABLE                                                       0x00001688
 +#define  NV50TCL_POLYGON_STIPPLE_ENABLE                                                       0x0000168c
 +#define  NV50TCL_SET_PROGRAM_CB                                                               0x00001694
 +#define   NV50TCL_SET_PROGRAM_CB_PROGRAM_SHIFT                                                4
 +#define   NV50TCL_SET_PROGRAM_CB_PROGRAM_MASK                                         0x000000f0
 +#define    NV50TCL_SET_PROGRAM_CB_PROGRAM_VERTEX                                      0x00000000
 +#define    NV50TCL_SET_PROGRAM_CB_PROGRAM_GEOMETRY                                    0x00000020
 +#define    NV50TCL_SET_PROGRAM_CB_PROGRAM_FRAGMENT                                    0x00000030
 +#define   NV50TCL_SET_PROGRAM_CB_INDEX_SHIFT                                          8
 +#define   NV50TCL_SET_PROGRAM_CB_INDEX_MASK                                           0x00000f00
 +#define   NV50TCL_SET_PROGRAM_CB_BUFFER_SHIFT                                         12
 +#define   NV50TCL_SET_PROGRAM_CB_BUFFER_MASK                                          0x0007f000
 +#define   NV50TCL_SET_PROGRAM_CB_VALID                                                        (1 <<  0)
 +#define  NV50TCL_VP_RESULT_MAP_SIZE                                                   0x000016ac
 +#define  NV50TCL_VP_REG_ALLOC_TEMP                                                    0x000016b0
 +#define  NV50TCL_VP_REG_ALLOC_RESULT                                                  0x000016b8
 +#define  NV50TCL_VP_RESULT_MAP(x)                                                     (0x000016bc+((x)*4))
 +#define  NV50TCL_VP_RESULT_MAP__SIZE                                                  0x00000010
 +#define   NV50TCL_VP_RESULT_MAP_0_SHIFT                                                       0
 +#define   NV50TCL_VP_RESULT_MAP_0_MASK                                                        0x000000ff
 +#define   NV50TCL_VP_RESULT_MAP_1_SHIFT                                                       8
 +#define   NV50TCL_VP_RESULT_MAP_1_MASK                                                        0x0000ff00
 +#define   NV50TCL_VP_RESULT_MAP_2_SHIFT                                                       16
 +#define   NV50TCL_VP_RESULT_MAP_2_MASK                                                        0x00ff0000
 +#define   NV50TCL_VP_RESULT_MAP_3_SHIFT                                                       24
 +#define   NV50TCL_VP_RESULT_MAP_3_MASK                                                        0xff000000
 +#define  NV50TCL_POLYGON_STIPPLE_PATTERN(x)                                           (0x00001700+((x)*4))
 +#define  NV50TCL_POLYGON_STIPPLE_PATTERN__SIZE                                                0x00000020
 +#define  NV50TCL_GP_ENABLE                                                            0x00001798
 +#define  NV50TCL_GP_REG_ALLOC_TEMP                                                    0x000017a0
 +#define  NV50TCL_GP_REG_ALLOC_RESULT                                                  0x000017a8
 +#define  NV50TCL_GP_RESULT_MAP_SIZE                                                   0x000017ac
 +#define  NV50TCL_GP_OUTPUT_PRIMITIVE_TYPE                                             0x000017b0
 +#define   NV50TCL_GP_OUTPUT_PRIMITIVE_TYPE_POINTS                                     0x00000001
 +#define   NV50TCL_GP_OUTPUT_PRIMITIVE_TYPE_LINE_STRIP                                 0x00000002
 +#define   NV50TCL_GP_OUTPUT_PRIMITIVE_TYPE_TRIANGLE_STRIP                             0x00000003
 +#define  NV50TCL_RASTERIZE_ENABLE                                                     0x000017b4
 +#define  NV50TCL_STRMOUT_ENABLE                                                               0x000017b8
 +#define  NV50TCL_GP_RESULT_MAP(x)                                                     (0x000017fc+((x)*4))
 +#define  NV50TCL_GP_RESULT_MAP__SIZE                                                  0x00000020
 +#define   NV50TCL_GP_RESULT_MAP_0_SHIFT                                                       0
 +#define   NV50TCL_GP_RESULT_MAP_0_MASK                                                        0x000000ff
 +#define   NV50TCL_GP_RESULT_MAP_1_SHIFT                                                       8
 +#define   NV50TCL_GP_RESULT_MAP_1_MASK                                                        0x0000ff00
 +#define   NV50TCL_GP_RESULT_MAP_2_SHIFT                                                       16
 +#define   NV50TCL_GP_RESULT_MAP_2_MASK                                                        0x00ff0000
 +#define   NV50TCL_GP_RESULT_MAP_3_SHIFT                                                       24
 +#define   NV50TCL_GP_RESULT_MAP_3_MASK                                                        0xff000000
 +#define  NV50TCL_MAP_SEMANTIC_0                                                               0x00001904
 +#define   NV50TCL_MAP_SEMANTIC_0_FFC0_ID_SHIFT                                                0
 +#define   NV50TCL_MAP_SEMANTIC_0_FFC0_ID_MASK                                         0x000000ff
 +#define   NV50TCL_MAP_SEMANTIC_0_BFC0_ID_SHIFT                                                8
 +#define   NV50TCL_MAP_SEMANTIC_0_BFC0_ID_MASK                                         0x0000ff00
 +#define   NV50TCL_MAP_SEMANTIC_0_COLR_NR_SHIFT                                                16
 +#define   NV50TCL_MAP_SEMANTIC_0_COLR_NR_MASK                                         0x00ff0000
 +#define   NV50TCL_MAP_SEMANTIC_0_CLMP_EN_SHIFT                                                24
 +#define   NV50TCL_MAP_SEMANTIC_0_CLMP_EN_MASK                                         0xff000000
 +#define  NV50TCL_MAP_SEMANTIC_1                                                               0x00001908
 +#define   NV50TCL_MAP_SEMANTIC_1_CLIP_LO_SHIFT                                                0
 +#define   NV50TCL_MAP_SEMANTIC_1_CLIP_LO_MASK                                         0x000000ff
 +#define   NV50TCL_MAP_SEMANTIC_1_CLIP_HI_SHIFT                                                8
 +#define   NV50TCL_MAP_SEMANTIC_1_CLIP_HI_MASK                                         0x0000ff00
 +#define  NV50TCL_MAP_SEMANTIC_2                                                               0x0000190c
 +#define   NV50TCL_MAP_SEMANTIC_2_LAYER_ID_SHIFT                                               0
 +#define   NV50TCL_MAP_SEMANTIC_2_LAYER_ID_MASK                                                0x000000ff
 +#define  NV50TCL_MAP_SEMANTIC_3                                                               0x00001910
 +#define   NV50TCL_MAP_SEMANTIC_3_PTSZ_EN                                              (1 <<  0)
 +#define   NV50TCL_MAP_SEMANTIC_3_PTSZ_ID_SHIFT                                                4
 +#define   NV50TCL_MAP_SEMANTIC_3_PTSZ_ID_MASK                                         0x00000ff0
 +#define  NV50TCL_MAP_SEMANTIC_4                                                               0x00001914
 +#define   NV50TCL_MAP_SEMANTIC_4_PRIM_ID_SHIFT                                                0
 +#define   NV50TCL_MAP_SEMANTIC_4_PRIM_ID_MASK                                         0x000000ff
 +#define  NV50TCL_CULL_FACE_ENABLE                                                     0x00001918
 +#define  NV50TCL_FRONT_FACE                                                           0x0000191c
 +#define   NV50TCL_FRONT_FACE_CW                                                               0x00000900
 +#define   NV50TCL_FRONT_FACE_CCW                                                      0x00000901
 +#define  NV50TCL_CULL_FACE                                                            0x00001920
 +#define   NV50TCL_CULL_FACE_FRONT                                                     0x00000404
 +#define   NV50TCL_CULL_FACE_BACK                                                      0x00000405
 +#define   NV50TCL_CULL_FACE_FRONT_AND_BACK                                            0x00000408
 +#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
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_NONE                                     0x00000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_XNNN                                     0x01000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_NYNN                                     0x02000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_XYNN                                     0x03000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_NNZN                                     0x04000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_XNZN                                     0x05000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_NYZN                                     0x06000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_XYZN                                     0x07000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_NNNW                                     0x08000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_XNNW                                     0x09000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_NYNW                                     0x0a000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_XYNW                                     0x0b000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_NNZW                                     0x0c000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_XNZW                                     0x0d000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_NYZW                                     0x0e000000
 +#define    NV50TCL_FP_INTERPOLANT_CTRL_UMASK_XYZW                                     0x0f000000
 +#define   NV50TCL_FP_INTERPOLANT_CTRL_COUNT_NONFLAT_SHIFT                             16
 +#define   NV50TCL_FP_INTERPOLANT_CTRL_COUNT_NONFLAT_MASK                              0x00ff0000
 +#define   NV50TCL_FP_INTERPOLANT_CTRL_OFFSET_SHIFT                                    8
 +#define   NV50TCL_FP_INTERPOLANT_CTRL_OFFSET_MASK                                     0x0000ff00
 +#define   NV50TCL_FP_INTERPOLANT_CTRL_COUNT_SHIFT                                     0
 +#define   NV50TCL_FP_INTERPOLANT_CTRL_COUNT_MASK                                      0x000000ff
 +#define  NV50TCL_FP_REG_ALLOC_TEMP                                                    0x0000198c
 +#define  NV50TCL_REG_MODE                                                             0x000019a0
 +#define   NV50TCL_REG_MODE_PACKED                                                     0x00000001
 +#define   NV50TCL_REG_MODE_STRIPED                                                    0x00000002
 +#define  NV50TCL_FP_CONTROL                                                           0x000019a8
 +#define   NV50TCL_FP_CONTROL_MULTIPLE_RESULTS                                         (1 <<  0)
 +#define   NV50TCL_FP_CONTROL_EXPORTS_Z                                                        (1 <<  8)
 +#define   NV50TCL_FP_CONTROL_USES_KIL                                                 (1 << 20)
 +#define  NV50TCL_DEPTH_BOUNDS_EN                                                      0x000019bc
 +#define  NV50TCL_LOGIC_OP_ENABLE                                                      0x000019c4
 +#define  NV50TCL_LOGIC_OP                                                             0x000019c8
 +#define   NV50TCL_LOGIC_OP_CLEAR                                                      0x00001500
 +#define   NV50TCL_LOGIC_OP_AND                                                                0x00001501
 +#define   NV50TCL_LOGIC_OP_AND_REVERSE                                                        0x00001502
 +#define   NV50TCL_LOGIC_OP_COPY                                                               0x00001503
 +#define   NV50TCL_LOGIC_OP_AND_INVERTED                                                       0x00001504
 +#define   NV50TCL_LOGIC_OP_NOOP                                                               0x00001505
 +#define   NV50TCL_LOGIC_OP_XOR                                                                0x00001506
 +#define   NV50TCL_LOGIC_OP_OR                                                         0x00001507
 +#define   NV50TCL_LOGIC_OP_NOR                                                                0x00001508
 +#define   NV50TCL_LOGIC_OP_EQUIV                                                      0x00001509
 +#define   NV50TCL_LOGIC_OP_INVERT                                                     0x0000150a
 +#define   NV50TCL_LOGIC_OP_OR_REVERSE                                                 0x0000150b
 +#define   NV50TCL_LOGIC_OP_COPY_INVERTED                                              0x0000150c
 +#define   NV50TCL_LOGIC_OP_OR_INVERTED                                                        0x0000150d
 +#define   NV50TCL_LOGIC_OP_NAND                                                               0x0000150e
 +#define   NV50TCL_LOGIC_OP_SET                                                                0x0000150f
 +#define  NV50TCL_CLEAR_BUFFERS                                                                0x000019d0
 +#define   NV50TCL_CLEAR_BUFFERS_Z                                                     (1 <<  0)
 +#define   NV50TCL_CLEAR_BUFFERS_S                                                     (1 <<  1)
 +#define   NV50TCL_CLEAR_BUFFERS_R                                                     (1 <<  2)
 +#define   NV50TCL_CLEAR_BUFFERS_G                                                     (1 <<  3)
 +#define   NV50TCL_CLEAR_BUFFERS_B                                                     (1 <<  4)
 +#define   NV50TCL_CLEAR_BUFFERS_A                                                     (1 <<  5)
 +#define   NV50TCL_CLEAR_BUFFERS_RT_SHIFT                                              6
 +#define   NV50TCL_CLEAR_BUFFERS_RT_MASK                                                       0x000003c0
 +#define   NV50TCL_CLEAR_BUFFERS_LAYER_SHIFT                                           10
 +#define   NV50TCL_CLEAR_BUFFERS_LAYER_MASK                                            0x0007fc00
 +#define  NV50TCL_COLOR_MASK(x)                                                                (0x00001a00+((x)*4))
 +#define  NV50TCL_COLOR_MASK__SIZE                                                     0x00000008
 +#define   NV50TCL_COLOR_MASK_R_SHIFT                                                  0
 +#define   NV50TCL_COLOR_MASK_R_MASK                                                   0x0000000f
 +#define   NV50TCL_COLOR_MASK_G_SHIFT                                                  4
 +#define   NV50TCL_COLOR_MASK_G_MASK                                                   0x000000f0
 +#define   NV50TCL_COLOR_MASK_B_SHIFT                                                  8
 +#define   NV50TCL_COLOR_MASK_B_MASK                                                   0x00000f00
 +#define   NV50TCL_COLOR_MASK_A_SHIFT                                                  12
 +#define   NV50TCL_COLOR_MASK_A_MASK                                                   0x0000f000
 +#define  NV50TCL_STRMOUT_ADDRESS_HIGH(x)                                              (0x00001a80+((x)*16))
 +#define  NV50TCL_STRMOUT_ADDRESS_HIGH__SIZE                                           0x00000004
 +#define  NV50TCL_STRMOUT_ADDRESS_LOW(x)                                                       (0x00001a84+((x)*16))
 +#define  NV50TCL_STRMOUT_ADDRESS_LOW__SIZE                                            0x00000004
 +#define  NV50TCL_STRMOUT_NUM_ATTRIBS(x)                                                       (0x00001a88+((x)*16))
 +#define  NV50TCL_STRMOUT_NUM_ATTRIBS__SIZE                                            0x00000004
 +#define  NV50TCL_VERTEX_ARRAY_ATTRIB(x)                                                       (0x00001ac0+((x)*4))
 +#define  NV50TCL_VERTEX_ARRAY_ATTRIB__SIZE                                            0x00000010
 +#define   NV50TCL_VERTEX_ARRAY_ATTRIB_BUFFER_SHIFT                                    0
 +#define   NV50TCL_VERTEX_ARRAY_ATTRIB_BUFFER_MASK                                     0x0000000f
 +#define   NV50TCL_VERTEX_ARRAY_ATTRIB_CONST                                           (1 <<  4)
 +#define   NV50TCL_VERTEX_ARRAY_ATTRIB_OFFSET_SHIFT                                    5
 +#define   NV50TCL_VERTEX_ARRAY_ATTRIB_OFFSET_MASK                                     0x0007ffe0
 +#define   NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_SHIFT                                    19
 +#define   NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_MASK                                     0x01f80000
 +#define    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_32_32_32_32                             0x00080000
 +#define    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_32_32_32                                        0x00100000
 +#define    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_16_16_16_16                             0x00180000
 +#define    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_32_32                                   0x00200000
 +#define    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_16_16_16                                        0x00280000
 +#define    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_8_8_8_8                                 0x00500000
 +#define    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_16_16                                   0x00780000
 +#define    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_32                                      0x00900000
 +#define    NV50TCL_VERTEX_ARRAY_ATTRIB_FORMAT_8_8_8                                   0x00980000
 +#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_QUERY_COUNTER                                                                0x00001b08
++#define   NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_MASK                                               0x0e000000
++#define    NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_FLOAT                                     0x0e000000
++#define    NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_SNORM                                     0x02000000
++#define    NV50TCL_VERTEX_ARRAY_ATTRIB_TYPE_UNORM                                     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_SEQUENCE                                                               0x00001b08
 +#define  NV50TCL_QUERY_GET                                                            0x00001b0c
 +
 +
 +#define NV84TCL                                                                               0x00008297
 +
 +
 +
 +#define NVA0TCL                                                                               0x00008397
 +
 +
 +
 +#define NVA8TCL                                                                               0x00008597
 +
 +
 +
 +#define NV50_COMPUTE                                                                  0x000050c0
 +
 +#define  NV50_COMPUTE_NOP                                                             0x00000100
 +#define  NV50_COMPUTE_NOTIFY                                                          0x00000104
 +#define  NV50_COMPUTE_SERIALIZE                                                               0x00000110
 +#define  NV50_COMPUTE_DMA_NOTIFY                                                      0x00000180
 +#define  NV50_COMPUTE_DMA_GLOBAL                                                      0x000001a0
 +#define  NV50_COMPUTE_DMA_QUERY                                                               0x000001a4
 +#define  NV50_COMPUTE_DMA_LOCAL                                                               0x000001b8
 +#define  NV50_COMPUTE_DMA_STACK                                                               0x000001bc
 +#define  NV50_COMPUTE_DMA_CODE_CB                                                     0x000001c0
 +#define  NV50_COMPUTE_DMA_TSC                                                         0x000001c4
 +#define  NV50_COMPUTE_DMA_TIC                                                         0x000001c8
 +#define  NV50_COMPUTE_DMA_TEXTURE                                                     0x000001cc
 +#define  NV50_COMPUTE_CP_ADDRESS_HIGH                                                 0x00000210
 +#define  NV50_COMPUTE_CP_ADDRESS_LOW                                                  0x00000214
 +#define  NV50_COMPUTE_STACK_ADDRESS_HIGH                                              0x00000218
 +#define  NV50_COMPUTE_STACK_ADDRESS_LOW                                                       0x0000021c
 +#define  NV50_COMPUTE_STACK_SIZE_LOG                                                  0x00000220
 +#define  NV50_COMPUTE_TSC_ADDRESS_HIGH                                                        0x0000022c
 +#define  NV50_COMPUTE_TSC_ADDRESS_LOW                                                 0x00000230
 +#define  NV50_COMPUTE_TSC_LIMIT                                                               0x00000234
 +#define  NV50_COMPUTE_CB_ADDR                                                         0x00000238
 +#define   NV50_COMPUTE_CB_ADDR_ID_SHIFT                                                       8
 +#define   NV50_COMPUTE_CB_ADDR_ID_MASK                                                        0x003fff00
 +#define   NV50_COMPUTE_CB_ADDR_BUFFER_SHIFT                                           0
 +#define   NV50_COMPUTE_CB_ADDR_BUFFER_MASK                                            0x0000007f
 +#define  NV50_COMPUTE_CB_DATA(x)                                                      (0x0000023c+((x)*4))
 +#define  NV50_COMPUTE_CB_DATA__SIZE                                                   0x00000010
 +#define  NV50_COMPUTE_DELAY1                                                          0x00000284
 +#define  NV50_COMPUTE_WATCHDOG_TIMER                                                  0x00000288
 +#define  NV50_COMPUTE_DELAY2                                                          0x0000028c
 +#define  NV50_COMPUTE_LOCAL_ADDRESS_HIGH                                              0x00000294
 +#define  NV50_COMPUTE_LOCAL_ADDRESS_LOW                                                       0x00000298
 +#define  NV50_COMPUTE_LOCAL_SIZE_LOG                                                  0x0000029c
 +#define  NV50_COMPUTE_CB_DEF_ADDRESS_HIGH                                             0x000002a4
 +#define  NV50_COMPUTE_CB_DEF_ADDRESS_LOW                                              0x000002a8
 +#define  NV50_COMPUTE_CB_DEF_SET                                                      0x000002ac
 +#define   NV50_COMPUTE_CB_DEF_SET_SIZE_SHIFT                                          0
 +#define   NV50_COMPUTE_CB_DEF_SET_SIZE_MASK                                           0x0000ffff
 +#define   NV50_COMPUTE_CB_DEF_SET_BUFFER_SHIFT                                                16
 +#define   NV50_COMPUTE_CB_DEF_SET_BUFFER_MASK                                         0x007f0000
 +#define  NV50_COMPUTE_BLOCK_ALLOC                                                     0x000002b4
 +#define   NV50_COMPUTE_BLOCK_ALLOC_THREADS_SHIFT                                      0
 +#define   NV50_COMPUTE_BLOCK_ALLOC_THREADS_MASK                                               0x0000ffff
 +#define   NV50_COMPUTE_BLOCK_ALLOC_BARRIERS_SHIFT                                     16
 +#define   NV50_COMPUTE_BLOCK_ALLOC_BARRIERS_MASK                                      0xffff0000
 +#define  NV50_COMPUTE_LANES32_ENABLE                                                  0x000002b8
 +#define  NV50_COMPUTE_CP_REG_ALLOC_TEMP                                                       0x000002c0
 +#define  NV50_COMPUTE_TIC_ADDRESS_HIGH                                                        0x000002c4
 +#define  NV50_COMPUTE_TIC_ADDRESS_LOW                                                 0x000002c8
 +#define  NV50_COMPUTE_TIC_LIMIT                                                               0x000002cc
 +#define  NV50_COMPUTE_PM_SET(x)                                                               (0x000002d0+((x)*4))
 +#define  NV50_COMPUTE_PM_SET__SIZE                                                    0x00000004
 +#define  NV50_COMPUTE_PM_CONTROL(x)                                                   (0x000002e0+((x)*4))
 +#define  NV50_COMPUTE_PM_CONTROL__SIZE                                                        0x00000004
 +#define   NV50_COMPUTE_PM_CONTROL_UNK0                                                        (1 <<  0)
 +#define   NV50_COMPUTE_PM_CONTROL_UNK1_SHIFT                                          4
 +#define   NV50_COMPUTE_PM_CONTROL_UNK1_MASK                                           0x00000070
 +#define   NV50_COMPUTE_PM_CONTROL_UNK2_SHIFT                                          8
 +#define   NV50_COMPUTE_PM_CONTROL_UNK2_MASK                                           0xffffff00
 +#define  NV50_COMPUTE_LOCAL_WARPS_LOG_ALLOC                                           0x000002fc
 +#define  NV50_COMPUTE_LOCAL_WARPS_NO_CLAMP                                            0x00000300
 +#define  NV50_COMPUTE_STACK_WARPS_LOG_ALLOC                                           0x00000304
 +#define  NV50_COMPUTE_STACK_WARPS_NO_CLAMP                                            0x00000308
 +#define  NV50_COMPUTE_QUERY_ADDRESS_HIGH                                              0x00000310
 +#define  NV50_COMPUTE_QUERY_ADDRESS_LOW                                                       0x00000314
 +#define  NV50_COMPUTE_QUERY_COUNTER                                                   0x00000318
 +#define  NV50_COMPUTE_QUERY_GET                                                               0x0000031c
 +#define  NV50_COMPUTE_COND_ADDRESS_HIGH                                                       0x00000320
 +#define  NV50_COMPUTE_COND_ADDRESS_LOW                                                        0x00000324
 +#define  NV50_COMPUTE_COND_MODE                                                               0x00000328
 +#define   NV50_COMPUTE_COND_MODE_NEVER                                                        0x00000000
 +#define   NV50_COMPUTE_COND_MODE_ALWAYS                                                       0x00000001
 +#define   NV50_COMPUTE_COND_MODE_RES                                                  0x00000002
 +#define   NV50_COMPUTE_COND_MODE_NOT_RES_AND_NOT_ID                                   0x00000003
 +#define   NV50_COMPUTE_COND_MODE_RES_OR_ID                                            0x00000004
 +#define  NV50_COMPUTE_LAUNCH                                                          0x00000368
 +#define  NV50_COMPUTE_USER_PARAM_COUNT                                                        0x00000374
 +#define   NV50_COMPUTE_USER_PARAM_COUNT_COUNT_SHIFT                                   8
 +#define   NV50_COMPUTE_USER_PARAM_COUNT_COUNT_MASK                                    0x0000ff00
 +#define  NV50_COMPUTE_LINKED_TSC                                                      0x00000378
 +#define  NV50_COMPUTE_CODE_CB_FLUSH                                                   0x00000380
 +#define  NV50_COMPUTE_GRIDDIM                                                         0x000003a4
 +#define   NV50_COMPUTE_GRIDDIM_X_SHIFT                                                        0
 +#define   NV50_COMPUTE_GRIDDIM_X_MASK                                                 0x0000ffff
 +#define   NV50_COMPUTE_GRIDDIM_Y_SHIFT                                                        16
 +#define   NV50_COMPUTE_GRIDDIM_Y_MASK                                                 0xffff0000
 +#define  NV50_COMPUTE_SHARED_SIZE                                                     0x000003a8
 +#define  NV50_COMPUTE_BLOCKDIM_YX                                                     0x000003ac
 +#define   NV50_COMPUTE_BLOCKDIM_YX_X_SHIFT                                            0
 +#define   NV50_COMPUTE_BLOCKDIM_YX_X_MASK                                             0x0000ffff
 +#define   NV50_COMPUTE_BLOCKDIM_YX_Y_SHIFT                                            16
 +#define   NV50_COMPUTE_BLOCKDIM_YX_Y_MASK                                             0xffff0000
 +#define  NV50_COMPUTE_BLOCKDIM_Z                                                      0x000003b0
 +#define  NV50_COMPUTE_CP_START_ID                                                     0x000003b4
 +#define  NV50_COMPUTE_REG_MODE                                                                0x000003b8
 +#define   NV50_COMPUTE_REG_MODE_PACKED                                                        0x00000001
 +#define   NV50_COMPUTE_REG_MODE_STRIPED                                                       0x00000002
 +#define  NV50_COMPUTE_TEX_LIMITS                                                      0x000003bc
 +#define   NV50_COMPUTE_TEX_LIMITS_SAMPLERS_LOG2_SHIFT                                 0
 +#define   NV50_COMPUTE_TEX_LIMITS_SAMPLERS_LOG2_MASK                                  0x0000000f
 +#define   NV50_COMPUTE_TEX_LIMITS_TEXTURES_LOG2_SHIFT                                 4
 +#define   NV50_COMPUTE_TEX_LIMITS_TEXTURES_LOG2_MASK                                  0x000000f0
 +#define  NV50_COMPUTE_BIND_TSC                                                                0x000003c0
 +#define   NV50_COMPUTE_BIND_TSC_VALID                                                 (1 <<  0)
 +#define   NV50_COMPUTE_BIND_TSC_SAMPLER_SHIFT                                         4
 +#define   NV50_COMPUTE_BIND_TSC_SAMPLER_MASK                                          0x000000f0
 +#define   NV50_COMPUTE_BIND_TSC_TSC_SHIFT                                             12
 +#define   NV50_COMPUTE_BIND_TSC_TSC_MASK                                              0x001ff000
 +#define  NV50_COMPUTE_BIND_TIC                                                                0x000003c4
 +#define   NV50_COMPUTE_BIND_TIC_VALID                                                 (1 <<  0)
 +#define   NV50_COMPUTE_BIND_TIC_TEXTURE_SHIFT                                         1
 +#define   NV50_COMPUTE_BIND_TIC_TEXTURE_MASK                                          0x000001fe
 +#define   NV50_COMPUTE_BIND_TIC_TIC_SHIFT                                             9
 +#define   NV50_COMPUTE_BIND_TIC_TIC_MASK                                              0x7ffffe00
 +#define  NV50_COMPUTE_SET_PROGRAM_CB                                                  0x000003c8
 +#define   NV50_COMPUTE_SET_PROGRAM_CB_INDEX_SHIFT                                     8
 +#define   NV50_COMPUTE_SET_PROGRAM_CB_INDEX_MASK                                      0x00000f00
 +#define   NV50_COMPUTE_SET_PROGRAM_CB_BUFFER_SHIFT                                    12
 +#define   NV50_COMPUTE_SET_PROGRAM_CB_BUFFER_MASK                                     0x0007f000
 +#define   NV50_COMPUTE_SET_PROGRAM_CB_VALID                                           (1 <<  0)
 +#define  NV50_COMPUTE_GLOBAL_ADDRESS_HIGH(x)                                          (0x00000400+((x)*32))
 +#define  NV50_COMPUTE_GLOBAL_ADDRESS_HIGH__SIZE                                               0x00000010
 +#define  NV50_COMPUTE_GLOBAL_ADDRESS_LOW(x)                                           (0x00000404+((x)*32))
 +#define  NV50_COMPUTE_GLOBAL_ADDRESS_LOW__SIZE                                                0x00000010
 +#define  NV50_COMPUTE_GLOBAL_PITCH(x)                                                 (0x00000408+((x)*32))
 +#define  NV50_COMPUTE_GLOBAL_PITCH__SIZE                                              0x00000010
 +#define  NV50_COMPUTE_GLOBAL_LIMIT(x)                                                 (0x0000040c+((x)*32))
 +#define  NV50_COMPUTE_GLOBAL_LIMIT__SIZE                                              0x00000010
 +#define  NV50_COMPUTE_GLOBAL_MODE(x)                                                  (0x00000410+((x)*32))
 +#define  NV50_COMPUTE_GLOBAL_MODE__SIZE                                                       0x00000010
 +#define   NV50_COMPUTE_GLOBAL_MODE_LINEAR                                             (1 <<  0)
 +#define   NV50_COMPUTE_GLOBAL_MODE_TILE_MODE_SHIFT                                    8
 +#define   NV50_COMPUTE_GLOBAL_MODE_TILE_MODE_MASK                                     0x00000f00
 +#define  NV50_COMPUTE_USER_PARAM(x)                                                   (0x00000600+((x)*4))
 +#define  NV50_COMPUTE_USER_PARAM__SIZE                                                        0x00000040
 +
 +
 +#endif /* NOUVEAU_REG_H */
index f37dd079acb0e3cb9336dbad6aa2ad81120236dc,24a6d8055c870b450dfd636518087021553bc703..49af9b59beb93a521ce81bf78344adf3e561afaa
@@@ -142,6 -108,10 +106,8 @@@ nv50_screen_get_param(struct pipe_scree
        case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
        case PIPE_CAP_TEXTURE_MIRROR_REPEAT:
                return 1;
 -      case PIPE_CAP_TGSI_CONT_SUPPORTED:
 -              return 1;
+       case PIPE_CAP_TEXTURE_SWIZZLE:
+               return 1;
        case PIPE_CAP_BLEND_EQUATION_SEPARATE:
                return 1;
        case PIPE_CAP_INDEP_BLEND_ENABLE:
        case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
                return 0;
 -      case PIPE_CAP_MAX_VS_INSTRUCTIONS:
 -      case PIPE_CAP_MAX_FS_INSTRUCTIONS:
 -      case PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS:
 -      case PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS:
 -      case PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS:
 -      case PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS:
 -      case PIPE_CAP_MAX_VS_TEX_INDIRECTIONS:
 -      case PIPE_CAP_MAX_FS_TEX_INDIRECTIONS: /* arbitrary limit */
 +      case PIPE_CAP_DEPTH_CLAMP:
 +              return 1;
 +      default:
 +              NOUVEAU_ERR("Unknown PIPE_CAP %d\n", param);
 +              return 0;
 +      }
 +}
 +
 +static int
- nv50_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader, enum pipe_shader_cap param)
++nv50_screen_get_shader_param(struct pipe_screen *pscreen, unsigned shader,
++                           enum pipe_shader_cap param)
 +{
-       switch(shader)
-       {
++      switch(shader) {
 +      case PIPE_SHADER_FRAGMENT:
 +      case PIPE_SHADER_VERTEX:
 +      case PIPE_SHADER_GEOMETRY:
 +              break;
 +      default:
 +              return 0;
 +      }
 +
 +      switch(param) {
 +      case PIPE_SHADER_CAP_MAX_INSTRUCTIONS:
 +      case PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS:
 +      case PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS:
 +      case PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS: /* arbitrary limit */
                return 16384;
 -      case PIPE_CAP_MAX_VS_CONTROL_FLOW_DEPTH:
 -      case PIPE_CAP_MAX_FS_CONTROL_FLOW_DEPTH: /* need stack bo */
 +      case PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH: /* need stack bo */
                return 4;
 -      case PIPE_CAP_MAX_VS_INPUTS:
 -              return 16;
 -      case PIPE_CAP_MAX_FS_INPUTS: /* 128 / 4 with GP */
 -              return 64 / 4;
 -      case PIPE_CAP_MAX_VS_CONSTS:
 -      case PIPE_CAP_MAX_FS_CONSTS:
 +      case PIPE_SHADER_CAP_MAX_INPUTS: /* 128 / 4 with GP */
-               if(shader == PIPE_SHADER_GEOMETRY)
++              if (shader == PIPE_SHADER_GEOMETRY)
 +                      return 128 / 4;
 +              else
 +                      return 64 / 4;
 +      case PIPE_SHADER_CAP_MAX_CONSTS:
                return 65536 / 16;
 -      case PIPE_CAP_MAX_VS_ADDRS:
 -      case PIPE_CAP_MAX_FS_ADDRS: /* no spilling atm */
 +      case PIPE_SHADER_CAP_MAX_ADDRS: /* no spilling atm */
                return 1;
 -      case PIPE_CAP_MAX_VS_PREDS:
 -      case PIPE_CAP_MAX_FS_PREDS: /* not yet handled */
 +      case PIPE_SHADER_CAP_MAX_PREDS: /* not yet handled */
                return 0;
 -      case PIPE_CAP_MAX_VS_TEMPS:
 -      case PIPE_CAP_MAX_FS_TEMPS: /* no spilling atm */
 +      case PIPE_SHADER_CAP_MAX_TEMPS: /* no spilling atm */
-               return 128 / 4;
+               return NV50_CAP_MAX_PROGRAM_TEMPS;
 -      case PIPE_CAP_DEPTH_CLAMP:
 +      case PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED:
                return 1;
        default:
 -              NOUVEAU_ERR("Unknown PIPE_CAP %d\n", param);
                return 0;
        }
  }