i965: Use the renderbuffer surface size instead of region size for WM surfaces.
authorEric Anholt <eric@anholt.net>
Sat, 5 Sep 2009 00:59:08 +0000 (17:59 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 8 Sep 2009 21:28:23 +0000 (14:28 -0700)
For drawing to lower mipmap levels, the region size makes the renderbuffer
be the size of the lowest level, instead of the current level.  On DRI1,
Brian previously found that the RB size was incorrect, so leave this broken
there.

src/mesa/drivers/dri/i965/brw_wm_surface_state.c

index 096f74394eb6db3365eb5d939f7b60d1895886e6..c3f8750488945dc39333a5edc0f83fe8242a5f28 100644 (file)
@@ -545,8 +545,13 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
                       irb->texformat->MesaFormat);
       }
       key.tiling = region->tiling;
-      key.width = region->width;
-      key.height = region->height;
+      if (brw->intel.intelScreen->driScrnPriv->dri2.enabled) {
+        key.width = rb->Width;
+        key.height = rb->Height;
+      } else {
+        key.width = region->width;
+        key.height = region->height;
+      }
       key.pitch = region->pitch;
       key.cpp = region->cpp;
       key.draw_offset = region->draw_offset; /* cur 3d or cube face offset */