You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
WebRender supports property bindings (currently for opacity and transform, but easy to extend). These allow modifying properties of an existing display list, and drawing it, without creating a completely new display list. This can make it much more efficient to run animations, so there is no requirement to invoke layout code at all. These are already being used by Gecko, we should also use them in Servo.
The text was updated successfully, but these errors were encountered:
I started looking at this (for the opacity case to start with) and I have the following questions:
There doesn't seem to be a notion of a unique animation ID anywhere in Servo.
Gecko has a GetCompositorAnimationsId function.
This is needed to set a key for the PropertyBinding that gets sent in the WebRender display list. It needs to be available when constructing the display list, and also when sampling the animations in order to update their values and send them to WebRender.
This is assuming that the ProperyBinding is set eagerly for all stacking contexts. Not sure if this is the best way but I believe its what Gecko does.
Perhaps something that can easily be derived in both contexts, like the OpaqueNode property, or some monotonically increasing value that's hung off of the Fragment.
I tried going the OpaqueNode route, but the filters are constructed inside of the PushStackingContext display list which has an OpaqueNode of zero, with the real one being on an ancestor display item. Not sure if this is realiable regardless.
Opacity sets RestyleDamage flags such that it invokes a rebuild of the Display List. I've toyed around with modifying this by introducing another flag. I don't know much about how this might interact with the rest of layout, so I'm wary of this change.
I'm wondering if the process at update_style_for_animation can be short circuited somehow for the opacity/transform case.
Granted I am unfamiliar with the Servo code base, so I'm flying by the edge of my seat here. I'd love a mentor though :)
WebRender supports property bindings (currently for opacity and transform, but easy to extend). These allow modifying properties of an existing display list, and drawing it, without creating a completely new display list. This can make it much more efficient to run animations, so there is no requirement to invoke layout code at all. These are already being used by Gecko, we should also use them in Servo.
The text was updated successfully, but these errors were encountered: