Mesa (master): st/mesa: set PIPE_BIND_RENDER_TARGET for sRGB formats if UNORM is supported

Marek Olšák mareko at kemper.freedesktop.org
Fri Mar 4 13:53:44 UTC 2011


Module: Mesa
Branch: master
Commit: ba48811fa8cbe80c67cdbbb9b8180aaf64433c4e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=ba48811fa8cbe80c67cdbbb9b8180aaf64433c4e

Author: Marek Olšák <maraeo at gmail.com>
Date:   Fri Mar  4 06:38:13 2011 +0100

st/mesa: set PIPE_BIND_RENDER_TARGET for sRGB formats if UNORM is supported

Because the format can be changed to UNORM in a surface.

This fixes:
state_tracker/st_atom_framebuffer.c:163:update_framebuffer_state:
Assertion `framebuffer->cbufs[i]->texture->bind & (1 << 1)' failed.

---

 src/mesa/state_tracker/st_cb_texture.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index c3c4246..3f98ffd 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -227,8 +227,15 @@ default_bindings(struct st_context *st, enum pipe_format format)
 
    if (screen->is_format_supported(screen, format, target, 0, bindings, geom))
       return bindings;
-   else
-      return PIPE_BIND_SAMPLER_VIEW;
+   else {
+      /* Try non-sRGB. */
+      format = util_format_linear(format);
+
+      if (screen->is_format_supported(screen, format, target, 0, bindings, geom))
+         return bindings;
+      else
+         return PIPE_BIND_SAMPLER_VIEW;
+   }
 }
 
 




More information about the mesa-commit mailing list