[Mesa-dev] [PATCH] mesa/main: fix version/extension checks in _mesa_ClampColor
Mark Janes
mark.a.janes at intel.com
Fri Jan 13 20:23:19 UTC 2017
This patch regressed i915 systems:
https://bugs.freedesktop.org/show_bug.cgi?id=99401
Please don't apply to stable until the bug is resolved.
Nicolai Hähnle <nhaehnle at gmail.com> writes:
> From: Nicolai Hähnle <nicolai.haehnle at amd.com>
>
> 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" <mesa-stable at lists.freedesktop.org>
> ---
> src/mesa/main/blend.c | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c
> index 0322799..955fda1 100644
> --- a/src/mesa/main/blend.c
> +++ b/src/mesa/main/blend.c
> @@ -854,40 +854,44 @@ _mesa_ColorMaski( GLuint buf, GLboolean red, GLboolean green,
> FLUSH_VERTICES(ctx, _NEW_COLOR);
> COPY_4UBV(ctx->Color.ColorMask[buf], tmp);
> }
>
>
> 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 &&
> - !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);
> break;
> case GL_CLAMP_READ_COLOR_ARB:
> ctx->Color.ClampReadColor = clamp;
> break;
> default:
> goto invalid_enum;
> }
> --
> 2.7.4
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list