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.
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)