See https://github.com/gfx-rs/wgpu/issues/4915
Also:
* Remove unused vert-out frag-in variables from shaders (naga doesn't
like this probably because they are optimized out on the fragment
side). This restriction from naga may be relaxed in the future
see https://github.com/gfx-rs/wgpu/issues/3748.
* Enable OptimizationLevel::Performance for shaderc by default
* Add a environment variable VOXYGEN_SHADERC_OPTS for disabling this
(e.g. to test if it actually makes a difference on any platform).
(TODO: testing might be easier if there was a way to do toggle it
without restarting...)
* General progress in setting up code paths to support GPU
premultiplication.
* Created `PremultiplyUpload` type to represent an initiated image
upload where the premultiply pass needs to be ran to complete it.
* Converted from compute pass to render pass since current limitations
make it difficult to write directly to a srgb image from a compute
shader.
* Replace `CachedDetails::Immutable` with keeping track of the
parameters used to create the texture (i.e. the border color).
* Create `TextureRequirements`, `TextureParamters`, and `CacheKey` types
to encode parameters that go into texture creation and image caching
and to determine when the space in texture memory should be reused
when replacing a graphic.
* Add custom texture creation logic for the UI textures since those need
certain usage combinations.
- Implements mesh generation for cylinders and lines.
- Implements an Id-allocator so that clients can mutate positions efficiently.
- Is split into pipeline and scene modules.
- Contains simple shaders that just pass through a position and color.