ProcPutImage calls exaDoMoveOutPixmap, 4x slowdown

Maarten Maathuis madman2003 at gmail.com
Wed Oct 15 12:59:49 PDT 2008


On Wed, Oct 15, 2008 at 9:43 PM, Eric Anholt <eric at anholt.net> wrote:
> On Tue, 2008-10-14 at 16:49 +0200, Maarten Maathuis wrote:
>> On Tue, Oct 14, 2008 at 4:02 PM, Clemens Eisserer <linuxhippy at gmail.com> wrote:
>> > Hello,
>> >
>> > 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?
>> >
>> > Thank you in advance, Clemens
>> > _______________________________________________
>> > xorg mailing list
>> > xorg at lists.freedesktop.org
>> > http://lists.freedesktop.org/mailman/listinfo/xorg
>> >
>>
>> I think this is because intel does not provide an UploadToScreen hook
>> (because it has no vram). It hasn't made (visible) effort to
>> reintegrate UXA in EXA, because you can obviously be bit smarter than
>> what is currently being done. I've got an idea or two on how to
>> improve this, but intel should be more than capable in dealing with
>> this.
>
> Migrating out for a write-only operation is just broken, and is the
> thing that should be fixed there.
>
> --
> Eric Anholt
> eric at anholt.net                         eric.anholt at intel.com
>
>
>

I'd like to add that if anything changes in this beheaviour, then this
shouldn't be done quietly. Because some may depend on this (offscreen
memory tiled and needing migration to have something linear available
for example). The current {Prepare,Finish}Access isn't completely
suited for this conversion (exaPixmapIsOffscreen() isn't exported).

Just my 3 cent.

Maarten.



More information about the xorg mailing list