aboutsummaryrefslogtreecommitdiffstats
path: root/components/compositing/compositor_thread.rs
Commit message (Collapse)AuthorAgeFilesLines
...
* WR multi-document updateDzmitry Malyshau2017-07-281-1/+2
|
* Upgrade to the latest version of WebRenderMartin Robinson2017-07-131-3/+3
|
* Remove unnecessary `recv` in the constellationConnor Brewster2017-06-231-1/+1
|
* Improve decisions in compositor over when to draw a frame.Glenn Watson2017-06-201-3/+0
| | | | | | | | | | | | | | | | | | | | | | This patch fixes a couple of issues in the compositor: 1) Remove the delayed composition code. Previously, this would schedule a composite for 12ms in the future. This doesn't really make any sense with WR. There's no point in doing a composite unless WR has provided a new frame to be drawn. This fixes issues in several benchmarks where we were doing multiple composite / renders per rAF, which is a waste of CPU time. This *does* make the framerate slower in some cases (such as a slow rAF callback) but it's more correct - otherwise we were just compositing the same frame multiple times for no real benefit. 2) Inform the window of the current animation state of the compositor. Specifically, if an animation (or rAF) is currently active, the window system switches to use event polling, and does not block on the OS-level event loop. In the case of active animation, we just assume that we want to be running as the vsync interval and not blocking. This means the compositor thread only sleeps on vsync during animation, which reduces OS scheduling and results in much smoother animation.
* Bump euclid to 0.14.Nicolas Silva2017-06-141-2/+1
|
* separate waking the event loop, from communicating with a compositorGregory Terzian2017-06-061-24/+38
|
* Auto merge of #15794 - paulrouget:head_parsed_url, r=asajeffreybors-servo2017-04-251-10/+10
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Notify embedder when history changes `WindowMethods::set_page_url` is only called when the embedder set the URL. It is not called when the page url is updated. I believe that instead we should just pass the URL to `head_parsed`. --- <!-- 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 #15439 #15643 and #15642 (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [x] These changes do not require tests because I'm not sure how to test that <!-- 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/15794) <!-- Reviewable:end -->
| * Notify embedder when history changesPaul Rouget2017-04-181-10/+10
| |
* | Eliminate ScrollRootIdMartin Robinson2017-04-201-2/+1
|/ | | | | | | Just use WebRender's ClipId directly. This will allow us to create and use ReferenceFrames in the future, if we need to do that. It will also make it easier to have Servo responsible for creating the root scrolling area, which will allow removing some old hacks in the future.
* Let the embedder decide if servo should follow a link or notPaul Rouget2017-03-021-0/+3
|
* Add support for fullscreen #10102Jansen Jan2016-12-091-1/+4
|
* Reimplement scrolling to fragmentsMartin Robinson2016-11-291-1/+2
| | | | | | | | This reimplemntation of the feature uses ScrollRootIds to scroll particular scrollable areas of the page. Fixes #13736. Fixes #10753.
* Urlmageddon: Use refcounted urls more often.Emilio Cobos Álvarez2016-11-171-3/+3
|
* Remove CollectMemoryReports from compositor (fixes #13735)Michael Kohler2016-11-061-3/+0
|
* Move Image and PixelFormat to net_traits.Ms2ger2016-10-211-1/+2
|
* Auto merge of #13848 - mrobinson:remove-layers, r=glennwbors-servo2016-10-211-2/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove concept of Layers from Servo <!-- 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 - [ ] These changes fix #__ (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [x] These changes do not require tests because this PR should not change behavior. <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> Layers were a feature of the legacy drawing path. If we re-add them at some point, it probably makes more sense to make them a product of display list inspection. This change also remove a bunch of dead painting code. <!-- 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/13848) <!-- Reviewable:end -->
| * Remove concept of Layers from ServoMartin Robinson2016-10-211-2/+1
| | | | | | | | | | | | | | | | Layers were a feature of the legacy drawing path. If we re-add them at some point, it probably makes more sense to make them a product of display list inspection. This change also remove a bunch of dead painting code.
* | Set up main thread dispatcher required for WGL GLContext sharing in Windows, ↵Imanol Fernandez2016-10-201-0/+5
|/ | | | r=emilio
* Remove old rendering backend.Glenn Watson2016-10-181-79/+5
| | | | | | | | | | | | | | This removes paint threads, rust-layers dependency, and changes optional webrender types to be required. The use_webrender option has been removed, however I've left the "-w" command line option in place so that wpt runner can continue to pass that. Once it's removed from there we can also remove the -w option. Once this stage is complete, it should be fine to change the display list building code to generate webrender display lists directly and avoid the conversion step.
* Associate logical and physical keypresses together to support non-QWERTY ↵Josh Matthews2016-07-051-1/+1
| | | | keyboards.
* compositing: Only recomposite after a scroll if layers actually moved,Patrick Walton2016-06-301-0/+4
| | | | | | | | and fix the jerky scrolling "pops" during flings on Mac. See the comments in compositor.rs for more details. Requires servo/webrender#302 and servo/webrender_traits#64.
* Implement non-visible pipeline and iframe visibility methodsjmr02016-06-151-0/+3
|
* Remove a spurious field from the SetFrameTree message.Ms2ger2016-06-081-1/+1
|
* compositing: Remove CompositorThread structAndrew Shu2016-06-021-14/+1
|
* Removed CompositorEventListener traitKyle Headley2016-05-311-13/+4
|
* Remove the script listener thread (fixes #11345).Ms2ger2016-05-251-50/+2
| | | | | | | | | | | | | We needed a separate thread in the chrome process because communication to the compositor is done through a trait object, and cross-process virtual calls are forbidden. Also, the fact that these messages are ultimately handled by the compositor is an implementation detail; conceptually, the relevant constellation is supposed to handle these messages. So instead, the script thread will now send the messages to the constellation, which will ask the compositor to handle them.
* Auto merge of #11337 - Ms2ger:compositor-exit-wait, r=pcwaltonbors-servo2016-05-251-6/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't block the script listener thread on window.close(). 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 --faster` does not report any errors - [ ] These changes fix #__ (github issue number if applicable). Either: - [ ] There are tests for these changes OR - [x] These changes do not require tests because no tangible effect Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. This does not appear to have any effect. I believe this has been the case since e84106535175211526729e532058a7514a0de372, when the helper thread was introduced. It was added in a7ef1cd35e9347a285f245041db4eb94047f4ab0, where it blocked the script thread rather than this helper thread. <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/11337) <!-- Reviewable:end -->
| * Don't block the script listener thread on window.close().Ms2ger2016-05-231-6/+4
| | | | | | | | | | | | | | | | | | This does not appear to have any effect. I believe this has been the case since e84106535175211526729e532058a7514a0de372, when the helper thread was introduced. It was added in a7ef1cd35e9347a285f245041db4eb94047f4ab0, where it blocked the script thread rather than this helper thread.
* | Use CompositorMsg from script_traits.Ms2ger2016-05-241-2/+1
| |
* | Remove pub uses from compositor_thread.rs.Ms2ger2016-05-231-3/+2
|/
* Move constellation into its own crate.Ms2ger2016-05-181-1/+1
|
* Don't expect a native_window when using webrenderFabrice Desré2016-04-251-2/+2
|
* Implement ScrollTop and ScrollLeft getters:Zhen Zhang2016-04-191-0/+7
| | | | | | | | Add new compositor message to get scroll_offset; Add new layout query for computed value of overflow-x/y; Implement layer_id method for ThreadSafeLayoutNode; Add new layout query for layer_id; Implement script interface for getting scrollTop and scrollLeft, as well as relavant helper functions.
* No more headless compositor. Just the normal one.Michael Howell2016-03-241-17/+12
| | | | | | | | | This changes headless operation to strictly be a runtime option, rather than a compile-time one. Note that the old headless version still relied on a display server to support WebGL, while it now requires one all the time. Fixes #8573
* compositing: In borderless mode, don't show the window until the pagePatrick Walton2016-03-151-2/+2
| | | | | | | | | | has loaded. This avoids a flash of unstyled content, which looks especially bad in browser.html since unstyled content is white and browser.html has a transparent background. Closes #9996.
* compositing: Stop compositing unnecessarily after each animation frame.Patrick Walton2016-02-241-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead, schedule a delayed composite after each frame of an animation. The previous code would cause jank, because the following sequence frequently occurred: 1. The page uses `requestAnimationFrame()` to request a frame. 2. The compositor receives the message, schedules a composite, dispatches the rAF message to the script thread, composites, and goes to sleep waiting for vblank (frame 1). 3. The script makes a change and sends it through the pipeline. Eventually it gets painted and is sent to the compositor, but the compositor is sleeping. 4. The compositor wakes up, sees the new painted content, page flips, and goes to sleep (frame 2). Repeat from step 1. The problem is that we have two composition frames, not just one. This halves Web apps' framerate! This commit fixes the problem by scheduling the composite in step 2 to 12 ms in the future. We already have this delayed-composition functionality in the form of the scrolling timer, which I repurposed and renamed to the "delayed composition timer" for this task. This change gives the page 12 ms to prepare the frame, which seems to usually be enough, especially with WebRender. Note that simply removing the scheduled composite after rAF is not the correct solution. If this is done, then pages that call rAF and don't modify the page won't receive future rAFs, since the compositor will be sleeping and won't be notified of vblank. Fixes a bunch of jank in browser.html. The remaining jank seems to be a problem with browser.html itself.
* Add WebRender integration to Servo.Glenn Watson2016-02-181-0/+15
| | | | | | | | WebRender is an experimental GPU accelerated rendering backend for Servo. The WebRender backend can be specified by running Servo with the -w option (otherwise the default rendering backend will be used). WebRender has many bugs, and missing features - but it is usable to browse most websites - please report any WebRender specific rendering bugs you encounter!
* Move util::cursor to style_traitsAnthony Ramine2016-02-161-1/+1
|
* Move AnimationState to script_traitsJoshua Holmer2016-01-131-3/+2
| | | | Resolves #9223
* Move FrameTreeId type to gfx_traits #9221Maciej Skrzypkowski2016-01-131-2/+1
|
* Move Epoch to gfx_traitsJohn DeSilva2016-01-101-2/+2
| | | | | Resolves #9222. Moved Epoch from components/msg/compositor_msg to components/gfx_traits/lib. Updated use statements to reflect the move.
* task -> threadrohan.prinja2016-01-101-0/+306