Skip to content

Releases: SnowflakePowered/librashader

librashader 0.1.1

19 Feb 20:50
Compare
Choose a tag to compare

This is a bugfix release to allow environments without D3D12 requirements to load librashader.

Version 0.1.1 has the canonical C ABI version 1, and API version 0.

Notable changes

  • 284e0e2 capi: emit delayload link arg for D3D12 dependencies (fixes #11)

librashader 0.1.0

18 Feb 06:14
Compare
Choose a tag to compare

librashader 0.1.0 is a promotion of RC 7 to versioned status.

With the release of 0.1.0, librashader adopts the versioning policy stated here.

Version 0.1.0 has the canonical C ABI version 1, and API version 0.

Notable Changes since Beta

  • Direct3D 12 runtime
  • Multithreaded preset compilation.
  • #10 Shader and pipeline state object caching

  • 07fac4d LUTs are now loaded with multiple threads
  • e2e6357 Parse preset #references depth first, fixes most presets that override default presets
  • b81f415 Vulkan: Fix lifetime leakage soundness issues with build when using ash in the Vulkan runtime.
  • dffea95 The restriction on only allowing a uniform to be bound to either the UBO or push constants has been lifted. This was causing problems for shaders that bound a uniform to the UBO in the vertex shader, but a push constant in the fragment shader, causing inaccurate rendering or just refusing to load.
  • 92caad2 Output framebuffers were not correctly scaled and caused a lot of shaders to have incorrect output if the source image size was different from the output image size.
  • 5ffcf00 D3D11: The blend state wasn't set properly in Direct3D 11 so some shaders would just render a black texture.
  • Direct3D 11, 12, and Vulkan now use the identity MVP with to render intermediate passes.
  • 43b7d6f Some shaders in the slang-shaders repository are saved as Latin-1/Windows-1252 encoding rather than UTF-8, this change adds support for reading those shaders.
  • 3db89e5 The quad VBO is bound only once per frame rather than per-pass for improved performance.
  • 48a1b28 Path resolution logic in the preset parser was fixed and a bunch of hacks were added to better support poorly written presets.
  • c5b2b50 D3D11: Disable CPU access by default on textures to improve performance.
  • fb827b7 Vulkan environments without dynamic rendering are now supported.
  • 6cb2859 Presets now default to nearest neighbour rather than linear scaling when unspecified.

librashader v0.1.0-rc.7

17 Feb 06:37
Compare
Choose a tag to compare
Pre-release

Couple of micro-optimizations and tweaks that should help performance. Also marked Rust filter chain APIs as explicitly unsafe.

If no further issues are found, this release will be promoted to 0.1.0 on 2023/2/18.

Full Changelog: https://github.com/SnowflakePowered/librashader/commits/librashader-v0.1.0-rc.7

librashader 0.1.0-rc.6

16 Feb 06:40
Compare
Choose a tag to compare
Pre-release

RC 4 skips a release due to a soundness issue discovered in the Vulkan runtime that needed a hotfix in RC 5. RC 6 is a pure documentation release to fix building docs on docs.rs and has no other visible changes compared to RC5.

Notable Changes since RC 3

  • #10 Shader and pipeline state object caching (API breaking, because we're still in RC)
  • 07fac4d LUTs are now loaded with multiple threads
  • e2e6357 Parse preset #references depth first, fixes most presets that override default presets
  • b81f415 Vulkan: Fix lifetime leakage soundness issues with build when using ash in the Vulkan runtime.

librashader v0.1.0-rc.3

13 Feb 05:50
Compare
Choose a tag to compare
Pre-release

Starting with RC 3, librashader distributions come in two flavours

  • debug
  • optimized

The debug build comes with debug symbols in the binary. optimized should be used for distribution.
This release does not have an optimized build because Vulkan builds were broken with LTO on until b81f415.

Notable changes since RC 2

Mostly bug fixes and ABI-breaking QOL improvements in the C API before releasing a numbered release, and improved multithreaded capabilities to allow asynchronous filter chain creation. D3D12 mipmap fixes bring the D3D12 runtime to rendering parity with the rest of the runtimes.

The D3D11 API had to be broken to allow this, and no longer keeps an internal deferred context. The new API is more like the Vulkan or D3D12 implementations where a ID3D11DeviceContext can be passed to frame. If NULL is passed, then it defaults to the immediate context for the old default behaviour.

  • 0cb6f6a d3d11: Be deferred context agnostic in frame
  • 55e800b d3d12: Fix mipmaps of intermediate passes
  • f2357f9 d3d12: Fix format fallback when mipmaps are needed
  • abadfb3 d3d12: Compile the mipmap shader with Dxc
  • 3c15a3a Fix calculation of required history framebuffers
  • 009e740 vk: Use gpu-allocator for memory management
  • fa6cd87 vk/d3d11/d3d12: Allow deferring GPU-side initialization of filter chains
  • bc45729 Replace cargo post with a custom build script
  • QOL improvements in the C API
    • 2b250db Make _opt structs more forwards compatible by adding an explicit API version field
    • d925dc9 Add a helper to ensure ABI compatibility between loaded versions
    • cff4f65 Add a loader flag to check if the instance is loaded

v0.1.0-rc.2

09 Feb 05:23
Compare
Choose a tag to compare
v0.1.0-rc.2 Pre-release
Pre-release

Notable changes since beta

  • Direct3D 12 runtime
  • Multithreaded preset compilation.
  • dffea95 The restriction on only allowing a uniform to be bound to either the UBO or push constants has been lifted. This was causing problems for shaders that bound a uniform to the UBO in the vertex shader, but a push constant in the fragment shader, causing inaccurate rendering or just refusing to load.
  • 92caad2 Output framebuffers were not correctly scaled and caused a lot of shaders to have incorrect output if the source image size was different from the output image size.
  • 5ffcf00 D3D11: The blend state wasn't set properly in Direct3D 11 so some shaders would just render a black texture.
  • Direct3D 11, 12, and Vulkan now use the identity MVP with to render intermediate passes.
  • 43b7d6f Some shaders in the slang-shaders repository are saved as Latin-1/Windows-1252 encoding rather than UTF-8, this change adds support for reading those shaders.
  • 3db89e5 The quad VBO is bound only once per frame rather than per-pass for improved performance.
  • 48a1b28 Path resolution logic in the preset parser was fixed and a bunch of hacks were added to better support poorly written presets.
  • c5b2b50 D3D11: Disable CPU access by default on textures to improve performance.
  • fb827b7 Vulkan environments without dynamic rendering are now supported.
  • 6cb2859 Presets now default to nearest neighbour rather than linear scaling when unspecified.

librashader-v0.1.0-beta.8

22 Jan 06:02
Compare
Choose a tag to compare

librashader-v0.1.0-beta.4

15 Jan 01:57
Compare
Choose a tag to compare

librashader 0.1.0-beta.1

14 Jan 08:14
Compare
Choose a tag to compare