st/mesa: only mark framebuffer as sRGB capable if Mesa supports the format
authorBrian Paul <brianp@vmware.com>
Fri, 7 Mar 2014 17:53:03 +0000 (10:53 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 7 Mar 2014 22:43:36 +0000 (15:43 -0700)
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
src/mesa/state_tracker/st_manager.c

index 68cb5dee693a6d5ef55ccbe00e4133846d2b379f..314d34232ca89540a4481271fa28eb5e0371b58d 100644 (file)
@@ -421,8 +421,8 @@ st_framebuffer_create(struct st_context *st,
    /*
     * For desktop GL, sRGB framebuffer write is controlled by both the
     * capability of the framebuffer and GL_FRAMEBUFFER_SRGB.  We should
-    * advertise the capability when the pipe driver supports it so that
-    * applications can enable sRGB write when they want to.
+    * advertise the capability when the pipe driver (and core Mesa) supports
+    * it so that applications can enable sRGB write when they want to.
     *
     * This is not to be confused with GLX_FRAMEBUFFER_SRGB_CAPABLE_ARB.  When
     * the attribute is GLX_TRUE, it tells the st manager to pick a color
@@ -442,6 +442,7 @@ st_framebuffer_create(struct st_context *st,
          util_format_srgb(stfbi->visual->color_format);
 
       if (srgb_format != PIPE_FORMAT_NONE &&
+          st_pipe_format_to_mesa_format(srgb_format) != MESA_FORMAT_NONE &&
           screen->is_format_supported(screen, srgb_format,
                                       PIPE_TEXTURE_2D, stfbi->visual->samples,
                                       PIPE_BIND_RENDER_TARGET))