more minor changes to STATE_ indexing

This commit is contained in:
Brian
2007-02-21 15:23:11 -07:00
parent 78399d23dc
commit f958aabdf3
4 changed files with 72 additions and 49 deletions

View File

@@ -1138,7 +1138,7 @@ parse_state_single_item (GLcontext * ctx, const GLubyte ** inst,
state_tokens[2] = STATE_ATTENUATION; state_tokens[2] = STATE_ATTENUATION;
break; break;
case LIGHT_HALF: case LIGHT_HALF:
state_tokens[2] = STATE_HALF; state_tokens[2] = STATE_HALF_VECTOR;
break; break;
case LIGHT_SPOT_DIRECTION: case LIGHT_SPOT_DIRECTION:
state_tokens[2] = STATE_SPOT_DIRECTION; state_tokens[2] = STATE_SPOT_DIRECTION;
@@ -1276,11 +1276,13 @@ parse_state_single_item (GLcontext * ctx, const GLubyte ** inst,
case STATE_POINT: case STATE_POINT:
switch (*(*inst++)) { switch (*(*inst++)) {
case POINT_SIZE: case POINT_SIZE:
state_tokens[0] = STATE_POINT_SIZE; state_tokens[0] = STATE_POINT;
state_tokens[1] = STATE_POINT_SIZE;
break; break;
case POINT_ATTENUATION: case POINT_ATTENUATION:
state_tokens[0] = STATE_POINT_ATTENUATION; state_tokens[0] = STATE_POINT;
state_tokens[1] = STATE_POINT_ATTENUATION;
break; break;
} }
break; break;
@@ -3378,6 +3380,10 @@ print_state_token (GLint token)
fprintf (stderr, "STATE_CLIPPLANE "); fprintf (stderr, "STATE_CLIPPLANE ");
break; break;
case STATE_POINT:
fprintf (stderr, "STATE_POINT ");
break;
case STATE_POINT_SIZE: case STATE_POINT_SIZE:
fprintf (stderr, "STATE_POINT_SIZE "); fprintf (stderr, "STATE_POINT_SIZE ");
break; break;

View File

@@ -116,7 +116,10 @@ _mesa_fetch_state(GLcontext *ctx, const gl_state_index state[],
COPY_3V(value, ctx->Light.Light[ln].EyeDirection); COPY_3V(value, ctx->Light.Light[ln].EyeDirection);
value[3] = ctx->Light.Light[ln]._CosCutoff; value[3] = ctx->Light.Light[ln]._CosCutoff;
return; return;
case STATE_HALF: case STATE_SPOT_CUTOFF:
value[0] = ctx->Light.Light[ln].SpotCutoff;
return;
case STATE_HALF_VECTOR:
{ {
GLfloat eye_z[] = {0, 0, 1}; GLfloat eye_z[] = {0, 0, 1};
@@ -261,17 +264,20 @@ _mesa_fetch_state(GLcontext *ctx, const gl_state_index state[],
COPY_4V(value, ctx->Transform.EyeUserPlane[plane]); COPY_4V(value, ctx->Transform.EyeUserPlane[plane]);
} }
return; return;
case STATE_POINT_SIZE: case STATE_POINT:
value[0] = ctx->Point.Size; if (state[1] == STATE_POINT_SIZE) {
value[1] = ctx->Point.MinSize; value[0] = ctx->Point.Size;
value[2] = ctx->Point.MaxSize; value[1] = ctx->Point.MinSize;
value[3] = ctx->Point.Threshold; value[2] = ctx->Point.MaxSize;
return; value[3] = ctx->Point.Threshold;
case STATE_POINT_ATTENUATION: }
value[0] = ctx->Point.Params[0]; else {
value[1] = ctx->Point.Params[1]; ASSERT(state[1] == STATE_POINT_ATTENUATION);
value[2] = ctx->Point.Params[2]; value[0] = ctx->Point.Params[0];
value[3] = 1.0F; value[1] = ctx->Point.Params[1];
value[2] = ctx->Point.Params[2];
value[3] = 1.0F;
}
return; return;
case STATE_MODELVIEW_MATRIX: case STATE_MODELVIEW_MATRIX:
case STATE_PROJECTION_MATRIX: case STATE_PROJECTION_MATRIX:
@@ -399,12 +405,13 @@ _mesa_fetch_state(GLcontext *ctx, const gl_state_index state[],
} }
return; return;
case STATE_NORMAL_SCALE:
ASSIGN_4V(value, ctx->_ModelViewInvScale, 0, 0, 1);
return;
case STATE_INTERNAL: case STATE_INTERNAL:
{ {
switch (state[1]) { switch (state[1]) {
case STATE_NORMAL_SCALE:
ASSIGN_4V(value, ctx->_ModelViewInvScale, 0, 0, 1);
break;
case STATE_TEXRECT_SCALE: { case STATE_TEXRECT_SCALE: {
const int unit = (int) state[2]; const int unit = (int) state[2];
const struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current; const struct gl_texture_object *texObj = ctx->Texture.Unit[unit]._Current;
@@ -462,8 +469,7 @@ _mesa_program_state_flags(const GLint state[STATE_LENGTH])
case STATE_CLIPPLANE: case STATE_CLIPPLANE:
return _NEW_TRANSFORM; return _NEW_TRANSFORM;
case STATE_POINT_SIZE: case STATE_POINT:
case STATE_POINT_ATTENUATION:
return _NEW_POINT; return _NEW_POINT;
case STATE_MODELVIEW_MATRIX: case STATE_MODELVIEW_MATRIX:
@@ -484,10 +490,11 @@ _mesa_program_state_flags(const GLint state[STATE_LENGTH])
case STATE_VERTEX_PROGRAM: case STATE_VERTEX_PROGRAM:
return _NEW_PROGRAM; return _NEW_PROGRAM;
case STATE_NORMAL_SCALE:
return _NEW_MODELVIEW;
case STATE_INTERNAL: case STATE_INTERNAL:
switch (state[1]) { switch (state[1]) {
case STATE_NORMAL_SCALE:
return _NEW_MODELVIEW;
case STATE_TEXRECT_SCALE: case STATE_TEXRECT_SCALE:
return _NEW_TEXTURE; return _NEW_TEXTURE;
default: default:
@@ -520,7 +527,7 @@ append_token(char *dst, gl_state_index k)
{ {
switch (k) { switch (k) {
case STATE_MATERIAL: case STATE_MATERIAL:
append(dst, "material."); append(dst, "material");
break; break;
case STATE_LIGHT: case STATE_LIGHT:
append(dst, "light"); append(dst, "light");
@@ -548,26 +555,29 @@ append_token(char *dst, gl_state_index k)
case STATE_CLIPPLANE: case STATE_CLIPPLANE:
append(dst, "clip"); append(dst, "clip");
break; break;
case STATE_POINT:
append(dst, "point");
break;
case STATE_POINT_SIZE: case STATE_POINT_SIZE:
append(dst, "point.size"); append(dst, "size");
break; break;
case STATE_POINT_ATTENUATION: case STATE_POINT_ATTENUATION:
append(dst, "point.attenuation"); append(dst, "attenuation");
break; break;
case STATE_MODELVIEW_MATRIX: case STATE_MODELVIEW_MATRIX:
append(dst, "modelview"); append(dst, "matrix.modelview");
break; break;
case STATE_PROJECTION_MATRIX: case STATE_PROJECTION_MATRIX:
append(dst, "projection"); append(dst, "matrix.projection");
break; break;
case STATE_MVP_MATRIX: case STATE_MVP_MATRIX:
append(dst, "mvp"); append(dst, "matrix.mvp");
break; break;
case STATE_TEXTURE_MATRIX: case STATE_TEXTURE_MATRIX:
append(dst, "texture"); append(dst, "matrix.texture");
break; break;
case STATE_PROGRAM_MATRIX: case STATE_PROGRAM_MATRIX:
append(dst, "program"); append(dst, "matrix.program");
break; break;
case STATE_MATRIX_INVERSE: case STATE_MATRIX_INVERSE:
append(dst, ".inverse"); append(dst, ".inverse");
@@ -579,22 +589,22 @@ append_token(char *dst, gl_state_index k)
append(dst, ".invtrans"); append(dst, ".invtrans");
break; break;
case STATE_AMBIENT: case STATE_AMBIENT:
append(dst, "ambient"); append(dst, ".ambient");
break; break;
case STATE_DIFFUSE: case STATE_DIFFUSE:
append(dst, "diffuse"); append(dst, ".diffuse");
break; break;
case STATE_SPECULAR: case STATE_SPECULAR:
append(dst, "specular"); append(dst, ".specular");
break; break;
case STATE_EMISSION: case STATE_EMISSION:
append(dst, "emission"); append(dst, ".emission");
break; break;
case STATE_SHININESS: case STATE_SHININESS:
append(dst, "shininess"); append(dst, "lshininess");
break; break;
case STATE_HALF: case STATE_HALF_VECTOR:
append(dst, "half"); append(dst, ".half");
break; break;
case STATE_POSITION: case STATE_POSITION:
append(dst, ".position"); append(dst, ".position");
@@ -605,6 +615,9 @@ append_token(char *dst, gl_state_index k)
case STATE_SPOT_DIRECTION: case STATE_SPOT_DIRECTION:
append(dst, ".spot.direction"); append(dst, ".spot.direction");
break; break;
case STATE_SPOT_CUTOFF:
append(dst, ".spot.cutoff");
break;
case STATE_TEXGEN_EYE_S: case STATE_TEXGEN_EYE_S:
append(dst, "eye.s"); append(dst, "eye.s");
break; break;
@@ -644,8 +657,10 @@ append_token(char *dst, gl_state_index k)
case STATE_LOCAL: case STATE_LOCAL:
append(dst, "local"); append(dst, "local");
break; break;
case STATE_INTERNAL:
case STATE_NORMAL_SCALE: case STATE_NORMAL_SCALE:
append(dst, "normalScale");
break;
case STATE_INTERNAL:
case STATE_POSITION_NORMALIZED: case STATE_POSITION_NORMALIZED:
append(dst, "(internal)"); append(dst, "(internal)");
break; break;
@@ -667,7 +682,7 @@ static void
append_index(char *dst, GLint index) append_index(char *dst, GLint index)
{ {
char s[20]; char s[20];
_mesa_sprintf(s, "[%d].", index); _mesa_sprintf(s, "[%d]", index);
append(dst, s); append(dst, s);
} }
@@ -691,7 +706,6 @@ _mesa_program_state_string(const GLint state[STATE_LENGTH])
append_token(str, (gl_state_index) state[2]); append_token(str, (gl_state_index) state[2]);
break; break;
case STATE_LIGHT: case STATE_LIGHT:
append(str, "light");
append_index(str, state[1]); /* light number [i]. */ append_index(str, state[1]); /* light number [i]. */
append_token(str, (gl_state_index) state[2]); /* coefficients */ append_token(str, (gl_state_index) state[2]); /* coefficients */
break; break;
@@ -725,10 +739,10 @@ _mesa_program_state_string(const GLint state[STATE_LENGTH])
break; break;
case STATE_CLIPPLANE: case STATE_CLIPPLANE:
append_index(str, state[1]); /* plane [i] */ append_index(str, state[1]); /* plane [i] */
append(str, "plane"); append(str, ".plane");
break; break;
case STATE_POINT_SIZE: case STATE_POINT:
case STATE_POINT_ATTENUATION: append_token(str, state[1]);
break; break;
case STATE_MODELVIEW_MATRIX: case STATE_MODELVIEW_MATRIX:
case STATE_PROJECTION_MATRIX: case STATE_PROJECTION_MATRIX:
@@ -746,8 +760,9 @@ _mesa_program_state_string(const GLint state[STATE_LENGTH])
const GLuint firstRow = (GLuint) state[2]; const GLuint firstRow = (GLuint) state[2];
const GLuint lastRow = (GLuint) state[3]; const GLuint lastRow = (GLuint) state[3];
const gl_state_index modifier = (gl_state_index) state[4]; const gl_state_index modifier = (gl_state_index) state[4];
append_token(str, mat); if (index ||
if (index) mat == STATE_TEXTURE_MATRIX ||
mat == STATE_PROGRAM_MATRIX)
append_index(str, index); append_index(str, index);
if (modifier) if (modifier)
append_token(str, modifier); append_token(str, modifier);

View File

@@ -60,6 +60,7 @@ typedef enum gl_state_index_ {
STATE_CLIPPLANE, STATE_CLIPPLANE,
STATE_POINT,
STATE_POINT_SIZE, STATE_POINT_SIZE,
STATE_POINT_ATTENUATION, STATE_POINT_ATTENUATION,
@@ -77,11 +78,12 @@ typedef enum gl_state_index_ {
STATE_SPECULAR, STATE_SPECULAR,
STATE_EMISSION, STATE_EMISSION,
STATE_SHININESS, STATE_SHININESS,
STATE_HALF, STATE_HALF_VECTOR,
STATE_POSITION, STATE_POSITION,
STATE_ATTENUATION, STATE_ATTENUATION,
STATE_SPOT_DIRECTION, STATE_SPOT_DIRECTION,
STATE_SPOT_CUTOFF,
STATE_TEXGEN_EYE_S, STATE_TEXGEN_EYE_S,
STATE_TEXGEN_EYE_T, STATE_TEXGEN_EYE_T,

View File

@@ -946,7 +946,7 @@ static void build_lighting( struct tnl_program *p )
*/ */
VPpli = register_param3(p, STATE_LIGHT, i, VPpli = register_param3(p, STATE_LIGHT, i,
STATE_POSITION_NORMALIZED); STATE_POSITION_NORMALIZED);
half = register_param3(p, STATE_LIGHT, i, STATE_HALF); half = register_param3(p, STATE_LIGHT, i, STATE_HALF_VECTOR);
} }
else { else {
struct ureg Ppli = register_param3(p, STATE_LIGHT, i, struct ureg Ppli = register_param3(p, STATE_LIGHT, i,
@@ -1328,8 +1328,8 @@ static void build_texture_transform( struct tnl_program *p )
static void build_pointsize( struct tnl_program *p ) static void build_pointsize( struct tnl_program *p )
{ {
struct ureg eye = get_eye_position(p); struct ureg eye = get_eye_position(p);
struct ureg state_size = register_param1(p, STATE_POINT_SIZE); struct ureg state_size = register_param2(p, STATE_POINT, STATE_POINT_SIZE);
struct ureg state_attenuation = register_param1(p, STATE_POINT_ATTENUATION); struct ureg state_attenuation = register_param2(p, STATE_POINT, STATE_POINT_ATTENUATION);
struct ureg out = register_output(p, VERT_RESULT_PSIZ); struct ureg out = register_output(p, VERT_RESULT_PSIZ);
struct ureg ut = get_temp(p); struct ureg ut = get_temp(p);