Commit Graph

619 Commits

Author SHA1 Message Date
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
Markus Siglreithmaier
486a3cee2e
Always emit cargo dependency information (#618)
* spirv-builder: Add more control over cargo metadata printout

* lint fix
2021-06-03 22:03:03 +02:00
Ashley Hauck
31bfc338e0
Release v0.4.0-alpha.9 (#646) 2021-06-03 12:35:53 +00:00
Daniel McNab
cb952562dd
Collatz Computation (#623)
Build the compute shader for vulkan1.1 as required
2021-06-03 14:20:42 +02:00
khyperia
a5e9fe751b Fix nasty miscompilation 2021-06-03 14:00:18 +02:00
Ashley Hauck
92b680fdb9
Release v0.4.0-alpha.8 (#645) 2021-06-02 14:06:56 +02:00
Alex Es
985cbed9e4
Added read_subpass for SubpassData images, and necessary attrs for it. (#643)
* Added read_subpass for SubpassData images, and necessary attrs for it.

* Fix CI; test bless + rustfmt

* Rename attachment_index => input_attachment_index.

* Rustfmt

* Fix clippy warning.

* Review: check for cap rather than adding cap, fix error messages.
2021-06-02 11:02:04 +02:00
Alex S
7fc445eb10 Added link to tracking issue for v0 mangling. 2021-06-02 10:46:19 +03:00
Alex S
b64eeb6f1e Use legacy mangling instead of v0.
`v0` mangling mangles generics, but can only handle const generic
arguments of simple types. As `Image!` types use const generic enums,
things break horribly and compiler panics.
`legacy` doesn't even attempt to mangle generics, which is probably
fine.
2021-06-02 10:46:19 +03:00
Ashley Hauck
f3888d1bb3
Invert glam dependency (#641) 2021-06-02 09:28:01 +02:00
Ashley Hauck
ba689b5603
Don't require Int* capabilities for mouse-shader (#636)
* Don't require Int* capabilities for mouse-shader

* Make Int*/Float64 errors be zombie_even_in_user_code

* Demote glam back to a non-system crate
2021-05-31 11:56:15 +02:00
Ashley Hauck
3fa15c99ae
Add spirv-val flags to spirv-builder (#635) 2021-05-31 09:44:09 +00:00
Ashley Hauck
5d22f600e7
Add runtime array type (#596) 2021-05-31 09:39:06 +00:00
Ashley Hauck
1046f7cdf6
Implement auto-vectorization (#629)
* Implement auto-vectorization

* Run mem2reg a lot
2021-05-31 11:22:02 +02:00
Ashley Hauck
6019f391ec
Add API to enable ext/capabilities, and remove default capabilities (#630)
* Do not set some capabilities by default

* Fix nondeterminism

* Add required caps to mouse shader
2021-05-26 11:57:16 +02:00
Eduard-Mihai Burtescu
e5a07a9e2b
rustup: update to nightly-2021-05-24. (#631)
* rustup: update to nightly-2021-05-24.

* tests: update expected OpLine numbers in disassembly tests.
2021-05-25 08:28:47 +02:00
Ashley Hauck
47d1e75327
Always emit json metadata, and emit entry point names (#622)
* Always emit json metadata

* Codegen shader entry point names

* Fix tests
2021-05-24 09:45:58 +02:00
Ashley Hauck
6bff395680
Build the wgpu shader at runtime (#627)
* Build the wgpu shader at runtime
2021-05-21 12:09:56 +00:00
Ashley Hauck
ca988f95de
rustup update to 2021-05-17 (#621) 2021-05-20 14:46:09 +02:00
Markus Siglreithmaier
75d0d8f1ac
asm: support sampler and as types (#624)
* asm: support sampler and as types

* fmt
2021-05-20 09:08:54 +02:00
Markus Siglreithmaier
fc268da041
Preserve function abi in gpu_only macro (#617)
* Preserve function abi in gpu_only macro
2021-05-17 12:21:52 +02:00
Ashley Hauck
943f09fef7
Emit OpLine instructions (#616)
* Emit OpLine instructions
2021-05-07 08:57:47 +00:00
Jasper Bekkers
78ac32be27
Initial work for bindless buffers & textures in rust-gpu (#450)
This adds the initial support for basic bindless types into rust-gpu. Using this requires a compilation with the `-Ctarget-features=+bindless` flag, or through `.bindless` in the `SpirvBuilder`.
2021-05-05 18:34:39 +02:00
XAMPPRocky
9c19414858
Add is_helper_invocation, and cleanup arch & asm functions (#612) 2021-05-04 10:51:20 +00:00
XAMPPRocky
de23683aa3 Update crates/spirv-std/src/lib.rs
Co-authored-by: Joshua Nelson <joshua@yottadb.com>
2021-05-04 00:34:54 +03:00
Erin Power
fde6aa0d9e fix rustdoc with hack 2021-05-04 00:34:54 +03:00
XAMPPRocky
2f451ee993
Add support for using target-features for extensions and capabilities (#610) 2021-05-03 11:19:10 +00:00
Ashley Hauck
1431c18b9d
Move disassemble tests to compiletest (#609)
* Move disassemble tests to compiletest

* Fix problematic tests

* Add newlines
2021-04-30 09:07:45 +02:00
Ashley Hauck
7a6806c17b
Add shader image query instructions (#608)
* Add shader image query instructions

* Normalize spirv-std src paths in test output

* Fix tests on vulkan
2021-04-30 09:07:38 +02:00
XAMPPRocky
538cdd2ea7
Update version and remove usage of or_patterns (#607) 2021-04-29 10:55:51 +02:00
XAMPPRocky
a14e3ec110
Release 0.4.0-alpha.6 (#606)
compiletests@0.4.0-alpha.6
compiletests-deps-helper@0.4.0-alpha.6
compute-shader@0.4.0-alpha.6
example-runner-ash@0.4.0-alpha.6
example-runner-cpu@0.4.0-alpha.6
example-runner-wgpu@0.4.0-alpha.6
mouse-shader@0.4.0-alpha.6
multibuilder@0.4.0-alpha.6
rustc_codegen_spirv@0.4.0-alpha.6
shared@0.4.0-alpha.6
simplest-shader@0.4.0-alpha.6
sky-shader@0.4.0-alpha.6
spirv-builder@0.4.0-alpha.6
spirv-std@0.4.0-alpha.6
spirv-std-macros@0.4.0-alpha.6
spirv-types@0.4.0-alpha.6

Generated by cargo-workspaces
2021-04-29 09:24:21 +02:00
Ashley Hauck
49dd238083
Bump rust-toolchain to nightly-2021-04-25 (#605)
* Bump rust-toolchain to nightly-2021-04-25
2021-04-28 13:53:33 +00:00
XAMPPRocky
f88ae5b28a
Add Const Generic Image Type (#359)
* Add parameterized Image type

* nits

* Update crates/spirv-std/src/lib.rs

* Update crates/rustc_codegen_spirv/src/symbols.rs

* Update crates/rustc_codegen_spirv/src/symbols.rs

* Update symbols.rs
2021-04-28 09:47:40 +02:00
Erin Power
18ba6f322d Add support for SPV_KHR_ray_query 2021-04-27 16:07:46 +03:00
Ashley Hauck
ec131ca95c
CI check that docs are able to be built without warnings (#601)
* CI check that docs are able to be built without warnings
2021-04-23 08:12:02 +00:00
Markus Siglreithmaier
3d710e7c4b
Fix semantics type for control barriers to support multiple flags (#598)
* Fix semantics type for control barriers to support multiple flags

* spirv-std: convert memory semantics to bitflag

* Update crates/spirv-std/src/arch/barrier.rs

Co-authored-by: XAMPPRocky <4464295+XAMPPRocky@users.noreply.github.com>

Co-authored-by: XAMPPRocky <4464295+XAMPPRocky@users.noreply.github.com>
2021-04-22 11:17:02 +02:00
XAMPPRocky
d04039efda
Add track_caller to type lookups (#599) 2021-04-22 10:02:26 +02:00
XAMPPRocky
a42a9f20e1
Add support for SPV_KHR_ray_tracing (#563)
* Add support for SPV_KHR_ray_tracing

* Update spirv_type_constraints.rs

* Update spirv_type_constraints.rs

* Update spirv_type_constraints.rs
2021-04-16 16:59:11 +03:00
Eduard-Mihai Burtescu
bb7adc912f asm: infer the result type of OpAccessChain (when indexing into arrays). 2021-04-16 09:00:45 +03:00
Eduard-Mihai Burtescu
fedac0f4a5 asm: streamline generating a type from a pattern for inference. 2021-04-16 09:00:45 +03:00
Ashley Hauck
6c8dece25a
Fix issue 585 (#594) 2021-04-13 11:34:02 +02:00
Ashley Hauck
9679e615bd
Disable variable pointers by default (#591) 2021-04-13 11:30:16 +02:00
XAMPPRocky
b6311789bb
Add new handling for SPIR-V targets (#559)
* Add new handling for SPIR-V targets

* Ensure target is always three components
2021-04-12 11:19:28 +00:00
XAMPPRocky
4824d205ba
Release 0.4.0-alpha.5 (#590)
compiletests@0.4.0-alpha.5
compiletests-deps-helper@0.4.0-alpha.5
compute-shader@0.4.0-alpha.5
example-runner-ash@0.4.0-alpha.5
example-runner-cpu@0.4.0-alpha.5
example-runner-wgpu@0.4.0-alpha.5
mouse-shader@0.4.0-alpha.5
multibuilder@0.4.0-alpha.5
rustc_codegen_spirv@0.4.0-alpha.5
shared@0.4.0-alpha.5
simplest-shader@0.4.0-alpha.5
sky-shader@0.4.0-alpha.5
spirv-builder@0.4.0-alpha.5
spirv-std@0.4.0-alpha.5
spirv-std-macros@0.4.0-alpha.5

Generated by cargo-workspaces
2021-04-12 10:27:55 +02:00
Eduard-Mihai Burtescu
7c568ab219 Allow constant references (to constant data), when they're valid SPIR-V. 2021-04-12 11:09:50 +03:00
Eduard-Mihai Burtescu
2bf4f76741 builder_spirv: track whether SpirvConsts were deemed "legal" or not. 2021-04-12 11:09:50 +03:00
Eduard-Mihai Burtescu
00fe5a975e builder_spirv: replace the constants BiHashMap with two FxHashMaps. 2021-04-12 11:09:50 +03:00
Eduard-Mihai Burtescu
3a9e7781d5 builder_spirv: don't keep a whole SpirvValue in the constants cache. 2021-04-12 11:09:50 +03:00
Eduard-Mihai Burtescu
84350e31d3 builder_spirv: split out the type field from SpirvConst. 2021-04-12 11:09:50 +03:00
XAMPPRocky
4163ce68cf
Remove memcmp from spirv-std (#583) 2021-04-09 13:52:37 +02:00
Eduard-Mihai Burtescu
8c89b49b66 rustc_codegen_spirv: use FxHash{Map,Set} instead of the std ones. 2021-04-08 18:02:55 +03:00
XAMPPRocky
98d7dec503
Release 0.4.0-alpha.4 (#582)
compiletests@0.4.0-alpha.4
compiletests-deps-helper@0.4.0-alpha.4
compute-shader@0.4.0-alpha.4
example-runner-ash@0.4.0-alpha.4
example-runner-cpu@0.4.0-alpha.4
example-runner-wgpu@0.4.0-alpha.4
mouse-shader@0.4.0-alpha.4
multibuilder@0.4.0-alpha.4
rustc_codegen_spirv@0.4.0-alpha.4
shared@0.4.0-alpha.4
simplest-shader@0.4.0-alpha.4
sky-shader@0.4.0-alpha.4
spirv-builder@0.4.0-alpha.4
spirv-std@0.4.0-alpha.4
spirv-std-macros@0.4.0-alpha.4

Generated by cargo-workspaces
2021-04-08 13:58:43 +03:00
Eduard-Mihai Burtescu
3f641638c8 entry: move call arg ajustments to declare_shader_interface_for_param. 2021-04-08 10:18:49 +03:00
Eduard-Mihai Burtescu
630e5a61d8 entry: shorten variable to var. 2021-04-08 10:18:49 +03:00
Eduard-Mihai Burtescu
f834f989e5 entry: rename declare_interface_global_for_param to declare_shader_interface_for_param. 2021-04-08 10:18:49 +03:00
Eduard-Mihai Burtescu
b893c47727 entry: move things around in declare_interface_global_for_param. 2021-04-08 10:18:49 +03:00
Eduard-Mihai Burtescu
1d1c2951c7 entry: collect OpEntryPoint operands in declare_interface_global_for_param. 2021-04-08 10:18:49 +03:00
Eduard-Mihai Burtescu
2b4037832f spirv_type: fix copy-paste mistake regarding InterfaceBlock. 2021-04-08 10:18:49 +03:00
Eduard-Mihai Burtescu
4395b84114 Deprecate #[spirv(block)] and auto-wrap in "interface blocks" instead. 2021-04-05 20:45:59 +03:00
Eduard-Mihai Burtescu
561f0dd984 Clean up the output of assert_ty_eq! (when it fails). 2021-04-05 20:45:59 +03:00
Eduard-Mihai Burtescu
674649c4cb entry: tweak spans (mostly to use hir_param.ty_span in more places). 2021-04-05 20:45:59 +03:00
Eduard-Mihai Burtescu
ad859e681e entry: check the type of the argument we compute from the global OpVariable. 2021-04-05 20:45:59 +03:00
Eduard-Mihai Burtescu
6c3ce3fac2 entry: use a Builder instead of manually emitting into the entry stub. 2021-04-05 20:45:59 +03:00
Eduard-Mihai Burtescu
9bada9362d entry: return SpirvValue from declare_interface_global_for_param. 2021-04-05 20:45:59 +03:00
Eduard-Mihai Burtescu
7cc69e7126 entry: rename declare_parameter to declare_interface_global_for_param. 2021-04-05 20:45:59 +03:00
Eduard-Mihai Burtescu
2b15e20f2f Unbreak CI (fix control_barrier and memory_barrier tests). 2021-04-05 20:45:59 +03:00
XAMPPRocky
dd60da0be6
Add memory_barrier and control_barrier (#519) 2021-04-01 16:00:30 +02:00
khyperia
40359bdb56 Add DCE-φ pass 2021-04-01 13:33:07 +02:00
Ashley Hauck
f0f0f318ec
Don't treat OpSelectionMerge as an edge in mem2reg (#571)
* Don't treat OpSelectionMerge as an edge in mem2reg

* Make outgoing_edges not allocate

* Update test
2021-04-01 10:03:00 +02:00
Ashley Hauck
4fa73bddb4
Infer the storage class for images/samplers/imagesamplers (#567)
* Infer the storage class for images/samplers/imagesamplers

* format

* Move comment
2021-04-01 07:49:08 +00:00
Eduard-Mihai Burtescu
fc8efd4562
structurizer: treat single-exit regions as unconditionally branching. (#566) 2021-03-31 12:04:20 +00:00
Eduard-Mihai Burtescu
9723e12723 structurizer: find and/or cache OpConstant{False,True}. 2021-03-31 00:41:17 +03:00
XAMPPRocky
f09a5f6e65
Release 0.4.0-alpha.3 (#560)
compiletests@0.4.0-alpha.3
compiletests-deps-helper@0.4.0-alpha.3
compute-shader@0.4.0-alpha.3
example-runner-ash@0.4.0-alpha.3
example-runner-cpu@0.4.0-alpha.3
example-runner-wgpu@0.4.0-alpha.3
mouse-shader@0.4.0-alpha.3
multibuilder@0.4.0-alpha.3
rustc_codegen_spirv@0.4.0-alpha.3
shared@0.4.0-alpha.3
simplest-shader@0.4.0-alpha.3
sky-shader@0.4.0-alpha.3
spirv-builder@0.4.0-alpha.3
spirv-std@0.4.0-alpha.3
spirv-std-macros@0.4.0-alpha.3

Generated by cargo-workspaces
2021-03-30 11:23:16 +00:00
Eduard-Mihai Burtescu
0e7fdb30f2
#[spirv(uniform)] is actually immutable in the absence of BufferBlock. (#558) 2021-03-30 09:32:59 +00:00
Eduard-Mihai Burtescu
820573a21f
Duplicate SpirvValueKind::ConstantPointer into a separate FnAddr variant. (#557) 2021-03-30 08:55:37 +00:00
Ashley Hauck
d6ff9cd439
Run DCE twice (#556) 2021-03-30 09:44:01 +02:00
Jesse
5e429866da
feat: Added instructions for depth reference and project coordinate image instructions (#545)
* feat: Added instructions for depth reference and project coordinate image instructions

* docs: add alias annotation for methods in spirv-std/src/textures.rs
2021-03-30 08:14:18 +02:00
Henno
9f25e92d60 Remove sized check from Block translation 2021-03-30 05:35:02 +03:00
XAMPPRocky
3a53968817
Add support for multiple target environments (#533)
* Add support for multiple target environments

* updates from code review

* Update lib.rs
2021-03-29 18:43:07 +02:00
Henno
05ce407278
Add basic support for struct DSTs (#504)
* Add basic support for struct DSTs

* Add tests

* cleanup tests

* Update with entry changes, address review

* Address review

* Update allocate_const_scalar.stderr

* Add ArrayStride decoration to OpTypeRuntimeArray
2021-03-29 18:02:09 +02:00
Ashley Hauck
c3a3b20e3c
Add support for outputting multiple modules, one per entry point (#551)
* Add multimodule feature

* Use -Cllvm-args instead of -Ctarget-feature for multimodule

* Fix cargo.toml
2021-03-29 17:59:03 +02:00
Eduard-Mihai Burtescu
db208e7190 Avoid ever building rustc_codegen_spirv more than once in release mode. 2021-03-29 09:05:48 +02:00
XAMPPRocky
182bbca7e5 Update mod.rs 2021-03-27 17:12:11 +02:00
Erin Power
3fc6cd5a2f Release 0.4.0-alpha.2
compute-shader@0.4.0-alpha.2
rustc_codegen_spirv@0.4.0-alpha.2
spirv-builder@0.4.0-alpha.2
spirv-std@0.4.0-alpha.2
spirv-std-macros@0.4.0-alpha.2

Generated by cargo-workspaces
2021-03-26 13:23:23 +01:00
khyperia
d3605f79c7 Add #[spirv(invariant)] 2021-03-26 13:15:29 +01:00
XAMPPRocky
3da44847ec
Make derivative arch functions public 2021-03-26 13:13:58 +01:00
Erin Power
1e7eb64f17 Release 0.4.0-alpha.1
compute-shader@0.4.0-alpha.1
rustc_codegen_spirv@0.4.0-alpha.1
spirv-builder@0.4.0-alpha.1
spirv-std@0.4.0-alpha.1
spirv-std-macros@0.4.0-alpha.1

Generated by cargo-workspaces
2021-03-25 16:16:25 +01:00
Ashley Hauck
15d96cde8c
Use the cute Function::all_inst_iter helper, because it's cute. (#535) 2021-03-25 10:20:34 +00:00
Erin Power
dea67c686c Move min-const-generics features out of const-generics flag 2021-03-25 10:34:01 +02:00
Eduard-Mihai Burtescu
79200bb777 Produce TypeKind::Token for {Image,Sampler,SampledImage} in type_kind. 2021-03-24 14:51:50 +02:00
Johan Andersson
916f4798d3 Use Embark standard lints v0.3 2021-03-24 14:51:50 +02:00
Eduard-Mihai Burtescu
908487ae1d entry: use T instead of &T for Inputs. 2021-03-23 09:30:24 +01:00
Eduard-Mihai Burtescu
8c1406ee39 entry: reorganize storage class handling, and move some checking to attr. 2021-03-23 09:30:24 +01:00
Eduard-Mihai Burtescu
e04e1f53fc Replace spirv_std::storage_class::X<T> with &T/&mut T and optionally #[spirv(x)]. 2021-03-23 09:30:24 +01:00
XAMPPRocky
e7d68f7435
Add primitive set of arch instructions (#520) 2021-03-22 10:55:18 +00:00
Ashley Hauck
89dc8c65aa
Add cubemaps (#521) 2021-03-22 11:35:42 +01:00
XAMPPRocky
681e4f21ae
Update nightly (#516) 2021-03-22 10:20:05 +00:00
Eduard-Mihai Burtescu
94f46142a7 Use AggregatedSpirvAttributes instead of iterating over SpirvAttributes. 2021-03-22 11:23:55 +02:00
Eduard-Mihai Burtescu
ffcddd4f4c attr: disallow multiple attributes that are identical or in the same category. 2021-03-22 11:23:55 +02:00
Eduard-Mihai Burtescu
8688e8c25a attr: group attributes by their targets. 2021-03-22 11:23:55 +02:00
Eduard-Mihai Burtescu
a2026376b7 attr: group {ImageType,Sampler,SampledImage} into an IntrinsicType enum. 2021-03-22 11:23:55 +02:00
Eduard-Mihai Burtescu
fdbfdec6f5 symbols: move SpirvAttribute to the attr module. 2021-03-22 11:23:55 +02:00
Eduard-Mihai Burtescu
7f94fea3b6 attr: target_from_impl_item can just be private. 2021-03-22 11:23:55 +02:00
Eduard-Mihai Burtescu
b3b3fbec98 tests: add a test for where #[spirv(...)] attributes can (not) be used. 2021-03-22 11:23:55 +02:00
XAMPPRocky
52ae430ec1
Update dependencies (#506) 2021-03-22 09:27:34 +01:00
Eduard-Mihai Burtescu
3274778d98 link: don't use {:?} with paths because it turns \ into \\. 2021-03-22 08:01:22 +02:00
Ashley Hauck
3bc8a8076b
Fix recover_access_chain_from_offset on unsized fields (#510) 2021-03-19 15:23:55 +00:00
Jesse
9fb930b8f1
feat: add OpImageSampleExplicitLod to spirv-std (#498) 2021-03-19 07:24:20 +01:00
XAMPPRocky
27eb1d1413
Refactor validation tests to use compiletest (#464)
* Refactor validation tests to use compiletest

* Update tests/ui/lang/core/ptr/allocate_const_scalar.rs
2021-03-18 17:16:21 +00:00
Eduard-Mihai Burtescu
a0b4de4cf6 Bump rust-toolchain to nightly-2021-03-17, unlocking for i in 0..n loops! 2021-03-17 03:31:11 +02:00
Eduard-Mihai Burtescu
17f4f37a64 Bump rust-toolchain to nightly-2021-03-11. 2021-03-17 03:31:11 +02:00
XAMPPRocky
6b33db07e6
Update to 0.4.0-alpha.0 (#497)
* Release 0.4.0-alpha.0

compute-shader@0.4.0-alpha.0
rustc_codegen_spirv@0.4.0-alpha.0
spirv-builder@0.4.0-alpha.0
spirv-std@0.4.0-alpha.0
spirv-std-macros@0.4.0-alpha.0

Generated by cargo-workspaces

* Update Cargo.lock, remove unused one

* Update lockfile

* update lockfile
2021-03-16 15:14:53 +01:00
Jake Shadle
44393affe5
Update spirv-tools to 0.5.0 (#496)
* Update spirv-tools to 0.5.0

* Use ubuntu-20.04 image rather than the ambiguous "latest"

* Update spirv-tools binaries to latest
2021-03-16 13:04:23 +01:00
XAMPPRocky
1d365490a5
Add arithmetic instructions to arch (#446) 2021-03-16 09:42:18 +00:00
XAMPPRocky
6e8453f386
Decouple glam from spirv-std (#476) 2021-03-16 09:59:08 +01:00
Henno
eebb2d3b32
Require local size x dimension and remove gl_ (#495)
* Require local size and remove gl_

Removes the gl_ prefix from the compute shader attribute, shortens the thread dimension declaration to threads(x, y, z), requires the x size dimensions be specified, trailing ones may be elided for the y or z dimensions.

* Implement review suggestions
2021-03-16 09:12:21 +01:00
Johan Andersson
a173208d80
Update to Embark lints v0.3 (#482)
Co-Authored-By: Johan Andersson <repi@repi.se>

Co-authored-by: Erin Power <erin.power@embark-studios.com>
2021-03-12 12:35:37 +00:00
XAMPPRocky
cb8477df15
Document gpu-only (#489) 2021-03-11 13:23:52 +00:00
Eduard-Mihai Burtescu
7348f3389d
builder: constant-fold bx.mul(a, b) in order to support ptr::{read,write}. (#485) 2021-03-11 09:53:49 +01:00
Jesse
556e12f4fc
refactor: Slight refactor of textures.rs asm functions for consistency (#488) 2021-03-11 07:37:22 +01:00
Eduard-Mihai Burtescu
c3cf9fe5f3
Clean up some of the cases of duplication found by clippy::match_same_arms. (#487) 2021-03-11 07:31:48 +01:00
Jesse
c53c351987
feat: add image fetch (#480) 2021-03-10 08:17:07 +00:00
Daniel McNab
2d6a677563
Opt-in to rustc_private for rust-analyzer (#481)
https://github.com/rust-analyzer/rust-analyzer/pull/7891
2021-03-09 07:33:43 +01:00
Erin Power
93af32f107 Rm old submodules 2021-03-08 13:42:02 +01:00
Johan Andersson
a990ed5696
Use Embark standard lints v0.2 (#475) 2021-03-08 10:37:43 +01:00
Henrik Rydgård
d37b41c13e Add description to spirv-std-macros 2021-03-05 09:27:07 +01:00
Erin Power
c38402a1e2 Use version for macros 2021-03-04 18:13:07 +01:00
Erin Power
499bf4cede Version bump to 0.3.0 2021-03-04 17:50:40 +01:00
Eduard-Mihai Burtescu
f9946c0f52
attr: use only rustc's own Target, now that it has all the necessary variants. (#471) 2021-03-04 16:03:54 +00:00
Eduard-Mihai Burtescu
d574fa3737
Reenable clippy's use_self lint (disabled during last rustup) and remove now-unneeded #[allow]s for it. (#470)
* Reenable clippy's `use_self` lint (was disabled during last rustup).

* Remove now-unneeded `#[allow(clippy::use_self)]`.
2021-03-04 16:03:21 +00:00
Eduard-Mihai Burtescu
7723f5db6b
Access the original type's fields through a pointercast, under the Logical addressing model. (#469)
* Defer pointer casts under the Logical addressing model.

* Access the original type's fields through a `pointercast`, under the Logical addressing model.

* Add a test using a `for` loop and a custom `Range`-like iterator.
2021-03-04 15:15:01 +01:00
XAMPPRocky
5cfaa0055b
Update to the latest nightly (#467)
* Update to the latest nightly

* Update to fix clippy lints

* ignore test for now
2021-03-04 14:12:00 +01:00
XAMPPRocky
5446ca3f9f
Revert const generics (#465) 2021-03-03 17:09:31 +02:00
XAMPPRocky
6678f9a49d
Add entry point attribute configuration. (#458)
* Add entrypoint attribute configuration.

* Update with feedback

* Add docs

* fmt

* rm usused_attributes

* other changes

* fmt
2021-03-02 15:30:08 +02:00
Jasper Bekkers
d8e8c75472
Use newly added iter method in rspirv to speed up InstructionTable::new (#460)
* Use newly added `iter` method in rspirv to speed up debug builds of rustc_codegen_spirv by 6s in debug

* cargo update run
2021-03-02 08:51:37 +00:00
Eduard-Mihai Burtescu
6571f45a29 attr: mark #[spirv(...)] attributes as used and remove #[allow(unused_attributes)]. 2021-03-02 08:54:28 +02:00
Eduard-Mihai Burtescu
71254b48fa attr: add a pre-codegen #[spirv(...)] attribute checking pass. 2021-03-02 08:54:28 +02:00
Eduard-Mihai Burtescu
49509e3ccb symbols: cache a Rc<Symbols> per thread. 2021-03-02 08:54:28 +02:00
Eduard-Mihai Burtescu
ccdb9d5a21 symbols: rename #[spirv(image(...))] to #[spirv(image_type(...))]. 2021-03-02 08:54:28 +02:00
Eduard-Mihai Burtescu
9f97704d2e symbols: use Results to keep track of attribute parsing errors. 2021-03-02 08:54:28 +02:00
Eduard-Mihai Burtescu
0253fbec15 parse_attrs: avoid unnecessary allocation. 2021-03-02 08:54:28 +02:00
Jasper Bekkers
2f4c67e8e0
Safeness bug in StorageImage2d::write (#453)
* Safeness bug in StorageImage2d::write

It's pretty easy to see why this is unsafe, if multiple threads write to the same coordinate race-conditions happen.

Ultimately this should be addressed through something like #216 and some higher level abstractions on top of our buffer types, but since we don't have those for now, marking this as unsafe seems to be the only thing we can do for now.

* Remove unsafe {} block for clippy
2021-03-01 15:20:07 +00:00
XAMPPRocky
20341418e4
Fix storage image method restrictions (#455)
* Fix storage image method restrictions

* Update textures.rs

* Update textures.rs
2021-03-01 09:14:54 +00:00
XAMPPRocky
2c02c59c1f
Fixes issues related to upgrading to the latest nightly (#447) 2021-02-26 08:19:35 +00:00
XAMPPRocky
57a9ebb797
Add any and all arch instructions (#441) 2021-02-25 17:09:44 +02:00
Ashley Hauck
dafbbd745e
Don't ICE on duplicate definition (#445)
Also give a nice error on using an undefined name
2021-02-23 11:04:55 +01:00
Eduard-Mihai Burtescu
420ca6ae1d
Remove accidentally-commited test = false from rustc_codegen_spirv/Cargo.toml. (#439) 2021-02-22 11:45:07 +00:00
Eduard-Mihai Burtescu
2d948f757e specializer: do not run a DCE pass just before. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
dcf23e2e60 specializer: renumber IDs in expanded functions. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
47cf841209 spirv_std: deprecate load/store/then methods on storage_class::* types. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
0087342992 spirv-std: implement Deref and DerefMut for storage_class wrappers. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
d435c26915 link: add DUMP_POST_LINK to allow dumping the module before spirv-opt runs. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
d4da7f912d spirv_type_constraints: account for OpUCount{Leading,Trailing}ZerosINTEL usage. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
71ef9a25cf specializer: support IndexComposite patterns (for e.g. OpAccessChain). 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
72206042bb specializer: show function names in SPECIALIZER_DEBUG output. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
6f89c8ec54 specializer: deduplicate between InferOperandList's two variants. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
f214587f41 specialize: remove double % after gfx-rs/rspirv#184. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
72fb398232 Remove #[spirv(really_unsafe_ignore_bitcasts)]. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
67746012f5 Infer storage classes using the specializer, replacing special pointer types. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
cb0bd4b04a Introduce a "specializer" pass with "generic"s, inference and monomorphization-like expansion. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
d425409f65 spirv_type_constraints: support storage class equality constraints. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
0c8fe20476 spirv_type_constraints: make the pat! macro more flexible. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
de03fb3859 spirv_type_constraints: don't limit InstSig inputs to value operands. 2021-02-22 12:58:40 +02:00
Eduard-Mihai Burtescu
7da5be3766
Work around linker error by isolating spirv_tools usage to rustc_codegen_spirv. (#436) 2021-02-19 14:46:50 +02:00
Jasper Bekkers
6d2d4a13e6
Inline asm types (#418)
* Add more types for inline asm

* Add basic OpDecorate support to inline asm

* Add khronos ticket link

* Add additional operands support to inline assembly

* Fix unused import warning

* Switch to rspirv git dependency

* Update Cargo.lock

* fmt

* Switch to while-let loop

* Address feedback around `additional_extensions`

* Remove debug code

* Remove un-needed special cases for OpCapability and OpExtension

* Switch back to iterating over all instructions only once, with this one cool trick

* Add test for OpDecorate / varargs

* Fix residual merge error

* Add test for a complex OpImageSample instruction that needs some BitEnums
2021-02-18 14:08:58 +01:00
XAMPPRocky
34261a8905
Add StorageImage with read/write (#434) 2021-02-17 10:15:42 +00:00
Erin Power
77fd6ee4a9 Release 0.3.0-alpha.0
compute-shader@0.3.0-alpha.0
rustc_codegen_spirv@0.3.0-alpha.0
spirv-builder@0.3.0-alpha.0
spirv-std@0.3.0-alpha.0
spirv-std-macros@0.3.0-alpha.0

Generated by cargo-workspaces
2021-02-16 16:19:46 +01:00
Ashley Hauck
0285edb860
simd_types_indirect: false (#431)
also fix bug in abi.rs - vectors are always memory, never immediate
2021-02-15 14:59:55 +00:00
Ashley Hauck
8fe8e88a06
Update docs for the Image storage class (#426) 2021-02-15 08:32:28 +00:00
Ashley Hauck
56067de909
Support const args in asm! (#421) 2021-02-12 14:05:31 +01:00
XAMPPRocky
c10a6c0747
Add vector_insert_dynamic (#411)
* Add vector_insert_dynamic and copy_object

* Update arch.rs

* Update basic.rs

* Update arch.rs

* Update spirv_type_constraints.rs
2021-02-11 15:18:52 +00:00
Eduard-Mihai Burtescu
2f9d4d8e0d
Add a missing err.emit(); for the "spirv-opt failed" error. (#412) 2021-02-10 13:42:43 +00:00
Ashley Hauck
8a68551a06
Fix #403 (#407) 2021-02-02 12:20:10 +00:00
Eduard-Mihai Burtescu
3a4d140328
Don't require 1:1 mapping between OpTypeStructs and their names. (#406) 2021-02-01 14:24:02 +00:00
Ashley Hauck
3f0900c89d
Enable optimizer (#401)
* Enable optimizer

* Fix tests
2021-01-29 11:30:56 +00:00
Ashley Hauck
9f6c91c278
Remove different OpNames that target the same ID (#398) 2021-01-28 13:16:06 +00:00
Eduard-Mihai Burtescu
810ba5d1e4
Use rspirv::dr::Function's def_id convenience method. (#397) 2021-01-28 09:52:41 +00:00
XAMPPRocky
69b94bb6f9
Add initial arch module (#394) 2021-01-27 15:54:17 +00:00
Ashley Hauck
d88379908a
deduplicate OpVariable (#396) 2021-01-26 16:03:14 +00:00
XAMPPRocky
353bb96bd3
Add gpu_only proc macro (#392) 2021-01-25 10:39:47 +00:00
Jesse
04ad2ad64f
fix: handle an ICE resulting from a dangling pointer (#342) 2021-01-20 12:52:06 +00:00
Eduard-Mihai Burtescu
5f0b380a39
inline asm!: support writing _ in lieu of return types, for basic inference. (#376)
* Basic type constraints for all non-reserved SPIR-V instructions.

* inline asm!: support writing _ in lieu of return types, for basic inference.

* Demonstrate using result type inference in inline asm!.

* inline asm!: allow inferring the result type of OpSampledImage.
2021-01-20 10:40:26 +00:00
Ashley Hauck
225d89d7de
discard(), update rspirv, better capability computation (#380) 2021-01-18 11:59:27 +00:00
Ashley Hauck
8eadd904f7
Add derivatives for vector functions (#377) 2021-01-18 10:28:46 +01:00
Adrian Herath
f7cdf1d6bd
Rename unclear local variables in parse_image() (#379)
The variable name `dim` is used to represent dim, image_format, and
access_qualifier in parse_image(). This might cause confusion for
someone trying to read and understand symbols.rs. This commit changes
names of variables to better reflect their purpose.

Co-authored-by: Adrian Herath <adrianisuru@manjaro.hsd1.il.comcast.net>
2021-01-18 06:52:43 +00:00
XAMPPRocky
d55bf60b02
Document Derivative (#366)
* Document Derivative

* Mention absolute
2021-01-15 12:13:43 +00:00
XAMPPRocky
38f2ec12c9
Update bimap->0.6, pipe->0.4, strum->0.20, websys->0.3.46 (#365) 2021-01-11 09:08:02 +00:00
XAMPPRocky
9e7b9de28f
Add autolinks to silence rustdoc warnings (#363) 2021-01-05 12:14:34 +00:00
XAMPPRocky
b9592e50c5
Update to latest nightly (#358) 2021-01-04 10:25:56 +00:00
Jake Shadle
a6294e1df4
Update spirv-tools (#351)
* Split android into separate job

* Bump spirv-tools to 0.3.1
2020-12-18 10:44:50 +01:00
XAMPPRocky
51038a6ee9
Add description (#323) 2020-12-17 10:03:09 +00:00
Viktor Zoutman
a2a2e3917e
Renamed spirv-attrib to spirv-std-macros (#347) 2020-12-15 15:16:57 +00:00
Viktor Zoutman
46c16d1d0b
Better spirv-attrib (#346)
* Feedback

* cleanup

* Cleanup

* cleanup

* Feedback

* fmt cmon man, I need to format my code manually? pffff

* More feedback! fmt is no longer useless as well

* removed newline

* more if guards

* removed import

* MORE feedback

* fromiterator is gone!

* Removed debug line
2020-12-15 14:13:30 +00:00
Viktor Zoutman
1bcb994d59
Compile examples and spirv-std on stable (#340)
* Compile examples and spirv-std on stable

* new line

* weid space
2020-12-14 09:50:45 +00:00
Jake Shadle
95a4cfab41
Update spirv-tools to 0.2.0 (#343)
* Update spirv-tools to 0.2.0

* Rustfmt
2020-12-14 09:43:23 +00:00
Eduard-Mihai Burtescu
9e99c05a76
Update to nightly-2020-12-11. (#338)
* Update to nightly-2020-12-11.

* Update for rustfmt changes (`cargo fmt --all`).

* Update `rustc_codegen_spirv::linker::test` for `rustc_interface` changes.

* Use `spirv_tools::util::{to,from}_binary` to pacify clippy.

* `#[allow(clippy::unnecessary_wraps)]` on `Result`-returning `fn run_thin`.
2020-12-11 10:40:35 +00:00
Viktor Zoutman
06de5ba6ef
stable spirv-std (#335)
* should compile on stable now

* moved allow into cfg_attr

* more allow

* merged cfg_attr's
2020-12-11 10:31:17 +00:00
Eduard-Mihai Burtescu
ebf3dbee8d
Support "Unroll" Loop Control via function-scoped #[spirv(unroll_loops)]. (#337)
* Generalize the zombie serialization system to arbitrary custom decorations.

* Support "Unroll" Loop Control via function-scoped `#[spirv(unroll_loops)]`.

* Pacify the merciless clippy.
2020-12-10 19:57:15 +00:00
msiglreith
37b338ce67
fix coordinate type for SampleImage<Image2D> (#327) 2020-12-07 09:25:51 +00:00
XAMPPRocky
c1dc273e70
Update version number (#322)
* Update version number

* Add lockfile
2020-12-04 16:50:19 +00:00
msiglreith
fecc71d53f
Add support for sampled images (#320)
* Add support for sampled images

Combined image samplers are allowed as resources and require a generic parameter indicating the underlying image type.

* fix formatting issues

* address review comments

* fix formatting issues
2020-12-04 15:51:27 +00:00
Ashley Hauck
a653c61b64
Get closer to testing NO_DCE in CI (#321)
* Get closer to testing NO_DCE in CI

The only remaining validation issues are due to the SROA pass not being
implemented yet

* Revert mistakenly included change
2020-12-04 15:05:13 +00:00
Ashley Hauck
c70cee8f97
Add flat attribute (#317)
* Add flat attribute

* Document attributes
2020-12-04 11:20:58 +00:00
Eduard-Mihai Burtescu
6c7ca97e9b
Intercept panic calls and replace them with aborts. (#305)
* new_structurizer: fix infinite loops.

* intrinsics: use an infinite loop for `abort`.

* Don't deduplicate zombie values even with other zombies.

* Bring back `zombie_even_in_user_code` and use it for constants.

* Use global `OpVariable`s instead of undefs for `ConstantPointer`s.

* Intercept panic calls and replace them with aborts.
2020-12-03 18:40:24 +00:00
Ashley Hauck
bf9ef104d1
Make capability computation less strict, strings in asm! (#310)
* Make capability computation less strict, strings in asm!

* remove accidental println
2020-12-03 17:51:33 +00:00
Eduard-Mihai Burtescu
d4f791fda2
Track spans for zombies, even cross-crate. (#311)
* Track spans for zombies, even cross-crate.

* Pacify the merciless clippy.
2020-12-03 16:14:32 +00:00
Jasper Bekkers
e733f44637
Glam 0.11.1 (#309)
* Switch to glam 0.11.1

* Add lock file
2020-12-03 10:55:29 +00:00
Gray Olson
b41fe70b55
update glam to track bitshifter:master (#307) 2020-12-03 06:28:03 +00:00
Ashley Hauck
d8d80d77f6
Add test for issue 283 (#302) 2020-12-02 17:50:48 +00:00
Jasper Bekkers
bdfb537d4e
Add Image2dArray, needs new glam-rs (#301)
* Add Image2dArray, needs new glam-rs

* Newline
2020-12-02 16:01:42 +00:00
Eduard-Mihai Burtescu
e02beade35
New structurizer: now with ∞% more φ! (#287) 2020-12-02 11:05:04 +00:00
Eduard-Mihai Burtescu
adebc90070
Remove #[spirv(push_constant)] from function parameters. (#296) 2020-12-01 15:14:54 +00:00
Eduard-Mihai Burtescu
ae42a911a1
#[spirv(block)] for Block decorations on structs. (#295) 2020-12-01 14:28:49 +00:00
Eduard-Mihai Burtescu
340dfc4a76
spirv-builder: pass --target-dir to Cargo to avoid lock conflicts. (#293) 2020-12-01 14:09:36 +00:00
Ashley Hauck
0801e48ae0
Update glam to include latest changes (#291)
* Update glam to include latest changes

* Try workaround on CI...
2020-12-01 12:47:37 +00:00
Viktor Zoutman
f989dfe428
No longer reserved descriptor set 0 (#292) 2020-12-01 12:17:40 +00:00
Ashley Hauck
114d029163
Do not merge zombie and non-zombies (#288) 2020-11-30 15:27:02 +00:00
Ashley Hauck
c097297c51
Pass in span to type translator, remove zombie_even_in_user_code (#278) 2020-11-30 11:55:33 +00:00
XAMPPRocky
16c380a71b
Refactor and document storage classes (#280)
* Refactor storage classes macro and organisation

* Update storage_class.rs
2020-11-27 15:20:44 +00:00
Ashley Hauck
a73f54aa86
Implement textures (#276) 2020-11-26 13:16:22 +00:00
XAMPPRocky
59869ec58b
Move lang_items into spirv-std (#275) 2020-11-26 09:12:18 +00:00
Ashley Hauck
5f3fd5c9d1
rustup update (#273) 2020-11-26 09:00:22 +00:00
Gray Olson
353fa96af6
Rename pow to powf, remove saturate from MathExt, and update to latest glam (#248)
* remove saturate from spirv_std MathExt and rename pow to powf

* update to latest glam

* update glam again and add `std` feature to `spirv-std` to support cpu runner

* re-remove spirv-tools-sys submodule

* fixup! Merge branch 'main' into powf-saturate

* Use libm instead of MathExt

* Fix lint for unused import when compiling with std

Co-authored-by: khyperia <github@khyperia.com>
2020-11-24 09:28:58 +00:00
Henno
3888fbe51f
Add compile error when both use-compiled-tools and use-installed-tools are enabled (#269)
* Add compile error when both use-compiled-tools and use-installed-tools are enabled

The compile error is located in the build.rs for rustc-codegen-spirv so that the error happens early, rather than after compiling spirv-tools.

* lint

* lint
2020-11-23 06:37:47 +00:00
Eduard-Mihai Burtescu
28f604eb77
Use rustc_codegen_llvm's get_dylib_metadata to unblock proc macros. (#268) 2020-11-20 18:37:01 +00:00
Ashley Hauck
a92d76a81c
Intercept calls to libm (#264)
* Intercept calls to libm

* Switch to using function names instead of symbols

* remove forgotten comment
2020-11-20 18:35:58 +00:00
Eduard-Mihai Burtescu
6e0e23c620
spirv-builder: pass through non-JSON stdout lines even after an error. (#267) 2020-11-20 18:25:21 +00:00
Eduard-Mihai Burtescu
0581f8580e
Use a demangled symbol name for OpName. (#266)
* Use a demangled symbol name for OpName.

* Rename my_smoothstep back to smoothstep.

* Update SPIR-V tests to look for the absolute fn
path.
2020-11-20 13:54:26 +00:00
Eduard-Mihai Burtescu
3eebcd789f
Don't rely on symbol names in is_blocklisted_fn. (#265)
* Don't rely on symbol names in is_blocklisted_fn.

* is_blocklisted_fn: move "fmt_decimal" to symbols.
2020-11-20 11:43:31 +00:00
VZout
a49acc1709 Forgot to remove 2 cases of Instruction::new 2020-11-20 11:32:42 +01:00
Ashley Hauck
fcef9ba8de
Implement ddx, ddy, fwidth (#256) 2020-11-19 12:42:22 +00:00
Viktor Zoutman
da0453d356
Update math_ext.rs 2020-11-18 16:14:19 +01:00
Viktor Zoutman
6353505e9e
Introducing rspiv::Builder into the structurizer. (#253)
* Replaced most manual spirv manipulation with rspirv builder

* Replaced most manual spirv manipulation with rspirv builder

* removed braces

* prefer slices over vec
2020-11-18 13:43:38 +00:00
Ashley Hauck
bedbc4dc0f
asm! (#254) 2020-11-18 12:54:22 +00:00
charles-r-earp
f564a67100
Decorated entry variable name. (#250) 2020-11-18 08:13:30 +00:00
Viktor Zoutman
a841cc845f
Update math_ext.rs 2020-11-16 21:24:35 +01:00
Viktor Zoutman
daa382368c
Structurizer fixes (#244)
* Structurizer fixes

* reverted some unnessessary changes
2020-11-16 12:58:27 +00:00
VZout
28e71d9932 Reserve the descriptor set instead of the binding 2020-11-14 15:47:34 +01:00
Ashley Hauck
2f63addede
rustup update (#238) 2020-11-13 09:35:34 +00:00
Gray Olson
a79da96307
add trunc and fract to MathExt (#222) 2020-11-13 09:20:12 +00:00
Jake Shadle
0f3948dc27
Move out spirv-tools to separate repo (#237)
* Nuke spirv-tools

* Swap to use published spirv-tools crate
2020-11-13 09:57:12 +01:00
Ashley Hauck
86da42f2d7
Synthesize Session for tests, instead of Option<Session> (#228)
Also remove LinkerError and use rustc error reporting directly instead
2020-11-11 13:22:06 +00:00
Ashley Hauck
47d23ba800
Don't ICE on spir-v module version mismatch (#226) 2020-11-11 13:02:05 +00:00
Ashley Hauck
9c8cec3639
Make SpirvValue contain an enum for its value (#219) 2020-11-11 09:23:07 +01:00
XAMPPRocky
c2ccdbe6ef
Update glam and re-export glam from spirv_std (#220) 2020-11-11 08:13:37 +00:00
XAMPPRocky
cf52d51199
Add changes to compile rust-gpu on the latest nightly (#212)
* Update DILocation and update trait impls for nightly

* rustc_codegen_spirv: Update mir Scalar handling to nightly 2020-11-04

3a7970848c
df4d717d0b

* More changes to compile on the latest nightly

* Remove unused import warnings

Co-authored-by: Marijn Suijten <marijns95@gmail.com>
2020-11-10 08:16:25 +00:00
charles-r-earp
32c2ea58bc
Compute Shaders + ExecutionMode's (#195)
* Created examples/ wgpu-example-compute-runner + wgpu-example-compute-shader.

* Working compute example, can compile and run, set local_size. Validated changes do not break rendering example.

* Added complete list of ExecutionMode's to be specified underneath ExecutionModel. Replaced SpirvAttribute::Entry ExecutionModel with an Entry struct, which includes a Vec of ExecutionMode, ExecutionModeExtra to be submitted in entry.rs. Compute example runs. Passes all tests.

* Changed Cargo license info for compute examples. Simplified compute runner to be more similar to other wgpu example. Split of entry logic in symbol.rs to separate function. Fixed issue in builder/mod.rs.

* Pulled in reorganization changes to crates + examples. In symbols.rs moved really_unsafe_ignore_bitcasts to its own Symbol match. In entry.rs, entry stubs now return the fn_id, so that entry_stub() can add the execution modes in one place. Passed all tests.

* cargo fmt

* Removed duplicate examples. Fixed cargo fmt bug in compute runner.
2020-11-10 08:10:21 +00:00
bjorn3
1f615dc491
It is no longer necessary to provide supported_target_features (#214) 2020-11-05 11:24:20 +00:00
Viktor Zoutman
8d2b8ce5f3
Continue and minor break fixes (#202)
* Continue and break fixes

* Ashley Clippy

* Incorporated Feedback

* Clippy lint

* clippy

* minor fix
2020-11-02 15:14:06 +00:00
khyperia
72e1373e1c Fix path missed in #200 2020-11-02 12:55:49 +01:00
khyperia
0b5ddb697b Add reminder test to implement strings. 2020-11-02 11:46:24 +01:00
XAMPPRocky
ad610b57f5
Move top-level crates to crates/ directory (#200)
* Move top-level crates to crates/ directory

* Update docs

* Update test.sh

* Update docs.sh

* Update clippy.sh
2020-11-02 11:26:10 +01:00