Bug 1650102 Comment 3 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

I might be barking up the wrong tree here, need some help from people who know this display list stuff better.

Here's what the original display list looks like (what you should get from `./mach reftest --enable-webrender --setpref apz.allow_zooming=true layout/reftests/css-blending/blend-canvas.html`). Note the BlendContainer is outside the AsyncZoom, which breaks blending for WR. So question 1: should this be fixed inside WR, or does it make sense to instead force the AsyncZoom to also create a new stacking context?

```
[2020-07-02T16:55:28Z WARN  webrender::scene_building] found a mix-blend-mode outside a blend container, ignoring
Painting --- before optimization (dirty 0,0,48000,60000):
SolidColor p=0x7f80fa77fb70 f=0x7f80fa7b5020(Viewport(-1)) key=52 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() uniform ref=0x7f80fa7b5020 agr=0x7f80fa7b5020 (opaque 0,0,48000,60000) (rgba 255,255,255,255)
BlendContainer p=0x7f80fa77fa28 f=0x7f80fa7b5020(Viewport(-1)) key=7 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() ref=0x7f80fa7b5020 agr=0x7f80fa7b5020
  CompositorHitTestInfo p=0x7f80fa77f548 f=0x7f80fa7b51a8(HTMLScroll(html)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() ref=0x7f80fa7b5020 agr=0x7f80fa7b5020 hitTestInfo(0x1) hitTestArea(0,0,48000,60000)
  AsyncZoom p=0x7f80fa77f848 f=0x7f80fa7b51a8(HTMLScroll(html)(-1)) key=2 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b5020 (flags 0x0) (scrolltarget 0)
    CompositorHitTestInfo p=0x7f80fa77f248 f=0x7f80fa7b50c8(Canvas(html)(-1)) key=282 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 hitTestInfo(0x1) hitTestArea(0,0,48000,60000)
    CompositorHitTestInfo p=0x7f80fa77f110 f=0x7f80fa7b50c8(Canvas(html)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 hitTestInfo(0x1) hitTestArea(0,0,48000,60000)
    CanvasBackgroundColor p=0x7f80fa77f380 f=0x7f80fa7b50c8(Canvas(html)(-1)) key=17 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) uniform ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 (rgba 0,0,0,0)
    BackgroundColor p=0x7f80fa77f448 f=0x7f80fa7b5ca0(Block(div)(0) id:a) key=6 bounds(480,480,12000,12000) layerBounds(480,480,12000,12000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) uniform ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 (opaque 480,480,12000,12000) (rgba 0,1,0,1) backgroundRect(480,480,12000,12000)
    BlendMode p=0x7f80fa77f700 f=0x7f80fa7b5d68(HTMLCanvas(canvas)(1) id:b) key=8 bounds(480,480,6000,6000) layerBounds(480,480,6000,6000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8
      CompositorHitTestInfo p=0x7f80fa77f020 f=0x7f80fa7b5d68(HTMLCanvas(canvas)(1) id:b) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 hitTestInfo(0x1) hitTestArea(480,480,6000,6000)
      nsDisplayCanvas p=0x7f80fa77f638 f=0x7f80fa7b5d68(HTMLCanvas(canvas)(1) id:b) key=16 bounds(480,480,6000,6000) layerBounds(480,480,6000,6000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8
```

If I add a `ForceStackingContext` flag to [this call](https://searchfox.org/mozilla-central/rev/31d8600b73dc85b4cdbabf45ac3f1a9c11700d8e/layout/generic/nsGfxScrollFrame.cpp#3785) that moves the BlendContainer inside the AsyncZoom and the test passes. But then on the `fixed-pos-scrolled-clip-2.html` test case I get this display list:

```
SolidColor p=0x7ff39afc7868 f=0x7ff399e8d020(Viewport(-1)) key=52 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() uniform ref=0x7ff399e8d020 agr=0x7ff399e8d020 (opaque 0,0,48000,60000) (rgba 255,255,255,255) layer=0x7ff399e95000
CompositorHitTestInfo p=0x7ff39afc4020 f=0x7ff399e8d1a8(HTMLScroll(html)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() ref=0x7ff399e8d020 agr=0x7ff399e8d020 hitTestInfo(0x1) hitTestArea(0,0,48000,60000)
OwnLayer p=0x7ff39afc4920 f=0x7ff399e8d6f0(ScrollbarFrame(scrollbar)(-1)) key=811 bounds(47400,0,600,60000) layerBounds(47400,0,600,60000) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7ff39afc4110 <0,0,48000,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 (flags 0x0) (scrolltarget 3) layer=0x7ff399e93400
  nsDisplayContainer p=0x7ff39afc4828 f=0x7ff399e8d6f0(ScrollbarFrame(scrollbar)(-1)) key=27 bounds(47400,0,600,60000) layerBounds(47400,0,600,60000) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() ref=0x7ff399e8d020 agr=0x7ff399e8d020
    CompositorHitTestInfo p=0x7ff39afc4738 f=0x7ff399e8d6f0(ScrollbarFrame(scrollbar)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7ff39afc4110 <0,0,48000,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 hitTestInfo(0x501) hitTestArea(47400,0,600,60000)
    ThemedBackground p=0x7ff39afc4158 f=0x7ff399e8d6f0(ScrollbarFrame(scrollbar)(-1)) key=71 bounds(47400,0,600,60000) layerBounds(47400,0,600,60000) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7ff39afc4110 <0,0,48000,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 (themed, appearance:56) layer=0x7ff399e94400
    ThemedBackground p=0x7ff39afc4248 f=0x7ff399e8d808(SliderFrame(slider)(-1)) key=71 bounds(47400,0,600,60000) layerBounds(47400,0,600,60000) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7ff39afc4110 <0,0,48000,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 (themed, appearance:64) layer=0x7ff399e94400
    OwnLayer p=0x7ff39afc4560 f=0x7ff399e8d808(SliderFrame(slider)(-1)) key=1067 bounds(47400,0,600,13320) layerBounds(0,0,600,13320) visible(47400,0,600,13320) building(47400,0,600,13320) componentAlpha(0,0,0,0) clip(47400,0,600,60000) asr() clipChain(0x7ff39afc4428 <47400,0,600,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d910 (flags 0x0) (scrolltarget 3) layer=0x7ff399e93800
      CompositorHitTestInfo p=0x7ff39afc4338 f=0x7ff399e8d910(ButtonBoxFrame(thumb)(0)) key=26 bounds(0,0,0,0) layerBounds(-47400,0,0,0) visible(47400,0,600,13320) building(47400,0,600,13320) componentAlpha(0,0,0,0) clip(47400,0,600,60000) asr() clipChain(0x7ff39afc4428 <47400,0,600,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d910 hitTestInfo(0x701) hitTestArea(47400,0,600,13320)
      ThemedBackground p=0x7ff39afc4470 f=0x7ff399e8d910(ButtonBoxFrame(thumb)(0)) key=71 bounds(47400,0,600,13320) layerBounds(0,0,600,13320) visible(47400,0,600,13320) building(47400,0,600,13320) componentAlpha(0,0,0,0) clip(47400,0,600,60000) asr() clipChain(0x7ff39afc4428 <47400,0,600,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d910 (themed, appearance:62) layer=0x7ff399e93c00
AsyncZoom p=0x7ff39afc6050 f=0x7ff399e8d1a8(HTMLScroll(html)(-1)) key=2 bounds(0,0,47400,60000) layerBounds(0,0,47400,60000) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,60000) asr() clipChain(0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 (flags 0x0) (scrolltarget 0) layer=0x7ff399e94800
  CompositorHitTestInfo p=0x7ff39afc4ab0 f=0x7ff399e8d0c8(Canvas(html)(-1)) key=282 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr(<0x7ff399e8d248>) clipChain(0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 hitTestInfo(0x1) hitTestArea(0,0,47400,258000)
  nsDisplayContainer p=0x7ff39afc5f58 f=0x7ff399e8d0c8(Canvas(html)(-1)) key=27 bounds(0,0,47400,120000) layerBounds(0,0,47400,120000) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip() asr(<0x7ff399e8d248>) clipChain() ref=0x7ff399e8d020 agr=0x7ff399e8d0c8
    CompositorHitTestInfo p=0x7ff39afc5e20 f=0x7ff399e8d0c8(Canvas(html)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 hitTestInfo(0x1) hitTestArea(0,0,47400,258000)
    CanvasBackgroundColor p=0x7ff39afc4be8 f=0x7ff399e8d0c8(Canvas(html)(-1)) key=17 bounds(0,0,47400,258000) layerBounds(0,0,47400,258000) visible(0,0,47400,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) uniform ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 (opaque 0,0,47400,258000) (rgba 255,255,255,255) layer=0x7ff399e96400
    WrapList p=0x7ff39afc5478 f=0x7ff399e8e1e8(ScrollbarFrame(scrollbar)(-1)) key=330 bounds(23400,18000,600,24000) layerBounds(23400,18000,600,24000) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8
      nsDisplayContainer p=0x7ff39afc5380 f=0x7ff399e8e1e8(ScrollbarFrame(scrollbar)(-1)) key=27 bounds(23400,18000,600,24000) layerBounds(23400,18000,600,24000) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip() asr(<0x7ff399e8d248>) clipChain() ref=0x7ff399e8d020 agr=0x7ff399e8d0c8
        CompositorHitTestInfo p=0x7ff39afc5290 f=0x7ff399e8e1e8(ScrollbarFrame(scrollbar)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 hitTestInfo(0x509) hitTestArea(23400,18000,600,24000)
        ThemedBackground p=0x7ff39afc4cb0 f=0x7ff399e8e1e8(ScrollbarFrame(scrollbar)(-1)) key=71 bounds(23400,18000,600,24000) layerBounds(23400,18000,600,24000) visible(23400,18000,600,24000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 (themed, appearance:56) layer=0x7ff399e96400
        ThemedBackground p=0x7ff39afc4da0 f=0x7ff399e8e300(SliderFrame(slider)(-1)) key=71 bounds(23400,18000,600,24000) layerBounds(23400,18000,600,24000) visible(23400,18000,600,24000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 (themed, appearance:64) layer=0x7ff399e96400
        OwnLayer p=0x7ff39afc50b8 f=0x7ff399e8e300(SliderFrame(slider)(-1)) key=1067 bounds(23400,18000,600,11100) layerBounds(0,0,600,11100) visible(23400,18000,600,11100) building(23400,18000,600,11100) componentAlpha(0,0,0,0) clip(23400,18000,600,24000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc5248 <23400,18000,600,24000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e408 (flags 0x0) (scrolltarget 4) layer=0x7ff399e94c00
          CompositorHitTestInfo p=0x7ff39afc4e90 f=0x7ff399e8e408(ButtonBoxFrame(thumb)(0)) key=26 bounds(0,0,0,0) layerBounds(-23400,-18000,0,0) visible(23400,18000,600,11100) building(23400,18000,600,11100) componentAlpha(0,0,0,0) clip(23400,18000,600,24000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4f80 <23400,18000,600,24000> [0x7ff399e8d248]) ref=0x7ff399e8d020 agr=0x7ff399e8e408 hitTestInfo(0x709) hitTestArea(23400,18000,600,11100)
          ThemedBackground p=0x7ff39afc4fc8 f=0x7ff399e8e408(ButtonBoxFrame(thumb)(0)) key=71 bounds(23400,18000,600,11100) layerBounds(0,0,600,11100) visible(23400,18000,600,11100) building(23400,18000,600,11100) componentAlpha(0,0,0,0) clip(23400,18000,600,24000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4f80 <23400,18000,600,24000> [0x7ff399e8d248]) ref=0x7ff399e8d020 agr=0x7ff399e8e408 (themed, appearance:62) layer=0x7ff399e94000
    CompositorHitTestInfo p=0x7ff39afc55c0 f=0x7ff399e8e5b8(Block(div)(0) class:subframe) key=282 bounds(0,0,0,0) layerBounds(0,-18000,0,0) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip() asr(<0x7ff399e8dd40>, <0x7ff399e8d248>) clipChain(0x7ff39afc56b0 <0,18000,23400,24000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e5b8 hitTestInfo(0x1) hitTestArea(0,18000,23400,48000)
    CompositorHitTestInfo p=0x7ff39afc56f8 f=0x7ff399e8e5b8(Block(div)(0) class:subframe) key=26 bounds(0,0,0,0) layerBounds(0,-18000,0,0) visible(0,18000,24000,48000) building(0,18000,24000,48000) componentAlpha(0,0,0,0) clip(0,18000,23400,48000) asr(<0x7ff399e8dd40>, <0x7ff399e8d248>) clipChain(0x7ff39afc57e8 <0,18000,23400,48000> [0x7ff399e8dd40], 0x7ff39afc56b0 <0,18000,23400,24000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e5b8 hitTestInfo(0x1) hitTestArea(0,18000,23400,48000)
    BackgroundColor p=0x7ff39afc58c0 f=0x7ff399e8e748(Block(div)(1) class:absoluteClip) key=6 bounds(6000,18000,12000,12000) layerBounds(6000,0,12000,12000) visible(6000,18000,12000,12000) building(6000,18000,12000,12000) componentAlpha(0,0,0,0) clip(6000,18000,12000,12000) asr(<0x7ff399e8dd40>, <0x7ff399e8d248>) clipChain(0x7ff39afc59c0 <6000,18000,12000,12000> [0x7ff399e8dd40], 0x7ff39afc56b0 <0,18000,23400,24000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) uniform ref=0x7ff399e8d020 agr=0x7ff399e8e5b8 (opaque 6000,18000,12000,12000) (rgba 1,0,0,1) backgroundRect(6000,18000,12000,12000) layer=0x7ff399e95c00
    FixedPosition p=0x7ff39afc5c78 f=0x7ff399e8e890(Block(div)(1) class:fixed) key=31 bounds(0,0,47400,60000) layerBounds(0,0,47400,60000) visible(0,0,47400,60000) building(0,0,47400,60000) componentAlpha(0,0,0,0) clip(0,0,47400,60000) asr() clipChain(0x7ff39afc5c30 <6000,18000,12000,12000> [0x7ff399e8dd40], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e890 hitTestInfo(0x1) hitTestArea(0,0,47400,60000) (containerASR <0x7ff399e8dd40>, <0x7ff399e8d248>) (scrolltarget 3) layer=0x7ff399e95400
      BackgroundColor p=0x7ff39afc5a08 f=0x7ff399e8e890(Block(div)(1) class:fixed) key=6 bounds(0,0,47400,60000) layerBounds(0,0,47400,60000) visible(0,0,47400,60000) building(0,0,47400,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() uniform ref=0x7ff399e8d020 agr=0x7ff399e8e890 (opaque 0,0,47400,60000) (rgba 0,0,0,1) backgroundRect(0,0,47400,60000) layer=0x7ff399e95800
      Background p=0x7ff39afc5b08 f=0x7ff399e8e890(Block(div)(1) class:fixed) key=5 bounds(0,6000,47400,12000) layerBounds(0,6000,47400,12000) visible(0,6000,47400,12000) building(0,0,47400,60000) componentAlpha(0,0,0,0) clip(0,0,47400,60000) asr() clipChain(0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e890 (opaque 0,6000,47400,12000) layer=0x7ff399e95800
```

which causes an assertion failure because the clip for the `FixedPosition item 0x7ff39afc5c78` is not finite. It is inside the `nsDisplayContainer 0x7ff39afc5f58` which has a different ASR. I *think* the right thing to do here is to move this `FixedPosition` item outside the `nsDisplayContainer`, but I'm not sure how to do that. I presume that if there were a blend mode somewhere on this testcase, the `nsDisplayContainer` would instead be a `BlendContainer` and having the `FixedPosition` item outside it should be ok because you shouldn't be able to blend fixed-pos items with non-fixed-pos items. Or maybe CSS is just crazy and you can?

Anyhow, suggestions welcome while I keep poking around.
I might be barking up the wrong tree here, need some help from people who know this display list stuff better.

Here's what the original display list looks like (what you should get from `./mach reftest --enable-webrender --setpref apz.allow_zooming=true layout/reftests/css-blending/blend-canvas.html`). Note the BlendContainer is outside the AsyncZoom, which breaks blending for WR. So question 1: should this be fixed inside WR, or does it make sense to instead force the AsyncZoom to also create a new stacking context?

```
[2020-07-02T16:55:28Z WARN  webrender::scene_building] found a mix-blend-mode outside a blend container, ignoring
Painting --- before optimization (dirty 0,0,48000,60000):
SolidColor p=0x7f80fa77fb70 f=0x7f80fa7b5020(Viewport(-1)) key=52 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() uniform ref=0x7f80fa7b5020 agr=0x7f80fa7b5020 (opaque 0,0,48000,60000) (rgba 255,255,255,255)
BlendContainer p=0x7f80fa77fa28 f=0x7f80fa7b5020(Viewport(-1)) key=7 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() ref=0x7f80fa7b5020 agr=0x7f80fa7b5020
  CompositorHitTestInfo p=0x7f80fa77f548 f=0x7f80fa7b51a8(HTMLScroll(html)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() ref=0x7f80fa7b5020 agr=0x7f80fa7b5020 hitTestInfo(0x1) hitTestArea(0,0,48000,60000)
  AsyncZoom p=0x7f80fa77f848 f=0x7f80fa7b51a8(HTMLScroll(html)(-1)) key=2 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b5020 (flags 0x0) (scrolltarget 0)
    CompositorHitTestInfo p=0x7f80fa77f248 f=0x7f80fa7b50c8(Canvas(html)(-1)) key=282 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 hitTestInfo(0x1) hitTestArea(0,0,48000,60000)
    CompositorHitTestInfo p=0x7f80fa77f110 f=0x7f80fa7b50c8(Canvas(html)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 hitTestInfo(0x1) hitTestArea(0,0,48000,60000)
    CanvasBackgroundColor p=0x7f80fa77f380 f=0x7f80fa7b50c8(Canvas(html)(-1)) key=17 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) uniform ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 (rgba 0,0,0,0)
    BackgroundColor p=0x7f80fa77f448 f=0x7f80fa7b5ca0(Block(div)(0) id:a) key=6 bounds(480,480,12000,12000) layerBounds(480,480,12000,12000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) uniform ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 (opaque 480,480,12000,12000) (rgba 0,1,0,1) backgroundRect(480,480,12000,12000)
    BlendMode p=0x7f80fa77f700 f=0x7f80fa7b5d68(HTMLCanvas(canvas)(1) id:b) key=8 bounds(480,480,6000,6000) layerBounds(480,480,6000,6000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8
      CompositorHitTestInfo p=0x7f80fa77f020 f=0x7f80fa7b5d68(HTMLCanvas(canvas)(1) id:b) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8 hitTestInfo(0x1) hitTestArea(480,480,6000,6000)
      nsDisplayCanvas p=0x7f80fa77f638 f=0x7f80fa7b5d68(HTMLCanvas(canvas)(1) id:b) key=16 bounds(480,480,6000,6000) layerBounds(480,480,6000,6000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr(<0x7f80fa7b5248>) clipChain(0x7f80fa77f338 <0,0,48000,60000> [0x7f80fa7b5248], 0x7f80fa77f200 <0,0,48000,60000> [root asr]) ref=0x7f80fa7b5020 agr=0x7f80fa7b50c8
```

If I add a `ForceStackingContext` flag to [this call](https://searchfox.org/mozilla-central/rev/31d8600b73dc85b4cdbabf45ac3f1a9c11700d8e/layout/generic/nsGfxScrollFrame.cpp#3785) that moves the BlendContainer inside the AsyncZoom and the test passes. But then on the `fixed-pos-scrolled-clip-2.html` test case I get this display list:

```
SolidColor p=0x7ff39afc7868 f=0x7ff399e8d020(Viewport(-1)) key=52 bounds(0,0,48000,60000) layerBounds(0,0,48000,60000) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() uniform ref=0x7ff399e8d020 agr=0x7ff399e8d020 (opaque 0,0,48000,60000) (rgba 255,255,255,255) layer=0x7ff399e95000
CompositorHitTestInfo p=0x7ff39afc4020 f=0x7ff399e8d1a8(HTMLScroll(html)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() ref=0x7ff399e8d020 agr=0x7ff399e8d020 hitTestInfo(0x1) hitTestArea(0,0,48000,60000)
OwnLayer p=0x7ff39afc4920 f=0x7ff399e8d6f0(ScrollbarFrame(scrollbar)(-1)) key=811 bounds(47400,0,600,60000) layerBounds(47400,0,600,60000) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7ff39afc4110 <0,0,48000,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 (flags 0x0) (scrolltarget 3) layer=0x7ff399e93400
  nsDisplayContainer p=0x7ff39afc4828 f=0x7ff399e8d6f0(ScrollbarFrame(scrollbar)(-1)) key=27 bounds(47400,0,600,60000) layerBounds(47400,0,600,60000) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() ref=0x7ff399e8d020 agr=0x7ff399e8d020
    CompositorHitTestInfo p=0x7ff39afc4738 f=0x7ff399e8d6f0(ScrollbarFrame(scrollbar)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7ff39afc4110 <0,0,48000,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 hitTestInfo(0x501) hitTestArea(47400,0,600,60000)
    ThemedBackground p=0x7ff39afc4158 f=0x7ff399e8d6f0(ScrollbarFrame(scrollbar)(-1)) key=71 bounds(47400,0,600,60000) layerBounds(47400,0,600,60000) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7ff39afc4110 <0,0,48000,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 (themed, appearance:56) layer=0x7ff399e94400
    ThemedBackground p=0x7ff39afc4248 f=0x7ff399e8d808(SliderFrame(slider)(-1)) key=71 bounds(47400,0,600,60000) layerBounds(47400,0,600,60000) visible(47400,0,600,60000) building(47400,0,600,60000) componentAlpha(0,0,0,0) clip(0,0,48000,60000) asr() clipChain(0x7ff39afc4110 <0,0,48000,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 (themed, appearance:64) layer=0x7ff399e94400
    OwnLayer p=0x7ff39afc4560 f=0x7ff399e8d808(SliderFrame(slider)(-1)) key=1067 bounds(47400,0,600,13320) layerBounds(0,0,600,13320) visible(47400,0,600,13320) building(47400,0,600,13320) componentAlpha(0,0,0,0) clip(47400,0,600,60000) asr() clipChain(0x7ff39afc4428 <47400,0,600,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d910 (flags 0x0) (scrolltarget 3) layer=0x7ff399e93800
      CompositorHitTestInfo p=0x7ff39afc4338 f=0x7ff399e8d910(ButtonBoxFrame(thumb)(0)) key=26 bounds(0,0,0,0) layerBounds(-47400,0,0,0) visible(47400,0,600,13320) building(47400,0,600,13320) componentAlpha(0,0,0,0) clip(47400,0,600,60000) asr() clipChain(0x7ff39afc4428 <47400,0,600,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d910 hitTestInfo(0x701) hitTestArea(47400,0,600,13320)
      ThemedBackground p=0x7ff39afc4470 f=0x7ff399e8d910(ButtonBoxFrame(thumb)(0)) key=71 bounds(47400,0,600,13320) layerBounds(0,0,600,13320) visible(47400,0,600,13320) building(47400,0,600,13320) componentAlpha(0,0,0,0) clip(47400,0,600,60000) asr() clipChain(0x7ff39afc4428 <47400,0,600,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d910 (themed, appearance:62) layer=0x7ff399e93c00
AsyncZoom p=0x7ff39afc6050 f=0x7ff399e8d1a8(HTMLScroll(html)(-1)) key=2 bounds(0,0,47400,60000) layerBounds(0,0,47400,60000) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,60000) asr() clipChain(0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d020 (flags 0x0) (scrolltarget 0) layer=0x7ff399e94800
  CompositorHitTestInfo p=0x7ff39afc4ab0 f=0x7ff399e8d0c8(Canvas(html)(-1)) key=282 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,60000) building(0,0,48000,60000) componentAlpha(0,0,0,0) clip() asr(<0x7ff399e8d248>) clipChain(0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 hitTestInfo(0x1) hitTestArea(0,0,47400,258000)
  nsDisplayContainer p=0x7ff39afc5f58 f=0x7ff399e8d0c8(Canvas(html)(-1)) key=27 bounds(0,0,47400,120000) layerBounds(0,0,47400,120000) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip() asr(<0x7ff399e8d248>) clipChain() ref=0x7ff399e8d020 agr=0x7ff399e8d0c8
    CompositorHitTestInfo p=0x7ff39afc5e20 f=0x7ff399e8d0c8(Canvas(html)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 hitTestInfo(0x1) hitTestArea(0,0,47400,258000)
    CanvasBackgroundColor p=0x7ff39afc4be8 f=0x7ff399e8d0c8(Canvas(html)(-1)) key=17 bounds(0,0,47400,258000) layerBounds(0,0,47400,258000) visible(0,0,47400,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) uniform ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 (opaque 0,0,47400,258000) (rgba 255,255,255,255) layer=0x7ff399e96400
    WrapList p=0x7ff39afc5478 f=0x7ff399e8e1e8(ScrollbarFrame(scrollbar)(-1)) key=330 bounds(23400,18000,600,24000) layerBounds(23400,18000,600,24000) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8
      nsDisplayContainer p=0x7ff39afc5380 f=0x7ff399e8e1e8(ScrollbarFrame(scrollbar)(-1)) key=27 bounds(23400,18000,600,24000) layerBounds(23400,18000,600,24000) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip() asr(<0x7ff399e8d248>) clipChain() ref=0x7ff399e8d020 agr=0x7ff399e8d0c8
        CompositorHitTestInfo p=0x7ff39afc5290 f=0x7ff399e8e1e8(ScrollbarFrame(scrollbar)(-1)) key=26 bounds(0,0,0,0) layerBounds(0,0,0,0) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 hitTestInfo(0x509) hitTestArea(23400,18000,600,24000)
        ThemedBackground p=0x7ff39afc4cb0 f=0x7ff399e8e1e8(ScrollbarFrame(scrollbar)(-1)) key=71 bounds(23400,18000,600,24000) layerBounds(23400,18000,600,24000) visible(23400,18000,600,24000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 (themed, appearance:56) layer=0x7ff399e96400
        ThemedBackground p=0x7ff39afc4da0 f=0x7ff399e8e300(SliderFrame(slider)(-1)) key=71 bounds(23400,18000,600,24000) layerBounds(23400,18000,600,24000) visible(23400,18000,600,24000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip(0,0,47400,120000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4ba0 <0,0,47400,120000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8d0c8 (themed, appearance:64) layer=0x7ff399e96400
        OwnLayer p=0x7ff39afc50b8 f=0x7ff399e8e300(SliderFrame(slider)(-1)) key=1067 bounds(23400,18000,600,11100) layerBounds(0,0,600,11100) visible(23400,18000,600,11100) building(23400,18000,600,11100) componentAlpha(0,0,0,0) clip(23400,18000,600,24000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc5248 <23400,18000,600,24000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e408 (flags 0x0) (scrolltarget 4) layer=0x7ff399e94c00
          CompositorHitTestInfo p=0x7ff39afc4e90 f=0x7ff399e8e408(ButtonBoxFrame(thumb)(0)) key=26 bounds(0,0,0,0) layerBounds(-23400,-18000,0,0) visible(23400,18000,600,11100) building(23400,18000,600,11100) componentAlpha(0,0,0,0) clip(23400,18000,600,24000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4f80 <23400,18000,600,24000> [0x7ff399e8d248]) ref=0x7ff399e8d020 agr=0x7ff399e8e408 hitTestInfo(0x709) hitTestArea(23400,18000,600,11100)
          ThemedBackground p=0x7ff39afc4fc8 f=0x7ff399e8e408(ButtonBoxFrame(thumb)(0)) key=71 bounds(23400,18000,600,11100) layerBounds(0,0,600,11100) visible(23400,18000,600,11100) building(23400,18000,600,11100) componentAlpha(0,0,0,0) clip(23400,18000,600,24000) asr(<0x7ff399e8d248>) clipChain(0x7ff39afc4f80 <23400,18000,600,24000> [0x7ff399e8d248]) ref=0x7ff399e8d020 agr=0x7ff399e8e408 (themed, appearance:62) layer=0x7ff399e94000
    CompositorHitTestInfo p=0x7ff39afc55c0 f=0x7ff399e8e5b8(Block(div)(0) class:subframe) key=282 bounds(0,0,0,0) layerBounds(0,-18000,0,0) visible(0,0,48000,120000) building(0,0,48000,120000) componentAlpha(0,0,0,0) clip() asr(<0x7ff399e8dd40>, <0x7ff399e8d248>) clipChain(0x7ff39afc56b0 <0,18000,23400,24000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e5b8 hitTestInfo(0x1) hitTestArea(0,18000,23400,48000)
    CompositorHitTestInfo p=0x7ff39afc56f8 f=0x7ff399e8e5b8(Block(div)(0) class:subframe) key=26 bounds(0,0,0,0) layerBounds(0,-18000,0,0) visible(0,18000,24000,48000) building(0,18000,24000,48000) componentAlpha(0,0,0,0) clip(0,18000,23400,48000) asr(<0x7ff399e8dd40>, <0x7ff399e8d248>) clipChain(0x7ff39afc57e8 <0,18000,23400,48000> [0x7ff399e8dd40], 0x7ff39afc56b0 <0,18000,23400,24000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e5b8 hitTestInfo(0x1) hitTestArea(0,18000,23400,48000)
    BackgroundColor p=0x7ff39afc58c0 f=0x7ff399e8e748(Block(div)(1) class:absoluteClip) key=6 bounds(6000,18000,12000,12000) layerBounds(6000,0,12000,12000) visible(6000,18000,12000,12000) building(6000,18000,12000,12000) componentAlpha(0,0,0,0) clip(6000,18000,12000,12000) asr(<0x7ff399e8dd40>, <0x7ff399e8d248>) clipChain(0x7ff39afc59c0 <6000,18000,12000,12000> [0x7ff399e8dd40], 0x7ff39afc56b0 <0,18000,23400,24000> [0x7ff399e8d248], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) uniform ref=0x7ff399e8d020 agr=0x7ff399e8e5b8 (opaque 6000,18000,12000,12000) (rgba 1,0,0,1) backgroundRect(6000,18000,12000,12000) layer=0x7ff399e95c00
    FixedPosition p=0x7ff39afc5c78 f=0x7ff399e8e890(Block(div)(1) class:fixed) key=31 bounds(0,0,47400,60000) layerBounds(0,0,47400,60000) visible(0,0,47400,60000) building(0,0,47400,60000) componentAlpha(0,0,0,0) clip(0,0,47400,60000) asr() clipChain(0x7ff39afc5c30 <6000,18000,12000,12000> [0x7ff399e8dd40], 0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e890 hitTestInfo(0x1) hitTestArea(0,0,47400,60000) (containerASR <0x7ff399e8dd40>, <0x7ff399e8d248>) (scrolltarget 3) layer=0x7ff399e95400
      BackgroundColor p=0x7ff39afc5a08 f=0x7ff399e8e890(Block(div)(1) class:fixed) key=6 bounds(0,0,47400,60000) layerBounds(0,0,47400,60000) visible(0,0,47400,60000) building(0,0,47400,60000) componentAlpha(0,0,0,0) clip() asr() clipChain() uniform ref=0x7ff399e8d020 agr=0x7ff399e8e890 (opaque 0,0,47400,60000) (rgba 0,0,0,1) backgroundRect(0,0,47400,60000) layer=0x7ff399e95800
      Background p=0x7ff39afc5b08 f=0x7ff399e8e890(Block(div)(1) class:fixed) key=5 bounds(0,6000,47400,12000) layerBounds(0,6000,47400,12000) visible(0,6000,47400,12000) building(0,0,47400,60000) componentAlpha(0,0,0,0) clip(0,0,47400,60000) asr() clipChain(0x7ff39afc46f0 <0,0,47400,60000> [root asr]) ref=0x7ff399e8d020 agr=0x7ff399e8e890 (opaque 0,6000,47400,12000) layer=0x7ff399e95800
```

which causes an assertion failure because the clip for the `FixedPosition 0x7ff39afc5c78` item is not finite. It is inside the `nsDisplayContainer 0x7ff39afc5f58` item which has a different ASR. I *think* the right thing to do here is to move this `FixedPosition` item outside the `nsDisplayContainer`, but I'm not sure how to do that. I presume that if there were a blend mode somewhere on this testcase, the `nsDisplayContainer` would instead be a `BlendContainer` and having the `FixedPosition` item outside it should be ok because you shouldn't be able to blend fixed-pos items with non-fixed-pos items. Or maybe CSS is just crazy and you can?

Anyhow, suggestions welcome while I keep poking around.

Back to Bug 1650102 Comment 3