Commit graph

732 commits

Author SHA1 Message Date
Chad Brokaw f7b1bca18b fix gradient ramp color packing 2022-10-19 14:29:40 -04:00
Raph Levien 12fe2c10bc
Merge pull request #191 from linebender/version_bump
Update dependencies
2022-10-18 07:30:59 -07:00
Raph Levien c5d71b4349
Pare down winit features to reduce bloat
Co-authored-by: m-hugo <56653363+m-hugo@users.noreply.github.com>
2022-10-18 07:18:45 -07:00
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 a6597af52a macOS fixes
* Fix call to removed encoded_scene method in pgpu-render
* Add new ImageFormat::Surface variant to select a pixel format that matches the platform specific surface format. This makes gradients consistent across platforms.
2022-08-17 16:06:48 -04:00
Chad Brokaw 8ee317a922 format :( 2022-08-16 14:55:59 -04:00
Chad Brokaw 7fe022228a Make transforms stateless
Removes the transform state mutator from SceneBuilder and adds transform parameters to push_layer, fill and stroke methods.
2022-08-16 14:52:04 -04:00
Chad Brokaw cd25528abd make gradient ramps late bound
Removes ResourceContext type. This makes scenes and fragments nearly identical. Should they be merged?
2022-08-11 18:00:53 -04:00
Chad Brokaw 2e8781fbb6 Remove piet API & replace w/ fragments
Removes the dependency on the piet crate and replaces all uses with the scene crate.  Also does some cleanup of the scene API, renaming some types and moving them all to the crate root for better ergonomics.
2022-08-11 15:29:15 -04: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