summaryrefslogtreecommitdiff
path: root/src/radeon_accel.c
diff options
context:
space:
mode:
authorMichel Dänzer <daenzer@vmware.com>2009-07-05 15:14:59 +0200
committerMichel Dänzer <daenzer@vmware.com>2009-07-05 15:14:59 +0200
commit11cf8a28eb46f48d101888552266921bee8b63fc (patch)
treee085d081ed1ad1471ec250cd6c3f19d432d3d907 /src/radeon_accel.c
parent8d2f712eaf1e569fd92bbe2db5aceb43b7b367d1 (diff)
KMS CS fixes.
* Flush CS before running out of space. * Don't flush CS every time when switching between 2D and 3D engine, but make sure to re-initialize 2D/3D state after flushing. Doesn't seem quite perfect yet (some rendering seems to get dropped on the floor sometimes), but this should fix a lot of CS failures people have been seeing.
Diffstat (limited to 'src/radeon_accel.c')
-rw-r--r--src/radeon_accel.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/radeon_accel.c b/src/radeon_accel.c
index 79052a15..16d88e4e 100644
--- a/src/radeon_accel.c
+++ b/src/radeon_accel.c
@@ -667,6 +667,13 @@ void radeon_cs_flush_indirect(ScrnInfoPtr pScrn)
return;
radeon_cs_emit(info->cs);
radeon_cs_erase(info->cs);
+
+ /* Need to re-initialize 3D state in each CS */
+ info->accel_state->XInited3D = FALSE;
+
+#ifdef USE_EXA
+ info->accel_state->engineMode = EXA_ENGINEMODE_UNKNOWN;
+#endif
#endif
}