On Tue, Sep 29, 2009 at 11:08 PM, Dave Airlie <[email protected]> wrote: > Hi Michel, > > So I've been getting a recusive problem with 1.7's EXA (not with master) > 0369eeeb6bf8a808fa2df503fc8b8df81e6e07b8 works around the issue. > > What seems to be happening is the r600 UTS has an "optimisation" (Alex did > you write it?) >
I was just a copy and paste from the the code for the older asics, so they should be affected similarly. Alex > /* If we know the BO won't be busy, don't bother */ > if (driver_priv->bo->cref == 1 && > !radeon_bo_is_busy(driver_priv->bo, &dst_domain)) > return FALSE; > > Now we get into a cycle, as shown below, the EXA core tries to migrate > to the FB, UTS fails it fallbacks to doing prepare/memcpy/finish, finish > notices dirty status, and tries to upload to screen again, which fallsback > to doing prepare/memcpy/finish, etc. > > The patch in master works around this of course, however I've no idea whether > a) that is in fact the correct solution > b) r600 code is broken and shouldn't do this. > > Suggestions welcome. > Dave. > > #1 0x003ce13f in exaCopyDirty (migrate=0xbfffee70, pValidDst=0x8389b14, > pValidSrc=0x8389b08, transfer=0xf09a40 <R600UploadToScreenCS>, > fallback_index=0, sync=0) at exa_migration_classic.c:217 > #2 0x003ce3fd in exaCopyDirtyToFb (migrate=0xbfffee70) > at exa_migration_classic.c:295 > #3 0x003d01a2 in exaDoMigration_mixed (pixmaps=0xbfffee70, npixmaps=1, > can_accel=1) at exa_migration_mixed.c:103 > #4 0x003cd20c in exaDoMigration (pixmaps=0xbfffee70, npixmaps=1, can_accel=1) > at exa.c:1181 > #5 0x003d0214 in exaMoveInPixmap_mixed (pPixmap=0x838f7f0) > at exa_migration_mixed.c:120 > #6 0x003d04ea in exaFinishAccess_mixed (pPixmap=0x838f7f0, index=0) > at exa_migration_mixed.c:207 > #7 0x003cb61f in exaFinishAccess (pDrawable=0x838f7f0, index=0) at exa.c:421 > #8 0x003ce222 in exaCopyDirty (migrate=0xbffff060, pValidDst=0x8389b14, > pValidSrc=0x8389b08, transfer=0xf09a40 <R600UploadToScreenCS>, > fallback_index=0, sync=0) at exa_migration_classic.c:246 > #9 0x003ce3fd in exaCopyDirtyToFb (migrate=0xbffff060) > at exa_migration_classic.c:295 > #10 0x003d01a2 in exaDoMigration_mixed (pixmaps=0xbffff060, npixmaps=1, > can_accel=1) at exa_migration_mixed.c:103 > ---Type <return> to continue, or q <return> to quit--- > #11 0x003cd20c in exaDoMigration (pixmaps=0xbffff060, npixmaps=1, can_accel=1) > at exa.c:1181 > #12 0x003d0214 in exaMoveInPixmap_mixed (pPixmap=0x838f7f0) > at exa_migration_mixed.c:120 > #13 0x003d04ea in exaFinishAccess_mixed (pPixmap=0x838f7f0, index=0) > at exa_migration_mixed.c:207 > #14 0x003cb61f in exaFinishAccess (pDrawable=0x838f7f0, index=0) at exa.c:421 > #15 0x003ce222 in exaCopyDirty (migrate=0xbffff274, pValidDst=0x8389b14, > pValidSrc=0x8389b08, transfer=0xf09a40 <R600UploadToScreenCS>, > fallback_index=0, sync=0) at exa_migration_classic.c:246 > #16 0x003ce3fd in exaCopyDirtyToFb (migrate=0xbffff274) > at exa_migration_classic.c:295 > #17 0x003d01a2 in exaDoMigration_mixed (pixmaps=0xbffff264, npixmaps=2, > can_accel=1) at exa_migration_mixed.c:103 > #18 0x003cd20c in exaDoMigration (pixmaps=0xbffff264, npixmaps=2, can_accel=1) > at exa.c:1181 > #19 0x003d334d in exaFillRegionTiled (pDrawable=0x828daf8, pRegion=0x83469e0, > pTile=0x838f7f0, pPatOrg=0x828bff8, planemask=4294967295, alu=3, > clientClipType=0) at exa_accel.c:1099 > #20 0x003d28aa in exaPolyFillRect (pDrawable=0x828daf8, pGC=0x828bfd0, > nrect=1, prect=0x83513d8) at exa_accel.c:804 > _______________________________________________ > xorg-devel mailing list > [email protected] > http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ xorg-devel mailing list [email protected] http://lists.x.org/mailman/listinfo/xorg-devel
