Commit graph

78 commits

Author SHA1 Message Date
bors-servo
2e0191b839
Auto merge of #23080 - jdm:sampling-profiler, r=gterzian
Add a sampling profiler

This uses the code already built for the background hang monitor and adds the ability to repeatedly sample all monitored threads. This sampling allows us to generate profiles that we can translate into the format used by https://perf-html.io/, allowing us to benefit from modern Gecko performance tooling.

You can run Servo with `PROFILE_OUTPUT=foo.json` and `SAMPLING_RATE=50` (for example), otherwise these values will default to `samples.json` and 10ms, respectively. To activate the profiler, press cmd+p, and to stop profiling, press cmd+p again. This will the captured samples to be symbolicated, which will take a very long time, and eventually there will be a new JSON profile in the output location.

To create a profile for use by Gecko's tools, run `python etc/profilicate.py path/to/profile.json >gecko_profile.json`, and load `gecko_profile.json` in the https://perf-html.io/ to see something like [this](https://profiler.firefox.com/public/8137e2b11fbb92afb80090bc534fd83015c87ee6/calltree/?globalTrackOrder=0-1&thread=1&v=3);

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #13103
- [x] These changes do not require tests because way too many pieces to automate

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23080)
<!-- Reviewable:end -->
2019-03-26 16:36:19 -04:00
Josh Matthews
90f67c11e5 Add a sampling profiler and a script to generate profiles for use with Gecko tooling. 2019-03-26 16:35:08 -04:00
Paul Rouget
8f2390fdff Add transparent padding around ServoSurface 2019-03-25 19:01:39 +01:00
Paul Rouget
4dcee2f36c WR update: new viewport semantic 2019-03-22 15:41:48 +08:00
Peter Hall
8bfd4dc1e2 #8539 Config preferences backend restructure 2019-03-20 15:01:26 +00:00
bors-servo
55347aa39f
Auto merge of #22953 - asajeffrey:webvr-glwindow, r=paulrouget
Use a test VRDisplay that renders to a GL window

<!-- Please describe your changes on the following line: -->

Add a `dom.webvr.test` pref that registers a new VR display, which registers to a GL window.

The matching webvr PR is https://github.com/servo/rust-webvr/pull/66.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #22795
- [X] These changes do not require tests because we need a followup PR to support reftests which use the VR display

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22953)
<!-- Reviewable:end -->
2019-03-05 15:02:24 -05:00
Alan Jeffrey
cc2d203151 Use a test VRDisplay that renders to a GL window 2019-03-05 12:54:12 -06:00
bors-servo
cfb401eea9
Auto merge of #22871 - jdm:simpleml, r=ajeffrey,paul
Use simpleservo embedding API for Magic Leap

This removes the duplication between the two ports and makes it easier to improve all of our embeddings simultaneously.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #22065
- [x] These changes do not require tests because no automated tests for embedded devices.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22871)
<!-- Reviewable:end -->
2019-03-04 13:46:28 -05:00
Josh Matthews
5b7be2548a Build MagicLeap port using libsimpleservo. 2019-03-04 12:43:49 -05:00
Josh Matthews
887333ae82 Add key and mouse input APIs to simpleservo. 2019-03-04 12:43:48 -05:00
Josh Matthews
981f7414ec Remove unnecessary layers of casting from embedding event API. 2019-03-04 12:43:47 -05:00
Paul Rouget
9ef2cb5680 Fix log filter. simpleservo::api doesn't exist anymore 2019-02-19 10:13:44 +01:00
bors-servo
884aac7233
Auto merge of #22852 - paulrouget:opengl, r=Manishearth
libsimpleservo: OpenGL support for Linux (glx)

Tested with Xorg + nouveau driver.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22852)
<!-- Reviewable:end -->
2019-02-18 05:04:08 -05:00
bors-servo
710271f070
Auto merge of #22844 - paulrouget:capi-header, r=SimonSapin
Generate simpleservo.h

Fix #22834

Waiting on https://github.com/eqrion/cbindgen/pull/271

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22844)
<!-- Reviewable:end -->
2019-02-15 05:39:37 -05:00
Paul Rouget
792ed8a566 Generate simpleservo.h 2019-02-15 08:54:20 +01:00
Alan Jeffrey
a062c40567 Allow the embedder to register their own VRServices 2019-02-14 08:36:03 -06:00
Josh Matthews
256011a652 Add IME callback for embedders. 2019-02-12 17:48:42 -05:00
Paul Rouget
38ed1fcf0f libsimpleservo: OpenGL support for Linux (glx) 2019-02-11 15:40:14 +08:00
bors-servo
d029b1a0ff
Auto merge of #22832 - paulrouget:capi_tweaks, r=jdm
Some tweaks in libsimpleservo C API

- Adding logs.
- Adding OpenGL support for OSX.
- Fixing file reading issue.

With this, I can load Servo into a C app (with the C version of libui + https://github.com/andlabs/libui/pull/405).

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22832)
<!-- Reviewable:end -->
2019-02-07 01:41:21 -05:00
Paul Rouget
1292db6824 Add logs to libsimpleservo C API 2019-02-07 06:27:58 +01:00
Paul Rouget
399456665c Add Mac OpenGL support to libsimpleservo 2019-02-07 06:27:58 +01:00
bors-servo
6c161e5037
Auto merge of #22773 - paulrouget:immersive, r=jdm
Support for ExternalVR implementation

This PR adds the hook necessary for the ExternalVR rust-webvr driver.
Waiting on rust-webvr 0.9.3 to be published before landing.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22773)
<!-- Reviewable:end -->
2019-02-07 00:17:26 -05:00
Paul Rouget
c055b74e13 Support for ExternalVR implementation 2019-02-07 06:15:11 +01:00
Paul Rouget
475756ec2f Remove readfile callback 2019-02-06 07:52:58 +01:00
Simon Sapin
be69f9c3e6 Rustfmt has changed its default style :/ 2018-12-28 13:17:47 +01:00
Paul Rouget
16a00a107f Split simpleservo into 3 crates for rust, c and jni apis 2018-12-28 09:35:23 +01:00
Gregory Terzian
483bf245df constellation: restructure navigation, remove sync comm 2018-12-23 13:33:30 +08:00
bors-servo
e7d11d0578
Auto merge of #22349 - paulrouget:androidlogs_update, r=jdm
Android_logger update

This adds the name of the crate to the android logs.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22349)
<!-- Reviewable:end -->
2018-12-01 21:21:21 -05:00
Paul Rouget
0fa20cf195 android_logger update 2018-12-01 22:23:12 +01:00
Manish Goregaokar
5413328be2 Update webrender 2018-11-27 17:33:13 -08:00
Manish Goregaokar
3bccb8c387 Add support for touch events on Android
Currently on Android we treat all touch events as scroll events. Servo
is already capable of distinguishing between scroll-touches and regular
touch events (see `on_touch_move` in `components/compositor/touch.rs`),
so we should just be passing touch events through.

Servo however does not natively support fling gestures, so we continue
to use `GestureDetector` for that.
2018-11-20 22:39:47 -08:00
Jan Andre Ikenmeyer
f5ab95786f
Update MPL license to https (part 1) 2018-11-19 14:46:43 +01:00
Anthony Ramine
adf363a208 Move prepare_pixels helper functions to canvas_traits 2018-11-16 12:37:31 +01:00
Alan Jeffrey
08270f07fc Get the magicleap build to work in CI 2018-11-09 16:24:09 -06:00
Simon Sapin
9f977c5287 Remove useless use crate_name; imports.
A `crate_name::foo` path always works in 2018
2018-11-08 09:29:52 +01:00
Simon Sapin
2012be4a8b cargo fix --edition-idioms 2018-11-08 09:28:00 +01:00
Pyfisch
9e92eb205a Reorder imports 2018-11-06 22:35:07 +01:00
Pyfisch
cb07debcb6 Format remaining files 2018-11-06 22:30:31 +01:00
Simon Sapin
9f9bf8f6bc Switch most crates to the 2018 edition 2018-11-06 16:12:04 +01:00
Simon Sapin
45f7199eee cargo fix --edition 2018-11-06 15:26:02 +01:00
bors-servo
c876592d84
Auto merge of #22048 - paulrouget:remove_prepare_for_composite_args, r=jdm
remove useless arguments from prepare_for_composite

Accidentally fixes #22009

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #22009 (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22048)
<!-- Reviewable:end -->
2018-10-30 07:54:10 -04:00
Paul Rouget
d6b41ba67d remove useless arguments from prepare_for_composite 2018-10-30 07:51:38 +01:00
Paul Rouget
549c8c565a Android: proper shutdown mechanism 2018-10-26 12:15:52 +02:00
bors-servo
9a0404ac5f
Auto merge of #21881 - pyfisch:keyboard-types, r=paulrouget
Use keyboard-types crate

Have embedders send DOM keys to servo and use a strongly typed KeyboardEvent
from the W3C UI Events spec. All keyboard handling now uses the new types.

Introduce a ShortcutMatcher to recognize key bindings. Shortcuts are now
recognized in a uniform way.

Updated the winit port.
Updated webdriver integration.

part of #20331

What this PR does:

* allow the use non-ASCII keyboards for text input
* decouple keyboard event "key" from "code" (key meaning vs location)

What this PR does not do:

* completely improve keyboard events send from winit and webdriver
* add support for CompositionEvent or IME

Notes:

* The winit embedder does not send keyup events for printable keys (this is a regression)
* keyboard-types is on crates.io because I believe it to be useful outside of servo. If you prefer I can add a copy in this repo.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21881)
<!-- Reviewable:end -->
2018-10-17 05:36:08 -04:00
Josh Matthews
1332026bd4 Flush the android logging buffer when most recent read fills it up. 2018-10-15 12:29:35 -04:00
Josh Matthews
e75beaa8d6 Make android logging thread only process buffer slice that contains real data. 2018-10-15 12:29:34 -04:00
Josh Matthews
4e61d97030 Report to logcat when android logging thread terminates unexpectedly. 2018-10-15 12:29:32 -04:00
Pyfisch
0ccaa7e1a9 Use keyboard-types crate
Have embedders send DOM keys to servo and use a strongly typed KeyboardEvent
from the W3C UI Events spec. All keyboard handling now uses the new types.

Introduce a ShortcutMatcher to recognize key bindings. Shortcuts are now
recognized in a uniform way.

Updated the winit port.
Updated webdriver integration.

part of #20331
2018-10-07 22:39:00 +02:00
Paul Rouget
5ddb8d577f Disable subpixel text antialiasing for ServoSurface 2018-10-06 07:57:07 +02:00
Paul Rouget
e0ce73abb2 Make JNI code more robust 2018-10-05 13:17:27 +02:00