diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index d77759d..cc44acf 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -155,7 +155,7 @@
    VERT_ATTRIB_GENERIC1 = 17,
    VERT_ATTRIB_GENERIC2 = 18,
    VERT_ATTRIB_GENERIC3 = 19,
-   VERT_ATTRIB_MAX = 16
+   VERT_ATTRIB_MAX = 16  /* XXX not counting generic attribs yet */
 };
 
 /**
@@ -188,10 +188,10 @@
 #define VERT_BIT_GENERIC(g)  (1 << (VERT_ATTRIB_GENERIC0 + (g)))
 /*@}*/
 
-
 /**
  * Indexes for vertex program result attributes
  */
+/*@{*/
 #define VERT_RESULT_HPOS 0
 #define VERT_RESULT_COL0 1
 #define VERT_RESULT_COL1 2
@@ -208,6 +208,7 @@
 #define VERT_RESULT_BFC0 13
 #define VERT_RESULT_BFC1 14
 #define VERT_RESULT_MAX  15
+/*@}*/
 
 
 /**
@@ -227,12 +228,11 @@
    FRAG_ATTRIB_TEX5 = 9,
    FRAG_ATTRIB_TEX6 = 10,
    FRAG_ATTRIB_TEX7 = 11,
-   
    FRAG_ATTRIB_MAX = 12
 };
 
-/*
- * Bitflags for fragment attributes.
+/**
+ * Bitflags for fragment program input attributes.
  */
 /*@{*/
 #define FRAG_BIT_WPOS  (1 << FRAG_ATTRIB_WPOS)
@@ -259,12 +259,15 @@
 /*@}*/
 
 
-/* Fragment program results
+/**
+ * Fragment program results
  */
-#define FRAG_OUTPUT_COLR  0
-#define FRAG_OUTPUT_COLH  1
-#define FRAG_OUTPUT_DEPR  2
-#define FRAG_OUTPUT_MAX   3
+/*@{*/
+#define FRAG_RESULT_COLR  0
+#define FRAG_RESULT_COLH  1
+#define FRAG_RESULT_DEPR  2
+#define FRAG_RESULT_MAX   3
+/*@}*/
 
 
 /**
diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c
index 43dda28..6197c15 100644
--- a/src/mesa/main/texenvprogram.c
+++ b/src/mesa/main/texenvprogram.c
@@ -857,7 +857,7 @@
        rgb_shift)
       dest = get_temp( p );
    else
-      dest = make_ureg(PROGRAM_OUTPUT, FRAG_OUTPUT_COLR);
+      dest = make_ureg(PROGRAM_OUTPUT, FRAG_RESULT_COLR);
 
    /* Emit the RGB and A combine ops
     */
@@ -1000,7 +1000,7 @@
    p.program->Parameters = _mesa_new_parameter_list();
 
    p.program->InputsRead = 0;
-   p.program->OutputsWritten = 1 << FRAG_OUTPUT_COLR;
+   p.program->OutputsWritten = 1 << FRAG_RESULT_COLR;
 
    for (unit = 0; unit < MAX_TEXTURE_UNITS; unit++)
       p.src_texture[unit] = undef;
@@ -1030,7 +1030,7 @@
    }
 
    cf = get_source( &p, SRC_PREVIOUS, 0 );
-   out = make_ureg( PROGRAM_OUTPUT, FRAG_OUTPUT_COLR );
+   out = make_ureg( PROGRAM_OUTPUT, FRAG_RESULT_COLR );
 
    if (key->separate_specular) {
       /* Emit specular add.
diff --git a/src/mesa/shader/arbprogparse.c b/src/mesa/shader/arbprogparse.c
index 19c38b6..377fc8a 100644
--- a/src/mesa/shader/arbprogparse.c
+++ b/src/mesa/shader/arbprogparse.c
@@ -1537,7 +1537,7 @@
  *
  * \param inst       The parsed tokens
  * \param outputReg  Returned index/number of the output register,
- *                   one of the VERT_RESULT_* or FRAG_OUTPUT_* values.
+ *                   one of the VERT_RESULT_* or FRAG_RESULT_* values.
  */
 static GLuint
 parse_result_binding(GLcontext *ctx, GLubyte **inst,
@@ -1555,7 +1555,7 @@
              */
             parse_output_color_num(ctx, inst, Program, &out_color);
             ASSERT(out_color < MAX_DRAW_BUFFERS);
-            *outputReg = FRAG_OUTPUT_COLR;
+            *outputReg = FRAG_RESULT_COLR;
          }
          else {
             /* for vtx programs, this is VERTEX_RESULT_POSITION */
@@ -1566,7 +1566,7 @@
       case FRAGMENT_RESULT_DEPTH:
          if (Program->Base.Target == GL_FRAGMENT_PROGRAM_ARB) {
             /* for frag programs, this is FRAGMENT_RESULT_DEPTH */
-            *outputReg = FRAG_OUTPUT_DEPR;
+            *outputReg = FRAG_RESULT_DEPR;
          }
          else {
             /* for vtx programs, this is VERTEX_RESULT_COLOR */
diff --git a/src/mesa/shader/nvfragparse.c b/src/mesa/shader/nvfragparse.c
index 520bf05..e1eeebd 100644
--- a/src/mesa/shader/nvfragparse.c
+++ b/src/mesa/shader/nvfragparse.c
@@ -843,7 +843,7 @@
    /* try to match an output register name */
    for (j = 0; OutputRegisters[j]; j++) {
       if (_mesa_strcmp((const char *) token, OutputRegisters[j]) == 0) {
-         static GLuint bothColors = (1 << FRAG_OUTPUT_COLR) | (1 << FRAG_OUTPUT_COLH);
+         static GLuint bothColors = (1 << FRAG_RESULT_COLR) | (1 << FRAG_RESULT_COLH);
          *outputRegNum = j;
          parseState->outputsWritten |= (1 << j);
          if ((parseState->outputsWritten & bothColors) == bothColors) {
diff --git a/src/mesa/shader/nvfragprog.h b/src/mesa/shader/nvfragprog.h
index bd9c8bb..8596ba0 100644
--- a/src/mesa/shader/nvfragprog.h
+++ b/src/mesa/shader/nvfragprog.h
@@ -123,10 +123,10 @@
    GLuint File:4;
    GLuint Index:8;
    GLuint Swizzle:12;
-   GLuint NegateBase:4; /* ARB: negate/extended negate.
+   GLuint NegateBase:4; /* ARB: negate/extended negate, per component.
 			   NV: negate before absolute value? */
-   GLuint Abs:1;        /* NV: take absolute value? */
-   GLuint NegateAbs:1;  /* NV: negate after absolute value? */
+   GLuint Abs:1;        /* NV: take absolute value (all components) ? */
+   GLuint NegateAbs:1;  /* NV: negate (all components) after absolute value? */
 };
 
 
diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c
index a054567..ce0a484 100644
--- a/src/mesa/shader/program.c
+++ b/src/mesa/shader/program.c
@@ -1378,15 +1378,15 @@
          }
          else if (_mesa_strcmp(reg, "o[COLR]") == 0) {
             /* Fragment output color */
-            COPY_4V(v, ctx->FragmentProgram.Machine.Outputs[FRAG_OUTPUT_COLR]);
+            COPY_4V(v, ctx->FragmentProgram.Machine.Outputs[FRAG_RESULT_COLR]);
          }
          else if (_mesa_strcmp(reg, "o[COLH]") == 0) {
             /* Fragment output color */
-            COPY_4V(v, ctx->FragmentProgram.Machine.Outputs[FRAG_OUTPUT_COLH]);
+            COPY_4V(v, ctx->FragmentProgram.Machine.Outputs[FRAG_RESULT_COLH]);
          }
          else if (_mesa_strcmp(reg, "o[DEPR]") == 0) {
             /* Fragment output depth */
-            COPY_4V(v, ctx->FragmentProgram.Machine.Outputs[FRAG_OUTPUT_DEPR]);
+            COPY_4V(v, ctx->FragmentProgram.Machine.Outputs[FRAG_RESULT_DEPR]);
          }
          else {
             /* try user-defined identifiers */
diff --git a/src/mesa/swrast/s_nvfragprog.c b/src/mesa/swrast/s_nvfragprog.c
index 434f3f5..cae0e49 100644
--- a/src/mesa/swrast/s_nvfragprog.c
+++ b/src/mesa/swrast/s_nvfragprog.c
@@ -1484,22 +1484,22 @@
          /* Store output registers */
          {
             const GLfloat *colOut
-               = ctx->FragmentProgram.Machine.Outputs[FRAG_OUTPUT_COLR];
+               = ctx->FragmentProgram.Machine.Outputs[FRAG_RESULT_COLR];
             UNCLAMPED_FLOAT_TO_CHAN(span->array->rgba[i][RCOMP], colOut[0]);
             UNCLAMPED_FLOAT_TO_CHAN(span->array->rgba[i][GCOMP], colOut[1]);
             UNCLAMPED_FLOAT_TO_CHAN(span->array->rgba[i][BCOMP], colOut[2]);
             UNCLAMPED_FLOAT_TO_CHAN(span->array->rgba[i][ACOMP], colOut[3]);
          }
          /* depth value */
-         if (program->OutputsWritten & (1 << FRAG_OUTPUT_DEPR)) {
+         if (program->OutputsWritten & (1 << FRAG_RESULT_DEPR)) {
             const GLfloat depth
-               = ctx->FragmentProgram.Machine.Outputs[FRAG_OUTPUT_DEPR][2];
+               = ctx->FragmentProgram.Machine.Outputs[FRAG_RESULT_DEPR][2];
             span->array->z[i] = IROUND(depth * ctx->DrawBuffer->_DepthMaxF);
          }
       }
    }
 
-   if (program->OutputsWritten & (1 << FRAG_OUTPUT_DEPR)) {
+   if (program->OutputsWritten & (1 << FRAG_RESULT_DEPR)) {
       span->interpMask &= ~SPAN_Z;
       span->arrayMask |= SPAN_Z;
    }
