}
-void
+void GLAPIENTRY
_mesa_PushAttrib(GLbitfield mask)
{
struct gl_attrib_node *newnode;
GL_POINT_SMOOTH);
TEST_AND_UPDATE(ctx->Point.SmoothFlag, enable->PointSmooth,
GL_POINT_SMOOTH);
- if (ctx->Extensions.NV_point_sprite) {
+ if (ctx->Extensions.NV_point_sprite || ctx->Extensions.ARB_point_sprite) {
TEST_AND_UPDATE(ctx->Point.PointSprite, enable->PointSprite,
GL_POINT_SPRITE_NV);
}
* We could at least check if the value to restore equals the current value
* and then skip the Mesa call.
*/
-void
+void GLAPIENTRY
_mesa_PopAttrib(void)
{
struct gl_attrib_node *attr, *next;
color->BlendDstRGB,
color->BlendSrcA,
color->BlendDstA);
- _mesa_BlendEquation(color->BlendEquation);
+ /* This special case is because glBlendEquationSeparateEXT
+ * cannot take GL_LOGIC_OP as a parameter.
+ */
+ if ( color->BlendEquationRGB == color->BlendEquationA ) {
+ _mesa_BlendEquation(color->BlendEquationRGB);
+ }
+ else {
+ _mesa_BlendEquationSeparateEXT(color->BlendEquationRGB,
+ color->BlendEquationA);
+ }
_mesa_BlendColor(color->BlendColor[0],
color->BlendColor[1],
color->BlendColor[2],
_mesa_LightModelf(GL_LIGHT_MODEL_COLOR_CONTROL,
(GLfloat) light->Model.ColorControl);
/* materials */
- MEMCPY(ctx->Light.Material, light->Material,
- 2 * sizeof(struct gl_material));
+ MEMCPY(&ctx->Light.Material, &light->Material,
+ sizeof(struct gl_material));
/* shade model */
_mesa_ShadeModel(light->ShadeModel);
/* color material */
_mesa_PointParameterfEXT(GL_POINT_FADE_THRESHOLD_SIZE_EXT,
point->Threshold);
}
- if (ctx->Extensions.NV_point_sprite) {
+ if (ctx->Extensions.NV_point_sprite
+ || ctx->Extensions.ARB_point_sprite) {
GLuint u;
for (u = 0; u < ctx->Const.MaxTextureUnits; u++) {
_mesa_TexEnvi(GL_POINT_SPRITE_NV, GL_COORD_REPLACE_NV,
#define GL_CLIENT_UNPACK_BIT (1<<21)
-void
+void GLAPIENTRY
_mesa_PushClientAttrib(GLbitfield mask)
{
struct gl_attrib_node *newnode;
-void
+void GLAPIENTRY
_mesa_PopClientAttrib(void)
{
struct gl_attrib_node *attr, *next;
attr = next;
}
}
+
+
+void _mesa_init_attrib( GLcontext *ctx )
+{
+ /* Renderer and client attribute stacks */
+ ctx->AttribStackDepth = 0;
+ ctx->ClientAttribStackDepth = 0;
+}