xf86-video-ati/U_EXA-Attempt-to-fix-solid-picture-acceleration-with-U.patch
2012-06-08 13:07:43 +00:00

66 lines
1.7 KiB
Diff

From 6bda7ceda645e838723883d133d614def1511d16 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>
Date: Thu, 3 May 2012 15:07:30 +0200
Subject: [PATCH] EXA: Attempt to fix solid picture acceleration with UMS.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Only compile tested, but should fix
https://bugs.freedesktop.org/show_bug.cgi?id=49182 .
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---
src/radeon_exa_shared.c | 27 ++++++++++++++++++++++-----
1 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/src/radeon_exa_shared.c b/src/radeon_exa_shared.c
index 28dc335..31e2870 100644
--- a/src/radeon_exa_shared.c
+++ b/src/radeon_exa_shared.c
@@ -128,19 +128,36 @@ Bool RADEONCheckBPP(int bpp)
PixmapPtr RADEONSolidPixmap(ScreenPtr pScreen, uint32_t solid)
{
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+ RADEONInfoPtr info = RADEONPTR(pScrn);
PixmapPtr pPix = pScreen->CreatePixmap(pScreen, 1, 1, 32, 0);
- struct radeon_bo *bo;
exaMoveInPixmap(pPix);
- bo = radeon_get_pixmap_bo(pPix);
- if (radeon_bo_map(bo, 1)) {
+#if defined(XF86DRM_MODE)
+ if (info->cs) {
+ struct radeon_bo *bo;
+
+ bo = radeon_get_pixmap_bo(pPix);
+
+ if (radeon_bo_map(bo, 1)) {
+ pScreen->DestroyPixmap(pPix);
+ return NULL;
+ }
+
+ memcpy(bo->ptr, &solid, 4);
+ radeon_bo_unmap(bo);
+
+ return pPix;
+ }
+#endif
+
+ if (!exaDrawableIsOffscreen(&pPix->drawable)) {
pScreen->DestroyPixmap(pPix);
return NULL;
}
- memcpy(bo->ptr, &solid, 4);
- radeon_bo_unmap(bo);
+ memcpy(info->FB + exaGetPixmapOffset(pPix), &solid, 4);
return pPix;
}
--
1.7.3.4