Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce PicturePrimitive::Image. #2031

Merged
merged 3 commits into from Nov 15, 2017
Merged

Introduce PicturePrimitive::Image. #2031

merged 3 commits into from Nov 15, 2017

Commits on Nov 13, 2017

  1. Introduce PicturePrimitive::Image.

    Instead of constructing the render task tree each render (from the
    stacking context tree), construct a compositing tree during scene
    building. We create a Picture primitive whenever we *may* need to
    draw to an intermediate surface (i.e. filters, mix-blend-mode,
    3d rendering contexts, frame output).
    
    During culling, we can then make decisions on whether a Picture
    does get drawn to an intermediate surface, or drawn directly
    into the parent target (e.g. if perspective is present, or
    if a child stacking context needs isolation due to mix-blend-mode).
    
    This opens up fixes for a number of issues, such as avoiding
    rebuilding the scene in the presence of property bindings, proper
    pixel snapping and clip mask handling for composited stacking
    contexts, fixing the context isolation bugs when multiple effects
    are present in addition to 3D rendering contexts.
    
    A consequence of this change is that plane splitting is handled
    later in the frame, during batch generation. This simplfies a lot
    of the plane splitting code.
    
    * Remove StackingContext structures after scene is created. Instead, they
      are only used during scene building, and then we drop the concept of a
      stacking context completely and rely on the Picture tree only.
    
    * Move output frame handling from build frame to build scene - so we
      can allocate Pictures based on this.
    
    * Pass clip node ID to push_stacking_context - will be used to handle #1957.
    
    * Move plane splitting to batch generation phase.
    
    * Remove (as no longer used):
        build() step of PicturePrimitive.
        HardwareCompositeOp.
        notify_waiting_for_root_stacking_context().
        RenderTask::inflate (handled implicitly in Picture).
        AlphaRenderItem - We now just walk the primitive runs, saving memory allocations and duplication.
    gw3583 committed Nov 13, 2017
  2. Hide StackingContext

    kvark authored and gw3583 committed Nov 13, 2017

Commits on Nov 15, 2017

  1. Address review comments and fix Gecko test failures.

    gw3583 committed Nov 15, 2017
You can’t perform that action at this time.