xf86-video-ati: Branch 'master'
Alex Deucher
agd5f at kemper.freedesktop.org
Sun Mar 15 09:12:03 PDT 2009
src/radeon_accel.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
New commits:
commit a55ced5ee20c07e743c7c0978803fd10589c1531
Author: Alex Deucher <alexdeucher at gmail.com>
Date: Sun Mar 15 12:08:04 2009 -0400
Fix fallout from r6xx/r7xx EXA merge in IB handling
Noticed Christiaan van Dijk.
Should fix bug 20510
diff --git a/src/radeon_accel.c b/src/radeon_accel.c
index dffbc57..a9a4848 100644
--- a/src/radeon_accel.c
+++ b/src/radeon_accel.c
@@ -688,8 +688,6 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard)
drmBufPtr buffer = info->cp->indirectBuffer;
int start = info->cp->indirectStart;
drm_radeon_indirect_t indirect;
- RING_LOCALS;
- RADEONCP_REFRESH(pScrn, info);
if (!buffer) return;
if (start == buffer->used && !discard) return;
@@ -700,10 +698,14 @@ void RADEONCPFlushIndirect(ScrnInfoPtr pScrn, int discard)
}
if (info->ChipFamily >= CHIP_FAMILY_R600) {
- while (buffer->used & 0x3c){
- BEGIN_RING(1);
- OUT_RING(CP_PACKET2()); /* fill up to multiple of 16 dwords */
- ADVANCE_RING();
+ if (buffer->used & 0x3c) {
+ RING_LOCALS;
+
+ while (buffer->used & 0x3c) {
+ BEGIN_RING(1);
+ OUT_RING(CP_PACKET2()); /* fill up to multiple of 16 dwords */
+ ADVANCE_RING();
+ }
}
}
@@ -735,12 +737,11 @@ void RADEONCPReleaseIndirect(ScrnInfoPtr pScrn)
drmBufPtr buffer = info->cp->indirectBuffer;
int start = info->cp->indirectStart;
drm_radeon_indirect_t indirect;
- RING_LOCALS;
- RADEONCP_REFRESH(pScrn, info);
-
if (info->ChipFamily >= CHIP_FAMILY_R600) {
- if (buffer) {
+ if (buffer && (buffer->used & 0x3c)) {
+ RING_LOCALS;
+
while (buffer->used & 0x3c) {
BEGIN_RING(1);
OUT_RING(CP_PACKET2()); /* fill up to multiple of 16 dwords */
More information about the xorg-commit
mailing list