ARB prog parser: Correct handling of some extensions that interact w/ARB_vp

This commit is contained in:
Ian Romanick
2009-07-27 14:11:38 -07:00
parent be32fb779b
commit 054ab5a50a
3 changed files with 211 additions and 178 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -815,10 +815,20 @@ vtxAttribItem: POSITION
}
| COLOR optColorType
{
if (!state->ctx->Extensions.EXT_secondary_color) {
yyerror(& @2, state, "GL_EXT_secondary_color not supported");
YYERROR;
}
$$ = VERT_ATTRIB_COLOR0 + $2;
}
| FOGCOORD
{
if (!state->ctx->Extensions.EXT_fog_coord) {
yyerror(& @1, state, "GL_EXT_fog_coord not supported");
YYERROR;
}
$$ = VERT_ATTRIB_FOG;
}
| TEXCOORD optTexCoordUnitNum
@@ -827,6 +837,7 @@ vtxAttribItem: POSITION
}
| MATRIXINDEX '[' vtxWeightNum ']'
{
yyerror(& @1, state, "GL_ARB_matrix_palette not supported");
YYERROR;
}
| VTXATTRIB '[' vtxAttribNum ']'
@@ -1060,6 +1071,11 @@ stateLightProperty: ambDiffSpecProperty
}
| ATTENUATION
{
if (!state->ctx->Extensions.EXT_point_parameters) {
yyerror(& @1, state, "GL_ARB_point_parameters not supported");
YYERROR;
}
$$ = STATE_ATTENUATION;
}
| SPOT stateSpotProperty
@@ -1346,6 +1362,7 @@ stateMatrixName: MODELVIEW stateOptModMatNum
}
| PALETTE '[' statePaletteMatNum ']'
{
yyerror(& @1, state, "GL_ARB_matrix_palette not supported");
YYERROR;
}
| MAT_PROGRAM '[' stateProgramMatNum ']'

View File

@@ -91,19 +91,18 @@ _mesa_ARBfp_parse_option(struct asm_parser_state *state, const char *option)
return 0;
} else if (strcmp(option, "draw_buffers") == 0) {
/* FINISHME: This should validate that the driver support the
* FINISHME: GL_ARB_draw_buffers extension.
/* Don't need to check extension availability because all Mesa-based
* drivers support GL_ARB_draw_buffers.
*/
state->option.DrawBuffers = 1;
return 1;
} else if (strcmp(option, "fragment_program_shadow") == 0) {
/* FINISHME: This should validate that the driver support the
* FINISHME: GL_ARB_fragment_program_shadow extension.
*/
if (state->ctx->Extensions.ARB_fragment_program_shadow) {
state->option.Shadow = 1;
return 1;
}
}
}
return 0;
}