server 1.7 EXA and R600 UploadToScreen infinite loop
Alex Deucher
alexdeucher at gmail.com
Wed Sep 30 01:27:27 PDT 2009
On Tue, Sep 29, 2009 at 11:08 PM, Dave Airlie <airlied at gmail.com> 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
> xorg-devel at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-devel
>
More information about the xorg-devel
mailing list