mirror of
https://github.com/EmbarkStudios/rust-gpu.git
synced 2024-10-30 05:52:39 +00:00
16 KiB
16 KiB
rust-gpu
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added ⭐
- PR#959 added two
spirv-builder
environment variables to customize only therustc
invocations for shader crates and their dependencies:RUSTGPU_RUSTFLAGS="..."
for shaderRUSTFLAGS="..."
RUSTGPU_CODEGEN_ARGS="..."
for shader "codegen args" (i.e.RUSTFLAGS=-Cllvm-args="..."
)
(check out the "codegen args" docs, or run withRUSTGPU_CODEGEN_ARGS=--help
to see the full list of options)
- PR#940 integrated the experimental
SPIR-🇹
shader IR framework into the linker
(opt-in viaRUSTGPU_CODEGEN_ARGS=--spirt
, see also the--spirt
docs, for more details)
Changed 🛠️
- PR#958 updated toolchain to
nightly-2022-10-29
- PR#941 applied workspace inheritance to
Cargo.toml
files - PR#959 moved
rustc_codegen_spirv
debugging functionality from environment variables to "codegen args" options/flags (see the updated docs for more details) - PR#967 made
--dump-*
"codegen args" include identifying information (e.g. crate names) in the names of files they emit
Removed 🔥
- PR#946 removed the
fn
/closure#[spirv(unroll_loops)]
attribute, as it has no users, is becoming non-trivial to support, and requires redesign for better ergonomics (e.g.#[spirv(unroll)]
applied to individual loops, not the wholefn
/closure)
[0.4.0-alpha.17]
Fixed 🩹
- PR#937 fixed Rust-GPU crates not referring to each-other by exact version
- PR#937 fixed
spirv-std
referring to an older version ofspirv-std-macros
[0.4.0-alpha.16]
Added ⭐
- PR#935 added check for environment variable
RUSTGPU_SKIP_TOOLCHAIN_CHECK
to prevent toolchain check
Changed 🛠️
- 🚨BREAKING🚨 #926 migrated from
register_attr
toregister_tool
. More information. - PR#935 updated toolchain to
nightly-2022-10-01
- PR#934 updated
glam
to0.22
- PR#928 updated
spirv-tools
to0.9
(SPIRV-Tools2022.4
)
Removed 🔥
- PR#934 Removed
glam::BVec
support (they are no longer#[repl(simd)]
inglam
, as Rust doesn't support SIMD vectors withbool
elements)
Fixed 🩹
- PR#927 re-taught Cargo to rebuild shader crates when
rustc_codegen_spirv
is rebuilt, via-Zbinary-dep-depinfo
(broken since a toolchain update in0.4.0-alpha.13
, and has been causing spurious build failures ever since)
[0.4.0-alpha.15]
Added ⭐
- PR#919 added a build-time check for the nightly toolchain version, to provide user-friendly error messages
Changed 🛠️
- PR#918 updated toolchain to
nightly-2022-08-29
[0.4.0-alpha.14]
Changed 🛠
- PR#904 renamed helper
spirv-types
crate tospirv-std-types
[0.4.0-alpha.13]
Added ⭐
- PR#717 added
noreturn
support to inlineasm!
- PR#742 added a
spirv-builder
option to include all debug info - PR#787 documented
Cargo.toml
[profile.⋯.build-override]
setting for avoiding slow builds - PR#830 added a
spirv-builder
option to preserve unused descriptor bindings - PR#875 added warnings for
#[inline(never)]
s the inliner doesn't respect (for legalization reasons) - PR#848 added
#[spirv(subgroup_local_invocation_id)]
built-in (and anexamples/shaders/reduce
compute shader) - new
spirv-std
APIs:ByteAddressableBuffer
#735,SampledImage::sample_by_lod
#755,arch::read_clock_khr
#757,arch::{signed,unsigned}_{min,max}
#763,debug_printf!
#768,arch::*memory_barrier*
#769,arch::IndexUnchecked
#805,RayQuery::confirm_intersection
#822,arch::atomic_i_increment
#839,arch::atomic
#877
Changed 🛠
- PR#743 set the SPIR-V "generator magic number" to the value reserved for Rust-GPU
- PR#761 made
spirv-std
build on stable Rust by avoidingenum
s inconst
-generics - PR#784 documented
spirv-std
throughout - PR#862 updated toolchain to
nightly-2022-04-11
- PR#846 updated
spirv-tools
to0.8
(SPIRV-Tools2022.1
) - PR#888 widened the supported
glam
version range to0.17
-0.21
Fixed 🩹
- PR#729 fixed #723 by explicitly allowing unused shader inputs/outputs in storage class inference
- PR#732 fixed
rustc
ICE messages being truncated withrustc_codegen_spirv
(broken since a toolchain update in0.4.0-alpha.12
) - PR#737 fixed #642 by re-adding
-Zsymbol-mangling-version=v0
(for generic parameters infn
names) - PR#766 fixed #373 and #731 by hooking
rustc
to limit function call ABIs to what Rust-GPU supports - PR#793 fixed #748 by supporting SPIR-V
1.4
's changed entry-point rules - PR#844 fixed #836 by making newtypes (e.g. single-field structs) wrapping
ScalarPair
s (e.g.(u32, u32)
or&[T]
) have the same SPIR-V type as their inner field
[0.4.0-alpha.12]
Added ⭐
- PR#704 added
Image::gather
andImage::sample_bias
tospirv-std
- PR#709 added float packing/unpacking operations to
spirv-std
Changed 🛠
- PR#716 updated toolchain to
nightly-2021-08-10
Removed 🔥
- PR#710 removed "implicit bindless" and kernel modes
[0.4.0-alpha.11]
Changed 🛠
- PR#702 updated
glam
to0.17
[0.4.0-alpha.10]
Added ⭐
- PR#655 added a
watch
feature tospirv-builder
for hot reloading shaders - PR#652 documented
Image!
in the Rust-GPU book - PR#660 added a
spirv-builder
option to name globalOpVariables
- PR#662 added type aliases for common uses of
Image!
- PR#683 added a
spirv-builder
option to treat warnings as errors
Changed 🛠
Removed 🔥
- PR#666 removed
arch::arithmetic
fromspirv-std
[0.4.0-alpha.9]
Fixed 🩹
- fixed miscompilation in peephole optimizations (see PR#646)
[0.4.0-alpha.8]
Added ⭐
- PR#608 added
Image::query_*
operations tospirv-std
- PR#610 added
spirv-builder
support for enabling extra extensions and/or capabilities - PR#612 added
is_helper_invocation
tospirv-std
- PR#624 added
OpTypeSampler
andOpTypeAccelerationStructureKHR
support to inlineasm!
- PR#622 added the ability to query entry-point names from
spirv-builder
- PR#630 added a more convenient API to
spirv-builder
, for requesting extensions and/or capabilties - PR#629 added an optimization to convert N identical scalar (e.g. arithmetic) ops, into one N-wide vector op (as e.g.
glam
only emits the former) - PR#596 added a
RuntimeArray
type tospirv-val
, to represent SPIR-VOpRuntimeArray
s - PR#635 added several
spirv-builder
options for controllingspirv-val
flags - PR#643 added
Image::read_subpass
tospirv-std
Changed 🛠
- PR#616 updated
spirv-tools
to0.6.1
and turned on emission of line-based debug info - PR#631 updated toolchain to
nightly-2021-05-24
- PR#641 made
spirv-std
depend onglam
(0.15.2
), instead of the other way around
[0.4.0-alpha.7]
Fixed 🩹
- PR#607 removed accidental use of
feature(or_patterns)
(recently stabilized, only on nightly)
[0.4.0-alpha.6]
Added ⭐
- PR#586 added support for constant memory (
&'static _
references), within the limits of SPIR-V - PR#559 added the ability to set a Rust "target triple" in
spirv-builder
(e.g."spirv-unknown-vulkan1.1"
for Vulkan1.1
) - PR#563 added
SPV_KHR_ray_tracing
APIs tospirv-std
- PR#572 added
SPV_KHR_ray_query
APIs tospirv-std
- PR#359 added a
const
-genericImage
type, andImage!
macro wrapping it (to add "named parameters"), tospirv-std
Changed 🛠
Fixed 🩹
- PR#594 fixed #585 by explicitly banning
Image
/Sampler
/SampledImage
entry-point parameters not behind references - PR#598 fixed #581 by switching
memory::Semantics
from anenum
to abitflags!
, inspirv-std
[0.4.0-alpha.5]
Removed 🔥
- PR#583 removed
memcmp
fromspirv-std
[0.4.0-alpha.4]
Added ⭐
- PR#519 added
memory_barrier
andcontrol_barrier
tospirv-std
Changed 🛠
- PR#567 removed the need to manually specify the storage class for
Image
/Sampler
/ImageSampler
entry-point parameters
Deprecated 🚧
- PR#576 deprecated
#[spirv(block)]
in favor of automatically wrapping the user types in "interface blocks"
[0.4.0-alpha.3]
Added ⭐
- PR#551 added multi-module (one SPIR-V module per entry-point) support to
spirv-builder
- PR#504 added basic support for unsized
struct
s (e.g. ending with a[T]
field) - PR#545 added
Image
methods for sampling depth reference and/or with project coordinate, tospirv-std
[0.4.0-alpha.2]
Added ⭐
- PR#541 added
#[spirv(invariant)]
(like theinvariant
keyword in GLSL)
Fixed 🩹
- made
arch::derivative
functions public, inspirv-std
[0.4.0-alpha.1]
Added ⭐
- PR#498 added
sample_by_lod
/sample_by_gradient
image methods tospirv-std
- PR#521 added
Cubemap
tospirv-std
- PR#520 added
arch::primitive
functions tospirv-std
Changed 🛠
- PR#496 updated
spirv-tools
to0.5.0
- PR#516 updated toolchain to
nightly-2021-03-21
- PR#443 replaced
spirv_std::storage_class
"named pointer types" with#[spirv(...)] &T
entry-point parameters
[0.3.1]
Added ⭐
- PR#480 added a
fetch
image method tospirv-std
- PR#446 added
arch::*
functions for all SPIR-V arithmetic operations (not involving matrices), tospirv-std
Removed 🔥
- PR#476 removed
glam
as a dependency ofspirv-std