diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2005-01-27 21:24:49 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2005-01-27 21:24:49 +0000 |
commit | 408476badc11d3e80fd0f3c575d00aa650bfdc61 (patch) | |
tree | d59b22ecfe60920937ebac31da8be2b201b95842 | |
parent | 94b0fdaf55d0e1863ae8079b84ab5f66ba3a380a (diff) |
In windowmove(), put another hardware blitter synchronization before
returning, so that rasops bursts including non-accelerated operations
do not have side effects.
-rw-r--r-- | sys/arch/hp300/dev/dvbox.c | 5 | ||||
-rw-r--r-- | sys/arch/hp300/dev/gbox.c | 5 | ||||
-rw-r--r-- | sys/arch/hp300/dev/rbox.c | 5 |
3 files changed, 12 insertions, 3 deletions
diff --git a/sys/arch/hp300/dev/dvbox.c b/sys/arch/hp300/dev/dvbox.c index f4d125b44a1..ea78867a9f1 100644 --- a/sys/arch/hp300/dev/dvbox.c +++ b/sys/arch/hp300/dev/dvbox.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dvbox.c,v 1.7 2005/01/24 21:36:39 miod Exp $ */ +/* $OpenBSD: dvbox.c,v 1.8 2005/01/27 21:24:48 miod Exp $ */ /* * Copyright (c) 2005, Miodrag Vallat @@ -403,6 +403,7 @@ dvbox_windowmove(struct diofb *fb, u_int16_t sx, u_int16_t sy, volatile struct dvboxfb *db = (struct dvboxfb *)fb->regkva; db_waitbusy(db); + db->rep_rule = DVBOX_DUALROP(rop); db->source_y = sy; db->source_x = sx; @@ -411,6 +412,8 @@ dvbox_windowmove(struct diofb *fb, u_int16_t sx, u_int16_t sy, db->wheight = cy; db->wwidth = cx; db->wmove = 1; + + db_waitbusy(db); } /* diff --git a/sys/arch/hp300/dev/gbox.c b/sys/arch/hp300/dev/gbox.c index 25f61d008b6..d67f9ce1356 100644 --- a/sys/arch/hp300/dev/gbox.c +++ b/sys/arch/hp300/dev/gbox.c @@ -1,4 +1,4 @@ -/* $OpenBSD: gbox.c,v 1.8 2005/01/24 21:36:39 miod Exp $ */ +/* $OpenBSD: gbox.c,v 1.9 2005/01/27 21:24:48 miod Exp $ */ /* * Copyright (c) 2005, Miodrag Vallat @@ -418,6 +418,7 @@ gbox_windowmove(struct diofb *fb, u_int16_t sx, u_int16_t sy, dest = (dy * 1024) + dx; tile_mover_waitbusy(gb); + gb->width = -(cx / 4); gb->height = -(cy / 4); if (src < dest) @@ -431,6 +432,8 @@ gbox_windowmove(struct diofb *fb, u_int16_t sx, u_int16_t sy, dest= dest + ((cy - 4) * 1024) + (cx - 4); } FBBASE(fb)[dest] = FBBASE(fb)[src]; + + tile_mover_waitbusy(gb); } /* diff --git a/sys/arch/hp300/dev/rbox.c b/sys/arch/hp300/dev/rbox.c index 2607a28a6db..d6dde534539 100644 --- a/sys/arch/hp300/dev/rbox.c +++ b/sys/arch/hp300/dev/rbox.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rbox.c,v 1.7 2005/01/24 21:36:39 miod Exp $ */ +/* $OpenBSD: rbox.c,v 1.8 2005/01/27 21:24:48 miod Exp $ */ /* * Copyright (c) 2005, Miodrag Vallat @@ -366,6 +366,7 @@ rbox_windowmove(struct diofb *fb, u_int16_t sx, u_int16_t sy, volatile struct rboxfb *rb = (struct rboxfb *)fb->regkva; rb_waitbusy(rb); + rb->rep_rule = RBOX_DUALROP(rop); rb->source_y = sy; rb->source_x = sx; @@ -374,6 +375,8 @@ rbox_windowmove(struct diofb *fb, u_int16_t sx, u_int16_t sy, rb->wheight = cy; rb->wwidth = cx; rb->wmove = 1; + + rb_waitbusy(rb); } /* |