aboutsummaryrefslogtreecommitdiffstats
path: root/components/constellation/pipeline.rs
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2017-08-15 16:00:10 -0500
committerGitHub <noreply@github.com>2017-08-15 16:00:10 -0500
commit90f55ea4580e2a15f7d70d0491444f18b972d450 (patch)
treec85f3cb5d55babab03d56dac8b0d10d588b0a0f9 /components/constellation/pipeline.rs
parent2e60b27a2186a8cba4b952960155dfcf3f47d7db (diff)
parent703962fe61d673536eb982b45795ae13748f0f6a (diff)
downloadservo-90f55ea4580e2a15f7d70d0491444f18b972d450.tar.gz
servo-90f55ea4580e2a15f7d70d0491444f18b972d450.zip
Auto merge of #17891 - MortimerGoro:webgl_move, r=glennw,emilio
Improved WebGL architecture <!-- Please describe your changes on the following line: --> Info about the big picture and the goals of the WebGL refactor in this thread: https://groups.google.com/forum/#!topic/mozilla.dev.servo/0WMGz60kKzQ I tried to reduce this PR as much as possible as requested in the thread. I'll do separate PRs for other features (e.g.: Batch messages or use shared memory to improve frame times) or fixes. Some tips to ease the review process: - Most changes in DOM objects follow the same pattern (remove CanvasMsg wrapper and use the new sender method). - WebGLCommands are the same ones as before (moved from webrender_api). So those lines are already reviewed. - See WebGL traits in [components/canvas_traits/webgl.rs](https://github.com/servo/servo/pull/17891/files#diff-8701045d01505418701d0631d4d45562) - See WebGLThread and WR External Image bridge in [components/canvas/webgl_thread.rs](https://github.com/servo/servo/pull/17891/files#diff-281554879f39a2a041f7a69d442a5d2e) - The implementation submitted in this PR creates a single `WebGLThread` for all ScriptThread/Pipelines. See that in [components/canvas/webgl_mode/inprocess.rs](https://github.com/servo/servo/pull/17891/files#diff-250070c6c5a38c7f9fa0f5b3c101f68b) The conformance tests will help to guarantee that we don't miss anything. --- <!-- 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 - [ ] These changes fix #__ (github issue number if applicable). <!-- Either: --> - [x] 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/17891) <!-- Reviewable:end -->
Diffstat (limited to 'components/constellation/pipeline.rs')
-rw-r--r--components/constellation/pipeline.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/components/constellation/pipeline.rs b/components/constellation/pipeline.rs
index 92a5fb041ef..74ce33ff564 100644
--- a/components/constellation/pipeline.rs
+++ b/components/constellation/pipeline.rs
@@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use bluetooth_traits::BluetoothRequest;
+use canvas_traits::webgl::WebGLPipeline;
use compositing::CompositionPipeline;
use compositing::CompositorProxy;
use compositing::compositor_thread::Msg as CompositorMsg;
@@ -171,8 +172,12 @@ pub struct InitialPipelineState {
/// Whether this pipeline is considered private.
pub is_private: bool,
+
+ /// A channel to the webgl thread.
+ pub webgl_chan: WebGLPipeline,
+
/// A channel to the webvr thread.
- pub webvr_thread: Option<IpcSender<WebVRMsg>>,
+ pub webvr_chan: Option<IpcSender<WebVRMsg>>,
}
impl Pipeline {
@@ -270,7 +275,8 @@ impl Pipeline {
script_content_process_shutdown_port: script_content_process_shutdown_port,
webrender_api_sender: state.webrender_api_sender,
webrender_document: state.webrender_document,
- webvr_thread: state.webvr_thread,
+ webgl_chan: state.webgl_chan,
+ webvr_chan: state.webvr_chan,
};
// Spawn the child process.
@@ -470,7 +476,8 @@ pub struct UnprivilegedPipelineContent {
script_content_process_shutdown_port: IpcReceiver<()>,
webrender_api_sender: webrender_api::RenderApiSender,
webrender_document: webrender_api::DocumentId,
- webvr_thread: Option<IpcSender<WebVRMsg>>,
+ webgl_chan: WebGLPipeline,
+ webvr_chan: Option<IpcSender<WebVRMsg>>,
}
impl UnprivilegedPipelineContent {
@@ -499,7 +506,8 @@ impl UnprivilegedPipelineContent {
window_size: self.window_size,
pipeline_namespace_id: self.pipeline_namespace_id,
content_process_shutdown_chan: self.script_content_process_shutdown_chan,
- webvr_thread: self.webvr_thread,
+ webgl_chan: self.webgl_chan,
+ webvr_chan: self.webvr_chan,
}, self.load_data.clone());
LTF::create(self.id,