Commit Graph

45 Commits

Author SHA1 Message Date
Nicholas Nethercote
e3af81914c servo: Merge #6199 - Measure paint task buffer maps in the memory profiler (from nnethercote:instrument-paint-task-buffer-map); r=pcwalton
Example output from the memory profiler:

```
|       1.04 MiB -- url(http://en.wikipedia.org/wiki/Main_Page)
|          0.26 MiB -- display-list
|          0.78 MiB -- paint-task       # new output line
|             0.78 MiB -- buffer-map    # new output line
```

The buffer maps aren't huge, but they're worth measuring, and it's good
to get the memory profiler plumbing into PaintTask.

Source-Repo: https://github.com/servo/servo
Source-Revision: 10127d6b5a71ee8927413ab746300e32a54b079d
2015-05-28 22:45:34 -05:00
Corey Farwell
3d43073796 servo: Merge #6174 - Reduce max line length from 150 to 120 characters (from frewsxcv:cleanup-long-lines); r=SimonSapin
Part of https://github.com/servo/servo/issues/6041

Source-Repo: https://github.com/servo/servo
Source-Revision: 542519ebfd073662bc9421ac5fa0aa01ebc0d6fe
2015-05-24 18:27:26 -05:00
Glenn Watson
00df5fc0da servo: Merge #6152 - Fix document load event firing after pipeline is closed (from glennw:runnable-panic); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 1060cfde68c8d355b54a271923c9682721c5ed19
2015-05-20 20:01:32 -05:00
ecoal95
0656a2b904 servo: Merge #6083 - First steps to layerize canvas (from emilio:layerize-canvas); r=pcwalton
I've done a bit of job to get this done. Right now readback is still used, but we have a `LayerId` -> `CanvasRenderer` map on the paint task, that we can use to get rid of that.

I'd want review, to see if this is a good approach (I know it's not the initial `CanvasId` -> renderer approach, but it's pretty similar, since a canvas involves a `PaintLayer`).

I had to do a bit of refactoring to avoid cyclic dependencies between canvas and gfx. I'd want you to review them too.

It's mergeable and doesn't break any tests :P

Some of my main concerns:
* Does the canvas render really need to be behind an `Arc<Mutex<T>>`?
* I can't clone a `NativeSurface` right now (that's why the `SendNativeSurface()` msg is unimplemented in the WebGL task). It should be easy to add that to rust-layers, supposing the caller is responsible to mark it as non-leaking, any reason to not do it?

cc @jdm @pcwalton

Source-Repo: https://github.com/servo/servo
Source-Revision: ad53e95080144485e74cd9b9d48ce75e20de4e36
2015-05-20 15:42:06 -05:00
Glenn Watson
17e3775b23 servo: Merge #6131 - Fix several hangs / panics during pipeline cleanup of in progress loads (from glennw:jquery-exit-fix); r=jdm
This fixes a hang found while testing the jQuery test suite.

Source-Repo: https://github.com/servo/servo
Source-Revision: c51e9f04559f04f1e820b792261e1653c6869ee5
2015-05-19 21:44:45 -05:00
Patrick Walton
cf0b11ec43 servo: Merge #6053 - compositing: Implement display ports and avoid creating display lists for items outside it (from pcwalton:displayports); r=glennw
This improves Servo's performance on large pages.

Please double-check the logic when it comes to nested layers—I'm sure I've messed up some of the geometry calculations :)

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 0880e54f987bac7c34c934ef6ee36f46475b06e3
2015-05-19 19:40:36 -05:00
Patrick Walton
5cea4e2f03 servo: Merge #6055 - gfx: Implement paint flashing, which will be useful for debugging invalidation (from pcwalton:paint-flashing); r=mbrubeck
r? @mbrubeck (or whoever)

Source-Repo: https://github.com/servo/servo
Source-Revision: 74ef5d6aa89eb138f029ab6aeb9ce0bbf8befede
2015-05-14 18:00:52 -05:00
Glenn Watson
6cd31b7d9f servo: Merge #5890 - Various fixes for cleaning up iframes, compositor layers, pipelines and threads (from glennw:iframe-cleanup); r=jdm
This allows most of the jquery test suite to run without exhausting thread resources.

Source-Repo: https://github.com/servo/servo
Source-Revision: 7e022b25a8ab87897180dcf1b6aff8d9b57adcb4
2015-05-13 22:34:59 -05:00
Glenn Watson
76f1d2ef46 servo: Merge #6031 - Fixes a number of race conditions and reliability issues with reftests and compositor (from glennw:reftest-race-conditions); r=larsberg,jdm
The basic idea is it's safe to output an image for reftest by testing:
 - That the compositor doesn't have any animations active.
 - That the compositor is not waiting on any outstanding paint messages to arrive.
 - That the script tasks are "idle" and therefore won't cause reflow.
    - This currently means page loaded, onload fired, reftest-wait not active, first reflow triggered.
    - It could easily be expanded to handle pending timers etc.
 - That the "epoch" that the layout tasks have last laid out after script went idle, is reflected by the compositor in all visible layers for that pipeline.

Source-Repo: https://github.com/servo/servo
Source-Revision: 5e61ebaa05e5babb7b2fdd1347b6cdd23df38e62
2015-05-13 18:37:54 -05:00
Glenn Watson
7de50d6cf2 servo: Merge #6013 - Fix a compositor race condition that can result in the most recent buffer not being painted (from glennw:compositor-race); r=pcwalton
Source-Repo: https://github.com/servo/servo
Source-Revision: 606ab1df448368fdffd531f4c66f1f069b942eac
2015-05-12 20:44:19 -05:00
Simon Sapin
25523c4789 servo: Merge #5951 - Clean up the Au API (from SimonSapin:au-cleanup); r=mbrubeck
Fix #5943.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: 1721cf45ed59306a69f3ade08feca065804c3804
2015-05-05 15:08:12 -05:00
Simon Sapin
b72bb5e7d5 servo: Merge #5935 - Upgrade Rust (from servo:rustup_2015-04-25); r=Ms2ger
r? everybody

Source-Repo: https://github.com/servo/servo
Source-Revision: 49aed6555dbc008c1a378c5cbb303f5467232b6b
2015-05-05 09:11:30 -05:00
Nicholas Nethercote
afeab10374 servo: Merge #5912 - Add a profile_traits crate to reduce compile times (from nnethercote:profile_traits); r=Manishearth
A rebuild after touching components/profile/mem.rs now takes 48 seconds (and
only rebuilds `profile` and `servo`) which is much lower than it used to be.
In comparison, a rebuild after touching components/profile_traits/mem.rs takes
294 seconds and rebuilds many more crates.

This change also removes some unnecessary crate dependencies in `net` and
`net_traits`.

Source-Repo: https://github.com/servo/servo
Source-Revision: 77f653da2c4120ea7ac1a946d97fc70059d513d4
2015-04-30 20:02:33 -05:00
Glenn Watson
1511f427f8 servo: Merge #5767 - Refactored image cache task - details below (from glennw:image-cache); r=larsbergstrom,jdm
* Simpler image cache API for clients to use.
 * Significantly fewer threads.
   * One thread for image cache task (multiplexes commands, decoder threads and async resource requests).
   * 4 threads for decoder worker tasks.
 * Removed ReflowEvent hacks in script and layout tasks.
   * Image elements pass a Trusted<T> to image cache, which is used to dirty nodes via script task. Previous use of Untrusted addresses was unsafe.
   * Image requests such as background-image on layout / paint threads trigger repaint only rather than full reflow.
 * Add reflow batching for when multiple images load quickly.
   * Reduces the number of paints loading wikipedia from ~95 to ~35.
 * Reasonably simple to add proper prefetch support in a follow up PR.
 * Async loaded images always construct Image fragments now, instead of generic.
   * Image fragments support the image not being present.
 * Simpler implementation of synchronous image loading for reftests.
 * Removed image holder.
 * image.onload support.
 * image NaturalWidth and NaturalHeight support.
 * Updated WPT expectations.

Source-Repo: https://github.com/servo/servo
Source-Revision: ac0645c2363b5a6ea3930b0857b3a27f1b6d033f
2015-04-22 19:16:46 -05:00
Josh Matthews
e3b9c28215 servo: Merge #5571 - Remove int_uint feature from gfx (from jdm:gfx_uint); r=Ms2ger
r? @Ms2ger

Source-Repo: https://github.com/servo/servo
Source-Revision: 83d9ab3ba5c6a725632a954cf2b9f65832f89832
2015-04-08 03:06:09 -05:00
Patrick Walton
b4a63e5dbd servo: Merge #5400 - layout: Implement CSS transitions per CSS-TRANSITIONS § 2 (from pcwalton:transitions-redux); r=glennw
Transition events are not yet supported, and the only animatable
properties are `top`, `right`, `bottom`, and `left`. However, all other
features of transitions are supported. There are no automated tests at
present because I'm not sure how best to test it, but three manual tests
are included.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: ebdf1d494b6c986e6dfcb7d8fd3f0ffa126523ed
2015-03-31 10:39:56 -06:00
Nicholas Nethercote
511ce78c9b servo: Merge #5348 - Rename lots of profiling-related things (from nnethercote:profiler-renaming); r=jdm
```
------------------------------------------------------------------------
BEFORE                              AFTER
------------------------------------------------------------------------
util::memory                        util::mem
- heap_size_of                      - heap_size_of (unchanged)
- SizeOf                            - HeapSizeOf
  - size_of_excluding_self            - heap_size_of_children

prof::mem                           prof::mem
- MemoryProfilerChan                - ProfilerChan
- MemoryReport                      - Report
- MemoryReportsChan                 - ReportsChan
- MemoryReporter                    - Reporter
- MemoryProfilerMsg                 - ProfilerMsg
  - {R,UnR}egisterMemoryReporter      - {R,UnR}egisterReporter
- MemoryProfiler                    - Prof
- ReportsForest                     - ReportsForest (unchanged)
- ReportsTree                       - ReportsTree   (unchanged)
- SystemMemoryReporter              - SystemReporter

prof::time                          prof::time
- TimeProfilerChan                  - ProfilerChan
- TimerMetadata                     - TimerMetadata (unchanged)
- Formatable                        - Formattable [spelling!]
- TimeProfilerMsg                   - ProfilerMsg
- TimeProfilerCategory              - ProfilerCategory
- TimeProfilerBuckets               - ProfilerBuckets
- TimeProfiler                      - Profiler
- TimerMetadataFrameType            - TimerMetadataFrameType (unchanged)
- TimerMetadataReflowType           - TimerMetadataReflowType (unchanged)
- ProfilerMetadata                  - ProfilerMetadata (unchanged)
```
In a few places both prof::time and prof::mem are used, and so
module-qualification is needed to avoid overlap, e.g. time::Profiler and
mem::Profiler. Likewise with std::mem and prof::mem. This is not a big
deal.

Source-Repo: https://github.com/servo/servo
Source-Revision: d784d9c488be4533a3590a154addd366d15a5864
2015-03-25 21:18:48 -06:00
Nicholas Nethercote
dab428b57b servo: Merge #5335 - Move profiler code from util into a new crate profile (from nnethercote:profile-crate); r=glennw
- Most of util::memory has been moved into profile::mem, though the
  `SizeOf` trait and related things remain in util::memory. The
  `SystemMemoryReporter` code is now in a submodule
  profile::mem::system_reporter.

- util::time has been moved entirely into profile::time.

Source-Repo: https://github.com/servo/servo
Source-Revision: d1268ec9c6633684270015e7b2619181aeb47b8b
2015-03-24 03:15:49 -06:00
Simon Sapin
5cb6c4ea43 servo: Merge #5262 - Fix some post-rustup warnings (from servo:fix-warnings); r=metajack
Source-Repo: https://github.com/servo/servo
Source-Revision: 124a78fb2e4d324a7d0ed54da1cca17839d406b7
2015-03-18 15:21:49 -06:00
Ms2ger
f4ea3a3dd0 servo: Merge #5256 - Upgrade rustc to d3c49d2140fc65e8bb7d7cf25bfe74dda6ce5ecf/rustc-1.0.0-de (from servo:rustup_20150311); r=jdm
...v.

Relies on:
* https://github.com/servo/rust-geom/pull/72
* https://github.com/servo/rust-glx/pull/10
* https://github.com/servo/gleam/pull/15
* https://github.com/servo/rust-mozjs/pull/137
* https://github.com/servo/rust-core-text/pull/35
* https://github.com/servo/rust-io-surface/pull/28

Source-Repo: https://github.com/servo/servo
Source-Revision: 99cf9dbfc107bacb84dfe5afa9539a0ede3beac2
2015-03-18 11:25:00 -06:00
Patrick Walton
b5a965f5b2 servo: Merge #4475 - layout: Implement text-shadow per CSS-TEXT-DECORATION-3 § 4 (from pcwalton:text-shadow); r=mbrubeck
r? @mbrubeck

Depends on servo/rust-geom#64.

Source-Repo: https://github.com/servo/servo
Source-Revision: 93d1f40a96df69eb9d38890df96c621e180d78cc
2015-03-02 14:54:52 -07:00
Patrick Walton
31e5810d70 servo: Merge #4994 - layout: Add an option to visualize parallel layout (from pcwalton:layout-tinting); r=pcwalton
r? @metajack

Source-Repo: https://github.com/servo/servo
Source-Revision: d26345f868e4261760ce204bdc383941e8f14621
2015-02-20 23:06:48 -07:00
Jack Moffitt
2308c9cb40 servo: Merge #4969 - Added overlay for demoing parallel painting (from servo:parallel-paint-demo); r=glennw
You can enable this with `-Z show-parallel-paint`. The output looks like this:

![screenshot 2015-02-19 13 21 12](https://cloud.githubusercontent.com/assets/28357/6275199/7bd6e788-b83a-11e4-89cb-a74f360272f2.png)

Source-Repo: https://github.com/servo/servo
Source-Revision: 49ff6b2ccc43ab657814a1b4584122411a4b2acb
2015-02-19 16:21:57 -07:00
Simon Sapin
8fbd363d52 servo: Merge #4893 - Upgrade to rustc ba2f13ef0 2015-02-04 (from servo:rustup_2015-01-31); r=Ms2ger,glennw
Ready for review.

Final link step on android fails, but we know how to fix it and will add it to this branch soon.

Source-Repo: https://github.com/servo/servo
Source-Revision: 2cc08f289ab909de44fa09a07b2c43b70ce379b9
2015-02-11 17:24:45 -07:00
Ms2ger
f3a69a15a3 servo: Merge #4886 - Import msg as msg rather than servo_msg (from Ms2ger:servo_msg); r=saneyuki
Source-Repo: https://github.com/servo/servo
Source-Revision: 29d3b872de4abb693b75e71fc0b987c52b0fd1f6
2015-02-10 03:51:46 -07:00
Alexandru Cojocaru
0cbc5adfcf servo: Merge #4820 - add unwrap to send/recv calls (from servo:send-recv); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: 8e6dcc7c26d88bb0452226ff8c34539e368e03d9
2015-02-03 11:24:53 -07:00
Martin Robinson
e7446b371f servo: Merge #4809 - Update to latest rust-layers (from mrobinson:rust-layers-update); r=glennw
Source-Repo: https://github.com/servo/servo
Source-Revision: 6eac20d84da2b5f0741a91b5af3907af56b009b0
2015-02-02 16:57:51 -07:00
Ms2ger
155838196e servo: Merge #4766 - Import the util crate as util rather than servo_util (from Ms2ger:util); r=Manishearth
This used to conflict with the util crate from the standard library, which
has long since been removed.

The import in layout has not been changed because of a conflict with the
util mod there.

Source-Repo: https://github.com/servo/servo
Source-Revision: 27e0f16407629422b5e047e067d458142372c97e
2015-01-29 05:12:49 -07:00
Manish Goregaokar
f43b3f0b84 servo: Merge #4739 - Fix some warnings (from Manishearth:warning-patrol); r=Ms2ger
Source-Repo: https://github.com/servo/servo
Source-Revision: d373f8dc26239310dec8d2fd66ed72385548cf6f
2015-01-28 02:27:50 -07:00
Josh Matthews
b11f7d94dc servo: Merge #4719 - Update rustc to 00b112c45a604fa6f4b59af2a40c9deeadfdb7c6/rustc-1.0.0-dev (from servo:rustup_20150109); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 3f9012864a2cd927cf17a8e11dfa6922add1b7df
2015-01-27 18:15:50 -07:00
Martin Robinson
183e2f1338 servo: Merge #4625 - Update to latest rust-azure and rust-layers (from mrobinson:surface-refactor); r=jdm
We no longer need to implement from_azure_surface in Servo, now that
rust-layers is handling more of the glue between rust-layers and Azure.

Source-Repo: https://github.com/servo/servo
Source-Revision: efae66bccb116ddf41857436718ef1556243a3f2
2015-01-16 12:57:44 -07:00
Patrick Walton
084ac081fc servo: Merge #4557 - layout: Implement filter per CSS-FILTERS § 5 (from pcwalton:filter); r=mbrubeck
`blur` and `drop-shadow` are not yet supported, because the
`text-shadow` PR makes some fundamental changes to blur rendering that
are needed first.

r? @mbrubeck

Source-Repo: https://github.com/servo/servo
Source-Revision: ffdbf29db28ba334e8baf8d35141b5e8ad289459
2015-01-09 09:03:48 -07:00
Martin Robinson
36deb3409e servo: Merge #4553 - Make initialize_layers a PaintTask method (from mrobinson:paint-task-cleanup); r=larsbergstrom
This simplifies calling it substantially. Also avoid unnecessarily
changing the PaintTask epoch when we don't have paint permission.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0b06aeebe3e39374bcd9e31b4f948461c0ed1d0e
2015-01-09 08:24:48 -07:00
Martin Robinson
a302f866ea servo: Merge #4558 - Improve Compositor message names (from mrobinson:compositor-message-renames); r=zwarich
These names no longer reflect what the messages do, so rename them to
SetFrameTree, AssignPaintedBuffers, and CreateOrUpdateBaseLayer.

Source-Repo: https://github.com/servo/servo
Source-Revision: 1458709247586fcb3c14cd9132b735ff3080bf07
2015-01-08 12:36:53 -07:00
Ms2ger
b3c7f9d2ca servo: Merge #4554 - Update rustc to revision 2cfb5acb5a2751c759627377e602bac4f88f2d19 (from servo:rustup_20141221); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 1d7148c79f9124779a910fd5291c5fa0543b2dae
2015-01-08 08:00:57 -07:00
Ms2ger
843040ab81 servo: Merge #4548 - Various cleanup (from Ms2ger:cleanup); r=Manishearth
Source-Repo: https://github.com/servo/servo
Source-Revision: 65ee8166bd64e911502e29a050258b70d9f263aa
2015-01-05 01:27:48 -07:00
Patrick Walton
fe1e6fa761 servo: Merge #4460 - layout: Paint stacking contexts' overflow areas properly (from pcwalton:stacking-context-overflow); r=glennw
This was making `box-shadow` not show up in many cases, in particular,
but the effects were not limited to that.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 499d17f564d699e5e290e8a3859f64e7536827a7
2015-01-04 18:51:48 -07:00
Ms2ger
2979891740 servo: Merge #4542 - Prepare for the rust upgrade (from servo:pre-rustup_20141221); r=saneyuki
In particular, this contains changes to qualify enums where rust will require it, and to stop using some features that will be removed.

Source-Repo: https://github.com/servo/servo
Source-Revision: ba8cf6b0e6145265f9472d4855f078d8b5943fe7
2015-01-04 12:39:47 -07:00
Martin Robinson
6c0ac241fb servo: Merge #4536 - Stall PaintTask exit until it can release all buffers (from mrobinson:pixmap); r=pcwalton
It is possible for a PaintTask to start exiting soon after sending new
buffers to the compositor. In that case, the compositor should return
the now unnecessary buffers to the PaintTask so that it can properly
free them.

To accomplish this, the compositor now keeps a hash map of paint task
channels per pipeline id. When a PaintTask exists, the constellation
informs the compositor that it can forget about it. Additionally, the
PaintTask should not wait for any buffers when the engine is doing a
complete shutdown. In that case, the compositor is already halted and
has simply let all buffers leak. We pipe through the shutdown type when
destroying the pipeline to make this decision.

Fixes #2641.

Source-Repo: https://github.com/servo/servo
Source-Revision: a31acffb0405b2c38b39c39c6d552f2ba79b6326
2015-01-02 20:21:47 -07:00
Patrick Walton
25ca4de050 servo: Merge #4459 - gfx: Clip the background properly when border-radius is used, and clean up some painting stuff (from pcwalton:border-radius-clipping); r=glennw
Together these improve a large number of sites: GitHub, Reddit, Wikipedia, etc.

r? @glennw

Source-Repo: https://github.com/servo/servo
Source-Revision: 63a7742d834e9ed44421baa3ce218a5eabce58bf
2014-12-22 15:51:48 -07:00
Tetsuharu OHZEKI
ab160d6216 servo: Merge #4418 - gfx: Remove glob imports added in #4405 (from saneyuki:glob_gfx); r=jdm
#4406

Source-Repo: https://github.com/servo/servo
Source-Revision: a425bb528957fd77cf8300b17e153f8fc3777483
2014-12-18 12:52:01 -07:00
Glenn Watson
636d338cf6 servo: Merge #4405 - Update rustc to revision 3dcd2157403163789aaf21a9ab3c4d30a7c6494d (from servo:rustup_20141124); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: fbf42c951b2f53d91e2f32f8035484a07ea83493
2014-12-17 18:45:49 -07:00
Patrick Walton
ea8fffc9f3 servo: Merge #4318 - gfx: Implement box-shadow per CSS-BACKGROUNDS (from pcwalton:box-shadow-redux); r=SimonSapin
r? @SimonSapin

Source-Repo: https://github.com/servo/servo
Source-Revision: 7805fe19edf5353711f49a8ef1c988dc9f932bb7
2014-12-15 16:31:14 -07:00
Patrick Walton
7f78fb398c servo: Merge #4272 - gfx: Update Azure and Skia, and rewrite broken clipping logic (from pcwalton:upgrade-azure); r=mrobinson
This exposed some problems in our clipping logic, which was never
properly rewritten for the stacking context reform. The clipping code
worked in terms of a stack of clips, but the new stacking context code
has no concept of a stack of clip regions. Fixing that in turn exposed
some flaky/incorrect tests:

* `borders` had an incorrect reference image, as far as I can tell.

* `negative_margins` had some stray pixels, fixed by changing the text.

r? @mrobinson

Source-Repo: https://github.com/servo/servo
Source-Revision: 40c706b42d9d29ef58913f22da49159796e1b81b
2014-12-08 14:52:02 -07:00
Tetsuharu OHZEKI
91421a9ceb servo: Merge #4279 - Rename "render"/"rendering" to "paint"/"painting" (from saneyuki:rename); r=jdm
#4275

* This changeset rename "render"/"rendering" to "paint"/"painting" under `components/`.
* This does not rename words which are used as general browser's working.
  * So this doesn't change `reftest.rs`.

Source-Repo: https://github.com/servo/servo
Source-Revision: 0b486b12109ab765ecee4cbcc684e5d99e8ad5ad
2014-12-08 10:28:10 -07:00