<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Mar 29, 2013 at 4:21 PM, Brian Paul <span dir="ltr"><<a href="mailto:brianp@vmware.com" target="_blank">brianp@vmware.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=""><div class="h5">On 03/28/2013 03:24 PM, Marek Olšák wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
---<br>
  src/mesa/state_tracker/st_<u></u>extensions.c |   11 +++++++++++<br>
  1 file changed, 11 insertions(+)<br>
<br>
diff --git a/src/mesa/state_tracker/st_<u></u>extensions.c b/src/mesa/state_tracker/st_<u></u>extensions.c<br>
index 11db9d3..2d8b9ef 100644<br>
--- a/src/mesa/state_tracker/st_<u></u>extensions.c<br>
+++ b/src/mesa/state_tracker/st_<u></u>extensions.c<br>
@@ -629,6 +629,7 @@ void st_init_extensions(struct st_context *st)<br>
        ctx->Const.<u></u>PrimitiveRestartInSoftware = GL_TRUE;<br>
     }<br>
<br>
+   /* ARB_color_buffer_float. */<br>
     if (screen->get_param(screen, PIPE_CAP_VERTEX_COLOR_<u></u>UNCLAMPED)) {<br>
        ctx->Extensions.ARB_color_<u></u>buffer_float = GL_TRUE;<br>
<br>
@@ -639,6 +640,16 @@ void st_init_extensions(struct st_context *st)<br>
        if (!screen->get_param(screen, PIPE_CAP_FRAGMENT_COLOR_<u></u>CLAMPED)) {<br>
           st->clamp_frag_color_in_shader = TRUE;<br>
        }<br>
+<br>
+      /* For drivers which cannot do color clamping, it's better to just<br>
+       * disable ARB_color_buffer_float in the core profile, because<br>
+       * the clamping is deprecated there anyway. */<br>
+      if (ctx->API == API_OPENGL_CORE&&<br>
+          (st->clamp_frag_color_in_<u></u>shader || st->clamp_vert_color_in_<u></u>shader)) {<br>
+         st->clamp_vert_color_in_shader = GL_FALSE;<br>
+         st->clamp_frag_color_in_shader = GL_FALSE;<br>
+         ctx->Extensions.ARB_color_<u></u>buffer_float = GL_FALSE;<br>
+      }<br>
     }<br>
</blockquote>
<br></div></div>
I've read that comment and code several times but I still can't quite parse it.<br>
<br>
If we disable ARB_color_buffer_float, we'll never get version 3.0 (see compute_version()) so there's no core profile.<br>
<br>
I'm probably missing something, but could you elaborate on or clarify the comments somehow?<br></blockquote><div><br></div><div>Yes. The last hunk of the 4th patch is:<br><br>diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c<br>


index 3d4af59..ecca446 100644<br>
--- a/src/mesa/main/version.c<br>
+++ b/src/mesa/main/version.c<br>
@@ -233,7 +233,8 @@ compute_version(struct gl_context *ctx)<br>
    const GLboolean ver_3_0 = (ver_2_1 &&<br>
                               ctx->Const.GLSLVersion >= 130 &&<br>
                               ctx->Const.MaxSamples >= 4 &&<br>
-                              ctx->Extensions.ARB_color_buffer_float &&<br><div id=":1zm">
+                              (ctx->API == API_OPENGL_CORE ||<br>
+                               ctx->Extensions.ARB_color_buffer_float) &&<br>
                               ctx->Extensions.ARB_depth_buffer_float &&<br>
                               ctx->Extensions.ARB_half_float_pixel &&<br>
                               ctx->Extensions.ARB_half_float_vertex &&</div><br></div><div>So basically, if the profile is "core", ARB_color_buffer_float is not required to get GL 3.0 and higher.<br>

<br>The subset of ARB_color_buffer_float which remained part of the core profile is only the read color clamping, which is always supported by our common ReadPixels code. The 4th patch makes necessary changes for GL_CLAMP_READ_COLOR to be accepted without ARB_color_buffer_float in the core profile.<br>

<br>Marek<br></div></div></div></div>