diff options
Diffstat (limited to 'src/mesa/main/enable.c')
-rw-r--r-- | src/mesa/main/enable.c | 32 |
1 files changed, 14 insertions, 18 deletions
diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index 4c1f46102d1..12ce14c5d04 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -37,6 +37,7 @@ #include "mtypes.h" #include "enums.h" #include "api_arrayelt.h" +#include "texstate.h" @@ -54,46 +55,47 @@ static void client_state(GLcontext *ctx, GLenum cap, GLboolean state) { + struct gl_array_object *arrayObj = ctx->Array.ArrayObj; GLuint flag; GLboolean *var; switch (cap) { case GL_VERTEX_ARRAY: - var = &ctx->Array.ArrayObj->Vertex.Enabled; + var = &arrayObj->Vertex.Enabled; flag = _NEW_ARRAY_VERTEX; break; case GL_NORMAL_ARRAY: - var = &ctx->Array.ArrayObj->Normal.Enabled; + var = &arrayObj->Normal.Enabled; flag = _NEW_ARRAY_NORMAL; break; case GL_COLOR_ARRAY: - var = &ctx->Array.ArrayObj->Color.Enabled; + var = &arrayObj->Color.Enabled; flag = _NEW_ARRAY_COLOR0; break; case GL_INDEX_ARRAY: - var = &ctx->Array.ArrayObj->Index.Enabled; + var = &arrayObj->Index.Enabled; flag = _NEW_ARRAY_INDEX; break; case GL_TEXTURE_COORD_ARRAY: - var = &ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled; + var = &arrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled; flag = _NEW_ARRAY_TEXCOORD(ctx->Array.ActiveTexture); break; case GL_EDGE_FLAG_ARRAY: - var = &ctx->Array.ArrayObj->EdgeFlag.Enabled; + var = &arrayObj->EdgeFlag.Enabled; flag = _NEW_ARRAY_EDGEFLAG; break; case GL_FOG_COORDINATE_ARRAY_EXT: - var = &ctx->Array.ArrayObj->FogCoord.Enabled; + var = &arrayObj->FogCoord.Enabled; flag = _NEW_ARRAY_FOGCOORD; break; case GL_SECONDARY_COLOR_ARRAY_EXT: - var = &ctx->Array.ArrayObj->SecondaryColor.Enabled; + var = &arrayObj->SecondaryColor.Enabled; flag = _NEW_ARRAY_COLOR1; break; #if FEATURE_point_size_array case GL_POINT_SIZE_ARRAY_OES: - var = &ctx->Array.ArrayObj->PointSize.Enabled; + var = &arrayObj->PointSize.Enabled; flag = _NEW_ARRAY_POINT_SIZE; break; #endif @@ -119,7 +121,7 @@ client_state(GLcontext *ctx, GLenum cap, GLboolean state) { GLint n = (GLint) cap - GL_VERTEX_ATTRIB_ARRAY0_NV; ASSERT(n < Elements(ctx->Array.ArrayObj->VertexAttrib)); - var = &ctx->Array.ArrayObj->VertexAttrib[n].Enabled; + var = &arrayObj->VertexAttrib[n].Enabled; flag = _NEW_ARRAY_ATTRIB(n); } break; @@ -228,12 +230,11 @@ get_texcoord_unit(GLcontext *ctx) static GLboolean enable_texture(GLcontext *ctx, GLboolean state, GLbitfield texBit) { - const GLuint curr = ctx->Texture.CurrentUnit; - struct gl_texture_unit *texUnit = &ctx->Texture.Unit[curr]; + struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx); const GLbitfield newenabled = state ? (texUnit->Enabled | texBit) : (texUnit->Enabled & ~texBit); - if (!ctx->DrawBuffer->Visual.rgbMode || texUnit->Enabled == newenabled) + if (texUnit->Enabled == newenabled) return GL_FALSE; FLUSH_VERTICES(ctx, _NEW_TEXTURE); @@ -935,11 +936,6 @@ _mesa_set_enable(GLcontext *ctx, GLenum cap, GLboolean state) /* GL_EXT_depth_bounds_test */ case GL_DEPTH_BOUNDS_TEST_EXT: CHECK_EXTENSION(EXT_depth_bounds_test, cap); - if (state && ctx->DrawBuffer->Visual.depthBits == 0) { - _mesa_warning(ctx, - "glEnable(GL_DEPTH_BOUNDS_TEST_EXT) but no depth buffer"); - return; - } if (ctx->Depth.BoundsTest == state) return; FLUSH_VERTICES(ctx, _NEW_DEPTH); |