profile
viewpoint
Patrick Walton pcwalton Mozilla Corporation San Francisco, CA http://pcwalton.github.io/

brendanzab/gl-rs 509

An OpenGL function pointer loader for Rust

graydon/bors 359

Integration robot for buildbot and github

linebender/skribo 269

A Rust library for low-level text layout.

brson/rust-sdl 170

SDL bindings for Rust

pcwalton/compute-shader 32

A simple, cross-platform interface to GPU compute functionality in Rust

pcwalton/doctorjs 20

A set of static analysis tools for JavaScript

pcwalton/fempeg 17

MP2 decoder written in Rust

pcwalton/doctorjsmm 14

DoctorJS--, simple type inference for JavaScript

pcwalton/deminifier 13

JavaScript deminifier addon for Firefox 4

issue commentrust-lang/rust

Do debug-info-preserving optimizations even in debug mode

I'm surprised that doing the optimizations doesn't harm debuggability.

pcwalton

comment created time in 9 days

issue openedrust-lang/rust

Do debug-info-preserving optimizations even in debug mode

Debug mode, which is key to the edit-debug-run cycle, generates a lot more LLVM IR than equivalent C/C++ code does. For example, things like calls to ptr::write actually turn into procedure calls at the machine level. We could consider actually performing a subset of MIR optimizations in debug mode, to produce simpler IR and therefore to reduce compile time and improve performance of debug mode code. Naturally, these optimizations need to be carefully written to preserve DWARF debug info, but DWARF has many features designed to enable this sort of thing.

created time in 9 days

push eventservo/pathfinder

Michael Tang

commit sha f8209946e332a3cbeea246d82c5a58b234f32909

Update documentation for building shaders

view details

Michael Tang

commit sha 157332c66795cd0c255e751eab5eeb3082f7955a

Add note about line endings

view details

Michael Tang

commit sha 493a2b92437e0fdddbe881e1c038aa6aba4941a2

Add note on when this document is relevant

view details

Michael Tang

commit sha 9d69e67a0e799b295ba26e1a764a8f82a5a77404

Wording

view details

Patrick Walton

commit sha f1f9df5ce5016a00bf7a3a7a1ae0034ad74cedef

Merge pull request #441 from tangmi/build-shader-docs Add docs for building shaders on Windows

view details

push time in 13 days

PR merged servo/pathfinder

Add docs for building shaders on Windows

This changelist expands the documentation around what it takes to regenerate/build the shaders.

Closes #346.

+42 -8

0 comment

3 changed files

tangmi

pr closed time in 13 days

issue closedservo/pathfinder

Shaders not easy to compile on windows

I'm trying to modify the shaders in pathfinder (for the webgpu backend) on a Windows machine and am running into issues running the Makefile (not pathfinder's fault, just the normal issues with running make on Windows, like missing unix tools, etc).

Would pathfinder consider letting this part of the pipeline be ported to Rust?

Some pros:

  • It could include the required compilers (through glslang_sys and spirv_cross or something like shaderc) through a crate, so contributors don't need to install a compatible version on their system
  • Could be configured as a build.rs script to automatically rebuild shaders if they change
  • Hopefully will be more cross-platform than a Makefile (and more approachable to Rust folks who may not have Makefile experience!)

Cons:

  • Would bloat the dependency size/build time for most contributors that do not need to modify shaders
  • This is potentially over-engineering a solution to a problem that I'm the only one experiencing. :smiley:
  • Edit: Also potentially less necessary when we have https://github.com/gfx-rs/naga

Thanks!

closed time in 13 days

tangmi

push eventservo/pathfinder

liaojian

commit sha 7a927245480138e43220321fff8bf7db6d3b6fe9

bugfix #436 which endless loop in clip::clip_line_segment_to_rect method

view details

Patrick Walton

commit sha badf37afccc0ddd72ffed69b402807b6c8d97a80

Merge pull request #438 from colorhook/master bugfix #436 which endless loop in clip::clip_line_segment_to_rect method

view details

push time in a month

PR merged servo/pathfinder

bugfix #436 which endless loop in clip::clip_line_segment_to_rect method

There was a spelling mistake in clip::clip_line_segment_to_rect

the if-else expression made repeated judgments for Outcode::LEFT

see: https://github.com/servo/pathfinder/issues/436

+2 -2

0 comment

1 changed file

colorhook

pr closed time in a month

push eventservo/pathfinder

Sebastian

commit sha 82cccf356b84621a0a1c40562db252e03ee2f3c4

add Copy, Clone… to FileFormat

view details

Patrick Walton

commit sha e858c8dc1d8ff02a5b603e21e09a64d6b3e11327

Merge pull request #437 from s3bk/patch-1 add Copy, Clone… to FileFormat

view details

push time in 2 months

PR merged servo/pathfinder

add Copy, Clone… to FileFormat
+1 -0

0 comment

1 changed file

s3bk

pr closed time in 2 months

pull request commentservo/servo

2020: Implement table map construction

This looks OK to me.

Manishearth

comment created time in 2 months

pull request commentservo/servo

[Draft] Lay out floats and handle clearance in layout 2020, but don't flow text around them yet.

I…did not expect that to pass!

pcwalton

comment created time in 2 months

pull request commentservo/servo

[Draft] Lay out floats and handle clearance in layout 2020, but don't flow text around them yet.

@bors-servo try=wpt-2020

pcwalton

comment created time in 2 months

push eventpcwalton/servo

Kunal Mohan

commit sha 01c8b24e9fdb3812f7c8e788a503071395387d6f

update wgpu

view details

Kunal Mohan

commit sha 072770dbc0f2c172f4172e12999595997ffbf199

Register invalid resources separately

view details

Josh Matthews

commit sha 7449f423066f8f562653a17efda64c7ff24fb548

Move action buttons above invalid certificate details.

view details

Kunal Mohan

commit sha 78c9466fdb98435dc4829b3c2e0a0a3a85b79b5f

fix ErrorScope model

view details

Kunal Mohan

commit sha 1d80f57aab0a11e6138b360391900666303244f3

Record errors in GPUCommandEncoder.BeginPass() and EncoderPass.endPass()

view details

Kunal Mohan

commit sha ecb8c914466adad7ee736422c0d9634b51ea07fe

update test expectations

view details

Josh Matthews

commit sha 8ecc1a80a73427efd2752da4e3b65c31f823b050

Skip missing glyphs when drawing 2d canvas text.

view details

Josh Matthews

commit sha 1e743a7ed6a249624b5e87609747021a8844adee

When instantiating a CTFont, store the bytes that were used to create it.

view details

bors-servo

commit sha 53467b80b9e79b27beeb305d77ebca5b18515d2f

Auto merge of #27536 - kunalmohan:update-wgpu, r=kvark Major fixes in error reporting in GPUCommandEncoder and ErrorScope Model <!-- Please describe your changes on the following line: --> 1. Update wgpu to use the error model on wgpu-core side. Register error Ids separately. 2. ~~Record errors only in `GPUCommandEncoder.finish()`. Errors are no longer recorded in ErrorScopes in transfer commands or while recording passes. Any errors that occur are stored on the server-side in `error_command_encoders: HashMap<id::CommandEncoderId, String>` and reported on `CommandEncoderFinish`. Note: This should be reverted when the spec gets updated.~~ 3. Correct a major flaw in ErrorScope Model. If multiple operations are issued inside scope and an early operation fails, the promise resolves and script execution continues. The scope, however, was not popped until the results of all its operations were received. This meant that if the user issues another operation, it was assumed to be issued in an error scope that has already been popped by the user, which led to the failure of a number of tests. This is solved by storing a `popped` boolean to check whether `popErrorScope()` has been called on a scope or not. Operation is now issued in the lastest scope for which `popped == false`. One of the tests used to crash, but it no longer does (All subtests under it fail now). That explains the large number of failing test expectations that have been added. Most of them fail due to the tests being outdated. I'll switch to the updated branch in the next PR. r?@kvark --- <!-- 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 <!-- Either: --> - [X] There are tests for these 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. -->

view details

Kunal Mohan

commit sha 5f59716d41dff9b2d3d3ec564a169ea404d2db44

update cts to main branch

view details

bors-servo

commit sha 589ab01be4398007cfacc27adfa3c3ad72bedd7e

Auto merge of #27534 - jdm:badcert-buttons, r=asajeffrey Move action buttons above invalid certificate details. Since the certificate details can fill the screen and require scrolling, let's move the user's choices so they're always in view when the SSL error page first loads. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #27520

view details

Kunal Mohan

commit sha 2034453fac844f4943febbbb6bc63d5ed21e4c1a

update test expectations

view details

WPT Sync Bot

commit sha a3410e195f065d8838986b5361aacc04795f37b7

Update web-platform-tests to revision 3cc9e82a7c1a53423097f3d581d4bfc185f56d18

view details

bors-servo

commit sha 7499b0736e0ff8f413aa8f5a8c789342b8d207bc

Auto merge of #27550 - servo-wpt-sync:wpt_update_08-08-2020, r=servo-wpt-sync Sync WPT with upstream (08-08-2020) Automated downstream sync of changes from upstream as of 08-08-2020. [no-wpt-sync] r? @servo-wpt-sync

view details

Kunal Mohan

commit sha 33a4bca74d1075b4bbb1a161b757427e34f94ad2

Disable tests crashing on metal

view details

Kunal Mohan

commit sha 8ff00f0e9c5c7eb232401407c4e5d455423a68d8

Remove entries from error_command_buffers on drop

view details

Kunal Mohan

commit sha 268c45fea7f97e488fbd2cec72d3c8edf8c55c11

update test expectations

view details

WPT Sync Bot

commit sha 071cb971773be5429aa98e0804ace1b69dea5b7c

Update web-platform-tests to revision edfb5824a2e35b1f428daa35277c14629392c8d4

view details

Josh Matthews

commit sha 8440bdda2ec19a7990fdbb05418ebf3a494d1f2f

Remove intermittent timeout.

view details

bors-servo

commit sha 9ac6c542e6ed24837ab58fbad25c3c53efefb7d8

Auto merge of #27551 - servo-wpt-sync:wpt_update_09-08-2020, r=jdm Sync WPT with upstream (09-08-2020) Automated downstream sync of changes from upstream as of 09-08-2020. [no-wpt-sync] r? @servo-wpt-sync

view details

push time in 2 months

pull request commentservo/servo

Canvas text and macOS font fixes

@bors-servo: r+

jdm

comment created time in 2 months

Pull request review commentservo/servo

Canvas text and macOS font fixes

 impl GenericDrawTarget for raqote::DrawTarget {         pattern: &canvas_data::Pattern,         options: &DrawOptions,     ) {-        self.draw_text(+        let mut start = pathfinder_geometry::vector::vec2f(start.x, start.y);+        let mut ids = Vec::new();+        let mut positions = Vec::new();+        for c in text.chars() {+            let id = match font.glyph_for_char(c) {+                Some(id) => id,+                None => {+                    warn!("Skipping non-existent glyph {}", c);+                    continue;+                },+            };+            ids.push(id);+            positions.push(Point2D::new(start.x(), start.y()));+            let advance = match font.advance(id) {+                Ok(advance) => advance,+                Err(e) => {+                    warn!("Skipping glyph {} with missing advance: {:?}", c, e);+                    continue;+                },+            };+            start += advance * point_size / 24. / 96.;

Where do these values come from? Are you sure this isn't the units_per_em for some font?

jdm

comment created time in 2 months

push eventpcwalton/servo

Patrick Walton

commit sha 88f63056769d295d5e13941f5854ebb987251772

Place floats in layout 2020, but don't flow text around the floats yet. This commit puts floats behind the `layout.floats.enabled` pref, because of the following issues and unimplemented features: * Inline formatting contexts don't take floats into account, so text doesn't flow around the floats yet. * Non-floated block formatting contexts don't take floats into account, so BFCs can overlap floats. * Block formatting contexts that contain floats don't expand vertically to contain all the floats. That is, floats can stick out the bottom of BFCs, contra spec.

view details

push time in 2 months

push eventpcwalton/servo

Patrick Walton

commit sha 823f15212b5797f4301a0d51c0b83b04aab22ae2

Place floats in layout 2020, but don't flow text around the floats yet. This commit puts floats behind the `layout.floats.enabled` pref, because of the following issues and unimplemented features: * Inline formatting contexts don't take floats into account, so text doesn't flow around the floats yet. * Non-floated block formatting contexts don't take floats into account, so BFCs can overlap floats. * Block formatting contexts that contain floats don't expand vertically to contain all the floats. That is, floats can stick out the bottom of BFCs, contra spec. * Floats are painted in the same order as regular content, contra spec.

view details

push time in 2 months

push eventpcwalton/servo

Kunal Mohan

commit sha 10ba6a69286fae5467e265f584e15cab5375ee54

add webgpu cts and update manifest

view details

Kunal Mohan

commit sha 32a4104f4a06a429c86c67f512c92769dd157b05

changes made for cts to work

view details

Kunal Mohan

commit sha fa4d3cb3d250d35b6fef782b7b3a5a7f6b233254

update expectations

view details

dependabot-preview[bot]

commit sha 0416b2b160797651b26dd5f560b597c652733bd8

build(deps): bump error-chain from 0.12.0 to 0.12.3 Bumps [error-chain](https://github.com/rust-lang-nursery/error-chain) from 0.12.0 to 0.12.3. - [Release notes](https://github.com/rust-lang-nursery/error-chain/releases) - [Changelog](https://github.com/rust-lang-nursery/error-chain/blob/master/CHANGELOG.md) - [Commits](https://github.com/rust-lang-nursery/error-chain/commits) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

view details

WPT Sync Bot

commit sha b7430030f26c8dda0a3784248b7db7d19c031602

Update web-platform-tests to revision bd98c68802522edfae543a2a83dcd289c0972811

view details

Paul Rouget

commit sha ef8eabd930278a939b4187742c13f317d1726549

Do not instanciate random ServoControls

view details

Josh Matthews

commit sha c7091f7b81b6c2d41de4de0d78a30da345c4938c

Update image crate.

view details

Josh Matthews

commit sha a6ca582a556d19a82b1e9f71015b7e62277d32fa

Update raqote, font-kit, fontconfig.

view details

Josh Matthews

commit sha 327fed6084a99cfeede4752dc7b71416b5d83032

Update harfbuzz, freetype, unicode-script.

view details

Josh Matthews

commit sha 5c0d7998bd28ceb383f553cd7af5a60f472a47ba

Update font-kit and freetype and unicode-script.

view details

Josh Matthews

commit sha 64df2c2d608e2c885e8e75ca43078a97de6dfd10

Fix tidy check when no duplicate versions present.

view details

Josh Matthews

commit sha 2ca1b06e77f28cebeb886f50a6c21c438d4b2f46

Update webrender.

view details

Kunal Mohan

commit sha 4622c876fa6866dac88a311621f4e6bee182d833

Run webgpu tests only on macOS

view details

Alan Jeffrey

commit sha ea0fec6aab1749eb2dc68aadb89e640f9964d178

Added a recipe for streaming to twitch

view details

bors-servo

commit sha 30f4c516356b05c402966118246c22538bf4caa9

Auto merge of #27461 - servo:dependabot/cargo/error-chain-0.12.3, r=jdm build(deps): bump error-chain from 0.12.0 to 0.12.3 Bumps [error-chain](https://github.com/rust-lang-nursery/error-chain) from 0.12.0 to 0.12.3. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/rust-lang-nursery/error-chain/blob/master/CHANGELOG.md">error-chain's changelog</a>.</em></p> <blockquote> <h1>0.12.2</h1> <ul> <li><a href="https://github-redirect.dependabot.com/rust-lang-nursery/error-chain/pull/285">allow <code>Error::description</code> to be used for rust below 1.42</a></li> <li><a href="https://github-redirect.dependabot.com/rust-lang-nursery/error-chain/pull/277">Improvements to has_backtrace_depending_on_env</a></li> <li>Backtrace support now requires rust 1.32.0</li> </ul> <h1>0.12.1</h1> <ul> <li><a href="https://github-redirect.dependabot.com/rust-lang-nursery/error-chain/pull/255"><code>std::error::Error::cause</code> deprecation update</a></li> <li><a href="https://github-redirect.dependabot.com/rust-lang-nursery/error-chain/pull/253">Macro invocations use 2018 style</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/rust-lang-nursery/error-chain/commits">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=error-chain&package-manager=cargo&previous-version=0.12.0&new-version=0.12.3)](https://dependabot.com/compatibility-score/?dependency-name=error-chain&package-manager=cargo&previous-version=0.12.0&new-version=0.12.3) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) </details>

view details

bors-servo

commit sha 764e2269cd0b9bcdfed6d319022d933423552d58

Auto merge of #27207 - jdm:imageup, r=Manishearth Update various dependencies This brings us more up to date for dependencies that rely on font-related crates.

view details

bors-servo

commit sha 346bf9c031b47f6e54202d974550cf6a13ad2fed

Auto merge of #27466 - paulrouget:erg, r=jdm Do not instanciate random ServoControls That's embarrassing. We would create a new instance of Servo every time we would call `ServoControl()` (instead of `servoControl()`)… so very often.

view details

bors-servo

commit sha 6aeadcec77a66ef7416e50483a59f6ee711bbae5

Auto merge of #27464 - servo-wpt-sync:wpt_update_31-07-2020, r=servo-wpt-sync Sync WPT with upstream (31-07-2020) Automated downstream sync of changes from upstream as of 31-07-2020. [no-wpt-sync] r? @servo-wpt-sync

view details

bors-servo

commit sha 6499367fe244917a15d47292b3aaf84222ee5748

Auto merge of #27470 - asajeffrey:gst-plugin-readme-twitch, r=jdm Added a recipe for streaming to twitch <!-- Please describe your changes on the following line: --> All the cool kids are doing it. --- <!-- 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 do not require tests because we don't test docs <!-- 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. -->

view details

WPT Sync Bot

commit sha 60e5c9a2777f07cb3dc1f110bd1f79a583a59458

Update web-platform-tests to revision 43899f53083e4e6285d7a55d66745d8f6518950d

view details

push time in 2 months

push eventpcwalton/servo

Patrick Walton

commit sha 2e859fa806061cd6be2d15c1728e77896be0ee0d

Place floats in layout 2020, but don't flow text around the floats yet. This commit puts floats behind the `layout.floats.enabled` pref, because of the following issues and unimplemented features: * Inline formatting contexts don't take floats into account, so text doesn't flow around the floats yet. * Non-floated block formatting contexts don't take floats into account, so BFCs can overlap floats. * The `clear` property is only respected on floats, not on other elements; i.e. regular boxes can't clear past floats yet. * Block formatting contexts that contain floats don't expand vertically to contain all the floats. That is, floats can stick out the bottom of BFCs, contra spec. * Floats don't respect negative margins yet. * Floats are painted in the same order as regular content, contra spec.

view details

push time in 2 months

pull request commentservo/servo

[Draft] Lay out floats and handle clearance in layout 2020, but don't flow text around them yet.

@bors-servo try=wpt-2020

pcwalton

comment created time in 2 months

push eventpcwalton/servo

Patrick Walton

commit sha d6d0b88005c3e2a927901821571e4ad064e94e0c

fix warnings

view details

push time in 2 months

pull request commentservo/servo

[Draft] Lay out floats and handle clearance in layout 2020, but don't flow text around them yet.

(sorry about forgetting to rustfmt)

pcwalton

comment created time in 2 months

pull request commentservo/servo

[Draft] Lay out floats and handle clearance in layout 2020, but don't flow text around them yet.

@bors-servo try=wpt-2020

pcwalton

comment created time in 2 months

push eventpcwalton/servo

Patrick Walton

commit sha db43d700da8c0dbb88a4a194880e75b1f98517dc

rustfmt

view details

push time in 2 months

pull request commentservo/servo

[Draft] Lay out floats and handle clearance in layout 2020, but don't flow text around them yet.

@bors-servo try=wpt-2020

pcwalton

comment created time in 2 months

PR opened servo/servo

[Draft] Lay out floats and handle clearance in layout 2020, but don't flow text around them yet.

<!-- 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: -->

  • [ ] ./mach build -d does not report any errors
  • [ ] ./mach test-tidy does not report any errors
  • [ ] These changes fix #___ (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. -->

+886 -402

0 comment

166 changed files

pr created time in 2 months

PR closed servo/servo

Place floats in layout 2020, but don't flow text around the floats yet. S-awaiting-review S-needs-rebase

This commit puts floats behind the layout.floats.enabled pref, because of the following issues and unimplemented features:

  • Inline formatting contexts don't take floats into account, so text doesn't flow around the floats yet.

  • Non-floated block formatting contexts don't take floats into account, so BFCs can overlap floats.

  • The clear property is only respected on floats, not on other elements; i.e. regular boxes can't clear past floats yet.

  • Block formatting contexts that contain floats don't expand vertically to contain all the floats. That is, floats can stick out the bottom of BFCs, contra spec.

  • Floats don't respect negative margins yet.

  • Floats are painted in the same order as regular content, contra spec.

r? @Manishearth

<!-- 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: -->

  • [ ] ./mach build -d does not report any errors
  • [ ] ./mach test-tidy does not report any errors
  • [ ] These changes fix #___ (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. -->

+553 -248

18 comments

165 changed files

pcwalton

pr closed time in 2 months

push eventpcwalton/servo

Patrick Walton

commit sha 68eb8450d9f152d280cd5378e91df2aa8a05c6a1

wip

view details

push time in 2 months

push eventpcwalton/servo

Patrick Walton

commit sha abf7766715b6303b63cd320e325c80a2a39b2cfc

wip

view details

Patrick Walton

commit sha bfb9c66af6ad2c8a9d5ed0db8d243231bbfc4600

wip

view details

Patrick Walton

commit sha a6b9eb392f669f2a7eae3107145c54231ddd1414

wip

view details

Patrick Walton

commit sha e28a781703c3e9b90c22c748e76ec550e0da1cd7

wip before redoing clear

view details

Patrick Walton

commit sha 7a6f12daebbd089f1ee88065c7a9e90d643bf3bd

wip

view details

Patrick Walton

commit sha f607ed7a713513eeafb116018bac3510f6b14344

wip

view details

Patrick Walton

commit sha 2ec46efa837c9fbcf6dbf9a5746048dc3b1ad117

wip

view details

Patrick Walton

commit sha a332d797ecfdbaa7810d67713765dd5a34bd16e2

wip

view details

push time in 2 months

create barnchpcwalton/servo

branch : sequential-context-2020

created branch time in 2 months

Pull request review commentservo/servo

2020: Implement table map construction

 impl<'a, 'builder, 'dom, Node> TableRowBuilder<'a, 'builder, Node> where     Node: NodeExt<'dom>, {+    /// When not in the process of filling a cell, make sure any incoming rowspans are+    /// filled so that the next specified cell comes after them. Should have been called before+    /// handle_cell     fn consume_rowspans(&mut self) {         loop {-            if let Some(span) = self.builder.incoming_rowspans.get_mut(self.current_x) {+            let current_x = self.current_x();+            if let Some(span) = self.builder.incoming_rowspans.get_mut(current_x) {                 if *span != 0 {                     *span -= 1;                     let previous = self                         .builder                         .slots-                        .get_above(self.current_x)+                        .get_above(current_x)                         .expect("Cannot have nonzero incoming rowspan with no slot above");                     let new_slot = self.builder-                        .slots.spanned_slot(self.current_x, self.builder.current_y(), previous)-                        .expect("Nonzero incoming rowspan cannot occur without a cell spannign this slot");-                    self.builder.slots.insert(new_slot);-                    self.current_x += 1;+                        .slots.spanned_slot(current_x, self.builder.current_y(), previous)+                        .expect("Nonzero incoming rowspan cannot occur without a cell spanning this slot");+                    self.builder.slots.push(new_slot);                 } else {+                    // We have at least one free slot here, exit so that cells can be filled in                     break;                 }             } else {+                // No more incoming rowspans, exit                 break;             }         }     }      /// https://html.spec.whatwg.org/multipage/tables.html#algorithm-for-processing-rows+    /// Push a single cell onto the cell slot map, handling any colspans it may have, and+    /// setting up the outgoing rowspans     fn handle_cell(&mut self, info: &NodeAndStyleInfo<Node>) {+        let current_x = self.current_x();         let node = info.node.to_threadsafe();         // This value will already have filtered out rowspan=0         // in quirks mode, so we don't have to worry about that-        let rowspan = cmp::min(node.get_rowspan(), 1000);-        let colspan = cmp::min(node.get_colspan(), 1000);+        let rowspan = cmp::min(node.get_rowspan() as usize, 1000);+        let colspan = cmp::min(node.get_colspan() as usize, 1000);++        let me = TableSlot::Cell {+            cell: TableCellBox {},+            width: colspan,+            height: rowspan,+        };++        if self.builder.incoming_rowspans.len() < current_x + colspan {+            // make sure the incoming_rowspans table is large enough+            // because we will be+            self.builder+                .incoming_rowspans+                .resize(current_x + colspan, 0isize);+        }++        debug_assert!(+            self.builder.incoming_rowspans[current_x] == 0,+            "consume_rowspans must have been called before this!"+        );++        // if rowspan is zero, this is automatically negative and will stay negative+        let outgoing_rowspan = rowspan as isize - 1;+        self.builder.slots.push(me);+        self.builder.incoming_rowspans[current_x] = outgoing_rowspan;+        if colspan > 1 {

I don't think this if is necessary

Manishearth

comment created time in 2 months

Pull request review commentservo/servo

2020: Implement table map construction

 where          if self.builder.incoming_rowspans.len() < current_x + colspan {             // make sure the incoming_rowspans table is large enough-            // because we will be+            // because we will be writing to it

Oh, never mind, I saw you fixed up the comment here :)

Manishearth

comment created time in 2 months

Pull request review commentservo/servo

2020: Implement table map construction

 impl<'a, 'builder, 'dom, Node> TableRowBuilder<'a, 'builder, Node> where     Node: NodeExt<'dom>, {+    /// When not in the process of filling a cell, make sure any incoming rowspans are+    /// filled so that the next specified cell comes after them. Should have been called before+    /// handle_cell     fn consume_rowspans(&mut self) {         loop {-            if let Some(span) = self.builder.incoming_rowspans.get_mut(self.current_x) {+            let current_x = self.current_x();+            if let Some(span) = self.builder.incoming_rowspans.get_mut(current_x) {                 if *span != 0 {                     *span -= 1;                     let previous = self                         .builder                         .slots-                        .get_above(self.current_x)+                        .get_above(current_x)                         .expect("Cannot have nonzero incoming rowspan with no slot above");                     let new_slot = self.builder-                        .slots.spanned_slot(self.current_x, self.builder.current_y(), previous)-                        .expect("Nonzero incoming rowspan cannot occur without a cell spannign this slot");-                    self.builder.slots.insert(new_slot);-                    self.current_x += 1;+                        .slots.spanned_slot(current_x, self.builder.current_y(), previous)+                        .expect("Nonzero incoming rowspan cannot occur without a cell spanning this slot");+                    self.builder.slots.push(new_slot);                 } else {+                    // We have at least one free slot here, exit so that cells can be filled in                     break;                 }             } else {+                // No more incoming rowspans, exit                 break;             }         }     }      /// https://html.spec.whatwg.org/multipage/tables.html#algorithm-for-processing-rows+    /// Push a single cell onto the cell slot map, handling any colspans it may have, and+    /// setting up the outgoing rowspans     fn handle_cell(&mut self, info: &NodeAndStyleInfo<Node>) {+        let current_x = self.current_x();         let node = info.node.to_threadsafe();         // This value will already have filtered out rowspan=0         // in quirks mode, so we don't have to worry about that-        let rowspan = cmp::min(node.get_rowspan(), 1000);-        let colspan = cmp::min(node.get_colspan(), 1000);+        let rowspan = cmp::min(node.get_rowspan() as usize, 1000);+        let colspan = cmp::min(node.get_colspan() as usize, 1000);++        let me = TableSlot::Cell {+            cell: TableCellBox {},+            width: colspan,+            height: rowspan,+        };++        if self.builder.incoming_rowspans.len() < current_x + colspan {+            // make sure the incoming_rowspans table is large enough+            // because we will be

because we will be what?

Manishearth

comment created time in 2 months

Pull request review commentservo/servo

2020: Implement table map construction

 impl<'a, 'builder, 'dom, Node> TableRowBuilder<'a, 'builder, Node> where     Node: NodeExt<'dom>, {+    /// When not in the process of filling a cell, make sure any incoming rowspans are+    /// filled so that the next specified cell comes after them. Should have been called before+    /// handle_cell     fn consume_rowspans(&mut self) {         loop {-            if let Some(span) = self.builder.incoming_rowspans.get_mut(self.current_x) {+            let current_x = self.current_x();+            if let Some(span) = self.builder.incoming_rowspans.get_mut(current_x) {                 if *span != 0 {                     *span -= 1;                     let previous = self                         .builder                         .slots-                        .get_above(self.current_x)+                        .get_above(current_x)                         .expect("Cannot have nonzero incoming rowspan with no slot above");                     let new_slot = self.builder-                        .slots.spanned_slot(self.current_x, self.builder.current_y(), previous)-                        .expect("Nonzero incoming rowspan cannot occur without a cell spannign this slot");-                    self.builder.slots.insert(new_slot);-                    self.current_x += 1;+                        .slots.spanned_slot(current_x, self.builder.current_y(), previous)+                        .expect("Nonzero incoming rowspan cannot occur without a cell spanning this slot");+                    self.builder.slots.push(new_slot);                 } else {+                    // We have at least one free slot here, exit so that cells can be filled in                     break;                 }             } else {+                // No more incoming rowspans, exit                 break;             }         }     }      /// https://html.spec.whatwg.org/multipage/tables.html#algorithm-for-processing-rows+    /// Push a single cell onto the cell slot map, handling any colspans it may have, and+    /// setting up the outgoing rowspans     fn handle_cell(&mut self, info: &NodeAndStyleInfo<Node>) {+        let current_x = self.current_x();         let node = info.node.to_threadsafe();         // This value will already have filtered out rowspan=0         // in quirks mode, so we don't have to worry about that-        let rowspan = cmp::min(node.get_rowspan(), 1000);-        let colspan = cmp::min(node.get_colspan(), 1000);+        let rowspan = cmp::min(node.get_rowspan() as usize, 1000);+        let colspan = cmp::min(node.get_colspan() as usize, 1000);++        let me = TableSlot::Cell {+            cell: TableCellBox {},+            width: colspan,+            height: rowspan,+        };++        if self.builder.incoming_rowspans.len() < current_x + colspan {+            // make sure the incoming_rowspans table is large enough+            // because we will be+            self.builder+                .incoming_rowspans+                .resize(current_x + colspan, 0isize);+        }++        debug_assert!(

uber-nit: could be debug_assert_eq!

Manishearth

comment created time in 2 months

Pull request review commentservo/servo

2020: Implement table map construction

 where         // do something?     } }++impl<'a, 'builder, 'dom, Node> TableRowBuilder<'a, 'builder, Node>+where+    Node: NodeExt<'dom>,+{+    fn consume_rowspans(&mut self) {+        loop {+            if let Some(span) = self.builder.incoming_rowspans.get_mut(self.current_x) {+                if *span != 0 {+                    *span -= 1;+                    let previous = self+                        .builder+                        .slots+                        .get_above(self.current_x)+                        .expect("Cannot have nonzero incoming rowspan with no slot above");+                    let new_slot = self.builder+                        .slots.spanned_slot(self.current_x, self.builder.current_y(), previous)+                        .expect("Nonzero incoming rowspan cannot occur without a cell spannign this slot");

typo: "spanning"

Manishearth

comment created time in 2 months

Pull request review commentservo/servo

2020: Implement table map construction

 use crate::dom_traversal::{     BoxSlot, Contents, NodeAndStyleInfo, NodeExt, NonReplacedContents, TraversalHandler, }; use crate::style_ext::{DisplayGeneratingBox, DisplayInternal};+use script_layout_interface::wrapper_traits::ThreadSafeLayoutNode; use std::borrow::Cow;+use std::cmp; use std::convert::TryFrom; use style::values::specified::text::TextDecorationLine;  #[derive(Debug, Serialize, Default)]+/// A map of table slots to cells pub(crate) struct TableSlots {     rows: Vec<TableSlotsRow>, } -#[derive(Debug, Serialize)]+impl TableSlots {+    /// Get the slot at (x, y)+    pub fn get(&self, x: usize, y: usize) -> Option<&TableSlot> {+        self.rows.get(y)?.cells.get(x)+    }++    fn insert(&mut self, slot: TableSlot) {+        let y = self.rows.len() - 1;+        self.rows[y].cells.push(slot)+    }++    /// Convenience method for get() that returns a SlotAndLocation+    fn get_loc(&self, x: usize, y: usize) -> Option<SlotAndLocation> {+        self.rows+            .get(y)?+            .cells+            .get(x)+            .map(|slot| SlotAndLocation { slot, x, y })+    }++    /// Get the slot from the previous row at x+    fn get_above(&self, x: usize) -> Option<SlotAndLocation> {+        if self.rows.len() > 1 {+            self.get_loc(x, self.rows.len() - 2)+        } else {+            None+        }+    }++    /// Given a slot and location, find the originating TableSlot::Cell.+    /// In the case of a table model error, there may be multiple, returning+    /// the oldest cell first+    fn resolve_slot<'a>(+        &'a self,+        location: SlotAndLocation<'a>,+    ) -> (SlotAndLocation<'a>, Vec<SlotAndLocation<'a>>) {+        match *location.slot {+            TableSlot::Cell { .. } => (location, Vec::new()),+            TableSlot::Spanned(x, y) => (+                self.get_loc(location.x - x, location.y - y)+                    .expect("Spanned slot reference must resolve"),+                Vec::new(),+            ),+            TableSlot::MultiSpanned(ref vec) => {+                let mut v: Vec<_> = vec+                    .iter()+                    .map(|(x, y)| {+                        self.get_loc(location.x - x, location.y - y)+                            .expect("Spanned slot reference must resolve")+                    })+                    .collect();+                (v.pop().unwrap(), v)+            },+        }+    }++    /// If (x, y) is spanned by an already resolved `spanner`, return offsets for a TableSlot::Spanned() for it+    fn spanned_slot_single(+        &self,+        x: usize,+        y: usize,+        spanner: SlotAndLocation,+    ) -> Option<(usize, usize)> {+        if let TableSlot::Cell { width, height, .. } = spanner.slot {+            if x >= spanner.x && y >= spanner.y && x < spanner.x + *width {+                if *height == 0 || y < spanner.y + *height {

Why two nested ifs here?

Manishearth

comment created time in 2 months

Pull request review commentservo/servo

2020: Implement table map construction

 where         // do something?     } }++impl<'a, 'builder, 'dom, Node> TableRowBuilder<'a, 'builder, Node>+where+    Node: NodeExt<'dom>,+{+    fn consume_rowspans(&mut self) {+        loop {+            if let Some(span) = self.builder.incoming_rowspans.get_mut(self.current_x) {+                if *span != 0 {

nit: could be if *span == 0 { break; } and then avoid some rightward drift (and would also be a bit clearer IMO)

Manishearth

comment created time in 2 months

Pull request review commentservo/servo

2020: Implement table map construction

 where         // do something?     } }++impl<'a, 'builder, 'dom, Node> TableRowBuilder<'a, 'builder, Node>+where+    Node: NodeExt<'dom>,+{+    fn consume_rowspans(&mut self) {+        loop {

nit: could this be while let Some(...) = ...?

Manishearth

comment created time in 2 months

Pull request review commentservo/servo

2020: Implement table map construction

 impl<'a, 'builder, 'dom, Node> TableRowBuilder<'a, 'builder, Node> where     Node: NodeExt<'dom>, {+    /// When not in the process of filling a cell, make sure any incoming rowspans are+    /// filled so that the next specified cell comes after them. Should have been called before+    /// handle_cell     fn consume_rowspans(&mut self) {         loop {-            if let Some(span) = self.builder.incoming_rowspans.get_mut(self.current_x) {+            let current_x = self.current_x();+            if let Some(span) = self.builder.incoming_rowspans.get_mut(current_x) {                 if *span != 0 {                     *span -= 1;                     let previous = self                         .builder                         .slots-                        .get_above(self.current_x)+                        .get_above(current_x)                         .expect("Cannot have nonzero incoming rowspan with no slot above");                     let new_slot = self.builder-                        .slots.spanned_slot(self.current_x, self.builder.current_y(), previous)-                        .expect("Nonzero incoming rowspan cannot occur without a cell spannign this slot");-                    self.builder.slots.insert(new_slot);-                    self.current_x += 1;+                        .slots.spanned_slot(current_x, self.builder.current_y(), previous)+                        .expect("Nonzero incoming rowspan cannot occur without a cell spanning this slot");+                    self.builder.slots.push(new_slot);                 } else {+                    // We have at least one free slot here, exit so that cells can be filled in                     break;                 }             } else {+                // No more incoming rowspans, exit                 break;             }         }     }      /// https://html.spec.whatwg.org/multipage/tables.html#algorithm-for-processing-rows+    /// Push a single cell onto the cell slot map, handling any colspans it may have, and+    /// setting up the outgoing rowspans     fn handle_cell(&mut self, info: &NodeAndStyleInfo<Node>) {+        let current_x = self.current_x();         let node = info.node.to_threadsafe();         // This value will already have filtered out rowspan=0         // in quirks mode, so we don't have to worry about that-        let rowspan = cmp::min(node.get_rowspan(), 1000);-        let colspan = cmp::min(node.get_colspan(), 1000);+        let rowspan = cmp::min(node.get_rowspan() as usize, 1000);+        let colspan = cmp::min(node.get_colspan() as usize, 1000);++        let me = TableSlot::Cell {+            cell: TableCellBox {},+            width: colspan,+            height: rowspan,+        };++        if self.builder.incoming_rowspans.len() < current_x + colspan {+            // make sure the incoming_rowspans table is large enough+            // because we will be+            self.builder+                .incoming_rowspans+                .resize(current_x + colspan, 0isize);+        }++        debug_assert!(+            self.builder.incoming_rowspans[current_x] == 0,+            "consume_rowspans must have been called before this!"+        );++        // if rowspan is zero, this is automatically negative and will stay negative+        let outgoing_rowspan = rowspan as isize - 1;+        self.builder.slots.push(me);+        self.builder.incoming_rowspans[current_x] = outgoing_rowspan;+        if colspan > 1 {+            // Keep track of if there's a model error, if so we need to perform fixups+            for offset in 1..colspan {+                let offset_x = current_x + offset;+                let new_slot = TableSlot::Spanned(offset, 0);+                let incoming_rowspan = &mut self.builder.incoming_rowspans[offset_x];+                if *incoming_rowspan == 0 {+                    *incoming_rowspan = outgoing_rowspan;+                    self.builder.slots.push(new_slot);++                    // No model error, skip the remaining stuff+                    continue;+                } else if *incoming_rowspan > 0 {+                    // Set the incoming rowspan to the highest of two possible outgoing rowspan values+                    // (the incoming rowspan minus one, OR this cell's outgoing rowspan)+                    // spanned_slot() will handle filtering out inapplicable spans when it needs to+                    *incoming_rowspan = cmp::max(*incoming_rowspan - 1, outgoing_rowspan);+                } else {+                    // Don't change the rowspan, if it's negative we are in `rowspan=0` mode,+                    // i.e. rowspan=infinity, so we don't have to worry about the current cell making+                    // it larger++                    // do nothing+                }++                // Code for handling model errors+                let previous = self+                    .builder+                    .slots+                    .get_above(offset_x)+                    .expect("Cannot have nonzero incoming rowspan with no slot above");+                let incoming_slot =+                    self.builder+                        .slots+                        .spanned_slot(offset_x, self.builder.current_y(), previous);+                let new_slot = incoming_slot+                    .map(|mut s| {+                        s.push_spanned(offset, 0);+                        s+                    })+                    .unwrap_or(new_slot);+                self.builder.slots.push(new_slot)+            }+        }++        debug_assert!(+            current_x + colspan == self.current_x(),+            "Must have produced `colspan` slot entries!"+        );

uber-nit: could be debug_assert_eq!

Manishearth

comment created time in 2 months

create barnchpcwalton/servo

branch : floats-placement-2020

created branch time in 3 months

pull request commentservo/servo

Place floats in layout 2020, but don't flow text around the floats yet.

@bors-servo try=wpt-2020

pcwalton

comment created time in 3 months

push eventpcwalton/servo

Patrick Walton

commit sha ca10b917cd6caa86442127493e8b106c3427a88b

Place floats in layout 2020, but don't flow text around the floats yet. This commit puts floats behind the `layout.floats.enabled` pref, because of the following issues and unimplemented features: * Inline formatting contexts don't take floats into account, so text doesn't flow around the floats yet. * Non-floated block formatting contexts don't take floats into account, so BFCs can overlap floats. * The `clear` property is only respected on floats, not on other elements; i.e. regular boxes can't clear past floats yet. * Block formatting contexts that contain floats don't expand vertically to contain all the floats. That is, floats can stick out the bottom of BFCs, contra spec. * Floats don't respect negative margins yet. * Floats are painted in the same order as regular content, contra spec.

view details

push time in 3 months

issue commentservo/servo

Implement table layout in 2020

Looks good.

Manishearth

comment created time in 3 months

pull request commentservo/servo

Place floats in layout 2020, but don't flow text around the floats yet.

@bors-servo try=wpt-2020

pcwalton

comment created time in 3 months

push eventpcwalton/servo

Alan Jeffrey

commit sha dfc641d64841bab44cdca2cba0009901416f78f6

Don't delete GL textures created by WebXR

view details

Alan Jeffrey

commit sha ad4eb52a85f8ec0e8d4dbccf9353a845e8d27cfd

Update gstreamer plugin README: we support webgl content

view details

Alan Jeffrey

commit sha 5c121bc8d42ccc3c39f2574f88354117f374e551

Update gstreamer plugin README: use the -e flag

view details

Alan Jeffrey

commit sha 308aa1606bec73042dd021fa08ca12db55d65fcc

Update gstreamer plugin README: use the glvideoflip plugin

view details

Alan Jeffrey

commit sha 4d4a9c22ef6ba7cc3a02c0d1570fa3fae8f82b59

Update gstreamer plugin README: directions for streaming to youtube live

view details

bors-servo

commit sha 5831ab8221916d4843b18ba3d2fdf0ec5cec2630

Auto merge of #27448 - asajeffrey:script-webgl-texture-ownership, r=jdm Don't delete GL textures created by WebXR <!-- Please describe your changes on the following line: --> Currently WebGL assumes it owns any WebGLTexture, and deletes the backing GL texture when the object is GC'd. This isn't valid for textures created by a webxr layer manager, which can result in textures being used after they're deleted. --- <!-- 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 #27427 - [x] These changes do not require tests because we don't reftest webxr <!-- 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. -->

view details

bors-servo

commit sha b1bd4090470c6f2b9ff4ea410455ae8e38fec2c5

Auto merge of #27449 - asajeffrey:gst-plugin-readme-edits, r=jdm Gstreamer plugin README edits <!-- Please describe your changes on the following line: --> Updated docs to the gstreamer plugin, now with a recipe for streaming to youtube live! --- <!-- 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 do not require tests because we don't test READMEs <!-- 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. -->

view details

dependabot-preview[bot]

commit sha a97f20af695e75fd38979688b4ee452ebc5953fa

build(deps): bump glslopt from 0.1.2 to 0.1.4 Bumps [glslopt](https://github.com/jamienicol/glslopt-rs) from 0.1.2 to 0.1.4. - [Release notes](https://github.com/jamienicol/glslopt-rs/releases) - [Commits](https://github.com/jamienicol/glslopt-rs/commits) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

view details

WPT Sync Bot

commit sha 53a530d4c03379e9c5d5ee0275604af8bf4e8a60

Update web-platform-tests to revision fd5a851b2e6bd60ff49060f1b42197c976273728

view details

Utsav Oza

commit sha 5fe54b800334d0963cbf52496e2cbce42d839c46

Fix ordering of mousemove event

view details

Utsav Oza

commit sha c235e1ee4337c97ea451d9bc93c6937851431073

Fire mouseenter and mouseleave events

view details

Utsav Oza

commit sha da45522085363480009f7e12cce2c00a94ec931e

Fix comments for handle_mouse_move_event method

view details

Utsav Oza

commit sha 962e6205293b3466df173889cd56ba435cdaa233

Do not panic on navigating across documents

view details

Kyle Nosar

commit sha 95ddcf5d4d7a394bc45cb300754513afcc8d8475

Use ExtendableMessageEvent for messageerror in service workers

view details

Josh Matthews

commit sha 8fe51b49b49bb041ae206b160ad7c56deade16b2

Remove 2020 failure.

view details

Josh Matthews

commit sha f21b045cb4725d9dc06cc5ba115deba30757f198

Ignore UWP restrictions for host binaries.

view details

bors-servo

commit sha 2c8889ac4709555401ae3dc92f8f8e68ae99191f

Auto merge of #27453 - servo-wpt-sync:wpt_update_30-07-2020, r=jdm Sync WPT with upstream (30-07-2020) Automated downstream sync of changes from upstream as of 30-07-2020. [no-wpt-sync] r? @servo-wpt-sync

view details

bors-servo

commit sha e752ed200a4276d8ab24f8d8fbd4957e4a400bd0

Auto merge of #27452 - servo:dependabot/cargo/glslopt-0.1.4, r=jdm build(deps): bump glslopt from 0.1.2 to 0.1.4 Bumps [glslopt](https://github.com/jamienicol/glslopt-rs) from 0.1.2 to 0.1.4. Fixes #27039. <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/jamienicol/glslopt-rs/commits">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=glslopt&package-manager=cargo&previous-version=0.1.2&new-version=0.1.4)](https://dependabot.com/compatibility-score/?dependency-name=glslopt&package-manager=cargo&previous-version=0.1.2&new-version=0.1.4) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) </details>

view details

Utsav Oza

commit sha de20715f23706e01163c4843ccf113cbae6bf8e9

Add some manual tests for verifying mouse events order

view details

Kunal Mohan

commit sha 4e3863300928dcff115241e1576900c893f7dead

Refactor and improve GPUErrorScopes Remove use of equivalent BGLs

view details

push time in 3 months

push eventpcwalton/servo

Patrick Walton

commit sha ea7b0f238fc6de394ea7ac8c7096aace195460b4

Place floats in layout 2020, but don't flow text around the floats yet. This commit puts floats behind the `layout.floats.enabled` pref, because of the following issues and unimplemented features: * Inline formatting contexts don't take floats into account, so text doesn't flow around the floats yet. * Non-floated block formatting contexts don't take floats into account, so BFCs can overlap floats. * The `clear` property is only respected on floats, not on other elements; i.e. regular boxes can't clear past floats yet. * Block formatting contexts that contain floats don't expand vertically to contain all the floats. That is, floats can stick out the bottom of BFCs, contra spec. * Floats don't respect negative margins yet. * Floats are painted in the same order as regular content, contra spec.

view details

push time in 3 months

pull request commentservo/pathfinder

Simplify the cargo-c usage and generate the library as libpathfinder

@bors-servo: r+

lu-zero

comment created time in 3 months

pull request commentservo/pathfinder

Simplify the cargo-c usage and generate the library as libpathfinder

I'll approve this for now and we can revisit if we ever want to push this to crates.io.

lu-zero

comment created time in 3 months

pull request commentservo/pathfinder

Simplify the cargo-c usage and generate the library as libpathfinder

Well, my concern would be uploading it to crates.io I guess.

lu-zero

comment created time in 3 months

pull request commentservo/servo

Place floats in layout 2020, but don't flow text around the floats yet.

@bors-servo try=wpt-2020

pcwalton

comment created time in 3 months

push eventpcwalton/servo

Josh Matthews

commit sha ef6bb443d27a33e68176a98022efbe31b30b4b21

Update packaged UWP gstreamer plugins.

view details

bors-servo

commit sha 223cb8d3672b9328d2a7daf5cb7a0fd83804d3b6

Auto merge of #27445 - jdm:uwp-gstreamer, r=Manishearth Update packaged UWP gstreamer plugins. Fixes #27444. Verified that the WACK checks still pass and the UWP app launches on desktop.

view details

Alan Jeffrey

commit sha 4894e8f2c4924359c5d8de4c33dfda269f03d093

Add a pref to indicate user intent to enter webxr

view details

Alan Jeffrey

commit sha 89a2c5175f6ded630cf8a09dd899dad809921e6d

Set the dom.webxr.unsafe-assume-user-intent pref in the gstreamer plugin's webxr mode

view details

bors-servo

commit sha c26a803fee43962fe5bab5f4f26adc0319d590ef

Auto merge of #27429 - asajeffrey:webxr-user-intent-pref, r=Manishearth Add a pref to indicate user intent to enter webxr <!-- Please describe your changes on the following line: --> Add a pref to indicate that the user has indicated intent to enter webxr. --- <!-- 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 do not require tests because it's a command-line pref <!-- 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. -->

view details

Patrick Walton

commit sha a2e42794b5aaab5cecec88bd6e40a9da0c2d40b8

Place floats in layout 2020, but don't flow text around the floats yet. This commit puts floats behind the `layout.floats.enabled` pref, because of the following issues and unimplemented features: * Inline formatting contexts don't take floats into account, so text doesn't flow around the floats yet. * Non-floated block formatting contexts don't take floats into account, so BFCs can overlap floats. * The `clear` property is only respected on floats, not on other elements; i.e. regular boxes can't clear past floats yet. * Block formatting contexts that contain floats don't expand vertically to contain all the floats. That is, floats can stick out the bottom of BFCs, contra spec. * Floats don't respect negative margins yet. * Floats are painted in the same order as regular content, contra spec.

view details

push time in 3 months

pull request commentservo/servo

Place floats in layout 2020, but don't flow text around the floats yet.

@bors-servo try=wpt-2020

pcwalton

comment created time in 3 months

push eventpcwalton/servo

mustafapc19

commit sha 55e482d02d1fd67a526860c6279020551ab27dc9

Synced with master

view details

mustafapc19

commit sha 73d0a42bffbb7309fd0f1b8eb29f366b33eb94c8

Synced with master

view details

mustafapc19

commit sha 1dd57d625c79da748974175b9fe0df2c8d585010

Merge branch 'master' of https://github.com/servo/servo

view details

mustafapc19

commit sha 332c9cc12f43281b639239eba339beac1b552313

Merge branch 'master' of https://github.com/servo/servo

view details

mustafapc19

commit sha d8b6755a8d3cba419b8c80ef533f0fbfd8e02b0f

Console.Clear implemented

view details

bors-servo

commit sha a9a406e9e73adecf56d9a5ce47b4b4f664f7e33a

Auto merge of #27443 - mustafapc19:master, r=jdm console.clear implemented <!-- 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 #27294 (GitHub issue number if applicable) <!-- Either: --> - [ ] There are tests for these changes OR - [X] These changes do not require tests because it deals with Firefox's devtools. <!-- 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. -->

view details

Patrick Walton

commit sha 0d9ea6c9ab59e22c72cd9be0a9b8aec90a6ec491

Place floats in layout 2020, but don't flow text around the floats yet. This commit puts floats behind the `layout.floats.enabled` pref, because of the following issues and unimplemented features: * Inline formatting contexts don't take floats into account, so text doesn't flow around the floats yet. * Non-floated block formatting contexts don't take floats into account, so BFCs can overlap floats. * The `clear` property is only respected on floats, not on other elements; i.e. regular boxes can't clear past floats yet. * Block formatting contexts that contain floats don't expand vertically to contain all the floats. That is, floats can stick out the bottom of BFCs, contra spec. * Floats don't respect negative margins yet. * Floats are painted in the same order as regular content, contra spec.

view details

push time in 3 months

pull request commentservo/servo

Place floats in layout 2020, but don't flow text around the floats yet.

@bors-servo try=wpt-2020

pcwalton

comment created time in 3 months

push eventpcwalton/servo

dependabot-preview[bot]

commit sha 788f0fee7765e77af60bb226299e1555311d0d74

build(deps): bump loom from 0.3.4 to 0.3.5 Bumps [loom](https://github.com/tokio-rs/loom) from 0.3.4 to 0.3.5. - [Release notes](https://github.com/tokio-rs/loom/releases) - [Changelog](https://github.com/tokio-rs/loom/blob/master/CHANGELOG.md) - [Commits](https://github.com/tokio-rs/loom/compare/v0.3.4...v0.3.5) Signed-off-by: dependabot-preview[bot] <support@dependabot.com>

view details

Josh Matthews

commit sha dd5a4ec868e37cdafe8b438866877f09812fb020

Remove scoped-tidy duplicate exemption.

view details

bors-servo

commit sha 8f61ce6bf5c8c34bdf9d001e54aa2b633e0329cc

Auto merge of #27408 - servo:dependabot/cargo/loom-0.3.5, r=jdm build(deps): bump loom from 0.3.4 to 0.3.5 Bumps [loom](https://github.com/tokio-rs/loom) from 0.3.4 to 0.3.5. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/tokio-rs/loom/blob/master/CHANGELOG.md">loom's changelog</a>.</em></p> <blockquote> <h1>0.3.5 (July 26, 2020)</h1> <h3>Fixed</h3> <ul> <li>An example in the README failing to compile (<a href="https://github-redirect.dependabot.com/tokio-rs/loom/issues/132">#132</a>)</li> </ul> <h3>Changed</h3> <ul> <li>Updated <code>scoped-tls</code> to 1.0.0 (<a href="https://github-redirect.dependabot.com/tokio-rs/loom/issues/153">#153</a>)</li> </ul> <h3>Added</h3> <ul> <li><code>Send</code> and <code>Sync</code> impls for <code>JoinHandle</code> (<a href="https://github-redirect.dependabot.com/tokio-rs/loom/issues/145">#145</a>)</li> <li><code>Default</code> impls for <code>Mutex</code>, <code>RwLock</code>, and <code>Condvar</code> (<a href="https://github-redirect.dependabot.com/tokio-rs/loom/issues/138">#138</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/tokio-rs/loom/commit/af4386b0285b673468f49dfa0763a820f96eddbb"><code>af4386b</code></a> prepare to release 0.3.5 (<a href="https://github-redirect.dependabot.com/tokio-rs/loom/issues/160">#160</a>)</li> <li><a href="https://github.com/tokio-rs/loom/commit/2632f929d2ebd0c1998d93e5b9164fca698ba949"><code>2632f92</code></a> update scoped-tls to 1.0.0 (<a href="https://github-redirect.dependabot.com/tokio-rs/loom/issues/153">#153</a>)</li> <li><a href="https://github.com/tokio-rs/loom/commit/dc9e91c0a9339f41385bb1b28c4b7c061b245de9"><code>dc9e91c</code></a> Fix compilation error on README.md (<a href="https://github-redirect.dependabot.com/tokio-rs/loom/issues/132">#132</a>)</li> <li><a href="https://github.com/tokio-rs/loom/commit/871ff0128888dea307b848549dd0a5692b1e82ad"><code>871ff01</code></a> Implement Default for Mutex, RwLock and Condvar (<a href="https://github-redirect.dependabot.com/tokio-rs/loom/issues/138">#138</a>)</li> <li><a href="https://github.com/tokio-rs/loom/commit/0b092a2e5233cc296a12794b804b1f79ed44f741"><code>0b092a2</code></a> Make JoinHandle Send + Sync (<a href="https://github-redirect.dependabot.com/tokio-rs/loom/issues/145">#145</a>)</li> <li>See full diff in <a href="https://github.com/tokio-rs/loom/compare/v0.3.4...v0.3.5">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=loom&package-manager=cargo&previous-version=0.3.4&new-version=0.3.5)](https://dependabot.com/compatibility-score/?dependency-name=loom&package-manager=cargo&previous-version=0.3.4&new-version=0.3.5) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language - `@dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme Additionally, you can set the following in your Dependabot [dashboard](https://app.dependabot.com): - Update frequency (including time of day and day of week) - Pull request limits (per update run and/or open at any time) - Out-of-range updates (receive only lockfile updates, if desired) - Security updates (receive only security updates, if desired) </details>

view details

Josh Matthews

commit sha d8b4dab4e38c2928f034248e158e8bf9b5ad60d6

Implement basic white-space: pre support for layout 2020.

view details

Josh Matthews

commit sha 260347e5dc287b7d47e29c97d08fa4abba3e8a75

Simplify control flow of whitespace handling.

view details

Arjun Ramachandrula

commit sha 60147105388fe7f5f95e019436d8027061330a47

Removed unnecessary conversion from UTF-8 to UTF-16

view details

Josh Matthews

commit sha f030162ec3cdbe08b6a94869e0b25c11a9d433aa

Make reload button clear the network cache.

view details

Manish Goregaokar

commit sha d0670d484528bbe60a03d8da52c90b09cab486b4

Enable clip WPT tests for 2020

view details

Manish Goregaokar

commit sha 433b653f70144c68ca4564c40d71427b38b9c06f

Move clip resolution code into style

view details

Manish Goregaokar

commit sha 139f240baf1997f3c309586b1344f8d58d5bd23b

Enable clip property in layout 2020

view details

Manish Goregaokar

commit sha 07c87b471579857f92a615ba8b702db3a1f9ef43

Handle clip property in 2020

view details

Manish Goregaokar

commit sha 346a0e02d565dccabf97e8dd65b41744970e5cf1

Handle clip before we push the stacking context

view details

Manish Goregaokar

commit sha 0bc10b80738d7c7f08b7c1106e6dc232e7e44b99

Update wpt results

view details

Josh Matthews

commit sha 4e3621e91e1eaf63f1fbb5ab3fde6084d67a78ce

Add more gstreamer plugins to nightly builds.

view details

bors-servo

commit sha 7eabd5c8bd0401befaf3dc540eeacecd9536c420

Auto merge of #27403 - servo:jdm-patch-46, r=Manishearth Add more gstreamer plugins to nightly builds.

view details

Manish Goregaokar

commit sha 9fe70e6b71c2d2278f36dc6cfe0e62ab9fff837b

Move secondary view support into a pref

view details

bors-servo

commit sha 870812d8955649645f82841ee4bd3c5db454423a

Auto merge of #27418 - Manishearth:secondary-view-pref, r=asajeffrey Move secondary view support into a pref Needs https://github.com/servo/webxr/pull/188 Adds a `dom.webxr.first_person_observer_view` pref that toggles FPO views.

view details

Manish Goregaokar

commit sha b026dae8ac244be8b9682b119c5bf13e53d1cdb7

Only apply clip() to positioned elements

view details

bors-servo

commit sha 0ce3ad5a4bba228f617e7d4bf3b34b39684dc3d9

Auto merge of #27417 - jdm:clear-reload, r=Manishearth Make reload button clear the network cache. The developer workflow in FxR is frustrating right now because of bugs like https://github.com/servo/servo/issues/24385. To allow us to put out a new release soon that addresses this papercut, these changes make the reload button clear the network cache in FxR. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix (kind of) #26411. - [x] These changes do not require tests because can't test FxR.

view details

WPT Sync Bot

commit sha 1ad22043ab4c0a1a0f38d41fa2ad0e6f444649be

Update web-platform-tests to revision 9a28e2c8d072c358bd94b97bc8bff6db8388b6b1

view details

push time in 3 months

pull request commentservo/pathfinder

Document the rest of `pathfinder_content`

@bors-servo: r+

pcwalton

comment created time in 3 months

PR opened servo/pathfinder

Document the rest of `pathfinder_content`
+211 -23

0 comment

9 changed files

pr created time in 3 months

create barnchpcwalton/pathfinder

branch : content-docs

created branch time in 3 months

issue commentservo/pathfinder

Add build instructions for C examples

Does this work better as of https://github.com/servo/pathfinder/commit/c6151da25470124df1c38e650792ded2e2caf6f5?

lambdadog

comment created time in 3 months

pull request commentservo/pathfinder

Expose `CanvasRenderingContext2D::set_text_baseline()` to C.

@bors-servo: r+

pcwalton

comment created time in 3 months

PR opened servo/pathfinder

Expose `CanvasRenderingContext2D::set_text_baseline()` to C.

Closes #425.

+22 -1

0 comment

1 changed file

pr created time in 3 months

push eventservo/pathfinder

Ben Gachowski

commit sha 3ff09fb43b1094bf1a2280ccd6ea1665f3359b5a

Add [defines] section to cbindgen.toml

view details

Ben Gachowski

commit sha 56b432b4664cb06b2f3cb95ba28b4e34823ed32a

Replace PATHFINDER_MACOS with __APPLE__

view details

Patrick Walton

commit sha c6151da25470124df1c38e650792ded2e2caf6f5

Merge pull request #424 from BenGachowski/master Add [defines] section to cbindgen.toml

view details

push time in 3 months

PR merged servo/pathfinder

Add [defines] section to cbindgen.toml

Attempts to fix issue #422.

+5 -0

6 comments

1 changed file

BenGachowski

pr closed time in 3 months

issue closedservo/pathfinder

cbindgen is not making use of cfg directives because of lack of [defines] section in cbindgen.toml

The header file generated with cbindgen will automatically wrap the various exported functions in c preprocessor macros, but only if those macros are defined in the cbindgen.toml under a [defines] section.

For example, on my windows machine, the functions labeled for MacOS only are still included leading to undefined references when compiling.

More information about this can be found here.

closed time in 3 months

BenGachowski

create barnchpcwalton/pathfinder

branch : text-baseline-c

created branch time in 3 months

pull request commentservo/pathfinder

Add [defines] section to cbindgen.toml

@bors-servo: r+

BenGachowski

comment created time in 3 months

pull request commentservo/pathfinder

Add [defines] section to cbindgen.toml

Can we just write "target_os = macos" = "__APPLE__"?

BenGachowski

comment created time in 3 months

pull request commentservo/pathfinder

Implement `putImageData()` on canvas.

@bors-servo: r+

pcwalton

comment created time in 3 months

PR opened servo/pathfinder

Implement `putImageData()` on canvas.

Partially addresses #388.

+30 -1

0 comment

1 changed file

pr created time in 3 months

create barnchpcwalton/pathfinder

branch : put-image-data

created branch time in 3 months

issue closedservo/pathfinder

Panic on loading SVG file

The attached SVG file causes a panic when loaded in the native demo app. Tested on commit 5d5d303

stress.svg.zip - zipped so that github would accept the upload.

Backtrace:

Oh noez! Panic! 💥
Message:  index out of bounds: the len is 1 but the index is 1
Location: renderer/src/tiles.rs:264

Run with RUST_BACKTRACE=full to include source snippets.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                          (7 post panic frames hidden)                          
 7: core::panicking::panic_bounds_check::hf0c95c4cc84d34ca
    at src/libcore/panicking.rs:61
 8: pathfinder_renderer::tiles::Tiler::generate_tiles::hfc169b80f1641916
    at <unknown source file>
 9: pathfinder_renderer::builder::SceneBuilder::build_path::hce897e2e946b5d4c
    at <unknown source file>
10: rayon::iter::plumbing::Producer::fold_with::h50fa76b5f0b3163a
    at <unknown source file>
11: rayon::iter::plumbing::bridge_producer_consumer::helper::h69dbadf04bd92d21
    at <unknown source file>
12: std::panicking::try::do_call::h6c4c1ab0f10124be
    at <unknown source file>
13: __rust_maybe_catch_panic
    at src/libpanic_unwind/lib.rs:80
14: <rayon_core::job::StackJob<L,F,R> as rayon_core::job::Job>::execute::h9adf8b7ae0ef7bc2
    at <unknown source file>
15: rayon_core::registry::WorkerThread::wait_until_cold::h217a69f524408fb0
    at <unknown source file>
16: rayon_core::registry::main_loop::h170a63d799a69fb7
    at <unknown source file>
17: std::panicking::try::do_call::hdc23013fbb359370
    at <unknown source file>
18: __rust_maybe_catch_panic
    at src/libpanic_unwind/lib.rs:80
19: core::ops::function::FnOnce::call_once{{vtable.shim}}::h1e9e799cd2b2c8fd
    at <unknown source file>
20: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h2877b2aefb0fd627
    at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/liballoc/boxed.rs:787
21: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h13f473dbcdaa0fef
    at /rustc/625451e376bb2e5283fc4741caa0a3e8a2ca4d54/src/liballoc/boxed.rs:787
22: std::sys_common::thread::start_thread::h562a7c4953cb1d31
    at src/libstd/sys_common/thread.rs:13
23: std::sys::unix::thread::Thread::new::thread_start::h382c6ae14181d163
    at src/libstd/sys/unix/thread.rs:79
24: start_thread
    at <unknown source file>
25: __clone
    at <unknown source file>
26: <unknown>
    at <unknown source file>
Oh noez! Panic! 💥
Message:  called `Result::unwrap()` on an `Err` value: RecvError
Location: src/libcore/result.rs:1084

Run with RUST_BACKTRACE=full to include source snippets.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                          (8 post panic frames hidden)                          
 8: demo::main::h0b665984c7ae2ba3
    at <unknown source file>
 9: std::rt::lang_start::{{closure}}::hc8bed131044e1138
    at <unknown source file>
10: std::rt::lang_start_internal::{{closure}}::h4e93c1949c7a1955
    at src/libstd/rt.rs:49
11: std::panicking::try::do_call::h9440ccd4dc467eaa
    at src/libstd/panicking.rs:296
12: __rust_maybe_catch_panic
    at src/libpanic_unwind/lib.rs:80
13: std::panicking::try::hc046e7ee42ee744f
    at src/libstd/panicking.rs:275
14: std::panic::catch_unwind::h27dfc457c200aee0
    at src/libstd/panic.rs:394
15: std::rt::lang_start_internal::hea1b49a567afe309
    at src/libstd/rt.rs:48
16: main
    at <unknown source file>
17: __libc_start_main
    at <unknown source file>
18: _start
    at <unknown source file>
19: <unknown>
    at <unknown source file>

closed time in 3 months

Shnatsel

issue commentservo/pathfinder

Panic on loading SVG file

This no longer panics for me.

Shnatsel

comment created time in 3 months

issue commentservo/pathfinder

Reduce the number of crates library users need to care about

I think we're going to hold off on this for now, per feedback. Closing for now, but may reopen in the future if this decision changes.

pcwalton

comment created time in 3 months

issue closedservo/pathfinder

Reduce the number of crates library users need to care about

Right now we have a lot of crates, and this is causing friction for potential library users. One option would be to have a super-crate that reexports everything important. But I worry this crate will grow without limit. We already have Pathfinder native API, canvas, SVG, PDF, SWF, and Lottie frontends and it's unlikely a user will care about all of them. Likewise with GPU API backends: we already have OpenGL, WebGL, and Metal backends and will possibly get Vulkan, DX11, DX12, and gfx-rs backends in the future; it's unlikely a user wants to run on all of these platforms.

I think perhaps we could have the "front-end" crates—pathfinder_canvas and pathfinder_svg—reexport the functionality necessary to use them. Then you'd only need to import two crates in most cases: the front-end (pathfinder_canvas/pathfinder_svg) and a GPU backend (pathfinder_gl, etc.) Another option would be to have a front-end pathfinder_vg crate that reexports all the subcrates behind feature flags. (Unfortunately it can't be named just pathfinder because that name is already in use on crates.io.)

Other suggestions and ideas are very welcome.

closed time in 3 months

pcwalton

issue closedservo/pathfinder

PDF frontend

It'd be nice to have a built-in solution to render PDFs with Pathfinder (i.e. convert PDFs to scenes).

closed time in 3 months

pcwalton

issue commentservo/pathfinder

PDF frontend

Yep, good catch.

pcwalton

comment created time in 3 months

pull request commentservo/pathfinder

Allow clip paths to nest in the canvas API.

@bors-servo: r+

pcwalton

comment created time in 3 months

PR opened servo/pathfinder

Allow clip paths to nest in the canvas API.

Closes #372.

+4 -1

0 comment

1 changed file

pr created time in 3 months

create barnchpcwalton/pathfinder

branch : canvas-nested-clip-paths

created branch time in 3 months

issue openedservo/pathfinder

Remove the Magic Leap app

I don't think anyone is using it, and Servo as a project isn't focusing on Magic Leap anymore.

If anyone wants to take over maintenance, please comment here. Otherwise it'll be removed soon.

created time in 3 months

create barnchpcwalton/pathfinder

branch : tile-iteration-cap

created branch time in 3 months

issue closedservo/pathfinder

Experiment with a raytracing approach

It might make sense to try encoding all the the fills for each tile in a texture and stepping through them in a loop in the tile fragment shader, blending each pixel in software. This is basically what an early version of WebRender did, and what @raphlinus' piet-metal does. The advantage is that we have one rendering step instead of two. The disadvantage is that we can no longer use the hardware rasterizer's fragment scheduler and we may therefore have worse thread utilization.

My hypothesis, which has a very good chance of being wrong, is that this will be slower than current Pathfinder on most high-performance desktop hardware and mobile hardware, assuming we take advantage of pixel-local storage on the latter. However, it may be faster on some lower-power desktop GPUs, such as Intel. This is likely to be very hardware-dependent.

closed time in 3 months

pcwalton

issue commentservo/pathfinder

Experiment with a raytracing approach

We basically have this now in the D3D11 backend. Closing.

pcwalton

comment created time in 3 months

issue closedservo/pathfinder

Web Assembly port

It would be nice to have a Web Assembly port, like Google's CanvasKit for Skia.

closed time in 3 months

pcwalton

issue commentservo/pathfinder

Web Assembly port

We have a wasm port now. Let's close this in favor of more specific items.

pcwalton

comment created time in 3 months

issue closedservo/pathfinder

Move more to the GPU in Pathfinder 3 when available

This is just a sketch of various ideas for moving CPU passes to the GPU. On certain devices such as Magic Leap 1 we're CPU bottlenecked.

Stroke

Required features: None.

Just replace stroke algorithm with a shader.

Not clear yet how to do miter joins.

Transform

Required features: Transform feedback. GL 3.0; GLES 3.0.

This one is pretty obvious. Obvious hazard is readback from GPU.

Clipping

Required features: Transform feedback, geometry or compute shader. GL 3.2; GLES 3.1.

Will require some experimentation to find best clipbuffer representation.

Tiling

Required features: Compute shader, indirect draw. GL 4.3; GLES 3.1.

Break curves into lines on GPU, assign to tiles via compute (or geometry) shader. During fill stage, accumulate outgoing fill in SSBO or writable image using atomics. Then propagate fills between tiles using a binary flood algorithm in compute shader.

Not clear how to do occlusion culling. Possibly detect solid tiles during outgoing fill tile propagation.

Intra-tile curve-to-line conversion

Required features: Geometry or tessellation shader. GL 3.2; GLES 3.2.

Not sure if this is worth it due to needing to solve cubic equations. Probably not needed if GPU tiling works out.

closed time in 3 months

pcwalton

issue commentservo/pathfinder

Move more to the GPU in Pathfinder 3 when available

We have a D3D11 backend now that moves most things to GPU. Let's close this in favor of more specific items.

pcwalton

comment created time in 3 months

issue commentservo/pathfinder

PDF frontend

We have a PDF frontend now.

pcwalton

comment created time in 3 months

issue closedservo/pathfinder

PDF frontend

It would be nice to use Pathfinder as the backend for a PDF renderer.

closed time in 3 months

pcwalton

issue closedservo/pathfinder

High CPU overhead on very complex scenes

Right now I am working on a project where I need to render very complex lines (~2000 points per line, all straight segments per line, usually 3 lines) every frame and have been trying out Pathfinder for it. While I am aware this is probably not an intended use case, I think this may still be valuable for improving the performance of Pathfinder.

The code I am working with can be found here. (see line 296 for some of the main rendering code)

First of all, in order to even get realtime performance, I had to break each line into smaller PathObjects instead of one single PathObject per line. I ended up with rendering taking roughly 8-11ms per frame (using RayonExecutor, measured very non-scientifically), which doesn't really leave enough time for the other stuff I want to do. One of the things I found was by not using OutlineStrokeToFill, although that obviously renders incorrectly, the render time reduced to about 2-4ms. #119 mentions that the stroke algorithm could be done on the GPU, and that might increase performance greatly in this scenario.

Something else I noticed under this scenario was that RayonExecutor doesn't seem to scale well with added threads. Even though my CPU has 8 threads, using RayonExecutor was only about 70% faster than SequentialExecutor (again measured very roughly, about 16-17ms per frame using SequentialExecutor). Additionally, the CPU usage reported by htop was about double that of using SequentialExecutor

Finally, I decided to compare performance of Pathfinder to Blend2D, a purely CPU based rasterizer. My code for testing it is on the blend2d branch of the same repo. Using it, only 3-5ms were spent drawing the lines. However, the caveat is that I have later steps that I want to perform on the GPU, and copying the rendered image from the CPU to the GPU takes a significant amount of time (at least with my naive implementation), bringing the total frame time back up to only a little faster than Pathfinder using RayonExecutor. Despite that, the CPU usage reported while using Blend2D is roughly half of Pathfinder using SequentialExecutor.

closed time in 3 months

rytone

issue commentservo/pathfinder

High CPU overhead on very complex scenes

Closing for now as there have been many CPU time improvements, including an entirely new backend, since this was filed. Feel free to reopen if more issues are found.

rytone

comment created time in 3 months

issue commentservo/pathfinder

macOS Radeon performance woes

Closing as this seems resolved now.

waywardmonkeys

comment created time in 3 months

issue closedservo/pathfinder

macOS Radeon performance woes

It appears to be compiling shaders constantly as seen in the attached Instruments screenshot.

Screen Shot 2020-04-15 at 11 16 29 PM

My system is:

Model Name: MacBook Pro Model Identifier: MacBookPro14,3 Processor Name: Intel Core i7 Processor Speed: 2.9 GHz Number of Processors: 1 Total Number of Cores: 4 L2 Cache (per Core): 256 KB L3 Cache: 8 MB Hyper-Threading Technology: Enabled Memory: 16 GB

System Version: macOS 10.14.6 (18G3020) Kernel Version: Darwin 18.7.0

And my graphics / display hardware is:

Radeon Pro 560:

Chipset Model: Radeon Pro 560 Type: GPU Bus: PCIe PCIe Lane Width: x8 VRAM (Total): 4 GB Vendor: AMD (0x1002) Device ID: 0x67ef Revision ID: 0x00c0 ROM Revision: 113-C980AJ-927 VBIOS Version: 113-C9801AU-A02 EFI Driver Version: 01.A0.927 Automatic Graphics Switching: Supported gMux Version: 4.0.29 [3.2.8] Metal: Supported, feature set macOS GPUFamily2 v1 Displays: Color LCD: Display Type: Built-In Retina LCD Resolution: 2880 x 1800 Retina Framebuffer Depth: 30-Bit Color (ARGB2101010) Main Display: Yes Mirror: Off Online: Yes Rotation: Supported Automatically Adjust Brightness: No LG UltraFine: Resolution: 5120 x 2880 (5K/UHD+ - Ultra High Definition Plus) UI Looks like: 2560 x 1440 @ 60 Hz Framebuffer Depth: 30-Bit Color (ARGB2101010) Display Serial Number: 910NTXRBJ538 Mirror: Off Online: Yes Rotation: Supported Automatically Adjust Brightness: No Connection Type: DisplayPort

closed time in 3 months

waywardmonkeys

issue commentservo/pathfinder

Implement more filter effects

536cb4c0936cac9d3dcb03bee22335d8b5df257d implements color matrix.

Herschel

comment created time in 3 months

issue commentservo/pathfinder

Artifact when rendering large numbers of overlapping paths

https://github.com/servo/pathfinder/pull/418 fixes the biggest problems here. 1-character fix :)

The remaining issue with the 1-pixel-wide vertical lines seems to be caused by accumulation of floating-point error. I had worried that it indicated a fundamental problem with the lookup table approach for area, but I don't think it does, because if it did it wouldn't be a vertical line and would manifest itself only with lines of a certain slope, rather than all lines. So it's probably some subtle bug, not something fundamental.

alec-deason

comment created time in 3 months

pull request commentservo/pathfinder

Initialize resized mask textures to rgba(0, 0, 0, 0), not rgba(0, 0, 0, 1).

@bors-servo: r+

pcwalton

comment created time in 3 months

more