Commit Graph

601 Commits

Author SHA1 Message Date
Eduard-Mihai Burtescu
9d639d3ad5 linker/test: catch FatalErrors to ensure they print any error output at all. 2022-11-30 09:15:12 -08:00
Eduard-Mihai Burtescu
acb05d3799 Arena-allocate slices to replace Vecs in SpirvType and SpirvConst. 2022-11-30 17:03:58 +02:00
Eduard-Mihai Burtescu
1000dece4a symbols: avoid using to_ident_string when {}-formatting works. 2022-11-30 17:03:58 +02:00
Eduard-Mihai Burtescu
d76211384e Replace bimap dependency with a more efficient pair of maps. 2022-11-30 17:03:58 +02:00
Eduard-Mihai Burtescu
7a170d3f78 linker/zombies: stop compilation after zombie errors. 2022-11-30 17:02:10 +02:00
Eduard-Mihai Burtescu
a9ede2ed9f linker/duplicates: handle all decorations instead of special-casing zombies. 2022-11-30 17:01:20 +02:00
Eduard-Mihai Burtescu
5836b83415 Remove fn/closure #[spirv(unroll_loops)] attribute. 2022-11-28 07:18:06 -08:00
BeastLe9enD
4452da80f5 Add rint & rintf libm intrinsics 2022-11-28 16:55:32 +02:00
Sylvester Hesp
5e7a0755c2 Also applied default-features=false to spirv-builder 2022-11-22 07:43:06 -08:00
Sylvester Hesp
e7df2feb27 Applied workspace inheritance 2022-11-22 07:43:06 -08:00
Sylvester Hesp
39850120ae Update to 0.4.0-alpha.17
* Specified exact versioning for crates within rust-gpu
* Fixed spirv-std referring to an older version of spirv-std-macros
2022-11-09 15:07:38 +01:00
Sylvester Hesp
c248806bf0 Updated versions to 0.4.0-alpha.16 2022-11-04 20:39:07 +02:00
Sylvester Hesp
c30a37fe11 Added rerun-if-env-changed to build script 2022-11-04 17:22:42 +02:00
Sylvester Hesp
4968760328 Lint fixes 2022-11-04 17:22:42 +02:00
Eduard-Mihai Burtescu
27e3cfc328 Update to nightly-2022-10-01. 2022-11-04 17:22:42 +02:00
Eduard-Mihai Burtescu
dcf37b75a7 Update to nightly-2022-09-25. 2022-11-04 17:22:42 +02:00
Eduard-Mihai Burtescu
08250e5ca1 builder: work around rust-lang/rust#101483 abusing implicit i1->i8 zext (from_immediate). 2022-11-04 17:22:42 +02:00
Sylvester Hesp
c7ca8df8b1 Update to nightly-2022-09-11 2022-11-04 17:22:42 +02:00
Sylvester Hesp
64b159257e Update to nightly-2022-09-10 2022-11-04 17:22:42 +02:00
Sylvester Hesp
bf887922c7 Update crates/spirv-std/Cargo.toml
Co-authored-by: Eduard-Mihai Burtescu <eddyb@lyken.rs>
2022-11-03 17:03:54 +02:00
Sylvester Hesp
83d6c0b9fe Removed rust-gpu support for Vector bool for glam 2022-11-03 17:03:54 +02:00
Eduard-Mihai Burtescu
53ad54add3 Fix new clippy warnings from the newer nightly. 2022-11-03 17:03:54 +02:00
Sylvester Hesp
a45fbc943e Update glam to 0.22 because of remove_attr 2022-11-03 17:03:54 +02:00
Sylvester Hesp
5190e2e7b1 Compile fixes 2022-11-03 17:03:54 +02:00
Sylvester Hesp
efac825739 Update to nightly 2022-09-06 2022-11-03 17:03:54 +02:00
Eduard-Mihai Burtescu
8efc4220ae spirv_std::ray_tracing: use actual OpTypeBool for -> bool intrinsics. 2022-10-28 17:28:50 +03:00
Jake Shadle
fc202cb3c5 Update spirv-tools 2022-10-28 17:28:50 +03:00
Eduard-Mihai Burtescu
65f892eb50 attr: fix #[spirv(flat)] checking to match the Vulkan spec. 2022-10-27 11:42:23 +03:00
Sylvester Hesp
c3a9b9fd3e
Migration from register_attr to register_tool (#926)
* Accept `#[rust_gpu::spirv()]` attributes rather than `#[spirv()]` in backend
* Implemented `#[spirv(..)]` proc macro attribute for all platforms that conditionally translates to `#[rust_gpu::spirv()]` based on platform
* Changed `SpirvBuilder` to always apply `register_tool(rust_gpu)` attribute to shader crates
* Updated docs
* Added changelog
2022-10-19 09:50:24 +00:00
Eduard-Mihai Burtescu
4b10bf5db1 Add codegen backend dylib back into depinfo (.d) post-rust-lang/rust#93969. 2022-10-14 16:50:36 +03:00
Eduard-Mihai Burtescu
6dc23afaf8 Avoid rebuilding rustc_codegen_spirv between example runners. 2022-10-13 17:01:52 +03:00
Sylvester Hesp
d90274af0b Check whether REQUIRED_RUST_TOOLCHAIN matches local rust-toolchain file 2022-09-27 13:07:47 +03:00
Sylvester Hesp
985007fc08
Version bump to 0.4.0-alpha.15 (#920) 2022-09-23 11:36:34 +02:00
Sylvester Hesp
f00f267160
Added toolchain check to rustc_codegen_spirv (#919)
* Added toolchain check to rustc_codegen_spirv

* Removed unused dependency

* Reworked the toolchain check

* Removed some debug code
2022-09-23 11:35:23 +02:00
Sylvester Hesp
2442d900a8 Fix for read_scalar().unwrap() panicking 2022-09-21 14:23:11 +03:00
Eduard-Mihai Burtescu
69fb9e3188 Keep PassMode by reference instead of value. 2022-09-21 14:23:11 +03:00
Sylvester Hesp
4d22af493f Compile fixes 2022-09-21 14:23:11 +03:00
Sylvester Hesp
a9a233eb80 Linter fix 2022-09-08 13:01:05 +03:00
Sylvester Hesp
2dd88c1f13 Compile fixes 2022-09-08 13:01:05 +03:00
Sylvester Hesp
f66030dad9 Compile fixes 2022-09-08 13:01:05 +03:00
Sylvester Hesp
b800a34b6b Compile fixes 2022-09-08 13:01:05 +03:00
Sylvester Hesp
fff9e0cec3 Fixed compile errors 2022-09-07 16:03:32 +03:00
Sylvester Hesp
0eb12ccf90 Compile fixes 2022-09-07 16:03:32 +03:00
Sylvester Hesp
ec6207e664 Fixed compile errors 2022-09-07 16:03:32 +03:00
Sylvester Hesp
7e83721978 Formatting 2022-08-30 13:47:08 +03:00
Sylvester Hesp
faf5c1321b Fixed compile error due to earlier linter fix 2022-08-30 13:47:08 +03:00
Sylvester Hesp
6237c65544 Linter fix 2022-08-30 13:47:08 +03:00
Sylvester Hesp
358a54a8f2 Alternative dead_code warning fix
Co-authored-by: Eduard-Mihai Burtescu <eddyb@lyken.rs>
2022-08-30 13:47:08 +03:00
Sylvester Hesp
ac160444ba Silenced dead code warning
Little unsure about this though, scary that it pops up all of a sudden while obviously being used by the functions below.
2022-08-30 13:47:08 +03:00
Sylvester Hesp
efe0f9becf Fixed compile error 2022-08-30 13:47:08 +03:00
Sylvester Hesp
30a682d633 Added stub for new method in IntrinsicCallMethods 2022-08-30 13:47:08 +03:00
Sylvester Hesp
e1aecffe67 Fixed compile errors 2022-08-30 13:47:08 +03:00
Sylvester Hesp
ccf01366b8 Updated OutRegister to reflect 'tcx lifetime usage 2022-08-29 16:54:38 +03:00
Sylvester Hesp
cb3289b132 Linter fix 2022-08-29 16:54:38 +03:00
Sylvester Hesp
7fd517a384 Compile fixes 2022-08-29 16:54:38 +03:00
Sylvester Hesp
7d8f02b380 Compile fixes 2022-08-29 16:54:38 +03:00
Sylvester Hesp
ccd2b12174 Fixed linter 2022-08-25 16:10:05 +03:00
Sylvester Hesp
37e5ce592d Compile fixes
Formatting fix
2022-08-25 16:10:05 +03:00
Sylvester Hesp
954edc9fb2 Compile fixes 2022-08-25 16:10:05 +03:00
Sylvester Hesp
a9209cd3bf Fixed formatting 2022-08-22 23:08:29 +03:00
Sylvester Hesp
86921a21ff Fixed compile errors 2022-08-22 23:08:29 +03:00
Sylvester Hesp
621cd48e5d Fixed linter 2022-08-22 23:08:29 +03:00
Sylvester Hesp
b3ff800246 Fixed compile errors 2022-08-22 23:08:29 +03:00
Sylvester Hesp
475f508eac Update to 2022-04-18 2022-08-17 20:54:04 +03:00
Eduard-Mihai Burtescu
a99fd432ad Avoid leaking file metadata (mtime/UID/GID) in rlibs through the ar crate. 2022-08-17 19:29:36 +03:00
Sylvester Hesp
805297146b
Update to 0.4.0-alpha.14 (#905)
* Changed version of all unpublished crates to 0.0.0

* New version: v0.4.0-alpha.14

* Fixed versions in deny.toml
2022-08-12 12:38:45 +02:00
Sylvester Hesp
f41625d70a
Renamed spirv-types to spirv-std-types (#904) 2022-08-12 01:49:50 +00:00
Sylvester Hesp
e1696a4cbd
Updated metadata for spirv-builder (#903) 2022-08-11 12:02:34 +00:00
Sylvester Hesp
3deccf2927
Added a description for rustc_codegen_spirv (#902) 2022-08-11 11:32:35 +00:00
Sylvester Hesp
fde567ed2d
Updated versions to 0.4.0-alpha.13 (#899)
* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* (cargo-release) version 0.4.0-alpha.13

* Updated versions in local dependencies as well
2022-08-11 12:34:07 +02:00
Johan Andersson
0693243619 Upgrade sanitize-filename v0.3.0 -> v0.4.0
No code changes needed
2022-08-11 06:41:31 +03:00
Sylvester Hesp
ef65808a5b
Added some version tags to some crates referencing rustc_codegen_spirv (#894)
Although not really necessary, this removes some errors `cargo-release` is giving.
2022-08-10 22:06:20 +02:00
BeastLe9enD
f69d94ed27 Update number documentation
Co-authored-by: Eduard-Mihai Burtescu <edy.burt@gmail.com>
2022-08-09 13:59:15 +03:00
BeastLe9enD
7d7f2fe5a6 Improve documentation & add Number trait 2022-08-09 13:59:15 +03:00
BeastLe9enD
9123a0141c Remove ext suffix from float atomic functions 2022-08-09 13:59:15 +03:00
BeastLe9enD
6387d2156f Add low-level atomic instructions 2022-08-09 13:59:15 +03:00
Ashley Ruglys
c36be918ba Bump the latest allowed glam version to 0.21 2022-08-09 04:05:07 +03:00
Minghao Liu
68db589d98 Update crates/rustc_codegen_spirv/src/linker/inline.rs
Co-authored-by: Eduard-Mihai Burtescu <edy.burt@gmail.com>
2022-05-24 15:35:03 +03:00
molikto
cdbf4dec1d warn when inline(never) is not respected 2022-05-24 15:35:03 +03:00
Dennis
03f89e8ba6 Add support for zero sized types 2022-04-28 14:42:31 +03:00
Eduard-Mihai Burtescu
b0328ed454 Fix style nit (quotes -> backticks) in crates/rustc_codegen_spirv/src/symbols.rs 2022-04-28 14:40:08 +03:00
BeastLe9enD
4b55f91de3 Support 'threads' with 'mesh_nv' and 'task_nv' 2022-04-28 14:40:08 +03:00
Johan Andersson
132b960e83
Upgrade from our standard lints v4 -> v6 (#861) 2022-04-17 12:16:59 +02:00
Eduard-Mihai Burtescu
116bf9c4d4 rustup: address (new) clippy errors. 2022-04-12 09:01:18 +03:00
Eduard-Mihai Burtescu
e08d0d6a48 rustup: update to nightly-2022-04-11. 2022-04-12 09:01:18 +03:00
Eduard-Mihai Burtescu
3e04f62ede rustup: update to nightly-2022-04-01. 2022-04-12 09:01:18 +03:00
Eduard-Mihai Burtescu
f0baf78ade rustup: update to nightly-2022-03-01. 2022-04-12 09:01:18 +03:00
Eduard-Mihai Burtescu
57eed8394e rustup: update to nightly-2022-02-01. 2022-04-12 09:01:18 +03:00
Eduard-Mihai Burtescu
5ac500d5b9
Split out a new -types crate so spirv-builder stops loading LLVM via dylibs. (#856)
* Split out a new `-types` crate so `spirv-builder` stops loading LLVM via dylibs.

* example-wgpu-runner: halve `max_push_constant_size` so it works on RADV/Fiji.
2022-03-30 09:07:14 +02:00
David Craven
4932a44658 Revert workgroup_size builtin. 2022-02-09 18:10:22 +02:00
David Craven
f638590389 Enable builtins. 2022-02-09 18:10:22 +02:00
Jake Shadle
7e7fdb4a4b Update spirv-tools to 0.8.0 2022-02-05 04:40:21 +02:00
Eduard-Mihai Burtescu
31e3fdb09b abi: explicitly unpack ScalarPair newtypes. 2022-01-23 20:18:56 +02:00
Ashley
11e21c6412
Add a OpAtomicIIncrement function to arch (#839) 2022-01-13 17:32:33 +02:00
Ashley Hauck
f780364317
rustup update (#840)
* rustup update

* asm->core::arch::asm
2022-01-13 17:27:33 +02:00
Ashley Hauck
fe5c7716ed
Fix ByteAddressableBuffer PassMode::Pair (#837) 2022-01-10 09:35:03 +00:00
Ashley
d705a238a1
Add a preserve_bindings opt to the builder and codegen opts (#830) 2022-01-03 09:18:58 +01:00
Ashley Hauck
480cd048e0
Fuse OpPtrAccessChain with previous OpAccessChain (#835)
* Fuse OpPtrAccessChain with previous OpAccessChain

* constant-fold add, and change mul to wrap
2021-12-28 11:39:37 +01:00
Emil Ernerfeldt
3067848d1c
Update to glam 0.20 (#831) 2021-12-27 09:52:18 +01:00
Ashley Hauck
f08819fede
Fix some ICEs with bools (#826) 2021-12-15 14:10:38 +00:00
Ashley Hauck
d26716b881
Add error for insts not allowed outside fragment (#821)
* Add error for insts not allowed outside fragment

* make get_name return entry point names too
2021-12-14 08:04:50 +00:00
Ashley Hauck
9673f39967
A whole host of minor tweaks and clippy fixes (#824) 2021-12-14 07:45:45 +00:00
Eduard-Mihai Burtescu
7a60181679
Hint "rust-analyzer.rustcSource": "discover" next to rustc_private = true. (#825) 2021-12-14 08:09:21 +01:00
Ashley
da7c3ed71f
Add a RayQuery::confirm_intersection function (#822) 2021-12-09 13:00:35 +00:00
Ashley Hauck
2ca5826e55
rustup update (#816)
* rustup update

* Test fixes
2021-12-06 11:31:43 +01:00
Ashley Hauck
340f4bb70a
Error when int doesn't have spirv(flat) (#815) 2021-12-06 11:31:26 +01:00
Ashley Hauck
d5d0c90652
Fix for duplicate OpMemberName, and add OpMemberName for ScalarPairs (#814) 2021-12-01 10:25:23 +00:00
Ashley Hauck
2e4de94a66
Generate bools as bools instead of u8 (#809)
* Generate bools as bools instead of u8

* convert bool->int select to cast
2021-11-30 13:12:13 +00:00
Ashley
9fd3c9e172
Add an IndexUnchecked trait that uses asm! (#805)
* Add an IndexUnchecked trait to spirv-std/arch

* Slap some #[spirv_std_macros::gpu_only] on there

* Spelling

* Add safety sections to the docs

* Improve documentation, implement for non-spirv targets
2021-11-29 07:56:13 +01:00
Eduard-Mihai Burtescu
6232d95256
abi: demonstrate overriding the behavior of the layout_of query. (#808) 2021-11-26 11:51:56 +01:00
Benjamin Bouvier
c1dd14d863
Remove unused dependencies in rust-gpu (#800) 2021-11-22 13:12:43 +00:00
Eduard-Mihai Burtescu
553f79ebce
asm: support OpCompositeExtract inference for OpTypeStruct fields. (#803) 2021-11-22 13:27:55 +01:00
Eduard-Mihai Burtescu
cda583e0d5 Gather all interface OpVariables into OpEntryPoints. 2021-11-04 11:54:26 +02:00
Ashley Hauck
f7fc1245f3
Add tests for every builtin (#789) 2021-11-03 11:38:06 +01:00
Ashley Hauck
c4eb7af88e
Update rspirv to 0.11 (#788) 2021-10-29 13:38:28 +02:00
Ashley Hauck
3ae5c2b010
Remove CARGO_FEATURES_* and CARGO_CFG_* (#782) 2021-10-28 13:09:32 +02:00
Ashley Hauck
1517a8bdd6
Document spirv-std, and add warn(missing_docs) (#784) 2021-10-28 10:10:44 +00:00
Ashley Hauck
8fb4f10995
Don't ICE on ZST union (#780) 2021-10-28 08:13:00 +00:00
Ashley Hauck
902c51c242
Inline calls that look like f(&s.x) (#777) 2021-10-27 13:28:35 +00:00
Ashley Hauck
c10a1ca756
Implement bool fusion pass (#776)
Fixes #677
2021-10-27 12:52:31 +00:00
Ashley Hauck
f58c6f20af
rustup update, and edition = 2021 (#775) 2021-10-26 10:24:44 +00:00
Hannes Vernooij
4831789bbb
added memory barrier intrinsics to spirv-std (#769)
* added memory barrier intrinsics to spirv-std

* added function-level docs

* added unit-tests

constants could not be validated in tests because of the limited output

* clippy fixes

* improved documentation

* Added missing features to device_memory and all_memory barrier intrinsics.
2021-10-26 09:15:50 +02:00
Ashley Hauck
3f22a897f3
Handle OpCopyMemory in mem2reg (#772)
* Handle OpCopyMemory in mem2reg

* Update tests
2021-10-25 11:01:53 +03:00
Ashley Hauck
8d019e4e37
Detect recursion in inline.rs and bail (#770)
* Detect recursion in inline.rs and bail

* Bail on inline error
2021-10-25 10:42:45 +03:00
Ashley
e5c2953ea6
Add debug_printf! and debug_printfln! macros that uses the DebugPrintf extension (#768) 2021-10-23 10:05:03 +02:00
Eduard-Mihai Burtescu
2dc88f26ac Simplify FnAbi handling for the fewer PassModes possible now. 2021-10-20 22:13:03 +03:00
Eduard-Mihai Burtescu
6d43d60142 abi: use span_bug! over bug! wherever a Span is available. 2021-10-20 22:13:03 +03:00
Eduard-Mihai Burtescu
111bebdd68 abi: readjust FnAbis to remove unsupported PassModes, via query hooks. 2021-10-20 22:13:03 +03:00
Eduard-Mihai Burtescu
13678f8644 abi: replace extern "C" with extern "unadjusted", not Rust ABI. 2021-10-20 22:13:03 +03:00
Eduard-Mihai Burtescu
f8333127d7 abi: remove redundant fn_sig hook from provide_extern. 2021-10-20 22:13:03 +03:00
Eduard-Mihai Burtescu
1436572c3a Move query hooks out of the crate root (and into abi). 2021-10-20 22:13:03 +03:00
Ashley Hauck
e2db97f899
Update dependencies (#765) 2021-10-14 14:38:15 +00:00
Ashley
f8a1130377
Add arch functions for the GLSL.std.450 S/U Min/Max functions (#763)
* Add (un)signed_(min|max) glsl functinos

* Add gpu_only to call glsl op
2021-10-12 08:49:02 +02:00
Ashley
14e2152198
Add an read_clock_khr function that calls OpReadClockKHR (#757)
* Add support for OpReadClockKHR

* Use a const scope

* Use full scope import path

* Apply some suggestions

* Add cfg flags and scopes as raw u32s

* Run cargo fmt

* Fix comment accuracy

* Update crates/rustc_codegen_spirv/src/spirv_type_constraints.rs

Co-authored-by: Ashley Hauck <953151+khyperia@users.noreply.github.com>

* Run rustfmt

* Add the shader clock feature and capability to the compile test rust flags and bless the changed test errors

Co-authored-by: Ashley Hauck <953151+khyperia@users.noreply.github.com>
2021-10-08 15:56:00 +02:00
Ashley
4e5f347239
Add SampledImage::sample_by_lod (#755)
* Add 'SampledImage::sample_by_lod'

* Add a compiletest

* Format the compiletest, but manually because running cargo fmt doesn't seem to do anything 🤷

* Run rustfmt
2021-10-08 10:33:00 +02:00
Ashley Hauck
b692ab5afc
Convert Image<> parameters from enums to integers to make spirv-std build on stable (#761)
* Convert Image<> parameters from enums to integers to make spirv-std build on stable

* Remove access_qualifier from Image type

It's kernel-mode-only, and we won't ever support kernel mode.
2021-10-07 13:28:33 +02:00
Johan Andersson
2540106965
Support glam 0.18 (#760) 2021-10-05 09:24:18 +02:00
Eduard-Mihai Burtescu
6780432b37 rustup: update to nightly-2021-09-29. 2021-09-30 09:26:11 +03:00
Jake Shadle
35172f7edb
Update spirv-tools to 0.7.0 (#753)
This moves to the v2021.3 version of SPIRV-Tools
2021-09-17 11:42:43 +00:00
Ashley Hauck
eeb67ae748
Replace <const INTERSECTION: u32> with two functions (#750)
* Replace <const INTERSECTION: u32> with two functions

* Fix doc URLs
2021-09-07 11:30:56 +02:00
Eduard-Mihai Burtescu
6807c5973d Re-add -Zsymbol-mangling-version=v0. 2021-09-07 12:24:38 +03:00
Eduard-Mihai Burtescu
75f81814ec rustup: update to nightly-2021-08-27. 2021-09-07 12:24:38 +03:00
Ashley Hauck
92dc64bd06
Make byte addressable buffer take &self, add support for matrix (#749) 2021-09-06 08:47:34 +00:00
Ashley Hauck
95da8981ad
Add load/store_unchecked to ByteAddressableBuffer without bounds check (#746) 2021-09-03 12:10:01 +00:00
Ashley Hauck
71d6001bed
Actually set the SPIR-V generator magic number (#743)
wow this took a while to do
2021-09-01 13:32:11 +02:00
Ashley Hauck
032286e217
Add a spirv-builder option to include all debug info (#742) 2021-09-01 06:05:43 +00:00
Ashley Hauck
66d6c554d8
Implement ByteAddressableBuffer prototype detached from bindless (#735) 2021-08-31 10:26:30 +02:00
Markus Siglreithmaier
f0560824fe
std: fix ray query initialization and proceed result (#740) 2021-08-31 10:09:05 +02:00
hatoo
b0676cba61
Implement OpTypeMatrix (#738)
* Implement OpTypeMatrix

* clippy

* Use cached Symbol

* Implement #[spirv(matrix(ty, m, n))] instead of Matrix trait

* Update #[spirv(matrix(..))]

- #[spirv(matrix(ty, m, n))]
  Specify all of type, rows, columns.
- #[spirv(matrix(ty, m))]
  Specify all of type, rows. Infer columns.
- #[spirv(matrix(ty))]
  Specify all of type. Infer others.
- #[spirv(matrix)]
  Infer all.

* Drop #[spirv(matrix(..))] (with arguments)

* Fix IntrinsicType::Matrix type construction

* Update matrix-type.rs

* Update tests/ui/spirv-attr/multiple.rs to test Matrix

* Fix tests/ui/spirv-attr/matrix-type.rs

* Add failing tests for #[spirv(matrix)

* Update error messages for #[spirv(matrix)]
2021-08-30 15:45:29 +02:00
Ashley Hauck
1e3881bfcb
Various fixes and cleanup (#726)
* Various fixes and cleanup

While working on other patches that ended up not being applicable, I've
gathered these changes unrelated to the irrelevant patch. So, submitting
them as a seperate change, since the bigger change isn't going in.

* Revert change superseded by #732
2021-08-21 21:41:46 +02:00
khyperia
44ae4411ee Revert no-longer-needed OpTypeArray support 2021-08-20 12:20:14 +03:00
khyperia
f9c7829bdc Fix typo 2021-08-20 12:20:14 +03:00
khyperia
0bd0bf0f11 Fix issues with some raytracing functions and add tests 2021-08-20 12:20:14 +03:00
Eduard-Mihai Burtescu
2d5b8e6b0e Get the default panic hook for ICEs, from std::panic::set_hook. 2021-08-20 11:45:39 +03:00
Ashley Hauck
ee3d5afe63
Update rspirv to 0.10 (#724) 2021-08-20 11:24:26 +03:00
Eduard-Mihai Burtescu
9a69d6dccc specializer: allow unused fully-constrained interface variables. 2021-08-19 18:20:27 +03:00
Eduard-Mihai Burtescu
f14046477a
link: remove workaround for mdsteele/rust-ar#19. (#730) 2021-08-19 08:45:29 +02:00
Eduard-Mihai Burtescu
4dcb50169f link: rely on the default metadata loader. 2021-08-13 17:32:10 +03:00
Eduard-Mihai Burtescu
731a5e86aa link: switch from tar to ar for .rlibs. 2021-08-13 17:32:10 +03:00
Eduard-Mihai Burtescu
5a431e65a1 link: use METADATA_FILENAME instead of hardcoding ".metadata". 2021-08-13 17:32:10 +03:00
Markus Siglreithmaier
acda7716db
asm: add support for noreturn option (#717)
* asm: add support for noreturn option

OpUnreachable will be appended as terminator at the end of the asm block.

* asm: implicit label after return or abort terminator

* rework handling

* fix tests and add few comments

* fix tests
2021-08-13 08:50:44 +02:00
khyperia
df5b41137b Cargo update 2021-08-12 17:16:07 +03:00
Ashley Hauck
44c9fdd8c5
Release v0.4.0-alpha.12 (#719) 2021-08-12 10:46:32 +00:00
Eduard-Mihai Burtescu
908499744f spirv-builder: switch to \x1f-separated CARGO_ENCODED_RUSTFLAGS. 2021-08-10 16:53:28 +03:00
Eduard-Mihai Burtescu
7501f1895c rustup: update to nightly-2021-08-10. 2021-08-10 16:53:28 +03:00
Ashley Hauck
1a3a12f505
Implement some float packing/unpacking instructions (#709)
* Implement some float packing/unpacking instructions

* Rename f32xN to vecN in packing functions
2021-08-10 13:54:44 +02:00
Eduard-Mihai Burtescu
7f5e2e778e Fix unit tests to not have dead params. 2021-08-10 12:43:15 +03:00
Eduard-Mihai Burtescu
0bbea9e93e Introduce remove_unused_params pass, to run just before zombie removal. 2021-08-10 12:43:15 +03:00
Eduard-Mihai Burtescu
5e23a73c85 Move CallGraph into a new ipo module. 2021-08-10 12:43:15 +03:00
Eduard-Mihai Burtescu
340816ae75 abi: make dig_scalar_pointee search for offsets in all layout fields. 2021-08-10 10:55:39 +03:00
Eduard-Mihai Burtescu
7393c3884f abi: switch scalar_pair_field_index to an offset. 2021-08-10 10:55:39 +03:00
Eduard-Mihai Burtescu
c1cdc4707c abi: use scalar_pair_field_index instead of index in some places. 2021-08-10 10:55:39 +03:00
Ashley Hauck
12c09cbc5a
Remove implicit bindless and kernel modes (#710)
* Remove +bindless mode

* Remove +kernel mode
2021-08-10 08:23:24 +02:00
Daniel McNab
9fcc4824af
Use just the small version (#705) 2021-08-09 08:58:52 +02:00
Ashley Hauck
a93d6e0f2a
Add sample_bias and gather functions (#704)
* Add sample_bias function

* Update line numbers

* Add gather function

* Update spirv-tools

CI was failing on "Capability SampledRect is not allowed by Vulkan 1.1
specification (or requires extension)", except locally it was fine, and
I have more up to date spirv-tools than CI, so try bumping the CI
version to see if it's just an out-of-date spirv-val

* Fix gather() in vulkan

* Convert compiler valication into marker traits
2021-08-06 15:26:30 +02:00
Alex Es
bca7656c8c
Added a transformation that gets rid of temporary composites. (#690)
* Added an optimization that gets rid of temporary composites.

Those temporary composites result from inlining of multi-argument
closures. Not only are they rather useless, they're also sometimes
invalid, when an argument to said closure is e.g. a pointer.

* Correctness fixes to transitive unused removal:

- delay only if the instruction is in reference set
- properly mark composites being inserted into composites as used

* cargo fmt

* clippy

* Make transformation per-function & rely on DCE for eliminating dead constructs.

* Forgot to mark CompositeInsert as pure & additional line cleaning

* Rustfmt

* Remove duplicate lines only once
2021-08-06 10:52:56 +02:00
Alex Es
d548268140
Aggressively prune no-side-effect instructions during DCE. (#691)
* Aggressively prune no-side-effect instructions during DCE.

Since we're walking all the instructions anyway, it's practically
zero-cost.

* Reverse iteration order within a function.

This allows to root more instructions per `spread_roots`
invocation, becoming zero-cost in absence of loops.

* Manually iterate over function instructions in reverse order.
2021-08-04 08:03:38 +00:00
bjorn3
cccb9737d7
Use DefaultMetadataLoader for loading dylib metadata (#698) 2021-08-03 10:20:46 +00:00
Ashley Hauck
819365cbae
Release v0.4.0-alpha.11 (#702) 2021-08-02 14:02:02 +00:00
Ashley Hauck
62799d06cc
Make BuilderSpirv::has_capability and has_extension O(1) (#688) 2021-08-02 13:13:48 +02:00
khyperia
febd253d7b Bypass rspirv O(n^2) deduplication 2021-06-24 16:55:40 +03:00
Ashley Hauck
06f0aa2c3a
Release v0.4.0-alpha.10 (#679) 2021-06-23 09:32:09 +02:00
Ashley Hauck
428824be94
Add option to treat warnings as errors (#683) 2021-06-22 13:44:51 +00:00
Ashley Hauck
22e4bf4022
Clarify and fix up some image documentation (#678) 2021-06-21 14:31:33 +02:00
evopen
8c05636f53
fix NO_SPIRV_OPT (#675) 2021-06-19 19:01:27 +02:00
Ashley Hauck
8924fe7b4c
Clean up DUMP environment variables (#673) 2021-06-17 17:07:35 +02:00
Ashley Hauck
1cef56bcf3
Cargo update (#674) 2021-06-17 17:06:26 +02:00
khyperia
efd97e6d22 Fix issue with --disassemble-entry 2021-06-17 18:03:38 +03:00
Ashley Hauck
db5e5fd336
rustup update and embark standard lints v0.4 (#672)
* rustup update

* update to embark standard lints v0.4
2021-06-17 13:10:19 +02:00
Ashley Hauck
04dfa80266
Nuke arithmetic.rs (#666) 2021-06-15 09:43:13 +02:00
Ashley Hauck
f7ac6a09e7
Small linker refactorings (#664)
Not actually many interesting things here, just cleaning up some crud
from previous work where things were added/removed without full
knowledge of the surrounding code, so it becomes a bit of a "wait, why
the heck is it done this way" confusing mess for those trying to
understand it for the first time.
2021-06-15 09:20:03 +02:00
Ashley Hauck
fff2b9bce1
Add common image type aliases (#662) 2021-06-15 09:19:40 +02:00
Ashley Hauck
e1a000d408
Nuke const generics feature (#661)
* Nuke const generics feature

* Remove spirv(image_type) attribute
2021-06-15 09:19:23 +02:00
Daniel McNab
4b2011476b
Clean up the interface of the watching support (#663)
* Clean up the interface of the watching support

This allows us to avoid the seperate thread just for looping through
the graphics rx to the eventloop, for example
In almost all cases, intial results are blocked on the first result, and
then needs notifications for later changes

* Fix test failures

* fmt

* Remove the comment again
2021-06-14 09:19:41 +02:00
Ashley Hauck
c3eff4d4a5
Add name_variables option to spirv-builder (#660) 2021-06-09 15:27:08 +02:00
Ashley Hauck
b072b5ebdc
Nuke the old structurizer (#658) 2021-06-09 12:22:04 +02:00
Ashley Hauck
0b23a4282f
Add sampled to example (#659) 2021-06-09 12:17:08 +02:00
Ashley Hauck
56722c72d6
Fix wacky typedef (#647) 2021-06-09 10:33:06 +02:00
Daniel McNab
3bbe963998
👀 hot shader reloading (#655)
* Update builder to use a shared validation method

* Add the error for using print_metadata and watching

We cannot use print_metadata with watching
because print_metadata only makes sense
in build scripts, but watching does not
and would instead stall the script

* Add the initial implementation of watching

* Make hot reloading work in the wgpu example

* Attempt to address CI failures

* Add exception for notify CC0-1.0 license

* Address review comments

Co-authored-by: khyperia <github@khyperia.com>
2021-06-09 10:30:44 +02:00
evopen
0de0ad03c3
fix trace ray acceleration structure (#654) 2021-06-09 07:53:18 +00:00