1d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul/*
2d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * Mesa 3-D graphics library
36d4d51d647c27288aa625560bc080231099c0b01Brian Paul * Version:  7.3
45e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen *
5b36e6f0baf64491772b8e1a1cddf68a7dcf8ee22Brian Paul * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
65e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen *
7d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * Permission is hereby granted, free of charge, to any person obtaining a
8d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * copy of this software and associated documentation files (the "Software"),
9d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * to deal in the Software without restriction, including without limitation
10d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * the rights to use, copy, modify, merge, publish, distribute, sublicense,
11d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * and/or sell copies of the Software, and to permit persons to whom the
12d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * Software is furnished to do so, subject to the following conditions:
135e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen *
14d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * The above copyright notice and this permission notice shall be included
15d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * in all copies or substantial portions of the Software.
165e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen *
17d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
20d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
21d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul */
24d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul
25d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul
26d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul#ifndef STATE_H
27d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul#define STATE_H
28d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul
295e3bc0c2a2bcdf59949410f94c9b705fc1281ce8Jouk Jansen#include "mtypes.h"
30d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul
315fb84d263b8068467a2429942ecf113a0a4c8a60Brian Paulextern void
32f9995b30756140724f41daf963fa06167912be7fKristian Høgsberg_mesa_update_state(struct gl_context *ctx);
335fb84d263b8068467a2429942ecf113a0a4c8a60Brian Paul
345ac93f86210eb5c2a8dee74ec19b0ecd54376863Keith Whitwell/* As above but can only be called between _mesa_lock_context_textures() and
355ac93f86210eb5c2a8dee74ec19b0ecd54376863Keith Whitwell * _mesa_unlock_context_textures().
365ac93f86210eb5c2a8dee74ec19b0ecd54376863Keith Whitwell */
375ac93f86210eb5c2a8dee74ec19b0ecd54376863Keith Whitwellextern void
38f9995b30756140724f41daf963fa06167912be7fKristian Høgsberg_mesa_update_state_locked(struct gl_context *ctx);
396d4d51d647c27288aa625560bc080231099c0b01Brian Paul
406d4d51d647c27288aa625560bc080231099c0b01Brian Paul
416d4d51d647c27288aa625560bc080231099c0b01Brian Paulextern void
42dca6a28a14f22d77273d79d44f57b0d853c0242dMathias Fröhlich_mesa_set_varying_vp_inputs(struct gl_context *ctx, GLbitfield64 varying_inputs);
436d4d51d647c27288aa625560bc080231099c0b01Brian Paul
446d4d51d647c27288aa625560bc080231099c0b01Brian Paul
456d4d51d647c27288aa625560bc080231099c0b01Brian Paulextern void
46f9995b30756140724f41daf963fa06167912be7fKristian Høgsberg_mesa_set_vp_override(struct gl_context *ctx, GLboolean flag);
475ac93f86210eb5c2a8dee74ec19b0ecd54376863Keith Whitwell
48d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul
49decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul/**
50decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul * Is the secondary color needed?
51decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul */
529520f483b8f1e45fa474674b415554988de5d8d3Brian Paulstatic inline GLboolean
53decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul_mesa_need_secondary_color(const struct gl_context *ctx)
54decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul{
55decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul   if (ctx->Light.Enabled &&
56decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul       ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR)
57decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul       return GL_TRUE;
58decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul
59decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul   if (ctx->Fog.ColorSumEnabled)
60decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul      return GL_TRUE;
61decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul
62decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul   if (ctx->VertexProgram._Current &&
63decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul       (ctx->VertexProgram._Current != ctx->VertexProgram._TnlProgram) &&
64decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul       (ctx->VertexProgram._Current->Base.InputsRead & VERT_BIT_COLOR1))
65decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul      return GL_TRUE;
66decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul
67decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul   if (ctx->FragmentProgram._Current &&
68decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul       (ctx->FragmentProgram._Current != ctx->FragmentProgram._TexEnvProgram) &&
69decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul       (ctx->FragmentProgram._Current->Base.InputsRead & FRAG_BIT_COL1))
70decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul      return GL_TRUE;
71decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul
72decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul   return GL_FALSE;
73decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul}
74decc6e2a32ef49e673c081f30e19b8970155d887Brian Paul
75d0a3ea051a3825441cdc97a82fa9a9c6e7e83087Brian Paul#endif
76