Skip to content
  • Chris Wilson's avatar
    Remove clip handling from generic surface layer. · bed2701e
    Chris Wilson authored
    Handling clip as part of the surface state, as opposed to being part of
    the operation state, is cumbersome and a hindrance to providing true proxy
    surface support. For example, the clip must be copied from the surface
    onto the fallback image, but this was forgotten causing undue hassle in
    each backend. Another example is the contortion the meta surface
    endures to ensure the clip is correctly recorded. By contrast passing the
    clip along with the operation is quite simple and enables us to write
    generic handlers for providing surface wrappers. (And in the future, we
    should be able to write more esoteric wrappers, e.g. automatic 2x FSAA,
    trivially.)
    
    In brief, instead of the surface automatically applying the clip before
    calling the backend, the backend can call into a generic helper to apply
    clipping. For raster surfaces, clip regions are handled automatically as
    part of the composite interface. For vector surfaces, a clip helper is
    introduced to replay and callback into an intersect_clip_path() function
    as necessary.
    
    Whilst this is not primarily a performance related change (the change
    should just move the computation of the clip from the moment it is applied
    by the user to the moment it is required by the backend), it is important
    to track any potential regression:
    
    ppc:
    Speedups
    ========
    image-rgba         evolution-20090607-0    1026085.22 0.18% -> 672972.07 0.77%:  1.52x speedup
    ▌
    image-rgba         evolution-20090618-0    680579.98 0.12% -> 573237.66  0.16%:  1.19x speedup
    ▎
    image-rgba      swfdec-fill-rate-4xaa-0    460296.92 0.36% -> 407464.63  0.42%:  1.13x speedup
    ▏
    image-rgba      swfdec-fill-rate-2xaa-0    128431.95 0.47% -> 115051.86  0.42%:  1.12x speedup
    ▏
    Slowdowns
    =========
    image-rgba     firefox-periodic-table-0    56837.61 0.78% -> 66055.17    3.20%:  1.09x slowdown
    ▏
    bed2701e