summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mesa/main/arbparse.c48
1 files changed, 32 insertions, 16 deletions
diff --git a/src/mesa/main/arbparse.c b/src/mesa/main/arbparse.c
index 1afa3395b9c..3d616b7a518 100644
--- a/src/mesa/main/arbparse.c
+++ b/src/mesa/main/arbparse.c
@@ -53,24 +53,14 @@
* + overflow on atoi
* + not-overflowing floats (don't use parse_integer..)
* + test for 0 on matrix rows, or give a default value to parse_integer()
- *
- * + fix multiple cases in switches, that might change
- * (these are things that are #defined to the same value, but occur
- * only on fp or vp's, which funkifies the switch statements)
- * - STATE_TEX_* STATE_CLIP_PLANE, etc and PRECISION_HINT_FASTEST/
- * PositionInvariant
- *
+ *
* - check all limits of number of various variables
* + parameters
- * + modelview matrix number
*
* - test! test! test!
*
* Vertex Program Stuff:
* -----------------------------------------------------
- * - Add in cases for vp attribs
- * + VERTEX_ATTRIB_MATRIXINDEX -- ??
- *
* - ARRAY_INDEX_RELATIVE
* - grep for XXX
*
@@ -85,14 +75,19 @@
*
* Cosmetic Stuff
* -----------------------------------------------------
- * - fix compiler warnings
* - remove any leftover unused grammer.c stuff (dict_ ?)
* - fix grammer.c error handling so its not static
* - #ifdef around stuff pertaining to extentions
*
* Outstanding Questions:
* -----------------------------------------------------
- * - palette matrix? do we support this extension? what is the extention?
+ * - ARB_matrix_palette / ARB_vertex_blend -- not supported
+ * what gets hacked off because of this:
+ * + VERTEX_ATTRIB_MATRIXINDEX
+ * + VERTEX_ATTRIB_WEIGHT
+ * + MATRIX_MODELVIEW
+ * + MATRIX_PALETTE
+ *
* - When can we fetch env/local params from their own register files, and
* when to we have to fetch them into the main state register file?
* (think arrays)
@@ -3120,7 +3115,13 @@ parse_matrix (GLcontext * ctx, GLubyte ** inst, struct arb_program *Program,
case MATRIX_MODELVIEW:
*matrix = STATE_MODELVIEW;
*matrix_idx = parse_integer (inst, Program);
- /* XXX: if (*matrix_idx >= ctx->Const. */
+ if (*matrix_idx > 0) {
+ _mesa_set_program_error (ctx, Program->Position,
+ "ARB_vertex_blend not supported\n");
+ _mesa_error (ctx, GL_INVALID_OPERATION,
+ "ARB_vertex_blend not supported\n");
+ return 1;
+ }
break;
case MATRIX_PROJECTION:
@@ -3143,9 +3144,14 @@ parse_matrix (GLcontext * ctx, GLubyte ** inst, struct arb_program *Program,
}
break;
- /* XXX: How should we handle the palette matrix? */
+ /* This is not currently supported (ARB_matrix_palette) */
case MATRIX_PALETTE:
*matrix_idx = parse_integer (inst, Program);
+ _mesa_set_program_error (ctx, Program->Position,
+ "ARB_matrix_palette not supported\n");
+ _mesa_error (ctx, GL_INVALID_OPERATION,
+ "ARB_matrix_palette not supported\n");
+ return 1;
break;
case MATRIX_PROGRAM:
@@ -3602,6 +3608,11 @@ parse_attrib_binding (GLcontext * ctx, GLubyte ** inst,
*binding = VERT_ATTRIB_WEIGHT;
*binding_idx = 1;
}
+ _mesa_set_program_error (ctx, Program->Position,
+ "ARB_vertex_blend not supported\n");
+ _mesa_error (ctx, GL_INVALID_OPERATION,
+ "ARB_vertex_blend not supported\n");
+ return 1;
break;
case VERTEX_ATTRIB_NORMAL:
@@ -3640,9 +3651,14 @@ parse_attrib_binding (GLcontext * ctx, GLubyte ** inst,
}
break;
- /* XXX: It looks like we don't support this at all, atm */
+ /* It looks like we don't support this at all, atm */
case VERTEX_ATTRIB_MATRIXINDEX:
parse_integer (inst, Program);
+ _mesa_set_program_error (ctx, Program->Position,
+ "ARB_palette_matrix not supported");
+ _mesa_error (ctx, GL_INVALID_OPERATION,
+ "ARB_palette_matrix not supported");
+ return 1;
break;
case VERTEX_ATTRIB_GENERIC: