On Tue, 2008-10-14 at 16:02 +0200, Clemens Eisserer wrote:
>
> I've a use-case where the client uploads 32x32 A8 images to an
> 256x256x8 pixmap which is later used as mask in a composition
> operation.
> The test-case is able to render with 40fps on xserver-1.3/intel-2.1.1
> however with the latest GIT of both I only get ~10-15fps.
> Unfourtunatly I've not been able to create a stand-alone testcase
> which triggers this problem :-/
>
> Using sysprof I can see a lot of time is spent moving data arround,
> very strange is that PutImage seems to cause a readback:
> ProcPutImage->ExaCheckPutImage->exaPrepareAccessReg->exaDoMigration->exaDoMoveOutPixmap->exaCopyDirty->exaWaitSync->I830EXASync
> In Composite I see the re-uploading again.
>
> Any idea why ProcPutImage could to fallback (there's plenty of free vram)?
> Are there tools / settings which could help me to identify the problem?
Does the attached xserver patch help? Looks like we're syncing
unnecessarily in the migration no-op case.
--
Earthling Michel Dänzer | http://tungstengraphics.com
Libre software enthusiast | Debian, X and DRI developer
diff --git a/exa/exa_migration.c b/exa/exa_migration.c
index 56b6945..c68cd76 100644
--- a/exa/exa_migration.c
+++ b/exa/exa_migration.c
@@ -129,6 +131,7 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
BoxPtr pBox;
int nbox;
Bool access_prepared = FALSE;
+ Bool need_sync = FALSE;
/* Damaged bits are valid in current copy but invalid in other one */
if (exaPixmapIsOffscreen(pPixmap)) {
@@ -220,14 +253,15 @@ exaCopyDirty(ExaMigrationPtr migrate, RegionPtr pValidDst, RegionPtr pValidSrc,
exaMemcpyBox (pPixmap, pBox,
fallback_src, fallback_srcpitch,
fallback_dst, fallback_dstpitch);
- }
+ } else
+ need_sync = TRUE;
pBox++;
}
if (access_prepared)
exaFinishAccess(&pPixmap->drawable, fallback_index);
- else
+ else if (need_sync)
sync (pPixmap->drawable.pScreen);
pExaPixmap->offscreen = save_offscreen;
_______________________________________________
xorg mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/xorg