-/* $Id: enable.c,v 1.13 2000/04/04 15:14:10 brianp Exp $ */
+/* $Id: enable.c,v 1.29 2000/10/30 13:32:00 keithw Exp $ */
/*
* Mesa 3-D graphics library
- * Version: 3.3
+ * Version: 3.5
*
- * Copyright (C) 1999 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2000 Brian Paul 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"),
case GL_ALPHA_TEST:
if (ctx->Color.AlphaEnabled!=state) {
ctx->Color.AlphaEnabled = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_COLOR;
}
break;
case GL_AUTO_NORMAL:
ctx->Eval.AutoNormal = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_BLEND:
if (ctx->Color.BlendEnabled!=state) {
else {
ctx->Color.ColorLogicOpEnabled = GL_FALSE;
}
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_COLOR;
}
break;
case GL_CLIP_PLANE0:
case GL_CLIP_PLANE3:
case GL_CLIP_PLANE4:
case GL_CLIP_PLANE5:
- if (cap >= GL_CLIP_PLANE0 &&
- cap <= GL_CLIP_PLANE5 &&
- ctx->Transform.ClipEnabled[cap-GL_CLIP_PLANE0] != state)
+ if (ctx->Transform.ClipEnabled[cap-GL_CLIP_PLANE0] != state)
{
GLuint p = cap-GL_CLIP_PLANE0;
ctx->Transform.ClipEnabled[p] = state;
- ctx->NewState |= NEW_USER_CLIP;
+ ctx->NewState |= _NEW_TRANSFORM;
if (state) {
ctx->Enabled |= ENABLE_USERCLIP;
case GL_COLOR_MATERIAL:
if (ctx->Light.ColorMaterialEnabled!=state) {
ctx->Light.ColorMaterialEnabled = state;
- ctx->NewState |= NEW_LIGHTING;
+ ctx->NewState |= _NEW_LIGHT;
if (state)
- gl_update_color_material( ctx, ctx->Current.ByteColor );
+ gl_update_color_material( ctx, ctx->Current.Color );
}
break;
case GL_CULL_FACE:
if (ctx->Polygon.CullFlag!=state) {
ctx->Polygon.CullFlag = state;
ctx->TriangleCaps ^= DD_TRI_CULL;
- ctx->NewState |= NEW_POLYGON;
+ ctx->NewState |= _NEW_POLYGON;
}
break;
case GL_DEPTH_TEST:
- if (state && ctx->Visual->DepthBits==0) {
- gl_warning(ctx,"glEnable(GL_DEPTH_TEST) but no depth buffer");
+ if (state && ctx->Visual.DepthBits==0) {
+ _mesa_warning(ctx,"glEnable(GL_DEPTH_TEST) but no depth buffer");
return;
}
if (ctx->Depth.Test!=state) {
ctx->Depth.Test = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_DEPTH;
}
break;
case GL_DITHER:
}
if (ctx->Color.DitherFlag!=state) {
ctx->Color.DitherFlag = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_COLOR;
}
break;
case GL_FOG:
if (ctx->Fog.Enabled!=state) {
ctx->Fog.Enabled = state;
ctx->Enabled ^= ENABLE_FOG;
- ctx->NewState |= NEW_FOG|NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_FOG;
}
break;
+ case GL_HISTOGRAM:
+ if (ctx->Extensions.EXT_histogram) {
+ ctx->Pixel.HistogramEnabled = state;
+ ctx->NewState |= _NEW_PIXEL;
+ }
+ else {
+ gl_error( ctx, GL_INVALID_ENUM, state ? "glEnable": "glDisable" );
+ return;
+ }
+ break;
case GL_LIGHT0:
case GL_LIGHT1:
case GL_LIGHT2:
case GL_LIGHT5:
case GL_LIGHT6:
case GL_LIGHT7:
- if (ctx->Light.Light[cap-GL_LIGHT0].Enabled != state)
- {
+ if (ctx->Light.Light[cap-GL_LIGHT0].Enabled != state) {
ctx->Light.Light[cap-GL_LIGHT0].Enabled = state;
if (state) {
ctx->Enabled &= ~ENABLE_LIGHT;
}
- ctx->NewState |= NEW_LIGHTING;
+ ctx->NewState |= _NEW_LIGHT;
}
break;
case GL_LIGHTING:
ctx->Enabled &= ~ENABLE_LIGHT;
if (state)
ctx->Enabled |= ENABLE_LIGHT;
- ctx->NewState |= NEW_LIGHTING;
+ ctx->NewState |= _NEW_LIGHT;
}
break;
case GL_LINE_SMOOTH:
if (ctx->Line.SmoothFlag!=state) {
ctx->Line.SmoothFlag = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->TriangleCaps ^= DD_LINE_SMOOTH;
+ ctx->NewState |= _NEW_LINE;
}
break;
case GL_LINE_STIPPLE:
if (ctx->Line.StippleFlag!=state) {
ctx->Line.StippleFlag = state;
ctx->TriangleCaps ^= DD_LINE_STIPPLE;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_LINE;
}
break;
case GL_INDEX_LOGIC_OP:
if (ctx->Color.IndexLogicOpEnabled!=state) {
ctx->Color.IndexLogicOpEnabled = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_COLOR;
}
break;
case GL_COLOR_LOGIC_OP:
if (ctx->Color.ColorLogicOpEnabled!=state) {
ctx->Color.ColorLogicOpEnabled = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_COLOR;
}
break;
case GL_MAP1_COLOR_4:
ctx->Eval.Map1Color4 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP1_INDEX:
ctx->Eval.Map1Index = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP1_NORMAL:
ctx->Eval.Map1Normal = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP1_TEXTURE_COORD_1:
ctx->Eval.Map1TextureCoord1 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP1_TEXTURE_COORD_2:
ctx->Eval.Map1TextureCoord2 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP1_TEXTURE_COORD_3:
ctx->Eval.Map1TextureCoord3 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP1_TEXTURE_COORD_4:
ctx->Eval.Map1TextureCoord4 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP1_VERTEX_3:
ctx->Eval.Map1Vertex3 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP1_VERTEX_4:
ctx->Eval.Map1Vertex4 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP2_COLOR_4:
ctx->Eval.Map2Color4 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP2_INDEX:
ctx->Eval.Map2Index = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP2_NORMAL:
ctx->Eval.Map2Normal = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP2_TEXTURE_COORD_1:
ctx->Eval.Map2TextureCoord1 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP2_TEXTURE_COORD_2:
ctx->Eval.Map2TextureCoord2 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP2_TEXTURE_COORD_3:
ctx->Eval.Map2TextureCoord3 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP2_TEXTURE_COORD_4:
ctx->Eval.Map2TextureCoord4 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP2_VERTEX_3:
ctx->Eval.Map2Vertex3 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
case GL_MAP2_VERTEX_4:
ctx->Eval.Map2Vertex4 = state;
+ ctx->NewState |= _NEW_EVAL;
break;
+ case GL_MINMAX:
+ ctx->Pixel.MinMaxEnabled = state;
+ ctx->NewState |= _NEW_PIXEL;
+ break;
case GL_NORMALIZE:
if (ctx->Transform.Normalize != state) {
ctx->Transform.Normalize = state;
- ctx->NewState |= NEW_NORMAL_TRANSFORM|NEW_LIGHTING;
+ ctx->NewState |= _NEW_TRANSFORM;
ctx->Enabled ^= ENABLE_NORMALIZE;
}
break;
case GL_POINT_SMOOTH:
if (ctx->Point.SmoothFlag!=state) {
ctx->Point.SmoothFlag = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->TriangleCaps ^= DD_POINT_SMOOTH;
+ ctx->NewState |= _NEW_POINT;
}
break;
case GL_POLYGON_SMOOTH:
if (ctx->Polygon.SmoothFlag!=state) {
ctx->Polygon.SmoothFlag = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->TriangleCaps ^= DD_TRI_SMOOTH;
+ ctx->NewState |= _NEW_POLYGON;
}
break;
case GL_POLYGON_STIPPLE:
if (ctx->Polygon.StippleFlag!=state) {
ctx->Polygon.StippleFlag = state;
ctx->TriangleCaps ^= DD_TRI_STIPPLE;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_POLYGON;
}
break;
case GL_POLYGON_OFFSET_POINT:
if (ctx->Polygon.OffsetPoint!=state) {
ctx->Polygon.OffsetPoint = state;
- ctx->NewState |= NEW_POLYGON;
+ ctx->NewState |= _NEW_POLYGON;
}
break;
case GL_POLYGON_OFFSET_LINE:
if (ctx->Polygon.OffsetLine!=state) {
ctx->Polygon.OffsetLine = state;
- ctx->NewState |= NEW_POLYGON;
+ ctx->NewState |= _NEW_POLYGON;
}
break;
case GL_POLYGON_OFFSET_FILL:
/*case GL_POLYGON_OFFSET_EXT:*/
if (ctx->Polygon.OffsetFill!=state) {
ctx->Polygon.OffsetFill = state;
- ctx->NewState |= NEW_POLYGON;
+ ctx->NewState |= _NEW_POLYGON;
}
break;
case GL_RESCALE_NORMAL_EXT:
if (ctx->Transform.RescaleNormals != state) {
ctx->Transform.RescaleNormals = state;
- ctx->NewState |= NEW_NORMAL_TRANSFORM|NEW_LIGHTING;
+ ctx->NewState |= _NEW_TRANSFORM;
ctx->Enabled ^= ENABLE_RESCALE;
}
break;
case GL_SCISSOR_TEST:
if (ctx->Scissor.Enabled!=state) {
ctx->Scissor.Enabled = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_SCISSOR;
}
break;
case GL_SHARED_TEXTURE_PALETTE_EXT:
ctx->Texture.SharedPalette = state;
+ ctx->NewState |= _NEW_TEXTURE;
break;
case GL_STENCIL_TEST:
- if (state && ctx->Visual->StencilBits==0) {
- gl_warning(ctx, "glEnable(GL_STENCIL_TEST) but no stencil buffer");
+ if (state && ctx->Visual.StencilBits==0) {
+ _mesa_warning(ctx, "glEnable(GL_STENCIL_TEST) but no stencil buffer");
return;
}
if (ctx->Stencil.Enabled!=state) {
ctx->Stencil.Enabled = state;
- ctx->NewState |= NEW_RASTER_OPS;
+ ctx->NewState |= _NEW_STENCIL;
ctx->TriangleCaps ^= DD_STENCIL;
}
break;
case GL_TEXTURE_1D:
- if (ctx->Visual->RGBAflag) {
+ if (ctx->Visual.RGBAflag) {
const GLuint curr = ctx->Texture.CurrentUnit;
- const GLuint flag = TEXTURE0_1D << (curr * 4);
struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
- ctx->NewState |= NEW_TEXTURE_ENABLE;
+ ctx->NewState |= _NEW_TEXTURE;
if (state) {
texUnit->Enabled |= TEXTURE0_1D;
- ctx->Enabled |= flag;
}
else {
texUnit->Enabled &= ~TEXTURE0_1D;
- ctx->Enabled &= ~flag;
}
}
break;
case GL_TEXTURE_2D:
- if (ctx->Visual->RGBAflag) {
+ if (ctx->Visual.RGBAflag) {
const GLuint curr = ctx->Texture.CurrentUnit;
- const GLuint flag = TEXTURE0_2D << (curr * 4);
struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
- ctx->NewState |= NEW_TEXTURE_ENABLE;
+ ctx->NewState |= _NEW_TEXTURE;
if (state) {
texUnit->Enabled |= TEXTURE0_2D;
- ctx->Enabled |= flag;
}
else {
texUnit->Enabled &= ~TEXTURE0_2D;
- ctx->Enabled &= ~flag;
}
}
break;
case GL_TEXTURE_3D:
- if (ctx->Visual->RGBAflag) {
+ if (ctx->Visual.RGBAflag) {
const GLuint curr = ctx->Texture.CurrentUnit;
- const GLuint flag = TEXTURE0_3D << (curr * 4);
struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
- ctx->NewState |= NEW_TEXTURE_ENABLE;
+ ctx->NewState |= _NEW_TEXTURE;
if (state) {
texUnit->Enabled |= TEXTURE0_3D;
- ctx->Enabled |= flag;
}
else {
texUnit->Enabled &= ~TEXTURE0_3D;
- ctx->Enabled &= ~flag;
}
}
break;
texUnit->TexGenEnabled |= Q_BIT;
else
texUnit->TexGenEnabled &= ~Q_BIT;
- ctx->NewState |= NEW_TEXTURING;
+ ctx->NewState |= _NEW_TEXTURE;
}
break;
case GL_TEXTURE_GEN_R:
texUnit->TexGenEnabled |= R_BIT;
else
texUnit->TexGenEnabled &= ~R_BIT;
- ctx->NewState |= NEW_TEXTURING;
+ ctx->NewState |= _NEW_TEXTURE;
}
break;
case GL_TEXTURE_GEN_S:
texUnit->TexGenEnabled |= S_BIT;
else
texUnit->TexGenEnabled &= ~S_BIT;
- ctx->NewState |= NEW_TEXTURING;
+ ctx->NewState |= _NEW_TEXTURE;
}
break;
case GL_TEXTURE_GEN_T:
texUnit->TexGenEnabled |= T_BIT;
else
texUnit->TexGenEnabled &= ~T_BIT;
- ctx->NewState |= NEW_TEXTURING;
+ ctx->NewState |= _NEW_TEXTURE;
}
break;
*/
case GL_VERTEX_ARRAY:
ctx->Array.Vertex.Enabled = state;
- break;
+ ctx->NewState |= _NEW_ARRAY;
+ break;
case GL_NORMAL_ARRAY:
ctx->Array.Normal.Enabled = state;
+ ctx->NewState |= _NEW_ARRAY;
break;
case GL_COLOR_ARRAY:
ctx->Array.Color.Enabled = state;
+ ctx->NewState |= _NEW_ARRAY;
break;
case GL_INDEX_ARRAY:
ctx->Array.Index.Enabled = state;
+ ctx->NewState |= _NEW_ARRAY;
break;
case GL_TEXTURE_COORD_ARRAY:
ctx->Array.TexCoord[ctx->Array.ActiveTexture].Enabled = state;
+ ctx->NewState |= _NEW_ARRAY;
break;
case GL_EDGE_FLAG_ARRAY:
ctx->Array.EdgeFlag.Enabled = state;
+ ctx->NewState |= _NEW_ARRAY;
break;
/* GL_HP_occlusion_test */
case GL_OCCLUSION_TEST_HP:
- if (ctx->Extensions.HaveHpOcclusionTest) {
+ if (ctx->Extensions.HP_occlusion_test) {
ctx->Depth.OcclusionTest = state;
+ ctx->NewState |= _NEW_DEPTH;
if (state)
ctx->OcclusionResult = ctx->OcclusionResultSaved;
else
ctx->OcclusionResultSaved = ctx->OcclusionResult;
- ctx->NewState |= NEW_RASTER_OPS;
}
else {
gl_error( ctx, GL_INVALID_ENUM, state ? "glEnable": "glDisable" );
}
break;
+ /* GL_SGIS_pixel_texture */
+ case GL_PIXEL_TEXTURE_SGIS:
+ /* XXX check for extension */
+ ctx->Pixel.PixelTextureEnabled = state;
+ ctx->NewState |= _NEW_PIXEL;
+ break;
+
+ /* GL_SGIX_pixel_texture */
+ case GL_PIXEL_TEX_GEN_SGIX:
+ /* XXX check for extension */
+ ctx->Pixel.PixelTextureEnabled = state;
+ ctx->NewState |= _NEW_PIXEL;
+ break;
+
+ /* GL_SGI_color_table */
+ case GL_COLOR_TABLE_SGI:
+ /* XXX check for extension */
+ ctx->Pixel.ColorTableEnabled = state;
+ ctx->ImageTransferState = UPDATE_IMAGE_TRANSFER_STATE;
+ ctx->NewState |= _NEW_PIXEL;
+ break;
+ case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
+ ctx->Pixel.PostConvolutionColorTableEnabled = state;
+ ctx->ImageTransferState = UPDATE_IMAGE_TRANSFER_STATE;
+ ctx->NewState |= _NEW_PIXEL;
+ break;
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
+ ctx->Pixel.PostColorMatrixColorTableEnabled = state;
+ ctx->ImageTransferState = UPDATE_IMAGE_TRANSFER_STATE;
+ ctx->NewState |= _NEW_PIXEL;
+ break;
+
+ /* GL_EXT_convolution */
+ case GL_CONVOLUTION_1D:
+ /* XXX check for extension */
+ ctx->Pixel.Convolution1DEnabled = state;
+ ctx->ImageTransferState = UPDATE_IMAGE_TRANSFER_STATE;
+ ctx->NewState |= _NEW_PIXEL;
+ break;
+ case GL_CONVOLUTION_2D:
+ ctx->Pixel.Convolution2DEnabled = state;
+ ctx->ImageTransferState = UPDATE_IMAGE_TRANSFER_STATE;
+ ctx->NewState |= _NEW_PIXEL;
+ break;
+ case GL_SEPARABLE_2D:
+ ctx->Pixel.Separable2DEnabled = state;
+ ctx->ImageTransferState = UPDATE_IMAGE_TRANSFER_STATE;
+ ctx->NewState |= _NEW_PIXEL;
+ break;
+
+ /* GL_ARB_texture_cube_map */
+ case GL_TEXTURE_CUBE_MAP_ARB:
+ if (ctx->Extensions.ARB_texture_cube_map) {
+ if (ctx->Visual.RGBAflag) {
+ const GLuint curr = ctx->Texture.CurrentUnit;
+ struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr];
+ ctx->NewState |= _NEW_TEXTURE;
+ if (state) {
+ texUnit->Enabled |= TEXTURE0_CUBE;
+ }
+ else {
+ texUnit->Enabled &= ~TEXTURE0_CUBE;
+ }
+ }
+ }
+ else {
+ gl_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
+ return;
+ }
+ break;
+
+ /* GL_EXT_secondary_color */
+ case GL_COLOR_SUM_EXT:
+ ctx->Fog.ColorSumEnabled = state;
+ if (state)
+ SET_BITS(ctx->TriangleCaps, DD_SEPERATE_SPECULAR);
+ else if (ctx->Light.Model.ColorControl == GL_SINGLE_COLOR)
+ CLEAR_BITS(ctx->TriangleCaps, DD_SEPERATE_SPECULAR);
+ ctx->NewState |= _NEW_FOG;
+ break;
+
default:
- if (state) {
- gl_error( ctx, GL_INVALID_ENUM, "glEnable" );
- }
- else {
- gl_error( ctx, GL_INVALID_ENUM, "glDisable" );
- }
+ gl_error(ctx, GL_INVALID_ENUM, state ? "glEnable" : "glDisable");
return;
}
return ctx->Color.DitherFlag;
case GL_FOG:
return ctx->Fog.Enabled;
+ case GL_HISTOGRAM:
+ if (ctx->Extensions.EXT_histogram) {
+ return ctx->Pixel.HistogramEnabled;
+ }
+ else {
+ gl_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
+ return GL_FALSE;
+ }
case GL_LIGHTING:
return ctx->Light.Enabled;
case GL_LIGHT0:
return ctx->Eval.Map2Vertex3;
case GL_MAP2_VERTEX_4:
return ctx->Eval.Map2Vertex4;
+ case GL_MINMAX:
+ return ctx->Pixel.MinMaxEnabled;
case GL_NORMALIZE:
return ctx->Transform.Normalize;
case GL_POINT_SMOOTH:
/* GL_HP_occlusion_test */
case GL_OCCLUSION_TEST_HP:
- if (ctx->Extensions.HaveHpOcclusionTest) {
+ if (ctx->Extensions.HP_occlusion_test) {
return ctx->Depth.OcclusionTest;
}
else {
return GL_FALSE;
}
+ /* GL_SGIS_pixel_texture */
+ case GL_PIXEL_TEXTURE_SGIS:
+ return ctx->Pixel.PixelTextureEnabled;
+
+ /* GL_SGIX_pixel_texture */
+ case GL_PIXEL_TEX_GEN_SGIX:
+ return ctx->Pixel.PixelTextureEnabled;
+
+ /* GL_SGI_color_table */
+ case GL_COLOR_TABLE_SGI:
+ return ctx->Pixel.ColorTableEnabled;
+ case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
+ return ctx->Pixel.PostConvolutionColorTableEnabled;
+ case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
+ return ctx->Pixel.PostColorMatrixColorTableEnabled;
+
+ /* GL_EXT_convolution */
+ case GL_CONVOLUTION_1D:
+ return ctx->Pixel.Convolution1DEnabled;
+ case GL_CONVOLUTION_2D:
+ return ctx->Pixel.Convolution2DEnabled;
+ case GL_SEPARABLE_2D:
+ return ctx->Pixel.Separable2DEnabled;
+
+ /* GL_ARB_texture_cube_map */
+ case GL_TEXTURE_CUBE_MAP_ARB:
+ if (ctx->Extensions.ARB_texture_cube_map) {
+ const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+ return (texUnit->Enabled & TEXTURE0_CUBE) ? GL_TRUE : GL_FALSE;
+ }
+ else {
+ gl_error(ctx, GL_INVALID_ENUM, "glIsEnabled");
+ return GL_FALSE;
+ }
+
default:
gl_error( ctx, GL_INVALID_ENUM, "glIsEnabled" );
return GL_FALSE;
case GL_EDGE_FLAG_ARRAY:
ctx->Array.EdgeFlag.Enabled = state;
break;
+ case GL_FOG_COORDINATE_ARRAY_EXT:
+ ctx->Array.FogCoord.Enabled = state;
+ break;
+ case GL_SECONDARY_COLOR_ARRAY_EXT:
+ ctx->Array.SecondaryColor.Enabled = state;
+ break;
default:
gl_error( ctx, GL_INVALID_ENUM, "glEnable/DisableClientState" );
}
- ctx->NewState |= NEW_CLIENT_STATE;
+ ctx->NewState |= _NEW_ARRAY;
}