/** * Update state related to the draw/read framebuffers. */ void _mesa_update_framebuffer(struct gl_context *ctx, struct gl_framebuffer *readFb, struct gl_framebuffer *drawFb) { assert(ctx); update_framebuffer(ctx, drawFb); if (readFb != drawFb) update_framebuffer(ctx, readFb); _mesa_update_clamp_vertex_color(ctx, drawFb); _mesa_update_clamp_fragment_color(ctx, drawFb); }
void GLAPIENTRY _mesa_ClampColor(GLenum target, GLenum clamp) { GET_CURRENT_CONTEXT(ctx); /* Check for both the extension and the GL version, since the Intel driver * does not advertise the extension in core profiles. */ if (ctx->Version <= 30 && !ctx->Extensions.ARB_color_buffer_float) { _mesa_error(ctx, GL_INVALID_OPERATION, "glClampColor()"); return; } if (clamp != GL_TRUE && clamp != GL_FALSE && clamp != GL_FIXED_ONLY_ARB) { _mesa_error(ctx, GL_INVALID_ENUM, "glClampColorARB(clamp)"); return; } switch (target) { case GL_CLAMP_VERTEX_COLOR_ARB: if (ctx->API == API_OPENGL_CORE) goto invalid_enum; FLUSH_VERTICES(ctx, _NEW_LIGHT); ctx->Light.ClampVertexColor = clamp; _mesa_update_clamp_vertex_color(ctx, ctx->DrawBuffer); break; case GL_CLAMP_FRAGMENT_COLOR_ARB: if (ctx->API == API_OPENGL_CORE) goto invalid_enum; FLUSH_VERTICES(ctx, _NEW_FRAG_CLAMP); ctx->Color.ClampFragmentColor = clamp; _mesa_update_clamp_fragment_color(ctx, ctx->DrawBuffer); break; case GL_CLAMP_READ_COLOR_ARB: ctx->Color.ClampReadColor = clamp; break; default: goto invalid_enum; } return; invalid_enum: _mesa_error(ctx, GL_INVALID_ENUM, "glClampColor(%s)", _mesa_enum_to_string(target)); }
void GLAPIENTRY _mesa_ClampColor(GLenum target, GLenum clamp) { GET_CURRENT_CONTEXT(ctx); if (clamp != GL_TRUE && clamp != GL_FALSE && clamp != GL_FIXED_ONLY_ARB) { _mesa_error(ctx, GL_INVALID_ENUM, "glClampColorARB(clamp)"); return; } switch (target) { case GL_CLAMP_VERTEX_COLOR_ARB: if (ctx->API == API_OPENGL_CORE && !ctx->Extensions.ARB_color_buffer_float) { goto invalid_enum; } FLUSH_VERTICES(ctx, _NEW_LIGHT); ctx->Light.ClampVertexColor = clamp; _mesa_update_clamp_vertex_color(ctx, ctx->DrawBuffer); break; case GL_CLAMP_FRAGMENT_COLOR_ARB: if (ctx->API == API_OPENGL_CORE && !ctx->Extensions.ARB_color_buffer_float) { goto invalid_enum; } FLUSH_VERTICES(ctx, _NEW_FRAG_CLAMP); ctx->Color.ClampFragmentColor = clamp; _mesa_update_clamp_fragment_color(ctx, ctx->DrawBuffer); break; case GL_CLAMP_READ_COLOR_ARB: ctx->Color.ClampReadColor = clamp; break; default: goto invalid_enum; } return; invalid_enum: _mesa_error(ctx, GL_INVALID_ENUM, "glClampColor(%s)", _mesa_enum_to_string(target)); }