pathfinder/renderer/src
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
..
concurrent Switch from Rust MPSC channels to `crossbeam-channel`. 2020-04-21 09:57:47 -07:00
gpu Add a compute shader path, optimize GPU memory management, and switch from SDL 2020-04-30 13:33:29 -07:00
allocator.rs Add a compute shader path, optimize GPU memory management, and switch from SDL 2020-04-30 13:33:29 -07:00
builder.rs Add a compute shader path, optimize GPU memory management, and switch from SDL 2020-04-30 13:33:29 -07:00
gpu_data.rs Add a compute shader path, optimize GPU memory management, and switch from SDL 2020-04-30 13:33:29 -07:00
lib.rs Rename "postprocessing" to "effects" and start initial work on composite ops 2020-02-20 14:22:07 -08:00
options.rs Add a 3D vector type 2019-12-07 11:52:35 -08:00
paint.rs Fix some transform issues and implement transformed radial gradients in SVG. 2020-04-20 16:40:02 -07:00
scene.rs Stop reallocating texture pages every frame 2020-04-17 11:50:46 -07:00
tile_map.rs Add convenience constructors: `vec2f`, `vec2i`, `Vector2F::zero()`, 2020-03-31 11:29:21 -07:00
tiles.rs Move the mask enable flag to the tile to reduce drawcall count 2020-04-22 11:04:16 -07:00
z_buffer.rs Supply solid tiles with the appropriate filter. 2020-04-22 12:53:35 -07:00