r600: always emit CB base
authorAlex Deucher <alexdeucher@gmail.com>
Sun, 23 Aug 2009 16:59:09 +0000 (12:59 -0400)
committerAlex Deucher <alexdeucher@gmail.com>
Sun, 23 Aug 2009 17:05:52 +0000 (13:05 -0400)
Not doing so seems to cause lock-ups or rendering problems
on some chips.  I think there is an logic issue related to
CB and VGT on some chips.  We ran into similar issues in
r600_demo IIRC.

src/mesa/drivers/dri/r600/r600_context.c

index 6a066f3510550d69360460a43075b0e9c6c0369a..0b0c4f5049b92e5705615027b1c9f3b176cef45a 100644 (file)
@@ -185,7 +185,13 @@ static void r600_vtbl_emit_cs_header(struct radeon_cs *cs, radeonContextPtr rmes
 
 static void r600_vtbl_pre_emit_atoms(radeonContextPtr radeon)
 {
-       r700Start3D((context_t *)radeon);
+       context_t *context = (context_t *)radeon;
+
+       /* always emit CB base to prevent
+        * lock ups on some chips.
+        */
+       R600_STATECHANGE(context, cb_target);
+       r700Start3D(context);
 }
 
 static void r600_fallback(GLcontext *ctx, GLuint bit, GLboolean mode)