summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/r300/radeon_span.c
diff options
context:
space:
mode:
authorAapo Tahkola <aet@rasterburn.org>2006-04-26 11:36:27 +0000
committerAapo Tahkola <aet@rasterburn.org>2006-04-26 11:36:27 +0000
commitd44c3e647fe99a3aa1175fcbd6a2179d7d1f17fb (patch)
tree5054582a41c8e7dd248d8177ba508ea4ef4dbe52 /src/mesa/drivers/dri/r300/radeon_span.c
parenta4ebd5f684768843a185e444eb41d0e1dfa56953 (diff)
R300_SPAN_DISABLE_LOCKING env var
Diffstat (limited to 'src/mesa/drivers/dri/r300/radeon_span.c')
-rw-r--r--src/mesa/drivers/dri/r300/radeon_span.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/r300/radeon_span.c b/src/mesa/drivers/dri/r300/radeon_span.c
index d77c5a3903..f7c0756217 100644
--- a/src/mesa/drivers/dri/r300/radeon_span.c
+++ b/src/mesa/drivers/dri/r300/radeon_span.c
@@ -252,19 +252,43 @@ do { \
static void radeonSpanRenderStart( GLcontext *ctx )
{
radeonContextPtr rmesa = RADEON_CONTEXT( ctx );
+ {
+ static int first = 1;
+ r300ContextPtr r300 = rmesa;
+
+ if (first) {
+ r300->span_dlocking = getenv("R300_SPAN_DISABLE_LOCKING") ? 1 : 0;
+ if (r300->span_dlocking == 0) {
+ fprintf(stderr, "Try R300_SPAN_DISABLE_LOCKING env var if this hangs.\n");
+ fflush(stderr);
+ sleep(1);
+ }
+ first = 0;
+ }
+
+ if (r300->span_dlocking) {
+ r300Flush(ctx);
+ LOCK_HARDWARE( rmesa );
+ radeonWaitForIdleLocked( rmesa );
+ UNLOCK_HARDWARE( rmesa );
+
+ return;
+ }
+ }
// R300_FIREVERTICES( rmesa );
// old code has flush
r300Flush(ctx);
LOCK_HARDWARE( rmesa );
radeonWaitForIdleLocked( rmesa );
- UNLOCK_HARDWARE( rmesa );
}
static void radeonSpanRenderFinish( GLcontext *ctx )
{
radeonContextPtr rmesa = RADEON_CONTEXT( ctx );
+ r300ContextPtr r300 = rmesa;
_swrast_flush( ctx );
- //UNLOCK_HARDWARE( rmesa );
+ if (r300->span_dlocking == 0)
+ UNLOCK_HARDWARE( rmesa );
}
void radeonInitSpanFuncs( GLcontext *ctx )