summaryrefslogtreecommitdiff
path: root/vmwgfx/vmwgfx_saa.c
diff options
context:
space:
mode:
authorThomas Hellstrom <thellstrom@vmware.com>2011-11-08 15:28:40 +0100
committerThomas Hellstrom <thellstrom@vmware.com>2011-11-09 14:03:02 +0100
commite1810e0b09e07bdab05a57fdef74450a507e9dfa (patch)
tree4d58b8e5e88b30b3090ee486b6118eeadc1eaa62 /vmwgfx/vmwgfx_saa.c
parentd0b493d67afd1b5e8c8397c7938752ecd56c91ba (diff)
vmwgfx: Fix rendering errors when rotating / unrotating a screen.
The dirty trackers weren't correctly translated to pending presents / updates when a pixmap was bound as a scanout. Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by: Jakob Bornecrants <jakob@vmware.com>
Diffstat (limited to 'vmwgfx/vmwgfx_saa.c')
-rw-r--r--vmwgfx/vmwgfx_saa.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/vmwgfx/vmwgfx_saa.c b/vmwgfx/vmwgfx_saa.c
index 3c80ef2..ad3adf8 100644
--- a/vmwgfx/vmwgfx_saa.c
+++ b/vmwgfx/vmwgfx_saa.c
@@ -1375,12 +1375,14 @@ vmwgfx_scanout_refresh(PixmapPtr pixmap)
box.x2 = pixmap->drawable.width;
box.y2 = pixmap->drawable.height;
- REGION_RESET(vsaa->pScreen, vpix->pending_update, &box);
+ REGION_RESET(vsaa->pScreen, vpix->pending_present, &box);
if (vpix->dirty_present)
REGION_SUBTRACT(vsaa->pScreen, vpix->pending_present,
- &vpix->base.dirty_hw, vpix->dirty_present);
- REGION_SUBTRACT(vsaa->pScreen, vpix->pending_update,
- vpix->pending_update, &vpix->base.dirty_hw);
+ vpix->pending_present, vpix->dirty_present);
+ REGION_SUBTRACT(vsaa->pScreen, vpix->pending_present,
+ vpix->pending_present, &vpix->base.dirty_shadow);
+ REGION_COPY(vsaa->pScreen, vpix->pending_update,
+ &vpix->base.dirty_shadow);
}
/*