Veedrac
6d8a89b8c5
Cleanup: remode redundant ops in tiles.rs
2020-05-11 21:47:39 +01:00
Veedrac
1c48e8900e
Faster sorting strategy, remove SortedVector
...
point_queue is only sorted by y coordinate to coordinate
work to one strip at a time. This is more efficiently handled
by punting later work into a next_point_queue,
and never explicitly sorting the data.
active_edges is only sorted by x coordinate for the tile-by-tile
work in process_old_active_edges. It is much more efficient
to sort once inside that function.
2020-05-11 21:47:35 +01:00
Patrick Walton
cbceee85e6
Merge pull request #336 from Veedrac/hidpi_fix
...
Fix non-integer HiDPI support in demo
2020-05-11 11:19:06 -07:00
Veedrac
faea46b9f6
Fix non-integer HiDPI support in demo
2020-05-11 13:14:54 +01:00
Patrick Walton
5ed26819bb
Merge pull request #331 from frewsxcv/frewsxcv-rect
...
Implement {Add,Sub,Mul}Assign for RectF
2020-05-10 21:33:47 -07:00
Patrick Walton
fc515f950f
Merge pull request #329 from frewsxcv/frewsxcv-colors
...
Promote ColorU functions to `const`.
2020-05-10 21:33:23 -07:00
Patrick Walton
116b528e4e
Merge pull request #330 from frewsxcv/frewsxcv-embedded
...
Switch to the embedded loader for the examples.
2020-05-10 21:33:04 -07:00
Corey Farwell
9f71feb545
Update main.rs
2020-05-09 12:49:43 -04:00
Corey Farwell
e993e350e2
Implement {Add,Sub,Mul}Assign for RectF
2020-05-08 21:25:45 -04:00
Corey Farwell
e1ec307b3f
Switch to the embedded loader for the examples.
2020-05-08 21:17:23 -04:00
Corey Farwell
e26338835b
Promote ColorU functions to `const`.
2020-05-08 21:09:38 -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