Commit graph

1853 commits

Author SHA1 Message Date
bors-servo
0dc17af7f0
Auto merge of #23483 - ceyusa:player-context, r=jdm
Media player rendering with GL textures

These patches pass the application's OpenGL raw context  and the its native display address to the media player, in order to create an internal wrapped context, thus it will generate video frames as textures.

For now only EGL from glutin-based app and android are in place, though tested only in Linux glutin app.

This PR also renders the generated frame textures by Servo/Media and renders them by using a thread that connects Webrenderer's ExternalImageHandler and each instantiated player. **By now, these patches, disable the WebGL rendering**. We need to provide a ExternalImageHandler demuxer.

This PR depends on https://github.com/servo/media/pull/270

- [X]  `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- This PR fixes #22300 and fixes #22920

In order to test it you must launch servo as

`./mach run -- --pref media.glvideo.enabled [...]`

<!-- 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/23483)
<!-- Reviewable:end -->
2019-07-04 23:28:28 -04:00
Simon Sapin
2b01c26aa5 Add ./mach build --with-layout-2020
… with corresponding `layout` and `layout_thread` crates,
which for now do nothing.
2019-07-04 18:16:44 +02:00
Fernando Jiménez Moreno
0da87ad169 Introduce WebrenderExternalImageRegistry 2019-07-04 10:26:48 +02:00
Fernando Jiménez Moreno
ba9cf85fb3 Webrender external image handler demux 2019-07-04 10:26:47 +02:00
Fernando Jiménez Moreno
7d589ed4f5 Media crate 2019-07-04 10:25:49 +02:00
Víctor Manuel Jáquez Leal
db4fff173d Create the WindowGLContext at create_constellation() 2019-07-04 10:25:49 +02:00
Víctor Manuel Jáquez Leal
a9ad088e70 Instanciate and use the implemented webrender::ExternalImageHandler 2019-07-04 10:25:48 +02:00
Víctor Manuel Jáquez Leal
dd01728d53 Pass GLPlayerThreads to constellation
Create the thread only if the GL context is known.
2019-07-04 10:25:47 +02:00
Víctor Manuel Jáquez Leal
9f4f9dc750 Add media (WindowGLContext) module in canvas_trait
This module adds a structure (WindowGLContext) which holds the
OpenGL parameters that are going to be used by servo-media player
to render video frames using OpenGL.

In order to fill this structure, three new methods were added to
WindowMethods trait. In this patch only the Glutin-based
implementation provides a simple boilerplate.

The WindowGLContext is created in the entry point of libservo, when
the application window is created, and later passed to the
constellation, the pipeline and to the window element in dom, thus
htmlmediaelement has a mean to obtain these parameters via its
window.
2019-07-04 10:24:01 +02:00
Josh Matthews
7a3d346087 Simplify build process for UWP app. 2019-07-03 21:35:44 +02:00
Alan Jeffrey
9eb75d4ea6 Use webxr IPC to get a WebXR device registry to each script thread 2019-07-03 08:53:40 -05:00
bors-servo
50033878a6
Auto merge of #23676 - servo:check, r=Manishearth
Share more `./mach build` logic with mach check, doc, test-unit

Fixes #23659

<!-- 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/23676)
<!-- Reviewable:end -->
2019-07-02 23:55:44 -04:00
Alan Jeffrey
135ad4a2f4 Use webxr git repo for all webxr dependencies in Cargo.tomls 2019-07-02 18:24:29 -05:00
Alan Jeffrey
91d1b52b38 Initialize a wevxr device registry from Servo 2019-07-02 18:23:56 -05:00
Simon Sapin
1df2605292 Rename {azure,raqote}_backend feature flags to canvas2d-{azure,raqote} 2019-07-01 15:46:33 +02:00
Simon Sapin
bddfe9a468 Remove default-except-unstable
… and use remaining unstable features unconditionally.
This doesn’t actually change the set of crates that can build on the Stable channel.
2019-07-01 15:43:24 +02:00
Simon Sapin
5a31ce52d8 Features used by euclid are stable 2019-07-01 14:55:25 +02:00
Simon Sapin
99669b0831 #[global_allocator] is stable 2019-07-01 14:55:01 +02:00
Simon Sapin
1d38bc0419 Fix some new warnings 2019-06-22 14:59:09 +02:00
bors-servo
09f9273b2d
Auto merge of #23559 - jdm:uwp-dirs, r=asajeffrey
Remove dirs crate from use in UWP builds.

The dirs crate relies on APIs that aren't available to UWP apps. This adds the ability to hide it from builds that need to run in UWP environments.

<!-- 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/23559)
<!-- Reviewable:end -->
2019-06-14 04:50:18 -04:00
Josh Matthews
3e22b52b47 Remove dirs crate from use in UWP builds. 2019-06-13 18:05:35 -04:00
Alan Jeffrey
0b48ff496f Add Servo3D immersive demo for magicleap 2019-06-13 15:04:05 -05:00
bors-servo
8e783577d2
Auto merge of #23468 - servo:jdm-patch-52, r=asajeffrey
Add Windows arm64 build.

Depends on:
* [x] https://github.com/servo/mozjs/pull/184
* [x] https://github.com/servo/rust-mozjs/pull/463
* [ ] <strike>https://github.com/servo/ipc-channel/pull/232</strike>
* [x] https://github.com/alexcrichton/cmake-rs/pull/82
* [x] https://github.com/servo/rust-offscreen-rendering-context/pull/136
* [x] https://github.com/servo/mozangle/pull/21

<!-- 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/23468)
<!-- Reviewable:end -->
2019-06-11 17:21:36 -04:00
Josh Matthews
385b46cff7 Disable WGL for Windows arm64. 2019-06-11 15:53:35 -04:00
Robert Snakard
35bca991ad Implement WheelEvent Interface
Note: The WheelEvent interface supports rotation in all 3 spatial
dimensions. This implementation only supports two due to limitations
in the Glutin compositor.

The wheelevent interface is a dom interface that triggers for any
attached device that can rotate in one or more spatial dimensions.
Traditionally this is the mouse wheel though other devices could be
used as well. E.g. the trackball on a trackball mouse.
2019-06-09 13:25:01 -04:00
bors-servo
626c431e06
Auto merge of #23520 - oneturkmen:net-remove-opts-get, r=jdm
Net: removed opts::get() usage

<!-- Please describe your changes on the following line: -->
Removed usage of opts::get() in components/net.

---
<!-- 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 *partially* #22854 (GitHub issue number if applicable)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because these are cleanup/refactoring changes.

<!-- 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/23520)
<!-- Reviewable:end -->
2019-06-07 12:34:23 -04:00
oneturkmen
9034fb64b7 Net: removed opts::get() usage 2019-06-06 18:48:17 -06:00
oneturkmen
f29ae9d88f Profile: removed opts::get() 2019-06-05 22:28:38 -06:00
bors-servo
4c234de927
Auto merge of #23504 - jdm:win-simpleservo, r=asajeffrey
Build simpleservo on Windows

The mozangle change means that we don't rebuild mozangle (and transitively script) because the requested features are different when building libsimpleservo.

<!-- 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/23504)
<!-- Reviewable:end -->
2019-06-05 01:21:47 -04:00
oneturkmen
cd153efb4a Constellation: removed almost all opts::get 2019-06-03 19:59:02 -06:00
Josh Matthews
685cf24358 Build libEGL.dll on all Windows targets. 2019-06-03 11:49:17 -04:00
bors-servo
657ed9f1ca
Auto merge of #23451 - pylbrecht:canvas.rendering, r=Manishearth
Use raqote for 2D canvas rendering

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

---
<!-- 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 (part of) #23431 and #23466

<!-- Either: -->

<!-- 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/23451)
<!-- Reviewable:end -->
2019-06-03 11:05:56 -04:00
Josh Matthews
3243f1753b Add cargo feature to control canvas backend. 2019-06-03 00:12:01 -04:00
oneturkmen
1819453ba2 compositing: removed opts-get 2019-06-01 13:54:57 -06:00
Manish Goregaokar
366aa78e55 Run webvr thread when webxr is enabled 2019-05-30 19:04:08 -07:00
Paul Rouget
21ed7653f4 Refactoring of the Glutin port in preparation of the compositor refactoring. 2019-04-29 10:04:51 +02:00
Fernando Jiménez Moreno
74a48937f1 Remove use of auto media backend. And update servo-media 2019-04-23 16:24:33 +02:00
Josh Matthews
eebd831ea5 Move media backend initialization to process startup. 2019-04-15 16:46:25 -04:00
Kamal Umudlu
a8995fbf1a Bug: #22853 - Make Window::set_fullscreen pass a non-None value when entering fullscreen is fixed and SetFullscreenState in exit_fullscreen changed to False
Added patch for bug:22853

Added implementation to exit from fullscreen mode by pressing ESC button

Added patch that supports to exit from fullscreen mode by pressing ESC

Deleted patch files

Added all requested changes on project

Removed the loop over self.pending_changes in switch_fullscreen_mode function

Bug #22853 - Make Window::set_fullscreen pass a non-None value when entering fullscreen is fixed and SetFullscreenState in exit_fullscreen changed to False

Added missing bracket in constellation.rs file to fix build issue

Bug: #22853 --> Make Window::set_fullscreen pass a non-None value when entering fullscreen is fixed and SetFullscreenState in exit_fullscreen changed to False
2019-04-01 18:29:02 -04:00
Gregory Terzian
0780298b80 bound sampler buffer 2019-03-31 20:14:46 +08:00
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
8b7244f0d1 Support multiprocess in sampling profiler. 2019-03-26 16:35:10 -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
Josh Matthews
896aae1c14 Add mozjs feature for profiling. 2019-03-25 16:13:56 -04:00
Paul Rouget
a1a20ee516 WR update: draw background before rendering 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