Commit graph

693 commits

Author SHA1 Message Date
Raph Levien 418256ffd1 Start async wiring
Make async versions of the main library entry points, and invoke those from the with_winit example.

Right now this just prints the contents of the bump buffer before just running the fine dispatch, but it could apply conditional logic.
2023-01-24 21:09:00 -08:00
Raph Levien 17907893af Create Render struct
Separate coarse and fine stages as separate methods of Render struct.
2023-01-24 17:42:53 -08:00
Raph Levien e47c5777cc Make bind_map persistent
We'll be persisting some buffers across recordings, so make the mapping from id to actual resource scoped to the engine rather than a single `run_recording` call.

Part of the change is being explicit about which buffers to free and when. That will enable more fine-grained reuse of buffers, including within a recording.
2023-01-24 17:42:29 -08:00
Daniel McNab bf523e8845
Do another pass on the README (#258) 2023-01-23 16:27:42 +00:00
jneem 942da778a3
Merge pull request #261 from jneem/main
Allow selecting GPU from env
2023-01-21 15:33:42 -06:00
Joe Neeman 338bd30870 Allow selecting GPU from env 2023-01-21 14:30:40 -06:00
David Himmelstrup 9ba85075d4
example: SVG viewer based on usvg (#260) 2023-01-21 18:20:56 +00:00
Chad Brokaw b83642bf0c
Merge pull request #257 from linebender/robust-redux
Robust memory redux (GPU side only)
2023-01-19 12:00:07 -05:00
Chad Brokaw 0c0c61dc82 Address review feedback
* Add counts to offsets when comparing against buffer size limits
* Remove multiplication by 4 in blend buffer allocation (we use units of u32)
* Move buffer sizes from BumpAllocators to Config
* Add comments about early exit
2023-01-18 21:36:32 -05:00
Spencer C. Imbleau, M.Sc. (he/him) f36e455a90
ignore all target directories (#248) 2023-01-18 16:34:16 +00:00
Chad Brokaw db7d93b85c remove unnecessary limit adjustment 2023-01-17 22:56:52 -05:00
Chad Brokaw f0587b6770 add comment about syncing BumpAllocators struct 2023-01-17 22:51:46 -05:00
Chad Brokaw c66e7a270c
add comments for buffer sizes
Co-authored-by: Daniel McNab <36049421+DJMcNab@users.noreply.github.com>
2023-01-17 22:48:53 -05:00
Chad Brokaw 1f7ba765e9
comment typo
Co-authored-by: Daniel McNab <36049421+DJMcNab@users.noreply.github.com>
2023-01-17 22:48:11 -05:00
Chad Brokaw 1e8d194b6a initial GPU side work for robust memory
This should handle everything on the GPU side except for blend stack loading/storing in fine.
2023-01-17 14:08:20 -05:00
Chad Brokaw 3933c159a8
Merge pull request #256 from linebender/peniko-updates
Update for peniko changes and pin git rev
2023-01-17 13:01:11 -05:00
Chad Brokaw 5f6f9f444d bump peniko rev 2023-01-17 13:00:19 -05:00
Chad Brokaw 672f21cca7 pin moscato dep as well 2023-01-17 12:48:26 -05:00
Chad Brokaw ed28a6796f add Cargo.lock to .gitignore 2023-01-17 12:33:11 -05:00
Chad Brokaw 516fd6c981 Update for peniko changes
This applies updates for the gradient API in peniko and pins the git dependency so prevent further breakage. Also removes Cargo.lock.
2023-01-17 12:31:57 -05:00
Daniel McNab 3902e65618
Fix missing barriers in the pathtag_scans (#255)
Co-authored-by: Raph Levien <raph.levien@gmail.com>

Co-authored-by: Raph Levien <raph.levien@gmail.com>
2023-01-16 20:20:20 +00:00
Daniel McNab 44058a8578
Improve the svg parser (#247)
* Improve the svg parser

* Handle `opacity`

* Double the segments buffer

* Rotate the multiplication

This matches firefox's output, although it is contrary to my use
of 3d transformation matrices

* Double ptcl size

Seems to be required to show entire scene at 4k
2023-01-16 18:22:35 +00:00
Daniel McNab ed60031185
Add hot reloading of shaders to the winit example (#252) 2023-01-16 17:24:48 +00:00
Daniel McNab db4fc4e449
Give buffers names when buffer_labels feature is enabled (#254) 2023-01-16 17:16:45 +00:00
Spencer C. Imbleau, M.Sc. (he/him) c428e650d0
Merge pull request #249 from simbleau/clippy
Clippy fixes
2023-01-14 11:14:20 -05:00
Spencer C. Imbleau 4fc94a1d4b clippy fixes 2023-01-14 11:07:07 -05:00
Daniel McNab eec111c633
Support click and drag for svgs, as well as scene fragment caching (#244)
* Support caching the image, and click and drag motion

* Remove debug print

* Clean up examples to have command line parsing

* Address review comments
2023-01-13 19:30:08 +00:00
Raph Levien 02d8b28439
Merge pull request #245 from linebender/reuse_buf
Prototype of buffer reuse
2023-01-13 11:18:03 -08:00
Raph Levien 96bf4f377e
Merge pull request #246 from linebender/fix_even_odd
Fix even-odd rule
2023-01-13 09:28:43 -08:00
Raph Levien ed437f7ffc Rustfmt 2023-01-12 21:11:54 -08:00
Raph Levien 5c469013c7 Fix even-odd rule
This works with winding numbers even larger than 2.
2023-01-12 21:08:51 -08:00
Raph Levien 4907186de4 Prototype of buffer reuse
This helps performance but not all performance issues have been resolved. Nontrivial CPU goes into write_buffer, and it's also possible that there isn't enough overlapping between CPU and GPU work.
2023-01-12 20:43:58 -08:00
Chad Brokaw a9aa3f9cab
Merge pull request #242 from linebender/evenodd
Support even-odd fill rule
2023-01-11 14:13:24 -05:00
Raph Levien 3003e42acb
Merge pull request #235 from linebender/large_pathtag
Support for larger pathtags
2023-01-11 07:56:15 -08:00
Chad Brokaw c6ac5bf590 Support even-odd fill rule
Add logic for handling the even-odd fill rule to `SceneBuilder` and the coarse and fine shaders.
2023-01-10 15:22:04 -05:00
Raph Levien 5f45c2bdfb
Merge pull request #238 from linebender/roadmap
Draft roadmap
2023-01-10 11:19:15 -08:00
Raph Levien 89fd94e020 Better summary in introduction 2023-01-10 08:19:03 -08:00
Raph Levien e59a87c281 Editing improvements in response to feedback
This addresses most of the feedback other than the need to rework the opening paragraphs to be clearer to a casual observer.
2023-01-09 18:24:02 -08:00
Chad Brokaw c57db1d25b
Merge pull request #227 from rosefromthedead/multiadapter
Multi-adapter support
2023-01-09 17:29:14 -05:00
Rose Hudson c5401e777e Update winit example to use new multi-adapter API 2023-01-09 13:00:00 +00:00
Rose Hudson f0faadc356 Add multi-adapter support
some `RenderContext` stuff is now `DeviceHandle` stuff, and device
handles are created alongside surfaces to ensure compatibility, but are
reused if possible.

Fixes #224 wgpu Adapter and Surface might not be compatible
2023-01-09 13:00:00 +00:00
Chad Brokaw 3ea8eef839
Merge pull request #239 from linebender/new-encoding
Public encoding API
2023-01-08 18:41:09 -05:00
Chad Brokaw 3606184cf6 better naming 2023-01-08 18:36:14 -05:00
Chad Brokaw ec956d859b add function to render directly from an encoding 2023-01-08 18:34:22 -05:00
Chad Brokaw 520f6d0d41 Address review feedback.
* remove area clamp in fine (now in #241)
* make DrawTag::info_size() const fn
* document DrawColor rgba field
* change Monoid type parameter to an associated type and describe the additional Default constraint
* consistent parens in PathTag::is_subpath_end
* add comments for 32-bit path segment types in PathTag

* also adds low level encoding functions for the three currently supported brushes
2023-01-08 17:10:05 -05:00
Raph Levien 080277bcd9
Merge pull request #241 from linebender/fine_fixes
Fixes to fine rasterization
2023-01-08 13:50:51 -08:00
Duane Johnson 3e8a4813f0
Update references to piet-gpu where it makes sense (#240) 2023-01-08 16:15:51 +00:00
Raph Levien 29a16eb210 Fixes to fine rasterization
The area bug was found and fixed by @dfrg, and is adapted from #239. I wanted to move it to a separate PR so that one would be more focused on API.

The other bug is currently silent because the two quantities swapped are both 4, but it is triggered when experimenting with tuning for performance.
2023-01-08 07:41:01 -08:00
Raph Levien cd92a64ea0 Color code "train diagram"
Also add a bit of explanation.
2023-01-06 20:17:17 -08:00
Raph Levien 96a64f8abb
typo fix
Co-authored-by: Vincent Isambart <vincent.isambart@gmail.com>
2023-01-06 20:15:41 -08:00