aboutsummaryrefslogtreecommitdiffstats
path: root/src/mesa/main/blend.c
diff options
context:
space:
mode:
authorNicolai Hähnle <[email protected]>2017-01-12 10:55:33 +0100
committerNicolai Hähnle <[email protected]>2017-01-13 11:03:11 +0100
commit963311b71fd9900351a4a9dd1cd5f5db391f7e1b (patch)
treeb8c0c7d2e24cc1e5a07bed12ef665d5af520fa82 /src/mesa/main/blend.c
parente1ea70d9f3317e09104bb7c9f268ef6de9dfb358 (diff)
mesa/main: fix version/extension checks in _mesa_ClampColor
Add a proper check for feature support, and raise an invalid enum for GL_CLAMP_VERTEX/FRAGMENT_COLOR unconditionally in core profiles, since those enums were explicitly removed after the extension was promoted to core functionality (not in the profile sense) with OpenGL 3.0. This matches the behavior of the AMD closed source driver and fixes GL45-CTS.gtf30.GL3Tests.half_float.half_float_textures. Cc: "12.0 13.0" <[email protected]> Reviewed-by: Ilia Mirkin <[email protected]>
Diffstat (limited to 'src/mesa/main/blend.c')
-rw-r--r--src/mesa/main/blend.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c
index 0322799af54..955fda1158c 100644
--- a/src/mesa/main/blend.c
+++ b/src/mesa/main/blend.c
@@ -861,6 +861,14 @@ _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;
@@ -868,19 +876,15 @@ _mesa_ClampColor(GLenum target, GLenum clamp)
switch (target) {
case GL_CLAMP_VERTEX_COLOR_ARB:
- if (ctx->API == API_OPENGL_CORE &&
- !ctx->Extensions.ARB_color_buffer_float) {
+ 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 &&
- !ctx->Extensions.ARB_color_buffer_float) {
+ 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);