[Mesa-dev] [PATCH] st/mesa: remove ARB_color_buffer_float from core profile contexts

Nicolai Hähnle nhaehnle at gmail.com
Tue Jan 10 14:59:27 UTC 2017


From: Nicolai Hähnle <nicolai.haehnle at amd.com>

Some parts of the extension were explicitly removed for core profiles,
and all the remaining functionality has been in core since core profiles
exist. So there's no loss of exposed functionality.

The corresponding change was applied to i965 in 2013 (commit
bd850cb4f2c77e2eb6716c865c40b9976633fc23), so it's not like
applications could be surprised by this behavior either.

Fixes GL45-CTS.gtf30.GL3Tests.half_float.half_float_textures.
---
 src/mesa/state_tracker/st_context.c | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c
index 0eae971..a2df704 100644
--- a/src/mesa/state_tracker/st_context.c
+++ b/src/mesa/state_tracker/st_context.c
@@ -450,32 +450,28 @@ st_create_context_priv( struct gl_context *ctx, struct pipe_context *pipe,
 
    /* Enable shader-based fallbacks for ARB_color_buffer_float if needed. */
    if (screen->get_param(screen, PIPE_CAP_VERTEX_COLOR_UNCLAMPED)) {
       if (!screen->get_param(screen, PIPE_CAP_VERTEX_COLOR_CLAMPED)) {
          st->clamp_vert_color_in_shader = GL_TRUE;
       }
 
       if (!screen->get_param(screen, PIPE_CAP_FRAGMENT_COLOR_CLAMPED)) {
          st->clamp_frag_color_in_shader = GL_TRUE;
       }
-
-      /* For drivers which cannot do color clamping, it's better to just
-       * disable ARB_color_buffer_float in the core profile, because
-       * the clamping is deprecated there anyway. */
-      if (ctx->API == API_OPENGL_CORE &&
-          (st->clamp_frag_color_in_shader || st->clamp_vert_color_in_shader)) {
-         st->clamp_vert_color_in_shader = GL_FALSE;
-         st->clamp_frag_color_in_shader = GL_FALSE;
-         ctx->Extensions.ARB_color_buffer_float = GL_FALSE;
-      }
    }
 
+   /* Disable ARB_color_buffer_float for core contexts, since some of its
+    * functionality was explicitly removed.
+    */
+   if (ctx->API == API_OPENGL_CORE)
+      ctx->Extensions.ARB_color_buffer_float = GL_FALSE;
+
    /* called after _mesa_create_context/_mesa_init_point, fix default user
     * settable max point size up
     */
    ctx->Point.MaxSize = MAX2(ctx->Const.MaxPointSize,
                              ctx->Const.MaxPointSizeAA);
    /* For vertex shaders, make sure not to emit saturate when SM 3.0 is not supported */
    ctx->Const.ShaderCompilerOptions[MESA_SHADER_VERTEX].EmitNoSat = !st->has_shader_model3;
 
    if (!ctx->Extensions.ARB_gpu_shader5) {
       for (i = 0; i < MESA_SHADER_STAGES; i++)
-- 
2.7.4



More information about the mesa-dev mailing list