Unfortunately, in-process plugins using OpenGL break the assumption made by these patches, that the current GL context is only changed by GLContext::MakeCurrent. Another issue, regardless of in-process, is that our host-side code in nsCoreAnimationSupport.mm uses direct CGL calls, bypassing GLContext.
This will allows us to scale and repeat in a single pass instead
of doing it in two.
--HG--
extra : rebase_source : 8f40aec620494d9c584a3c58cd70ac39723041a4
This takes the bilinear interpolation code from Skia. It
uses 4 bits of precision instead of 8. This lets it interpolate
two components at a time because the results fit in 16 bits.
The lower precision code is only used in the fallback code
and not in any of the specialized code for NEON. This means
pixman gives different results depending on the cpu which isn't
great. However, this was easiest and the NEON code doesn't
gain as much from using lower precision.
Skia actually uses even lower interpolation when working with
565 but that's harder to plug in right now, and this gives
a reasonable improvement.
These may need some tuning to get right, but should be an improvement over
just disabling bilinear for backgrounds.
It also expectedly regresses tcheckerboard & tcheck2 because we're now
using bilinear when we were using nearest before.
Untranslate fixed position layers when doing async scrolling so that they don't
jump about as content re-renders them in the correct place.
--HG--
extra : rebase_source : 709a9b14b5301bb675e118859090e6fb1c0f26f9
These may need some tuning to get right, but should be an improvement over
just disabling bilinear for backgrounds.
It also expectedly regresses tcheckerboard & tcheck2 because we're now
using bilinear when we were using nearest before.
--HG--
extra : rebase_source : 4e3396179193d6d7ca1dbe26b7dad090860abe0d
When the layer size changed, reused tiles that then fell out of the layer area
would be incorrectly rendered. Fix this by deriving the rendered content area
from set display-ports and correctly invalidating when harvesting tiles, and
clipping when drawing them.
--HG--
extra : rebase_source : 6427be89b9cfb1e54feb0582fb64fa97d7d42bde
It seems like we sometimes end up using EXTEND_NONE unintentionally, this is
likely caused by different rounding between cairo and pixman. Pixman already
does a similar reduction to EXTEND_NONE so there's not point in duplicating it
here.
--HG--
extra : rebase_source : 5649a2583a8a01084567bfb06cb3c788437210f5