Corey Farwell
e1ec307b3f
Switch to the embedded loader for the examples.
2020-05-08 21:17:23 -04:00
Patrick Walton
aa1279d692
Merge pull request #328 from pcwalton/precision-highp
...
Only define `precision highp sampler2D` in OpenGL ES.
2020-05-08 17:16:35 -07:00
Patrick Walton
2ad02b0b78
Only define `precision highp sampler2D` in OpenGL ES.
...
Closes #309 .
2020-05-08 16:59:40 -07:00
Patrick Walton
1a37b7f819
Merge pull request #327 from pcwalton/glfw-c-example
...
Add an example showing how to use the Pathfinder C API with GLFW
2020-05-08 16:53:06 -07:00
Patrick Walton
feb6cca419
Merge pull request #326 from pcwalton/c-font-context-docs
...
Document `PFCanvasFontContextCreateWithFonts()`.
2020-05-08 15:10:07 -07:00
Patrick Walton
bbf4c88d0d
Add an example showing how to use the Pathfinder C API with GLFW
...
Closes #258 .
2020-05-08 15:09:21 -07:00
Patrick Walton
fd57193442
Merge pull request #325 from pcwalton/update-embedded
...
Update the resource manifest for recent changes
2020-05-08 14:33:53 -07:00
Patrick Walton
b669cc7087
Document `PFCanvasFontContextCreateWithFonts()`.
...
Closes #247 .
2020-05-08 14:27:41 -07:00
Patrick Walton
d039e9009e
Merge pull request #324 from pcwalton/metal-layer-non-macos
...
Provide a placeholder definition of `CAMetalLayer` in the C API.
2020-05-08 14:18:00 -07:00
Patrick Walton
84cd92aea4
Update the resource manifest for recent changes
2020-05-08 14:17:13 -07:00
Patrick Walton
9998fe49bd
Provide a placeholder definition of `CAMetalLayer` in the C API.
...
Closes #260 .
2020-05-08 14:07:06 -07:00
Patrick Walton
d3ceef749f
Merge pull request #323 from pcwalton/surfmanup
...
Upgrade to the latest master surfman
2020-05-08 13:17:52 -07:00
Patrick Walton
41c0c5f071
Upgrade to the latest master surfman
2020-05-08 12:47:58 -07:00
Patrick Walton
e4edb23360
Merge pull request #322 from pcwalton/surfman-x11
...
Switch to using surfman in X11 mode.
2020-05-08 12:45:32 -07:00
Patrick Walton
5362d3a51e
Merge pull request #321 from pcwalton/default-compute
...
Enable compute shader by default if the OpenGL version is high enough.
2020-05-08 12:28:41 -07:00
Patrick Walton
90fb36f199
Switch to using surfman in X11 mode.
...
Partially addresses #310 .
2020-05-08 12:22:46 -07:00
Patrick Walton
2421de6616
Enable compute shader by default if the OpenGL version is high enough.
2020-05-08 12:16:31 -07:00
Patrick Walton
e766721f37
Update `README.md`
2020-05-07 21:46:13 -07:00
Patrick Walton
46070914be
Merge pull request #320 from pcwalton/painting-nothing
...
Clear the canvas to the background color if no drawing command did so.
2020-05-07 21:45:23 -07:00
Patrick Walton
6299d2c36b
Clear the canvas to the background color if no drawing command did so.
...
Closes #318 .
2020-05-07 21:36:13 -07:00
Patrick Walton
371c853370
Merge pull request #319 from pcwalton/gl4
...
Add OpenGL 4.3 support to the GL backend, enabling compute shader on non-Metal platforms
2020-05-07 17:11:33 -07:00
Patrick Walton
520817e909
Add OpenGL 4.3 support to the GL backend, enabling compute shader on
...
non-Metal platforms
2020-05-07 16:33:03 -07:00
Patrick Walton
cfc1d44638
Merge pull request #317 from pcwalton/four-at-a-time
...
Use all four channels in the mask texture.
2020-05-07 09:55:30 -07:00
Patrick Walton
478008dcf0
Use all four channels in the mask texture.
...
Each bundle of four pixels on a scanline is packed into the RGBA channels of
the mask texture. The area LUT is also expanded to be RGBA so that four pixels'
worth of areas can be looked up at once.
Nice improvement on `paris-30k` from MPVG.
Closes #262 .
2020-05-05 13:11:37 -07:00
Patrick Walton
c7ce2153de
Merge pull request #316 from pcwalton/reduce-buffer-size
...
Reduce the size of buffers for performance
2020-05-05 13:11:06 -07:00
Patrick Walton
f8405d81c0
Bump the number of fills per batch up
2020-05-04 20:01:08 -07:00
Patrick Walton
6407bf5871
Reduce the size of buffers
2020-05-04 20:01:08 -07:00
Patrick Walton
a373a1fbc3
Merge pull request #315 from pcwalton/metal-timing
...
Reduce timing jitter in the Metal backend
2020-05-04 20:01:00 -07:00
Patrick Walton
0545d840db
Reduce timing jitter in the Metal backend
2020-05-04 19:11:50 -07:00
Patrick Walton
9ff3248e9e
Merge pull request #314 from pcwalton/size-classes
...
Generalize the buffer allocator to support multiple size classes, and use it for tile compositing too
2020-05-04 16:02:48 -07:00
Patrick Walton
d0842f2f4d
Generalize the buffer allocator to support multiple size classes, and use it
...
for tile compositing too.
2020-05-04 15:48:47 -07:00
Patrick Walton
da2f65ddf4
Fix `surfman` reference in `Cargo.toml`
2020-04-30 15:04:49 -07:00
Patrick Walton
b335f79f77
Remove references to SDL from the README
2020-04-30 13:43:23 -07:00
Patrick Walton
ac83f79d94
Add a compute shader path, optimize GPU memory management, and switch from SDL
...
to `surfman`.
This is a large commit; explanations of each change follow.
This adds an optional compute shader path, off by default, for rendering fills
to alpha masks. It usually does not improve performance at present, but it
provides a good baseline for further optimizations. Later improvements will
likely aim to avoid writes to the mask texture entirely. Supporting
infrastructure for compute shader has been added to `pathfinder_gpu` for the
OpenGL and Metal backends.
The Metal backend has been optimized to avoid unneccessary buffer allocations
and reflection. As part of this, argument buffers have been removed, as the
current SPIRV-Cross compiler no longer requires them.
The GPU renderer has been improved to avoid stalls. Now, separate buffers are
allocated for each fill batch and for each frame. This can be extended in the
future to allow for separate buffers for tile draw operations as well.
SDL usage has been removed in favor of the native Rust `surfman` and `winit`.
Because `surfman` allows for selection of the integrated GPU on multi-GPU
system, it is chosen by default. The demo supports a new
`--high-performance-gpu` option to opt into the discrete GPU.
2020-04-30 13:33:29 -07:00
Patrick Walton
84bf4341c2
Micro-optimize line fill primitive generation to avoid calls to `floorf()` and
...
`ceilf()`
2020-04-23 18:35:17 -07:00
Patrick Walton
24deb36e9a
Supply solid tiles with the appropriate filter.
...
Fixes `embrace.svg` in MPVG.
2020-04-22 12:53:35 -07:00
Patrick Walton
104869a6e9
Move the mask enable flag to the tile to reduce drawcall count
2020-04-22 11:04:16 -07:00
Patrick Walton
a9003fe69b
Add missing `tile_clip` shader to `resources`.
...
Closes #301 .
2020-04-22 09:13:42 -07:00
Patrick Walton
cd09177ead
Implement the infrastructure needed to support multiple clip paths.
...
This also lays the groundwork needed to reduce batch breaks between solid and
alpha tiles.
2020-04-21 18:25:20 -07:00
Patrick Walton
564533ff29
Switch from Rust MPSC channels to `crossbeam-channel`.
...
7x performance improvement in contour.svg from MPVG!
2020-04-21 09:57:47 -07:00
Patrick Walton
561582c0ac
Add SVG dashing support
2020-04-21 09:29:36 -07:00
Patrick Walton
6c996981a3
Fix some transform issues and implement transformed radial gradients in SVG.
...
In particular, this fixes the usvg-to-Pathfinder transform conversion and the
definition of `Transform2F::row_major()`.
Makes `drops.svg` from the MPVG samples work.
2020-04-20 16:40:02 -07:00
Patrick Walton
d8875efd61
Update build result flags (unsupported feature flags) in the SVG backend
2020-04-17 16:37:12 -07:00
Patrick Walton
d9a93a102c
Publish `pathfinder_svg` to crates.io
2020-04-17 13:57:04 -07:00
Patrick Walton
ef20671ab7
Publish `pathfinder_canvas` to crates.io
2020-04-17 13:50:36 -07:00
Patrick Walton
686773224c
Publish `pathfinder_text` to crates.io
2020-04-17 13:44:11 -07:00
Patrick Walton
1cd5966d3d
Publish `pathfinder_content` and `pathfinder_renderer` to crates.io
2020-04-17 13:23:45 -07:00
Patrick Walton
ccf9822e11
Fix `pathfinder_metal` crate description
2020-04-17 13:05:45 -07:00
Patrick Walton
adf87d7636
Bump the `pathfinder_color` version to 0.5 to match other crates
2020-04-17 13:00:43 -07:00
Patrick Walton
a91da6fdb4
Publish `pathfinder_resources` to crates.io
2020-04-17 12:33:22 -07:00
Patrick Walton
171fb21fe7
Switch back to upstream `skribo`
2020-04-17 12:15:55 -07:00
Patrick Walton
5819b8dc60
Stop reallocating texture pages every frame
2020-04-17 11:50:46 -07:00
Patrick Walton
07ce2a2536
Add a scene field to render target IDs to reduce the chance of misuse
2020-04-16 16:54:52 -07:00
Patrick Walton
0b43f629cd
Cache loaded fonts and glyph outlines.
...
Approximately a 70% CPU time improvement on the NanoVG demo.
2020-04-16 16:28:44 -07:00
Sebastian K
582f025c91
Update WebGL backend for recent changes
2020-04-16 12:02:42 -07:00
Patrick Walton
afe1a64f68
Allow multiple tile pages.
...
Closes #151 .
2020-04-15 20:13:37 -07:00
Patrick Walton
83c05e9f77
Improve the fidelity of the NanoVG demo some more
2020-04-14 18:49:47 -07:00
Patrick Walton
0fec0061e6
Clamp radial gradient t values to [0.0, 1.0] instead of rendering transparent
...
black
2020-04-14 16:13:32 -07:00
Patrick Walton
b1d8e0526e
Make some shadow blurs match the original NanoVG demo better
2020-04-14 16:13:12 -07:00
Patrick Walton
39f84b287d
Make the paragraph color and line height in the NanoVG demo match the original
...
more
2020-04-14 15:21:01 -07:00
Patrick Walton
5efdf2a04a
Implement the missing pieces of `TextMetrics` for canvas.
...
This required a `font-kit` upgrade, and with it a `skribo` upgrade.
2020-04-14 15:01:30 -07:00
Patrick Walton
b9b1472b6c
Resolve fill and stroke paints when filling and stroking text.
...
Makes text respect global alpha.
2020-04-14 10:08:11 -07:00
Patrick Walton
667a6c7c43
Fix definition of `TextBaseline::Middle`
2020-04-14 09:45:18 -07:00
Patrick Walton
cdbe2fbb6b
Introduce the concept of a base color in order to handle canvas shadow alpha
...
correctly
2020-04-13 18:31:25 -07:00
Patrick Walton
fda9b8b9e1
Make the clip example match the NanoVG example
2020-04-11 19:08:20 -07:00
Patrick Walton
3e9558957f
Add a shadow to the color wheel marker in the NanoVG demo
2020-04-11 19:08:00 -07:00
Patrick Walton
def7da5de2
Remove obsolete TODOs in the NanoVG demo
2020-04-11 19:07:50 -07:00
Patrick Walton
15101e90dd
Draw caret position in the NanoVG demo
2020-04-10 18:13:42 -07:00
Patrick Walton
ca0e9e9e14
Draw the paragraph gutter in the NanoVG demo
2020-04-10 16:00:25 -07:00
Patrick Walton
4f1d376fe5
Refactor paragraph layout in the NanoVG demo; fix BG/FG draw order
2020-04-10 15:30:12 -07:00
Patrick Walton
4365b75629
Treat negative hues correctly in HSL.
2020-04-10 13:48:31 -07:00
Patrick Walton
e598249186
Use column vector length to extract scale from matrices.
...
Closes #298 .
2020-04-10 13:38:25 -07:00
Patrick Walton
df08d76627
Make the color wheel animation in the NanoVG demo match NanoVG
2020-04-10 13:37:06 -07:00
Patrick Walton
ca36fed47b
Fix calculation of wallclock time in the NanoVG demo
2020-04-09 18:01:12 -07:00
Patrick Walton
47919db8f3
Fix frame time measurement in the GL backend, and add it to the NanoVG demo
2020-04-09 17:49:28 -07:00
Patrick Walton
19aa9c8e54
Only paint text backgrounds up to the appropriate width in the NanoVG demo
2020-04-09 12:33:16 -07:00
Patrick Walton
a196f1eff8
Fix spriting imperfections in the thumbnails in the NanoVG
2020-04-09 12:15:39 -07:00
Patrick Walton
0211296128
Publish version 0.1 of `pathfinder_color`
2020-04-09 10:36:04 -07:00
Patrick Walton
0399061a70
Bump versions of `pathfinder_simd` and `pathfinder_geometry`
2020-04-09 10:31:18 -07:00
Patrick Walton
55f89c4ffa
Merge pull request #293 from pyfisch/canvas-reexport
...
Re-export necessary items in pathfinder-canvas
2020-04-09 10:29:39 -07:00
Patrick Walton
205a63340c
Merge pull request #296 from servo/jdm-patch-1
...
Add arm64 CI and fix build errors
2020-04-09 10:28:55 -07:00
Patrick Walton
895f73096e
Switch back to instanced drawing for tiles.
...
Improves tile build time by something around 2x in the NanoVG demo.
2020-04-08 17:16:54 -07:00
Josh Matthews
3a8339fece
Allow dividing a Vector2F by an f32 value.
2020-04-07 15:36:46 -04:00
Josh Matthews
43adc9c24a
Fix arm I32x4 min/max operations that require on floating point values.
2020-04-07 15:35:03 -04:00
Josh Matthews
e87b330123
Add min/max to i32x2.
2020-04-07 12:42:28 -04:00
Josh Matthews
db205f71d6
Fix incorrect cast ordering in arm simd.
2020-04-07 12:31:28 -04:00
Josh Matthews
f2b668f9d7
Add missing import.
2020-04-07 12:28:37 -04:00
Josh Matthews
b28e04a22d
Install rustup target before building.
2020-04-07 12:06:26 -04:00
Josh Matthews
fe80bad31b
Build with nightly on CI.
2020-04-07 11:53:50 -04:00
Josh Matthews
a4c9b7ea3d
Only build certain crates.
2020-04-07 11:39:00 -04:00
Josh Matthews
22bab4f1e9
Add arm64 target with rustup.
2020-04-07 11:26:41 -04:00
Josh Matthews
2cd534609d
Add arm64 to CI.
2020-04-07 11:15:29 -04:00
Pyfisch
dfb035dec0
Re-export necessary items in pathfinder-canvas
...
Export types need to use the canvas API from other pathfinder crates.
From pathfinder-color all types and convinience functions are exported.
From pathfinder-geometry only the 2D vector and rect types with
their convinience functions are exported.
Items from pathfinder-renderer are not re-exported as they also
belong to the back-end.
Pattern, while used in the canvas API, is not re-exported as
it is not needed for basic usage and depends on a lot of other types.
See #283
2020-04-04 14:06:40 +02:00
Patrick Walton
941abd202e
Add the tooltip to the NanoVG demo
2020-04-03 15:38:14 -07:00
Patrick Walton
9d5dd7fd6a
Make text respect clip, blend mode, and opacity
2020-04-03 15:37:59 -07:00
Patrick Walton
b38f75a38d
Add line widths to the NanoVG demo
2020-04-03 14:51:37 -07:00
Patrick Walton
ad61b78e39
Remove box gradients from the NanoVG demo in favor of shadows
2020-04-03 14:33:00 -07:00
Patrick Walton
bba6aab0fe
Don't blur the entire canvas
2020-04-03 14:32:51 -07:00
Patrick Walton
eb2b622615
Remove `draw_render_target()` in favor of the standard tile-based rendering
...
path
2020-04-03 13:05:53 -07:00
Patrick Walton
cd37791d72
Implement the `drawImage()` method on canvas.
...
Closes #223 .
2020-04-02 16:30:49 -07:00