Skip to content

Releases: SnowflakePowered/librashader

librashader 0.2.4

01 Mar 06:46
Compare
Choose a tag to compare

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

This is a bugfix release to fix building the librashader-reflect crate standalone. There were some minor optimizations to the Vulkan and Direct3D 12 runtimes.

Notable Changes

  • f61bed3 vulkan: remove unneeded Arc<ash::Device> handles
  • 752417f vulkan: switch from an RwLock to a Mutex for holding the allocator lock
  • 10ad2d9 d3d12: make the descriptor heap allocator lock free
  • 7719b93 d3d11: upgrade to windows 0.52.0
  • 8a9adeb d3d12: upgrade to windows 0.52.0

Full Changelog: librashader-v0.2.3...librashader-v0.2.4

librashader 0.2.3

24 Feb 17:45
Compare
Choose a tag to compare

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

This is a bugfix release to re-export MSL targets in the librashader crate. There were some minor micro-optimizations to the vertex input attributes that should not affect runtime performance in a noticeable way.

This is a source-only release due to changes not affecting runtime performance in any noticeable way.

Notable Changes

  • b378c45 metal: export MSL target in librashader crate
  • c7d1d34 runtime: unify DrawQuad input struct

Full Changelog: librashader-v0.2.2...librashader-v0.2.3

librashader 0.2.2

19 Feb 22:11
Compare
Choose a tag to compare

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

This is a bugfix release that allows the D3D12 runtime to work without dxil.dll. Starting from this release, unused inputs are trimmed to help with compatibility across different shader runtimes.

Notable Changees

  • 50aa582 d3d12: fakesign compiled shaders to work without dxil.dll
  • e8eee02 reflect: always trim unused inputs from fragment shader

Full Changelog: librashader-v0.2.1...librashader-v0.2.2

librashader 0.2.1

17 Feb 08:07
Compare
Choose a tag to compare

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

This is a bugfix release that addressed a viewport bug in wgpu as well as aligning offscreen pass behaviour for OpenGL with other runtimes.

Notable changes

  • fe84e6a gl: use the identity matrix for intermediate passes to align behaviour with other runtimes
  • 913ede3 wgpu: properly set the viewport depth minimum

Notable changes from 0.2.0

  • #24 wgpu: add a wgpu runtime by @chyyran
  • #24 metal: add a Metal runtime by @chyyran
  • #37 presets: add support for preset path wildcards by @chyyran
  • #43 reflect: support scale = "original", Rotation, FinalSubFrame, CurrentSubFrame shader semantics by @chyyran
  • #44 reflect(glsl): don't unset vertex input positions (fixes OpenGL on macOS) by @chyyran
  • #36 build: update build-script to support macOS and non-linux unixes by @LukeUsher
  • #34 reflect: replace shaderc with glslang directly by @chyyran
  • #21 build: update spirv-to-dxil-sys to remove mesa build reqs by @chyyran
  • #32 build: build packages for some Linux distributions
  • vulkan: bugfixes and improvements by @chyyran
    • 363657d vulkan: make dynamic rendering disabled-by-default
    • b47b27f vulkan: update gpu-allocator
    • 3d74f27 vulkan: fix double free in RawVulkanBuffer
    • b796494 build: don't link to libvulkan

Breaking changes compared to 0.1.4

363657d makes Render Passes the default rendering mode on Vulkan and makes dynamic rendering opt-in. This is an API breaking change and will affect existing users using the Vulkan C API. This does not break ABI and users with VK_KHR_dynamic_rendering support will notice no difference, but users on Vulkan 1.2 and later GPUs will need to stay on librashader 0.1.4, or the application needs to be updated with new librashader.h headers.

If you are an existing user of librashader that is unable to update your application, and this is affecting your users please file an issue. There are mechanisms in place to restore the previous API via the API-versioning mechanism but they were not implemented due to a belief that few users of librashader are currently using the Vulkan C API, and a decision was made to reduce code complexity rather than add in API-preserving behaviour.

Rust users are not considered affected due to the different versioning policies between the Rust and C APIs.

Full Changelog: librashader-v0.1.4...librashader-v0.2.1

librashader 0.2.0

16 Feb 23:33
Compare
Choose a tag to compare

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

The notable changes for this release include wgpu and Metal runtimes, support for new scaling options, and preset path wildcards.

Breaking changes

363657d makes Render Passes the default rendering mode on Vulkan and makes dynamic rendering opt-in. This is an API breaking change and will affect existing users using the Vulkan C API. This does not break ABI and users with VK_KHR_dynamic_rendering support will notice no difference, but users on Vulkan 1.2 and later GPUs will need to stay on librashader 0.1.4, or the application needs to be updated with new librashader.h headers.

If you are an existing user of librashader that is unable to update your application, and this is affecting your users please file an issue. There are mechanisms in place to restore the previous API via the API-versioning mechanism but they were not implemented due to a belief that few users of librashader are currently using the Vulkan C API, and a decision was made to reduce code complexity rather than add in API-preserving behaviour.

Rust users are not considered affected due to the different versioning policies between the Rust and C APIs.


Notable changes

  • #24 wgpu: add a wgpu runtime by @chyyran
  • #24 metal: add a Metal runtime by @chyyran
  • #37 presets: add support for preset path wildcards by @chyyran
  • #43 reflect: support scale = "original", Rotation, FinalSubFrame, CurrentSubFrame shader semantics by @chyyran
  • #44 reflect(glsl): don't unset vertex input positions (fixes OpenGL on macOS) by @chyyran
  • #36 build: update build-script to support macOS and non-linux unixes by @LukeUsher
  • #34 reflect: replace shaderc with glslang directly by @chyyran
  • #21 build: update spirv-to-dxil-sys to remove mesa build reqs by @chyyran
  • #32 build: build packages for some Linux distributions
  • vulkan: bugfixes and improvements by @chyyran
    • 363657d vulkan: make dynamic rendering disabled-by-default
    • b47b27f vulkan: update gpu-allocator
    • 3d74f27 vulkan: fix double free in RawVulkanBuffer
    • b796494 build: don't link to libvulkan

New Contributors

Full Changelog: librashader-v0.1.4...librashader-v0.2.0

librashader-v0.2.0-rc.2

15 Feb 02:30
Compare
Choose a tag to compare
Pre-release

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

If no issues are found, this release will be promoted to 0.2.0 on 2024-02-18


Notable changes since v0.2.0-rc.2

  • 350508a preprocess: strip #pragma parameter before compilation
  • b47b27f vulkan: update gpu-allocator
  • edca0f1 metal: only generate mipmaps if mipmap size is greater than 1
  • efdfd56 metal: don't allow buffer size of 0 to be created
  • cbac011 wgpu: only reflect active ubo/push members
  • c0ecae8 wgpu: run a link step on spirv to remove unused inouts

Full Changelog: librashader-v0.2.0-rc.1...librashader-v0.2.0-rc.2

0.2.0-rc.1

14 Feb 23:41
Compare
Choose a tag to compare
0.2.0-rc.1 Pre-release
Pre-release

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

The notable changes for this release include wgpu and Metal runtimes, support for new scaling options, and preset path wildcards.


Notable changes

  • #37 presets: add support for preset path wildcards by @chyyran
  • #24 wgpu: add a wgpu runtime by @chyyran
  • #24 metal: add a Metal runtime by @chyyran
  • #43 reflect: support scale = "original", Rotation, FinalSubFrame, CurrentSubFrame shader semantics by @chyyran
  • #44 reflect(glsl): don't unset vertex input positions (fixes OpenGL on macOS) by @chyyran
  • #36 build: update build-script to support macOS and non-linux unixes by @LukeUsher
  • #34 reflect: replace shaderc with glslang directly by @chyyran

New Contributors

Full Changelog: librashader-v0.2.0-beta.2...librashader-v0.2.0-rc.1

0.2.0-beta.2

02 Feb 17:46
Compare
Choose a tag to compare
0.2.0-beta.2 Pre-release
Pre-release

What's Changed

  • nightly maintenance for rustc 1.73 by @chyyran in #19
  • build: update spirv-to-dxil-sys to reduce mesa build reqs by @chyyran in #21
  • build: prefer linking shaderc statically by @chyyran in #23

Full Changelog: librashader-v0.1.4...librashader-v0.2.0-beta.2

librashader 0.1.4

24 Apr 04:07
Compare
Choose a tag to compare

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

Notable changes

  • 3e144bb Allow unbalanced quotes to fix parsing of some Duimon presets
  • 020fac8 Upgrade windows crate to 0.48.0, fixing minor leakages of D3D12 handles.
  • 24f28bb Wrap C API functions in a panic handler to avoid unwinding over an FFI boundary
    • Hot path _frame functions do not have this safety guard to maintain performance

Full Changelog: librashader-v0.1.3...librashader-v0.1.4

librashader 0.1.3

22 Feb 06:39
Compare
Choose a tag to compare

This is a bugfix release to fix a regression introduced in 8ed244f where all samplers were set to linear.

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

Notable changes

  • 650aecb d3d12/d3d11: fix sampler set creation to not always set linear