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

brendanzab/gl-rs 459

An OpenGL function pointer loader for Rust

graydon/bors 339

Integration robot for buildbot and github

linebender/skribo 226

A Rust library for low-level text layout.

brson/rust-sdl 167

SDL bindings for Rust

pcwalton/compute-shader 29

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

push eventservo/pathfinder

Patrick Walton

commit sha d1c7da8bd2eb34321fa2092224a5e80ecf102a08

Implement pattern repeating and image smoothing control

view details

push time in 2 hours

push eventservo/pathfinder

Patrick Walton

commit sha 77b3555828bbad20f98def5638917cb02f2091e4

Separate opacity out from paint. This allows `globalAlpha` to work on render targets.

view details

push time in 4 hours

push eventservo/pathfinder

Patrick Walton

commit sha e7de50eb67a94b87b2c179a0c89d6dc77cadd94d

Fix sub-Z-buffer indexing error with render targets

view details

Patrick Walton

commit sha 1deb53fa9cd08b43fb2b77f5866aa9056ffd8a77

Implement the remaining Porter-Duff compositing operators

view details

push time in a day

push eventservo/pathfinder

Patrick Walton

commit sha 0a3f64eb44beb2720a4b8a352e7315e73667ddc4

Implement the difference and exclusion blend modes

view details

push time in a day

push eventservo/pathfinder

Patrick Walton

commit sha a8e33d3d3d6534b6ff0d252c6726ed2c58bdd7d1

Add the soft light blend mode

view details

push time in a day

push eventservo/pathfinder

Patrick Walton

commit sha 9b4217300ff540ae8de7ba3cba1729e1a676fc7e

Implement the source-in, destination-in, source-out, and destination-atop blend modes to round out the assortment of Porter-Duff blend modes

view details

push time in a day

push eventservo/pathfinder

Patrick Walton

commit sha 02012431cac55749bc069f5006abffedc7be6504

Implement color dodge and color burn blend modes

view details

push time in a day

push eventservo/pathfinder

Patrick Walton

commit sha 00b7a2ee5a66341676d0a4f8aab92616db81126c

Factor out 3-element selection into a `select3()` function

view details

Patrick Walton

commit sha 99d980c0c7524c89e6b86b06ea7979051d745f89

Fix batch breaking logic for blend modes

view details

Patrick Walton

commit sha 149efeb672066024e73214ea268a1574163db17b

Fix `is_fully_transparent()` for colors. Oops!

view details

Patrick Walton

commit sha 5b228ed8257763ade6c1b865527cdaf999600a13

Implement multiply, screen, hard light, and overlay blend modes.

view details

push time in 2 days

push eventservo/pathfinder

Patrick Walton

commit sha c96cb62f472221c0eb0f67b1ba201d62e733487d

Factor out common functions used in tile alpha shaders

view details

push time in 2 days

push eventservo/pathfinder

Patrick Walton

commit sha 5421525eaa0fed97e4eed4aefe6ddbbf94ad9cdd

Implement the HSL filters (called "non-separable blend modes" in the spec). These cannot be implemented with the standard OpenGL blending functions, so we have to do them manually in a shader, which requires a good deal of machinery to create intermediate framebuffers and so forth.

view details

push time in 2 days

issue commentservo/pathfinder

Could pathfinder use with rust-offscreen-rendering-context ?

r-o-r-c is going to be replaced with http://github.com/pcwalton/surfman, and I want to replace SDL with that eventually.

Brooooooklyn

comment created time in 2 days

create barnchpcwalton/pathfinder

branch : hsl

created branch time in 4 days

issue commentservo/pathfinder

Scene in Scene embedding

Note that I just added RenderTarget support last night that allows you to render to a texture that you can then use as a Paint. This is how I want to handle nested scenes.

s3bk

comment created time in 4 days

push eventservo/pathfinder

Patrick Walton

commit sha 67d12adb6cabde84e61d2d014ca6ecec37d445a9

Replace layers with render targets, which can be used as patterns. This allows us to efficiently handle a lot of workloads that require multiple HTML canvases, without CPU readback. For example, you can render paths to a render target, then turn that render target into a repeating pattern that you fill other paths with. Or you can render paths to a render target and then composite that render target as a whole with a blend mode. This introduces a new `DrawRenderTarget` render command that blits a render target without any paths involved. This is basically just a hack that works around the fact that our tiled renderer doesn't yet support effects that widen the ink region (i.e. blurs). It can be removed once we have that support.

view details

push time in 5 days

push eventservo/pathfinder

Patrick Walton

commit sha 299307b50b973287aa8e4c324a0ee7b956108b55

wip

view details

Patrick Walton

commit sha 354d7fe97c91b3fe8cefa488ab1dc04001220b3e

Replace layers with render targets, which can be used as patterns. This allows us to efficiently handle a lot of workloads that require multiple HTML canvases, without CPU readback. For example, you can render paths to a render target, then turn that render target into a repeating pattern that you fill other paths with. Or you can render paths to a render target and then composite that render target as a whole with a blend mode. This introduces a new `DrawRenderTarget` render command that blits a render target without any paths involved. This is basically just a hack that works around the fact that our tiled renderer doesn't yet support effects that widen the ink region (i.e. blurs). It can be removed once we have that support.

view details

push time in 5 days

push eventservo/pathfinder

Patrick Walton

commit sha 32457964459e4fbb8bc7138186cc29bd9a0f6b67

Add support for multiple paint texture pages. This avoids arbitrary limits on the number of images, gradients, etc. you can have.

view details

push time in 5 days

Pull request review commentservo/servo

Add a simple implementation of CanvasRenderingContext2d.fillText

 impl GenericDrawTarget for raqote::DrawTarget {             &DrawOptions::Raqote(draw_options),         );     }+    fn fill_text(+        &mut self,+        text: String,+        x: f32,+        y: f32,+        pattern: canvas_data::Pattern,+        draw_options: &DrawOptions,+    ) {+        let font = SystemSource::new()

Also, this is in the chrome process, right? It needs to not be in the content process because the content process shouldn't have access to the SystemSource. (It's too dangerous; on macOS for example it needs a connection to the font server, which has had a lot of security vulnerabilities.)

kaiakz

comment created time in 5 days

Pull request review commentservo/servo

Add a simple implementation of CanvasRenderingContext2d.fillText

 impl GenericDrawTarget for raqote::DrawTarget {             &DrawOptions::Raqote(draw_options),         );     }+    fn fill_text(+        &mut self,+        text: String,+        x: f32,+        y: f32,+        pattern: canvas_data::Pattern,+        draw_options: &DrawOptions,+    ) {+        let font = SystemSource::new()

Needs a TODO because this should eventually use the same infrastructure as layout (i.e. layout should be updated to use font-kit as well).

kaiakz

comment created time in 5 days

Pull request review commentservo/servo

Add a simple implementation of CanvasRenderingContext2d.fillText

 impl GenericDrawTarget for raqote::DrawTarget {             &DrawOptions::Raqote(draw_options),         );     }+    fn fill_text(+        &mut self,+        text: String,+        x: f32,+        y: f32,+        pattern: canvas_data::Pattern,+        draw_options: &DrawOptions,+    ) {+        let font = SystemSource::new()

This should not sandbox-safe. It should be done in the chrome process, not the content process.

kaiakz

comment created time in 5 days

push eventservo/pathfinder

Patrick Walton

commit sha 0b102ec97d7d47c6ad908a5a49e34359f39e16c3

Fix compile error in `convert` utility

view details

push time in 6 days

push eventservo/pathfinder

Patrick Walton

commit sha 4933efb5131c45c81d4732fe9a7957dfc4c49ce1

Add Lighten and Darken composite ops

view details

Patrick Walton

commit sha 36538d574805ae973cf305e79d4694eee5b647a7

Implement a few more blend modes and switch to premultiplied alpha for layer compositing

view details

push time in 6 days

push eventservo/pathfinder

Patrick Walton

commit sha ab55b9509ba9270f1d086ba86139767dba41ff60

Fix handling of solid tiles with the Clear blend mode

view details

push time in 6 days

push eventservo/pathfinder

Patrick Walton

commit sha 6acd2d91f7e56137b438a5f9f63bf6b50dc44c7a

Implement `clear_rect()` in the canvas front-end by introducing the concept of per-path blend modes. These should be useful for some canvas composite operations as well.

view details

push time in 6 days

push eventservo/pathfinder

Patrick Walton

commit sha 0c3dad974f32c92db3559fbcb75501e635e7ceb3

Expose individual blend factors in `pathfinder_gpu`

view details

push time in 6 days

push eventservo/pathfinder

Patrick Walton

commit sha 16a2de88dfdc57b8ca20a0fd918c588320a4d3a5

Rename "postprocessing" to "effects" and start initial work on composite ops

view details

push time in 6 days

push eventservo/pathfinder

Patrick Walton

commit sha d9e994e46d78182d7e514dee217a87387d3e84d1

Transition the existing postprocessing system to a layers system. This is preparatory work for composite ops and blurs. Closes #261.

view details

push time in 6 days

issue closedservo/pathfinder

Replace postprocessing with a layers system

Right now, either the entire scene can be postprocessed, or none of it can. This is insufficient to handle the blur needed for <canvas> shadows and SVG filters. We should have a layer tree, where each layer can have arbitrary filters applied. This would also let us handle clips, since the layers would provide a convenient place to store clip masks.

closed time in 6 days

pcwalton

create barnchpcwalton/pathfinder

branch : layers

created branch time in 7 days

issue commentlinebender/skribo

Should skribo provide a shaping cache?

@RazrFalcon Thanks, that points to the likely culprit: https://github.com/linebender/skribo/blob/master/src/hb_layout.rs#L65

I guess we should lazily instantiate and reuse the hb_font_t for each Font object.

pcwalton

comment created time in 7 days

push eventservo/pathfinder

Patrick Walton

commit sha 95d5fab5ef2d07200926e6b3951174361c02910a

Minor cleanup in `pathfinder_canvas`

view details

Patrick Walton

commit sha fd070d7a24aa5f85f1ec768cd1e6c770759fd852

Start an `angle` module in `pathfinder_geometry`

view details

Patrick Walton

commit sha 25f9346160e80a51d4d88866ce6effa1abd8a02b

Add an incomplete port of the NanoVG example app

view details

push time in 7 days

issue commentlinebender/skribo

Should skribo provide a shaping cache?

A profile suggests that it's actually HB's internal font sanitization which is slow. Curious as to why that's happening repeatedly.

pcwalton

comment created time in 8 days

issue openedlinebender/skribo

Should skribo provide a shaping cache?

I'm finding that a lot of Pathfinder HTML canvas-like use cases end up slow for an annoying reason: they render the same text again and again, which ends up going through skribo and HarfBuzz to be shaped repeatedly. The solution is to cache on some level (per-word or per-run), but there's the question of who should be responsible for it. Should skribo offer this functionality, or should it be up to Pathfinder?

created time in 8 days

push eventservo/pathfinder

Patrick Walton

commit sha cc9711e151925b5ce13b21ff3ad2c73d1d9c4946

Transform some paints in the canvas API

view details

push time in 8 days

push eventservo/pathfinder

Patrick Walton

commit sha 3f79927eb112997141a6cc3c06cb5c48915dfe28

Allow the paint texture to grow a bit

view details

push time in 8 days

push eventservo/pathfinder

Patrick Walton

commit sha 4419553acc7691e91e0a623b81077c885dd228f7

Clamp gradient time to [0, 1]

view details

Patrick Walton

commit sha dcd12279d428e607e1bde2662148a1129f145e48

Fix counterclockwise arc logic

view details

Patrick Walton

commit sha df150dea8a0c863489e43d41ac98ea9ee145b68a

Add a method to fetch the center of a rect

view details

Patrick Walton

commit sha d97eb32566ab176ca3830319c14131cc3c3cafbf

Add a (somewhat inefficient) HSLA to RGBA conversion function

view details

push time in 8 days

push eventservo/pathfinder

Patrick Walton

commit sha 28c0811daa7f0240124a36f182e11a0bd8692563

Fix `pathfinder_swf` build

view details

push time in 9 days

push eventservo/pathfinder

Patrick Walton

commit sha a383c9a2ab099459191d31ee67d926a00f7378db

Fix build of `pathfinder_text`

view details

push time in 9 days

issue commentservo/pathfinder

Clamp winding number to [-1, 1] when drawing an Outline

Even-odd fill rule should be implemented as of 3ad1c25.

s3bk

comment created time in 9 days

push eventservo/pathfinder

Patrick Walton

commit sha 3ad1c25796fd4f81cc264e57ce8d5a1adce3941f

Implement the even-odd fill rule

view details

push time in 9 days

issue closedservo/pathfinder

Add clip method to Canvas API

Check html canvas API clip:

https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/clip

closed time in 10 days

FloVanGH

issue commentservo/pathfinder

Add clip method to Canvas API

Should be working now.

FloVanGH

comment created time in 10 days

push eventservo/pathfinder

Patrick Walton

commit sha 243f2cc9b29aea2247a114f15f16f8660a2cefb7

Add basic, incomplete support for clip paths in SVG

view details

push time in 10 days

push eventservo/pathfinder

Patrick Walton

commit sha 677c607a8ca051524078e3a2be83659dfab726a9

Get clips working for canvas

view details

push time in 10 days

issue commentservo/pathfinder

Clamp winding number to [-1, 1] when drawing an Outline

This may be fixed now as part of the clip work.

s3bk

comment created time in 11 days

push eventservo/pathfinder

Patrick Walton

commit sha a8019a1a1a420b73783fc76e6f5a8d8afeb59927

Fix mask positioning on OpenGL

view details

Patrick Walton

commit sha 0d3bbbd5069f1575c7b8ffa397c77c29fb11488a

Clip entire tiles appropriately. This doesn't composite masks together, so it's currently incomplete.

view details

push time in 11 days

push eventservo/pathfinder

Patrick Walton

commit sha 631e16ce9b8a4b44197a480478b8a5f9d7510df9

Fix flipped Y axis in mask texture positioning

view details

push time in 11 days

push eventservo/pathfinder

Patrick Walton

commit sha f26eecae7a04bb45f2e3f181afbac024fdf2e733

Build clip paths before draw paths

view details

push time in 11 days

push eventservo/pathfinder

Patrick Walton

commit sha 496b55ee4ed9bcfb660a0f2c67986bb282554f2b

Add front-end support for clip paths. They don't do anything yet.

view details

push time in 11 days

push eventservo/pathfinder

Patrick Walton

commit sha fefa3c3cd3bf540c802827f7f62d702ca05013f3

Rename `PathObject` to `DrawPath` to differentiate it from a clip path

view details

push time in 11 days

push eventservo/pathfinder

Patrick Walton

commit sha 6e28552a444a5524bf18b897c16a92f13af42f34

Add missing shaders

view details

push time in 12 days

push eventservo/pathfinder

Patrick Walton

commit sha 0883f54e2d2bc2c8c991d6326d48bbe61d740647

Add a separate mask blit step, in preparation for supporting clips. We can elide this in the future if there are no clips, but it isn't a huge performance regression right now, so let's just unconditionally do it.

view details

push time in 12 days

push eventservo/pathfinder

Patrick Walton

commit sha 6a73a63336d28377c3e4afe62b8b95b3479582d3

Factor out mask texture UV calculation, and rename a couple of render commands

view details

push time in 12 days

push eventservo/pathfinder

Patrick Walton

commit sha 31becb1570bd738f290591eee0178a2dad696c89

Flatten objects' tiles ourselves instead of having Rayon do it. A prerequisite for clips.

view details

push time in 12 days

push eventservo/pathfinder

Patrick Walton

commit sha 84ffc3151eab6fd3bf2700df2a71f4eaa69d778e

Split shaders out into a separate module.

view details

push time in 12 days

create barnchservo/pathfinder

branch : clip

created branch time in 13 days

pull request commentservo/ipc-channel

macOS: Don't leak disconnected senders

@bors-servo: r+

jdm

comment created time in 14 days

pull request commentservo/ipc-channel

macOS: Don't leak disconnected senders

@jdm Probably a good idea, yeah. I'm worried someone will modify this code and reintroduce the bug.

jdm

comment created time in 14 days

pull request commentservo/ipc-channel

macOS: Don't leak disconnected senders

Could you add a comment explaining why we use mach_port_deallocate() instead of mach_port_mod_refs()? This is subtle.

jdm

comment created time in 14 days

push eventservo/pathfinder

Patrick Walton

commit sha 90445bac7e424eabd975335610d935f441a25435

Implement basic support for non-repeating image patterns.

view details

push time in 15 days

push eventservo/pathfinder

Patrick Walton

commit sha aad467e716ef814fbeba7382daf1c4713198f1de

Implement basic radial gradients. This doesn't handle the case where the circles are not concentric yet.

view details

push time in 16 days

push eventservo/pathfinder

Patrick Walton

commit sha 5a21557a6d7bde3def032797f2ce2ac69199b9c6

Implement basic linear gradients. This is not a very efficient implementation yet, but it seems to work.

view details

push time in 16 days

issue openedservo/pathfinder

Remaining features for HTML canvas support and first crates.io release

We're not too far from full HTML canvas support. Remaining features:

  • [ ] Linear gradients
  • [ ] Radial gradients
  • [ ] Image patterns
  • [ ] Clips (#222)
  • [ ] Blur for shadows (needs #261)

I think once we have complete HTML canvas support, we will be ready for a crates.io release.

Another remaining feature is unit tests.

created time in 16 days

issue commentservo/pathfinder

GLDevice never calls gl::DeleteTextures?

Yes, the textures should be deleted! Whoops.

windexlight

comment created time in 16 days

issue openedservo/pathfinder

Add a CPU mask tile renderer for GLES 2 compatibility

Sadly, GLES 2 compatibility is becoming a concern. By rendering mask tiles on CPU with SIMD, we could work on GLES 2 hardware. We should still keep the existing rasterizer around for GL 3 and up hardware, of course.

created time in 19 days

issue openedservo/pathfinder

Make the mask texture RGBA16F instead of R16F

I suspect we're fill rate bound on many GPUs, so packing four pixels into one will let us increase our rasterization performance.

Most likely we should group every column of four pixels into one. That would let us reduce the number of ray intersection tests we have to perform in the fragment shader, in addition to increasing fill rate. Because of the minimum 2x2 pixel square that fragment shaders execute over, this would mean that we only have to perform 1 ray intersection per 8 vertical pixels, rather than 1 ray intersection per 2 vertical pixels as is the case today.

created time in 19 days

push eventservo/pathfinder

Arturo Castro

commit sha 7213b3e1cb767d7ad908a65c198a46499dc51bc2

Remove log restriction pathfinder-geometry enabled a log feature that restricts logging to warn for any binary using it.

view details

Arturo Castro

commit sha 3be6d70577c6c3d91c216ab1455a27313fec883f

remove log restrictions from renderer, demo/common and gl crates

view details

Patrick Walton

commit sha 740597d88641a99edcbe7380cfecb00ce5895835

Merge pull request #254 from arturoc/remove-log-restriction Remove log restriction

view details

push time in 20 days

PR merged servo/pathfinder

Remove log restriction

pathfinder-geometry enabled a log feature that restricts logging to warn for any binary using it.

This is really hard to find for anyone using the package as suddenly logging seems to stop working for no apparent reason

+0 -4

3 comments

4 changed files

arturoc

pr closed time in 20 days

pull request commentservo/pathfinder

Remove log restriction

I actually don't know why this got in there. Maybe it was added in a PR? Anyway, thanks for finding it!

arturoc

comment created time in 20 days

push eventservo/pathfinder

Emmanuel Gil Peyrot

commit sha 2d2bc14e5cb597bc9c8f602d28c4a16902fd1938

Remove unused import

view details

Emmanuel Gil Peyrot

commit sha fb22aafada296f7c96c303fc5777a67eb5bf209f

Update swf-related crates swf-tree got renamed into swf-types for their 0.10 release.

view details

Emmanuel Gil Peyrot

commit sha d2b8e2cd30607297214d58ee586f29a921307ccf

Bump euclid dependency of area-lut

view details

Emmanuel Gil Peyrot

commit sha 03e3a9fdedce632a241eeaa42f59aafaa767b510

Bump glutin dependency in the example The API of winit has changed quite a lot in their 0.20 release.

view details

Emmanuel Gil Peyrot

commit sha 6ce416e77c3df8d6c193e8680fd15a0de8b89d63

Bump all outdated dependencies I’m pleasantly surprised that none of these required any (visible) code change, but tests pass so let’s go with that. :)

view details

Emmanuel Gil Peyrot

commit sha 124472cff1f03f6e5727c624c3eff98f01a8ab73

Regenerate Cargo.lock with the latest changes

view details

Patrick Walton

commit sha 183c802a13d63cf1f4060f47e95094153997b8d0

Merge pull request #257 from linkmauve/eijebong Bump almost all dependencies to their latest version

view details

push time in 20 days

PR merged servo/pathfinder

Bump almost all dependencies to their latest version

I’m pleasantly surprised so few of them required any kind of (visible) code change. The few which did have a dedicated commit.

The only remaining one according to cargo-outdated is pathfinder_text’s dependency on lyon_path, but this is just waiting for a font-kit release as that crate dropped lyon from its direct dependencies anyway.

A cargo test goes down from 373 crates to 365 crates to build.

+870 -936

1 comment

32 changed files

linkmauve

pr closed time in 20 days

push eventservo/pathfinder

Patrick Walton

commit sha 706b6dbd1d1b64c741f86577567668ce3ede67dc

Add an API for gradients to the canvas frontend, not implemented yet

view details

push time in 21 days

issue commentservo/pathfinder

Feature suggestion: Option for subpixel anti-aliasing for other paths, not just text

Perhaps #261 is what you want? Subpixel AA is just a filter and could be attached to layers.

ad8e

comment created time in 21 days

issue openedservo/pathfinder

Replace postprocessing with a layers system

Right now, either the entire scene can be postprocessed, or none of it can. This is insufficient to handle the blur needed for <canvas> shadows and SVG filters. We should have a layer tree, where each layer can have arbitrary filters applied. This would also let us handle clips, since the layers would provide a convenient place to store clip masks.

created time in 21 days

pull request commentservo/pathfinder

Add a minimal example in C

Thanks! How about putting this in examples/, to go alongside the existing macos_app C example?

linkmauve

comment created time in 21 days

pull request commentservo/pathfinder

Add quickcheck build-dependency

Thanks!

linkmauve

comment created time in 21 days

push eventservo/pathfinder

Emmanuel Gil Peyrot

commit sha cc6fe7864b72f2cf60218a7c3bf4eb1afe1bc20b

Add quickcheck build-dependency quickcheck usage in pathfinder_content had been added in b8f622203ae96776fe69a0c10282792832db9ef2, but not to the Cargo.toml. This makes tests pass again.

view details

Patrick Walton

commit sha 9a2e4f0b6d8836a9beff190a66d7073e04a088d5

Merge pull request #259 from linkmauve/fix-missing-quickcheck Add quickcheck build-dependency

view details

push time in 21 days

PR merged servo/pathfinder

Reviewers
Add quickcheck build-dependency

quickcheck usage in pathfinder_content had been added in b8f622203ae96776fe69a0c10282792832db9ef2, but not to the Cargo.toml.

This makes tests pass again.

+26 -0

0 comment

2 changed files

linkmauve

pr closed time in 21 days

push eventservo/pathfinder

Patrick Walton

commit sha a66ed4c073ced4cb4042d49996833dff89fb8eeb

Specify tile texture coordinates as an affine transform. Part of the groundwork for gradients.

view details

push time in 21 days

issue commentrust-lang/rust

Bad codegen with simple match statement

Might be a good candidate for a MIR opt. I believe LLVM has historically shied away from doing this kind of thing out of compile time concerns.

emilio

comment created time in 21 days

push eventservo/pathfinder

Patrick Walton

commit sha b269723254d50a7f1b57f6c4f4dc9a9b1af77ca1

Switch to per-pixel texture lookup for paints. This is a prerequisite for supporting gradients and images.

view details

push time in 22 days

push eventservo/pathfinder

Patrick Walton

commit sha b8f622203ae96776fe69a0c10282792832db9ef2

Add a simple quadtree-based texture allocator

view details

Patrick Walton

commit sha 1e84ddf1ff6daa7c732b7dcea52c9586b1f445ef

Use the texture allocator to allocate solid colors

view details

push time in 23 days

Pull request review commentservo/pathfinder

Add WebGL impl and enable access to Outline, Contour and Scene

 impl FilesystemResourceLoader { }  impl ResourceLoader for FilesystemResourceLoader {-    fn slurp(&self, virtual_path: &str) -> Result<Vec<u8>, IOError> {+    fn slurp(&self, virtual_path: &str) -> Result<Cow<'static, [u8]>, IOError> {         let mut path = self.directory.clone();         virtual_path             .split('/')             .for_each(|segment| path.push(segment));          let mut data = vec![];         File::open(&path)?.read_to_end(&mut data)?;-        Ok(data)+        Ok(data.into())+    }+}++pub struct EmbeddedResourceLoader;

Won't this cause a rebuild when changing the shaders? One of the benefits of the FilesystemResourceLoader is live shader editing without rebuilding. I know it's not possible to use the filesystem in WebAssembly, but maybe we should make this enabled on the wasm target only.

s3bk

comment created time in a month

pull request commentservo/pathfinder

Add WebGL impl and enable access to Outline, Contour and Scene

Hmm. Maybe we should move the WebGL code into pathfinder_gl, so that we can avoid duplicating helper functions like flip_y? We can use #[cfg] directives to choose the right implementation.

s3bk

comment created time in a month

push eventservo/pathfinder

Patrick Walton

commit sha 2db43797c3831cc1da952eb1086ca245c4445e1d

Split colors out into their own crate. A lot of downstream consumers of `pathfinder_gpu` want to use colors without the path stuff.

view details

push time in a month

push eventpcwalton/surfman

Patrick Walton

commit sha f95b1792de3fe4e2c0e3b982884f51d21699f518

Add traits and make the macOS backend conform to them

view details

Patrick Walton

commit sha 3c808058c1544005cec1d711c07626086e6a1f0b

wip

view details

Patrick Walton

commit sha 2c6e98350cf6c2a783cfca8643ddd0117e46b5ab

Merge branch 'master' into multi

view details

Patrick Walton

commit sha 069b7e94e991ba9d5a32915f831a07efad338127

Get things building on macOS

view details

Patrick Walton

commit sha 0e262dc143306a0dbac454ee9efc3324c404c59c

Add default Unix backend

view details

Patrick Walton

commit sha e3a9e60b533ae0f91b3f13609a4e7c7bffc6dd3a

Get the multi backend compiling on Unix

view details

Patrick Walton

commit sha 39e4b1f46faeeb059d5121fdb1f7016f51a49606

More Unix fixes

view details

Patrick Walton

commit sha 066149dfd8da5cd765f8cf46d85db9e5faa9f5cc

A bit more refactoring of methods

view details

Patrick Walton

commit sha 162020d48a65e88852493f3de703e8b910924c8b

Introduce a system surface concept for macOS

view details

Patrick Walton

commit sha a1de43a406a85f281ee560ebf1279fa295e4f1e0

Fix typos in headers

view details

Patrick Walton

commit sha 3f27cbabaf3beb194e72b4065a1112b8ec3f5400

Fix long line

view details

Patrick Walton

commit sha fedccfdce146a9472893844ed4b60830c5ee4641

Update ANGLE for new API

view details

Patrick Walton

commit sha fd7ad5c86e31594e0ef0c7601585a42d26f713e7

Update WGL backend for API changes

view details

Patrick Walton

commit sha 6e78596e604ae8ed18bcb0be1d61310012167033

wip

view details

Patrick Walton

commit sha 5abdeef388be23995a095119acafe64f143ec556

Move `doc` to the root level

view details

Patrick Walton

commit sha 3745f5316369faf2f2d7924cb718ba607028ed8b

Add a README

view details

Patrick Walton

commit sha 332550b045243b30adf1c11c36229740d5fcfa65

Stop using inline SVG in readme

view details

Patrick Walton

commit sha 226cde16e17fed6d6bd77a68d50f94de5a368381

Stop using inline images in README

view details

Patrick Walton

commit sha 3799411697f1006e6328943774790de99af8419b

Update Android backend for API changes

view details

Patrick Walton

commit sha 93bcccd64976510647a8d4952cc7d16cb45122c3

Flesh out the readme

view details

push time in a month

issue commentservo/pathfinder

Serde?

Sure, let's do that.

s3bk

comment created time in a month

push eventservo/font-kit

Patrick Walton

commit sha 3d3b79ef9b644a49aa723cb3af0a32d882a3fdf9

rustfmt

view details

push time in a month

push eventservo/font-kit

Patrick Walton

commit sha 3d6bfd7f1df7b16d33f6f3311fbfd72017c0b792

Add an test for localized family names on Linux. This assumes that Sazanami is present on the system. The test is skipped otherwise. It's kind of unfortunate.

view details

push time in a month

push eventservo/font-kit

Patrick Walton

commit sha cab3c81b46ce790a2066a69c7105cb41b8f8cce3

Add a test for lookup of localized family names on Windows

view details

push time in a month

push eventservo/font-kit

Patrick Walton

commit sha c3ec3f75c6aef8ad3d6009ce20c4c3ba9339d7cf

Add tests for case-insensitive matching of localized family names on macOS Part of issue #99.

view details

push time in a month

issue commentservo/font-kit

Support resolving of default Windows fonts

I believe these font substitutes can be requested using GDI (CreateFontIndirect), but not using DirectWrite. So far we aren't using GDI, which can be important for sandboxed apps because GDI is in the kernel and DirectWrite is in userland.

What would you prefer we do here?

RazrFalcon

comment created time in a month

push eventservo/font-kit

Patrick Walton

commit sha d72176192b5a087c8f6a3a38ded1d53565be00b9

Fix some tests on Linux

view details

push time in a month

issue commentservo/pathfinder

Web Assembly port

Wow!

pcwalton

comment created time in a month

issue commentservo/font-kit

Consider separating font rendering and font matching into separate crates

There's now a source feature. If you leave it out, then sources will be excluded entirely. Feel free to reopen if you need more than this.

jrmuizel

comment created time in a month

push eventservo/font-kit

Patrick Walton

commit sha 269bf08145fbe8b9bcf9a48bb76bb590a467e653

Put all sources behind the `source` feature. Closes #89.

view details

push time in a month

issue closedservo/font-kit

Consider separating font rendering and font matching into separate crates

WebRender and Raqote don't need any of the font matching/searching code so it would be nice to have a separate font rendering crate.

closed time in a month

jrmuizel

pull request commentservo/pathfinder

fix simd for scalar platforms

Thanks!

s3bk

comment created time in a month

push eventservo/pathfinder

Sebastian K

commit sha de0f9055ed9c153c9db4b03883e65fd65fdd0a8c

fix scalar simd impls

view details

Patrick Walton

commit sha cd05eefac74d897cb3d34beb54958b01c8863069

Merge pull request #252 from s3bk/fix-simd fix simd for scalar platforms

view details

push time in a month

PR merged servo/pathfinder

fix simd for scalar platforms
+32 -2

2 comments

1 changed file

s3bk

pr closed time in a month

push eventpcwalton/font-kit

Patrick Walton

commit sha 9af5e966e4b904d4567ecd8c09c5b504cdaf0966

Point `pathfinder_geometry` and `pathfinder_simd` to crates.io! Oops!

view details

Patrick Walton

commit sha 7ff7971c25d86b23196ce67b7cb5dcace9e6111c

wip

view details

push time in a month

more