Bug 26189

Summary: fallback intel: Moblin startup is hitting a composite fallback, costing a ton of performance
Product: xorg Reporter: Arjan van de Ven <arjan>
Component: Driver/intelAssignee: Carl Worth <cworth>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: kai.kasurinen
Version: unspecified   
Hardware: Other   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Xorg.log with fallback debugging enabled
none
Patch to fix the fallback
none
updated patch none

Description Arjan van de Ven 2010-01-23 17:06:11 UTC
From the fallback log:

UXA fallback at uxa_check_composite: from picts <hex>/<hex>  to pict <hex>
Composite fallback: op Over.
src <hex>:s fmt XRGB8888 (1024x600),
mask <hex>:s fmt A8 (1x1 R),
dst <hex>:s fmt XRGB8888 (1024x600)

this fallback results in getting an sse2 pixman function called rather than this being done by the gpu

driver version 2.10.0
hardware: 945 GME
Comment 1 Arjan van de Ven 2010-01-23 17:11:08 UTC
Created attachment 32789 [details]
Xorg.log with fallback debugging enabled
Comment 2 Chris Wilson 2010-01-24 01:12:30 UTC
Arjan, the fallback log doesn't actually state the reason why we fallback in this case - which implies that check_composite either succeeded or was never called. I've pushed a patch to master that includes a few extra details on other reasons why we would need to fallback. Though these are quite rare, it would be good if you could grab an updated log.

commit 326fe00df4160fbc3513ddbedfec90bdb2d7101b
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sun Jan 24 09:02:05 2010 +0000

    uxa: Increase amount of composite fallback verbage
Comment 3 Arjan van de Ven 2010-01-24 09:32:10 UTC
funny; I made my own patch to add more verbose fallback debugging on top of current git (since current git also does not have enough).


With this I've found the cause and made a patch;
turns out that the intel uxa compositing code cannot deal with an alpha-only mask (A8 format).

Fix is relatively simple, since A8 format is a simple format; see the attachment I'm about to attach.
Comment 4 Arjan van de Ven 2010-01-24 09:32:43 UTC
Created attachment 32796 [details] [review]
Patch to fix the fallback
Comment 5 Arjan van de Ven 2010-01-24 15:03:17 UTC
Created attachment 32799 [details] [review]
updated patch
Comment 6 Chris Wilson 2010-01-25 07:54:52 UTC
Pushed a slightly more generic version, though the likelihood of ever seeing the other alpha formats is low.

commit 197cb08a2d54cabbfe97454d7db85cfe1f5f27ba
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Jan 25 15:15:04 2010 +0000

    Extract pixel value for all formats to avoid hitting fallbacks.
    
    On failing to extract the pixel value for an alpha-only solid we
    actually triggered a fallback. Since this path is commonly hitting
    whilst fading in images, for example cairo_paint_with_alpha(), the
    fallback was detected during the Moblin boot sequence where it was
    adding a second to the overall boot time.
    
    See
      fallback intel: Moblin startup is hitting a composite fallback, costing
                      a ton of performance
      https://bugs.freedesktop.org/show_bug.cgi?id=26189
    
    Based on the initial patch by Arjan van de Ven.
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>