softpipe: minor code movement in softpipe_get_tex_transfer()
[mesa.git] / src / gallium / drivers / softpipe / sp_state_surface.c
index ba8c9eece72462fa52cf60c3b75741ead3417aed..1493c65884142253eb63ab9452e730d4a7962542 100644 (file)
@@ -34,6 +34,8 @@
 #include "sp_surface.h"
 #include "sp_tile_cache.h"
 
+#include "draw/draw_context.h"
+
 
 /**
  * XXX this might get moved someday
@@ -62,7 +64,7 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
       }
    }
 
-   sp->framebuffer.num_cbufs = fb->num_cbufs;
+   sp->framebuffer.nr_cbufs = fb->nr_cbufs;
 
    /* zbuf changing? */
    if (sp->framebuffer.zsbuf != fb->zsbuf) {
@@ -101,6 +103,26 @@ softpipe_set_framebuffer_state(struct pipe_context *pipe,
    }
 #endif
 
+   /* Tell draw module how deep the Z/depth buffer is */
+   {
+      int depth_bits;
+      double mrd;
+      if (sp->framebuffer.zsbuf) {
+         depth_bits = pf_get_component_bits(sp->framebuffer.zsbuf->format,
+                                            PIPE_FORMAT_COMP_Z);
+      }
+      else {
+         depth_bits = 0;
+      }
+      if (depth_bits > 16) {
+         mrd = 0.0000001;
+      }
+      else {
+         mrd = 0.00002;
+      }
+      draw_set_mrd(sp->draw, mrd);
+   }
+
    sp->framebuffer.width = fb->width;
    sp->framebuffer.height = fb->height;