The glyph cache uses a pointer for a hash value, and uses
that hash value as a pointer. We need to ensure that the
hash type is large enough to fit a pointer.
FrameLayerBuilder::BuildContainerLayerFor takes responsibility for resolution scaling. The ContainerParameters
passed in are added to any transform requested. Then we extract the scale part of the transform, round the scale
up to the nearest power of two if the transform may be actively animated (so we don't have to redraw layer contents
constantly), pass that scale down to be applied by each child and set the residual transform on the ContainerLayer.
For child layers built via BuildLayer, we just pass the requested scale factor in via the ContainerParameters.
If the returned layer is a ContainerLayer then BuildLayer is guaranteed to have already done necessary scaling.
If the returned layer is not a ContainerLayer then we apply the scale ourselves by adding the scale to the
child layer's transform.
For child ThebesLayers containing non-layer display items, we scale the drawing of those display items so that
the child ThebesLayers are simply larger or smaller (larger or smaller visible regions).
We have to scale all visible rects, clip rects etc that are in the coordinates of ThebesLayers or the parent
ContainerLayer. To keep things simple we do this whenever we convert from appunits to integer layer coordinates.
When a ThebesLayer's resolution changes we need to rerender the whole thing.
nsDisplayList::PaintForFrame needs to respect the presshell's resolution setting. We do that by building a layer tree
with a ContainerParameters requesting a scale up by the presshell resolution; once that layer tree is built, we
adjust the root layer transform to scale back down by the resolution.
See the glXDestroyContext man page:
If GLX rendering context ctx is not current to any thread,
glXDestroyContext destroys it immediately. Otherwise, ctx is destroyed
when it becomes not current to any thread. In either case, the resource ID
referenced by ctx is freed immediately.
In other words, if we want glXDestroyContext to have the well-defined semantics
of destroying the context before future X commands take effect, we must first
release the GL context before calling it. We were failing to do that, but we
were destroying the drawable immediately after that call, and as a result, the
context was outliving its underlying drawable. This eventually resulted in
X_GLXMakeCurrent: GLXBadContextTag X errors on subsequent glXMakeCurrent calls.
This will need to be reverted once our build systems are upgraded to a newer
version of FreeType. In the long run, we need to increase our runtime
dependency to this newer version.
Just an ANGLE update, plus updating the list of failed tests on WinXP, also now properly reporting on unexpeced success (using todo(true) instead of ok(false))
The idea here is to do double-buffering just by setting mUseIntermediateSurface on ContainerLayers when needed. When
we need to double-buffer compositing of a layer tree, ApplyDoubleBuffering examines the root container layer. If the
child layers don't overlap and together cover the window, we don't need to double-buffer in that container, instead
we can double-buffer each child layer separately --- so we recursively call ApplyDoubleBuffering on the child layers.
When a container has children that overlap or that don't cover the container's visible rect (the latter case
probably can't happen in practice), we force it to have an intermediate surface.
This change fixes this bug because in normal browser windows the Web content layer double-buffers
We'll need this for the improved backbuffer code in the next patch. When a layer tree's
leaf layers don't overlap and cover the window, the next patch will avoid double-buffering
by blitting those layers directly to the window. If the window has transparent parts
(e.g. with Aero Glass), we need to draw the layers for those transparent parts using
OPERATOR_SOURCE so that the alpha values in the window are reset.
Instead of doing tricks with the cliprect to prevent layer content from adding to aOpaqueRegion, pass an explicit flag to control that.
Mark a ContainerLayer hidden if all its children are hidden. This will need to be changed if/when we add layer properties
that result in a ContainerLayer drawing content even if it has no children.
The updated quartz backend actually supports extend none properly.
We currently (and in the update) patch extend_pad to behave like the old
extend_none instead of a real extend_pad, so this change shouldn't have any
rendering differences now and fixes the reftest when we update.
GLContext::ClearSafely() wasn't really safe, it was making naive assumptions about GL state and as a result, a WebGL script could obtain an uninitialized backbuffer.
The updated quartz backend actually supports extend none properly.
We currently (and in the update) patch extend_pad to behave like the old
extend_none instead of a real extend_pad, so this change shouldn't have any
rendering differences now and fixes the reftest when we update.
This ANGLE update fixes bugs, brings large performance improvements, and adds major new features that web devs are looking forward to: vertex shader texture lookup and float textures.
http://code.google.com/p/angleproject/
This update is also needed because the version we're currently using is the chrome_m10 branch and that's no longer maintained. This update will make it much easier to apply security fixes if needed.
Andrea Canciani (1):
test: Fix compilation on win32
Dave Yeo (1):
Check for working mmap()
Gilles Espinasse (2):
Fix missing AC_MSG_RESULT value from Werror test
Fix OpenMP not supported case
Siarhei Siamashka (7):
ARM: tweaked horizontal weights update in NEON bilinear scaling code
ARM: use aligned memory writes in NEON bilinear scaling code
ARM: support for software pipelining in bilinear macros
ARM: use less ARM instructions in NEON bilinear scaling code
ARM: support different levels of loop unrolling in bilinear scaler
ARM: pipelined NEON implementation of bilinear scaled 'src_8888_8888'
ARM: pipelined NEON implementation of bilinear scaled 'src_8888_0565'
Søren Sandmann Pedersen (8):
Makefile.am: Put development releases in "snapshots" directory
ARM: Tiny improvement in over_n_8888_8888_ca_process_pixblock_head
ARM: Add 'neon_composite_over_n_8888_0565_ca' fast path
Offset rendering in pixman_composite_trapezoids() by (x_dst, y_dst)
Pre-release version bump to 0.21.8
Post-release version bump to 0.21.9
Pre-release version bump to 0.22.0
Post-release version bump to 0.23.1
Taekyun Kim (3):
ARM: Common macro for scaled bilinear scanline function with A8 mask
ARM: NEON scanline functions for bilinear scaling
ARM: Enable bilinear fast paths using scanline functions in pixman-arm-neon-asm-bilinear.S
--HG--
extra : rebase_source : aff729718af3e7d25577603241d204bf02ecfb90
The idea here is to do double-buffering just by setting mUseIntermediateSurface on ContainerLayers when needed. When
we need to double-buffer compositing of a layer tree, ApplyDoubleBuffering examines the root container layer. If the
child layers don't overlap and together cover the window, we don't need to double-buffer in that container, instead
we can double-buffer each child layer separately --- so we recursively call ApplyDoubleBuffering on the child layers.
When a container has children that overlap or that don't cover the container's visible rect (the latter case
probably can't happen in practice), we force it to have an intermediate surface.
This change fixes this bug because in normal browser windows the Web content layer double-buffers
We'll need this for the improved backbuffer code in the next patch. When a layer tree's
leaf layers don't overlap and cover the window, the next patch will avoid double-buffering
by blitting those layers directly to the window. If the window has transparent parts
(e.g. with Aero Glass), we need to draw the layers for those transparent parts using
OPERATOR_SOURCE so that the alpha values in the window are reset.
Instead of doing tricks with the cliprect to prevent layer content from adding to aOpaqueRegion, pass an explicit flag to control that.
Mark a ContainerLayer hidden if all its children are hidden. This will need to be changed if/when we add layer properties
that result in a ContainerLayer drawing content even if it has no children.
The idea here is to do double-buffering just by setting mUseIntermediateSurface on ContainerLayers when needed. When
we need to double-buffer compositing of a layer tree, ApplyDoubleBuffering examines the root container layer. If the
child layers don't overlap and together cover the window, we don't need to double-buffer in that container, instead
we can double-buffer each child layer separately --- so we recursively call ApplyDoubleBuffering on the child layers.
When a container has children that overlap or that don't cover the container's visible rect (the latter case
probably can't happen in practice), we force it to have an intermediate surface.
This change fixes this bug because in normal browser windows the Web content layer double-buffers
We'll need this for the improved backbuffer code in the next patch. When a layer tree's
leaf layers don't overlap and cover the window, the next patch will avoid double-buffering
by blitting those layers directly to the window. If the window has transparent parts
(e.g. with Aero Glass), we need to draw the layers for those transparent parts using
OPERATOR_SOURCE so that the alpha values in the window are reset.
Instead of doing tricks with the cliprect to prevent layer content from adding to aOpaqueRegion, pass an explicit flag to control that.
Mark a ContainerLayer hidden if all its children are hidden. This will need to be changed if/when we add layer properties
that result in a ContainerLayer drawing content even if it has no children.
Pixman upgrade from bug 640250 resulted in ARM cpu features
not being detected properly in Android. As a result, NEON
optimizations were not used at all.