Releases: SnowflakePowered/librashader
librashader 0.9.1
Version 0.9.1 has the canonical C ABI version 2, and API version 2.
librashader 0.9.1 contains some minor bugfixes and brings support for wgpu 27.
Notable Changes
- rt: clear render target before rendering on all runtimes (by @xzn)
- rt(vk): right-size descriptor pool (by @xzn)
- rt(wgpu): update wgpu to 27 (by @IsaacMarovitz)
- rt(d3d): update windows crate to 0.62
- deps: remove unused
imagesubdependencies
librashader 0.8.1
Version 0.8.1 has the canonical C ABI version 2, and API version 2.
librashader 0.8.1 fixes issues with runtime parameter enumeration and cache invalidation on Windows.
Notable Changes
- rt: Be more aggressive with cache invalidation, always fall back to uncached pipeline generation if any error occurs while reading from the cache
- rt: Properly enumerate valid runtime shader parameters, not just those defined in the
.slangp. - preprocess: Upgrade nom to 8.0
librashader 0.8.0
Version 0.8.0 has the canonical C ABI version 2, and API version 2.
librashader 0.8.0 updates the wgpu runtime to wgpu 25, and provides some foundational dependency updates with no functional runtime change.
Notable Changes
- rt(wgpu): Update to wgpu 25
- rt(mtl): Update to objc2 0.3
- rt(gl): Update to glow 0.18
This is a source-only release as wgpu is only available via the Rust API, and the other dependency updates have no functional change to their respective runtimes. The semver-breaking changes affect only the Rust API as per librashader's versioning policy.
librashader 0.7.1
Version 0.7.1 has the canonical C ABI version 2, and API version 2.
librashader 0.7.1 is a bugfix release that only affects wgpu. It fixes a panic when attempting to create a texture larger than DeviceLimits::max_texture_dimension_2d.
Notable Changes
- rt(wgpu): clamp texture size to device limits
This is a source-only release as wgpu is only available via the Rust API.
librashader 0.7.0
Version 0.7.0 has the canonical C ABI version 2, and API version 2.
librashader 0.7.0 updates to wgpu 24.
Notable Changes
- rt(wgpu): Update to wgpu 24
This is a source-only release as wgpu is only available via the Rust API.
librashader 0.6.3
Version 0.6.3 has the canonical C ABI version 2, and API version 2.
librashader 0.6.3 is a fix release to fix Rust nightly builds due to rust-lang/rust#128440.
Notable Changes
- rt: fix TAITs to use
define_opaqueto fix builds on nightly - build: bump nightly MSRV to 1.87
- presets: update to nom 8.0
This is a source-only release as this is only a build-time change.
librashader 0.6.2
Version 0.6.2 has the canonical C ABI version 2, and API version 2.
librashader 0.6.2 brings quite a few new features recently introduced in RetroArch, as well as a wealth of bugfixes. Beginning with the 0.6.x series, the wgpu runtime as a fully supported runtime alongside the Direct3D11/12, OpenGL, Vulkan, and Metal runtimes.
Note the API bump for the C API. API 2 enables the libra_preset_create_with_options API as well as frametime and aspect ratio uniforms.
Version 0.6.0 was skipped due to a release configuration error. Version 0.6.1 is identical to 0.6.2 except for some minor WGPU optimizations and doc fixes.
Notable Changes
- #150 fix: create a history queue if only
OriginalHistory1is used - #149 runtime: add
FrameTimeDelta,OriginalFPS,OriginalAspect, andOriginalAspectRotateduniforms- For these uniforms to work properly, the corresponding
ShaderFlagsin the Rust API orlibra_preset_create_with_optionsin the C API must be used to emit the requisite defines in the compiled shader. - Passing in an aspect ratio of
0will infer the aspect ratio from the original source. This behaviour will be overridden by any other value passed into frame options. - The
libra_preset_createandlibra_preset_create_with_contextC API functions are now deprecated but will continue to be available for backwards compatibility purposes.
- For these uniforms to work properly, the corresponding
- #144 preprocess: add support for
#pragma include_optional - #140 wgpu: update wgpu to 23 and promote to fully supported
- A lot of background work was needed to get here, including an
inversepolyfill added to naga in gfx-rs/wgpu#6385, and removingOpModffrom glslang outputs in KhronosGroup/glslang#3757. - FSR shaders are still explicitly unsupported as
ImageGatherparsing for SPIR-V is still unimplemented in naga. - Shaders such as Mega Bezel finally work with wgpu!
- A lot of background work was needed to get here, including an
- e93a9eb cache: delete the cache when loading the cache panics
- This will avoid shaders failing to load, requiring users to delete
%localappdata%\librashader\librashader.db.1on Windows.
- This will avoid shaders failing to load, requiring users to delete
Other Changes (0.6.2)
- #152 wgpu: reduce unnecessary
Arcclones
librashader 0.5.1
Version 0.5.1 has the canonical C ABI version 2, and API version 1.
0.5.1 is mostly a bug and docfix release to enable packaging on Debian 12 via rustc-web, as well as improving shader compatibility with the WGSL backend used in wgpu.
The 0.5.x series of releases is the first series of librashader releases since 0.1.0 with a bump in ABI version, and is thus ABI-incompatible with versions of librashader prior to 0.5.0. Trying to load this version of librashader if the application only supports ABI 1 will fail.
- If you are an end-user, please use librashader 0.4.5 until the developer has updated their application.
- If you are a developer, see MIGRATION-ABI2.md on how to update your application to support librashader ABI 2.
- If you are a package maintainer, you may want to postpone packaging librashader 0.5.1 until relevant applications have been updated. Note that the
SONAMEfor librashader 0.5.0 and above should belibrashader.so.2.
ABI 2 cleans up some inconsistencies across runtimes and makes viewport handling much easier and well defined.
Notable Changes
- 2fe66d9 reflect: order variables after type definitions in the link step to improve WGSL compatibility
- 562e1e5 doc: bump msrv to 1.78
Notable Changes from 0.5.0
- #129 cli: add a
librashader-clito interact with shader presets and source code.- See CLI.md for more details and usage notes
- presets: introduce the concept of a "shader pack", which is a JSON-serializable format for packaging a shader preset into a single file.
- A preset pack includes all required textures and preprocessed shader source files. This is a prerequisite for running librashader on environments without filesystems such as the web.
- All runtimes support loading from a
ShaderPresetPack, which implementsSerialize/Deserializewith theserdecrate feature. - Preset packs can be created with the
librashader-cli packcommand, but this format should not yet be considered stable. - There are no plans for a C API that works with preset packs directly.
- aeb0a16 vulkan: allow specifying the graphics queue to use
- OpenGL changes and improvements
- #102 Major ABI breaking changes to the C API
- 1e33b4c capi: make
viewportoptional and default to a viewport that spans the entire texture - 61fdaee capi(opengl): take
libra_gl_loader_tin filter chain constructor - f18c22a capi(d3d11): take
ID3D11ShaderResourceView*directly - 7a13136 capi(d3d12): allow passing
ID3D12Resource*directly without needing an externally allocated CPU descriptor
- 1e33b4c capi: make
- Direct3D performance optimizations and fixes
- b0df631 d3d9: load LUTs with BGRA8 ordering rather than ARGB8
- dbfa822 d3d9: disable alpha blending
- 7d483f2 d3d9: take viewport
IDirect3DSurface9by reference to avoidAddRef/Release - 2fe7702 d3d11: avoid
QueryInterfacewhen getting the dimensions of a texture - 7b7fd99 d3d11: take viewport
ID3D11RenderTargetViewby reference to avoidAddRef/Release - 3c20c83 d3d12: take
D3D12InputImagewithout changing the refcount - 7a13136 d3d12: allow the filter chain to optionally manage input/output descriptors
- c57e502 d3d12: reduce unnecessary refcount increment/decrement for resources that last the lifetime of the filter chain
librashader 0.5.0
Version 0.5.0 has the canonical C ABI version 2, and API version 1.
This is the first release since 0.1.0 with a bump in ABI version, and is thus ABI-incompatible with versions of librashader prior to 0.5.0. Trying to load this version of librashader if the application only supports ABI 1 will fail.
- If you are an end-user, please use librashader 0.4.5 until the developer has updated their application.
- If you are a developer, see MIGRATION-ABI2.md on how to update your application to support librashader ABI 2.
- If you are a package maintainer, you may want to postpone packaging librashader 0.5.0 until relevant applications have been updated. Note that the
SONAMEfor librashader 0.5.0 and above should belibrashader.so.2.
ABI 2 cleans up some inconsistencies across runtimes and makes viewport handling much easier and well defined.
Notable Changes
- #129 cli: add a
librashader-clito interact with shader presets and source code.- See CLI.md for more details and usage notes
- presets: introduce the concept of a "shader pack", which is a JSON-serializable format for packaging a shader preset into a single file.
- A preset pack includes all required textures and preprocessed shader source files. This is a prerequisite for running librashader on environments without filesystems such as the web.
- All runtimes support loading from a
ShaderPresetPack, which implementsSerialize/Deserializewith theserdecrate feature. - Preset packs can be created with the
librashader-cli packcommand, but this format should not yet be considered stable. - There are no plans for a C API that works with preset packs directly.
- aeb0a16 vulkan: allow specifying the graphics queue to use
- OpenGL changes and improvements
- #102 Major ABI breaking changes to the C API
- 1e33b4c capi: make
viewportoptional and default to a viewport that spans the entire texture - 61fdaee capi(opengl): take
libra_gl_loader_tin filter chain constructor - f18c22a capi(d3d11): take
ID3D11ShaderResourceView*directly - 7a13136 capi(d3d12): allow passing
ID3D12Resource*directly without needing an externally allocated CPU descriptor
- 1e33b4c capi: make
- Direct3D performance optimizations and fixes
- b0df631 d3d9: load LUTs with BGRA8 ordering rather than ARGB8
- dbfa822 d3d9: disable alpha blending
- 7d483f2 d3d9: take viewport
IDirect3DSurface9by reference to avoidAddRef/Release - 2fe7702 d3d11: avoid
QueryInterfacewhen getting the dimensions of a texture - 7b7fd99 d3d11: take viewport
ID3D11RenderTargetViewby reference to avoidAddRef/Release - 3c20c83 d3d12: take
D3D12InputImagewithout changing the refcount - 7a13136 d3d12: allow the filter chain to optionally manage input/output descriptors
- c57e502 d3d12: reduce unnecessary refcount increment/decrement for resources that last the lifetime of the filter chain
librashader 0.4.5
Version 0.4.5 has the canonical C ABI version 1, and API version 1.
This will likely be the final release supporting C ABI 1. This is mostly a bugfix release to squash remaining bugs before ABI 2 releases as 0.5.0.
Version 0.4.4 was skipped due to a release configuration error.
Notable Changes
- 57f2dab reflect: fixes handling of the
CurrentSubFrameuniform - 81840a9 reflect: fix
#pragma nameby inserting shader names as pass aliases. - cbe6510 preprocess: allow
stepparameter in#pragma parameterto be optional as per the slang shader spec - d6f8950 runtimes: only draw the final pass as feedback if used as feedback by the filter chain.
ABI Changes Incoming
The next release in the 0.5.x series will be C ABI-incompatible to clean up some inconsistencies in the C ABI.
See #102 for more details.