The only user is in layers/opengl. This is needed to do better state tracking
in the compositor.
--HG--
rename : gfx/gl/GLBlitTextureImageHelper.cpp => gfx/layers/opengl/GLBlitTextureImageHelper.cpp
rename : gfx/gl/GLBlitTextureImageHelper.h => gfx/layers/opengl/GLBlitTextureImageHelper.h
extra : rebase_source : bba00cbfac9253ca933721659dadbda2bfbe65c5
This makes APZ behave nicely with most uses of a css transform:scale.
Summary of changes:
- FrameMetrics::mCumulativeResolution now includes the css-driven resolution
in addition to the pres-shell resolution.
- Displayports are now stored in Screen pixels rather than Layer pixels.
This is what we want anyways (as we'd like the displayport size to remain
constant as a fraction of the screen size), but it was necessary to make
this change as part of this patch because continuing to store them in
Layer pixels in the presence of a css-driven resolution would have
required a bunch of infrastructure to implement correctly.
Remaining work:
- Layout painting a scrollable layer at a resolution different from the
scale induced by the css transform causes problems. These will go away
with bug 1076192.
- Different resolutions on the x and y axes are not supported. This is
tracked by bug 1039967.
This makes APZ behave nicely with most uses of a css transform:scale.
Summary of changes:
- FrameMetrics::mCumulativeResolution now includes the css-driven resolution
in addition to the pres-shell resolution.
- Displayports are now stored in Screen pixels rather than Layer pixels.
This is what we want anyways (as we'd like the displayport size to remain
constant as a fraction of the screen size), but it was necessary to make
this change as part of this patch because continuing to store them in
Layer pixels in the presence of a css-driven resolution would have
required a bunch of infrastructure to implement correctly.
Remaining work:
- Layout painting a scrollable layer at a resolution different from the
scale induced by the css transform causes problems. These will go away
with bug 1076192.
- Different resolutions on the x and y axes are not supported. This is
tracked by bug 1039967.
When Cinner and Couter are equal, as well as Rinner and Router, the algorithm described in the canvas specification will hit a division by 0. As described in section 7 of the Canvas2D specification nothing should be drawn in this situation.
We already reset the shadow transform to the layer transform in
SetShadowProperties() before compositing every frame, so this is redundant.
--HG--
extra : rebase_source : bef51e6a918ffaab134a4b53fb6f2ec6c45d9d6d
GFX_DRIVER_VERSION(8,6,..) expands to 8.0006....
but ParseVersion(8.6,...) gives 8.5000...
This was an unfortunate error. Having better static typing
of versions would have helped here.
--HG--
extra : rebase_source : 8eb9fc7d337a017b350e6ef1935f99fd4383114d