Commit graph

524 commits

Author SHA1 Message Date
Raph Levien b63df8e9b8 Fix android example
Updates the android example to use latest ash plumbing.
2022-10-17 20:30:57 -07:00
Raph Levien 69d16ac209 Fix ash and raw_window_handle breakage
Follow API changes introduced by ash, ash_window, and raw_window_handle.
Also updates ash_window to 0.12.

Note: this doesn't fix the android client.
2022-10-17 18:12:41 -07:00
Raph Levien 8e3df2573c Update dependencies
Update various dependencies to latest.
2022-09-21 17:26:02 -07:00
Chad Brokaw 9dd4559b00
Merge pull request #188 from dfrg/cpath
Expose path rendering in C API
2022-08-09 11:42:40 -04:00
Chad Brokaw 6b7f991da5
Merge pull request #185 from dfrg/xform2
Encode absolute transforms
2022-08-08 12:14:06 -04:00
Chad Brokaw 5a127e09a5 Expose path rendering in C API
* capi: Add PathIter type and support for encoding fills
* capi: Minimal support for brushes (solid color only)
* Add flush method to command buffers
* Better initial heuristic for memory buffer size based on target dimensions
2022-08-08 01:03:27 -04:00
Chad Brokaw 2e8be24fc9 fix fragment transform logic 2022-08-05 14:00:30 -04:00
Chad Brokaw d7773bf877 formatting 2022-07-16 16:49:18 -04:00
Chad Brokaw 2c258363ad restore tile.h to maintain sync with tile.rs 2022-07-16 16:48:04 -04:00
Chad Brokaw 8943fa7ea6 encode absolute transforms
This removes the GPU transform stage, changes shaders to reference transforms directly from the scene, and modifies the render context to maintain a transform stack.
2022-07-15 14:36:20 -04:00
Chad Brokaw e328bea0b8
Merge pull request #184 from dfrg/multi-surface
Separate Instance and Surface creation in HAL
2022-07-15 13:16:47 -04:00
Chad Brokaw d6ffe970f9 Make graphics support non-optional for Vulkan
This also removes the new present flag, deletes some commented code and explains the lack of surface validation in device selection.
2022-07-15 13:14:12 -04:00
Chad Brokaw fb952de1f3
Update piet-gpu/bin/android.rs
Co-authored-by: Raph Levien <raph.levien@gmail.com>
2022-07-15 12:49:40 -04:00
Chad Brokaw 007ec6cdc0 cargo fmt 2022-07-14 15:29:43 -04:00
Chad Brokaw f9bbb25a4b fix formatting 2022-07-14 15:08:18 -04:00
Chad Brokaw ffaf8b06a4 restore .gitignore 2022-07-14 15:07:29 -04:00
Chad Brokaw 58721dc5c2 fix new API use for android example 2022-07-14 15:03:27 -04:00
Chad Brokaw 8de34f8728 remove shader gen directories 2022-07-14 14:57:17 -04:00
Chad Brokaw af55dbfa4e make it work on mac/metal 2022-07-14 14:52:44 -04:00
Chad Brokaw 9626eaa19b separate instance and surface creation
This separates creation of Instance and Surfaces, allowing for rendering to multiple windows.
2022-07-14 14:46:46 -04:00
Commit by GitHub Action bbdd4432f5 commit compiled shaders 2022-07-14 14:28:45 +00:00
Commit by GitHub Action d529d3b0e8 merge from dev branch - dev 2022-07-14 14:28:25 +00:00
Raph Levien bfa4abf642
Merge pull request #181 from linebender/mem2
Implement robust dynamic memory
2022-07-14 07:27:38 -07:00
Raph Levien 78bdd08f01 Add ref_name to commit message 2022-07-14 07:25:18 -07:00
Commit by GitHub Action cac14a0aa7 merge from dev branch 2022-07-14 04:33:57 +00:00
Raph Levien d5b04a69dd
Merge pull request #183 from linebender/winit_0_26
Update winit to 0.26.1
2022-07-13 21:33:11 -07:00
Raph Levien 1a20fe78f6 Portability fixes
Makes the changes work on Windows and Android.
2022-07-13 17:43:28 -07:00
Raph Levien 61598d2da0 Gather timing statistics from RenderDriver
Also change command line binaries to use new abstraction.
2022-07-13 17:01:48 -07:00
Raph Levien 169f053003 Update winit to 0.26.1
This is mostly to silence security warnings about a nix vulnerability.
2022-07-13 12:45:17 -07:00
Raph Levien 9930c9d1de rustfmt 2022-07-13 12:35:21 -07:00
Raph Levien 240f44a228 Implement robust dynamic memory
This is the core logic for robust dynamic memory. There are changes to both shaders and the driver logic.

On the shader side, failure information is more useful and fine grained. In particular, it now reports which stage failed and how much memory would have been required to make that stage succeed.

On the driver side, there is a new RenderDriver abstraction which owns command buffers (and associated query pools) and runs the logic to retry and reallocate buffers when necessary. There's also a fairly significant rework of the logic to produce the config block, as that overlaps the robust memory.

The RenderDriver abstraction may not stay. It was done this way to minimize code disruption, but arguably it should just be combined with Renderer.

Another change: the GLSL length() method on a buffer requires additional infrastructure (at least on Metal, where it needs a binding of its own), so we now pass that in as a field in the config.

This also moves blend memory to its own buffer. This worked out well because coarse rasterization can simply report the size of the blend buffer and it can be reallocated without needing to rerun the pipeline. In the previous state, blend allocations and ptcl writes were interleaved in coarse rasterization, so a failure of the former would require rerunning coarse. This should fix #83 (finally!)

There are a few loose ends. The binaries haven't (yet) been updated (I've been testing using a hand-written test program). Gradients weren't touched so still have a fixed size allocation. And the logic to calculate the new buffer size on allocation failure could be smarter.

Closes #175
2022-07-13 12:34:51 -07:00
Commit by GitHub Action f6ea9308ba commit compiled shaders 2022-07-13 19:27:07 +00:00
Raph Levien 64e6268059 Remove generated shaders from dev branch 2022-07-13 12:22:11 -07:00
Raph Levien b77df99159
Merge pull request #178 from linebender/ci2
Shader compilation in GitHub Actions
2022-07-13 12:21:37 -07:00
Raph Levien 57b94a3bed
Merge pull request #180 from DJMcNab/pgpu_render_not_apple
Make `pgpu-render`  compile on non apple platforms
2022-07-13 12:10:47 -07:00
Raph Levien db49bed50c Doc improvements
Explain the shader compilation approach. Also add links while I'm at it.
2022-07-13 12:07:55 -07:00
Raph Levien a2f9e106cc Cover all generated shader directories
Also remove 'shader/gen' gitignore line in main (it's present in dev).
2022-07-13 11:22:04 -07:00
Raph Levien 52f1ab228b Merge branch 'main' into ci2 2022-07-13 10:40:46 -07:00
Raph Levien b8b4aad9c4
Merge pull request #179 from linebender/desc_update
Add HAL methods to update descriptor set
2022-07-11 08:25:38 -07:00
Daniel McNab 35fe9b4d1f Disable the android example when not compiling for android 2022-06-25 14:16:20 +01:00
Daniel McNab 28cbc8f199 Make pgpu-render compile on non apple platforms
Also add `resolver="2"` to the entire workspace, in case we gain a wgpu
dependency
2022-06-25 14:11:13 +01:00
Raph Levien b5b75cc42d Add Vulkan and DX12 backends to descriptor update 2022-06-23 15:44:42 -07:00
Raph Levien 95081971fe Add HAL method to update buffer descriptor
This is WIP because only the Metal implementation is added.

Part of the work for #175
2022-06-23 12:05:09 -07:00
Raph Levien 682e4b769f Shader compilation in GitHub Actions
This patch sets up very basic CI (right now just cargo fmt) but more importantly compiles shaders in a GitHub Action.

Any PR to branches other than main will run shader compilation. Any push to the dev branch will run shader compilation and then merge to main.

Closes #177
2022-06-16 21:19:39 -07:00
Raph Levien 60d197bb4e
Merge pull request #173 from linebender/blend_mem
Blend mem
2022-05-20 14:27:58 -07:00
Raph Levien 9df486ef35 Fix blend memory issues 2022-05-20 14:02:24 -07:00
Raph Levien 368954a643 Merge branch 'master' into blend_mem
This does the merge and also rebuilds the generated shaders.
2022-05-19 15:42:45 -07:00
Raph Levien a4299c1f02
Merge pull request #172 from linebender/query_pool_size
Fix query pool size
2022-05-19 15:39:31 -07:00
Raph Levien d62a40ea34
Update piet-gpu/bin/cli.rs
Co-authored-by: Chad Brokaw <cbrokaw@gmail.com>
2022-05-19 15:35:15 -07:00
Raph Levien 693ecd69e1 Make query pool size an associated constant 2022-05-19 15:28:46 -07:00