Commit Graph

2018 Commits

Author SHA1 Message Date
teoxoy
763ec5d1a5 complete HLSL reserved symbols 2023-06-12 17:41:53 -07:00
teoxoy
dbb6d8e814 avoid allocating 2023-06-12 17:41:53 -07:00
Erich Gubler
9b6e74813f build: mark hlsl-snapshots as publish = false 2023-06-09 14:32:02 +02:00
Erich Gubler
3e11b4a3cd refactor(xtask): prefer ? to Result::map in subcmd. parsing 2023-06-09 14:32:02 +02:00
Erich Gubler
cd7b8aca47 refactor(xtask): avoid unnecessary IIFE 2023-06-09 14:32:02 +02:00
Erich Gubler
273ff5d829 style: alphabetize dev-dependencies 2023-06-08 16:56:57 +02:00
Erich Gubler
daeb64c429 build(ci): trigger for ron files in HLSL shader snapshot test config. 2023-06-08 16:56:57 +02:00
Erich Gubler
91d48b2923 build: move from make to cargo xtask workflows
Re-implement `naga` development workflows using [`cargo xtask`]. Convert
`make` logic and shader test configuration as file with Bash variables
into an `xtask` crate and YAML files, respectively.

Pros:

* We now have a _portable_ workflow everywhere, which means Windows
  folks and people who don't install `make` don't have to suffer.
  😮‍💨
* Workflow logic is now relatively easy to inspect and change. Whew!
  💁🏻‍♂️💦
* Contributors can use their existing Rust knowledge to contribute to
  developer experience. 🎉
* `cargo xtask` is a relatively well-known convention for workflows in
  the ecosystem.
* We can do fancy things like allow folks to run at different log levels
  for workflows, depending on their tastes.

Cons:

* There's now a non-trivial compile step to project workflow.
  Incremental rebuilds seem to be pretty short, though!
* Code is much more verbose than the (very) terse `make` implementation.

[`cargo xtask`]: https://github.com/matklad/cargo-xtask
2023-06-08 16:56:57 +02:00
Jim Blandy
e8a7e50f0f Makefile: validate-spv: update spirv-as and spirv-val invocations. (#2374)
Newer versions of these programs require `-` as a filename argument to
read from standard input.
2023-06-06 17:02:10 +02:00
daxpedda
b7f4006e46 Bump bitflags to v2 (#2358) 2023-06-01 15:40:47 +02:00
Pieter-Jan Briers
544ccf88da Handle case insensitive FXC HLSL keywords. (#2347)
There are a few keywords like "pass" in HLSL that are actually case-insensitive for FXC. This can be disabled with strict mode, but even if you do that FXC will continue to give an error if you try to use them in identifiers (at all, with any casing).

This changes the namer code to escape these keywords even if the casing is different.

If you're wondering where I got the list from: I looked at the list of strings in D3DCompiler_47.dll.
2023-05-31 15:00:23 +02:00
Teodor Tanasoaia
5206c59509 update snapshots (#2363) 2023-05-30 14:03:10 +02:00
Daniel McNab
907b7c7cda Workgroup uniform load (#2201)
Implement the WGSL `workgroupUniformLoad` function.
2023-05-26 13:32:22 -07:00
Shaye Garg
1c17fa82d4 [wgsl-in] Error on param redefinition (#2342)
* error on param redefinition

* also fix #2312
2023-05-25 13:13:27 +02:00
Jim Blandy
baed251cb1 Document which expressions are in scope for a break_if expression. (#2326) 2023-05-25 13:08:24 +02:00
Jim Blandy
201c0e2999 [spv-in] Improve documentation for SPIR-V control flow parsing. (#2324) 2023-05-25 13:06:21 +02:00
Erich Gubler
4b41e07a99 refactor: add several clippy lints (#2296) 2023-05-24 17:23:24 +02:00
Ashley
ce48588d74 [front/spir-v] Obey the is_depth field of OpTypeImage (#2341)
* [front/spir-v] Obey the is_depth field of OpTypeImage

* Add changed tests
2023-05-22 09:35:58 -07:00
Eduard-Mihai Burtescu
423a069dcd [spv-in] Convert conditional backedges to break if. 2023-05-12 13:59:08 -07:00
Teodor Tanasoaia
62b287e761 Change type of constant sized arrays to NonZeroU32 (#2337) 2023-05-12 14:38:50 +02:00
teoxoy
405413452d Correct type of index and flush the emitter 2023-05-11 12:57:28 -07:00
teoxoy
d842d6688d Introduce GlobalCtx 2023-05-11 09:52:40 -07:00
Jim Blandy
d763fb31e2 [spv-in] Generate Expression::Literal in some limited cases. 2023-05-11 07:09:53 -07:00
Jim Blandy
959c84f039 [glsl-in] Generate Expression::Literal. 2023-05-11 07:09:53 -07:00
Jim Blandy
412d5aa62e [wgsl-in] Generate Expression::Literal. 2023-05-11 07:09:53 -07:00
Jim Blandy
02ddf6532c Introduce Expression::Literal. 2023-05-11 07:09:53 -07:00
Teodor Tanasoaia
4d87401fac Use Expression::ZeroValue in SPIR-V and WGSL front ends. 2023-05-10 19:30:03 -07:00
Teodor Tanasoaia
dcc8615c5b Introduce Expression::ZeroValue. 2023-05-10 19:30:03 -07:00
Erich Gubler
dd54aaf260 refactor(valid)!: remove unneeded ConstantError::Unresolved{Component,Size} (#2330)
Resolves #2329.
2023-05-09 22:10:09 -07:00
Jim Blandy
59a2441a43 [msl-out] Revert af4d989 since #764 removes the need for it (#2331)
Assigning arrays by value works fine since all arrays are now wrapped by a struct.

Co-authored-by: teoxoy <28601907+teoxoy@users.noreply.github.com>
2023-05-09 16:20:15 -07:00
Teodor Tanasoaia
875df5899b add changelog for v0.12 (#2310) 2023-05-09 11:29:33 -04:00
Ashley
da3f43394f [wgsl-out] Simplify map_binding_to_attribute to always return an interpolate attribute (#2318) 2023-05-02 13:50:59 +02:00
Evan Mark Hopkins
9befaed7e9 [hlsl-out] Fix return type for firstbitlow/high (#2315) 2023-04-25 14:49:26 +02:00
Dzmitry Malyshau
37b3c36a8f Support array bindings of buffers (#2282)
* Support buffer resource arrays in IR, wgsl-in, and spv-out

* spv-out: refactor non-uniform indexing semantics to support buffers

* Update the doc comment on BindingArray type

* Improve TypeInfo restrictions on binding arrays

* Strip DATA out of binding arrays

* Include suggested documentation, more binding array tests, enforce structs
2023-04-24 21:30:49 -07:00
Erich Gubler
1421a5e1ab refactor(valid)!: remove TypeError::UnresolvedBase (#2308)
Resolves #2303.
2023-04-20 19:39:38 +02:00
Connor Fitzgerald
b99d58ea43 Update to version 0.12 naga-v0.12.0 naga-cli-v0.12.0 2023-04-19 17:04:49 -04:00
teoxoy
b9c5cb5a78 validate vertex stage returns the position built-in 2023-04-12 10:48:18 -07:00
daxpedda
f59668ccfa Allow array_index to be unsigned (#2298) 2023-04-07 16:01:55 +02:00
Erich Gubler
99a7773e65 fix(hlsl-out): use Interlocked<op> intrinsic for atomic integers (#2294)
We currently assume that we are using raw `RWByteAddressBuffer` methods for all atomic operations (`<pointer>.Interlocked<op>(<raw_byte_offset>, …)`), which is only true when we use `var<storage, read_write>` globals. For `var<workgroup>` globals, we need `Interlocked<op>(<pointer>, …)`, using the original expression as the first argument.

Fix this by branching on the `pointer`'s address space in `Atomic` statements, and implementing the workgroup address space case with intrinsics.

Remove atomic ops from `access`, add new `atomicOps` test.

Fixes #2284
2023-04-05 19:37:22 -07:00
Teodor Tanasoaia
1158709747 stop code coverage comments (#2283) 2023-04-05 17:54:07 +02:00
Christopher Fleetwood
7c00548075 [wgsl] Use alias instead of type for type aliases (#2299) 2023-04-04 12:35:32 +02:00
Jim Blandy
da8e911d9d [hlsl-out]: Document storage access generation. (#2295) 2023-03-31 17:30:43 -07:00
PyryM
52043be004 [spv-out] Fix invalid spirv being generated from integer dot products (#2291)
* Fix invalid spirv generation in int dotprod

constants cannot be declared inside of a function block, so instead use `write_constant_null` to produce a correctly-declared constant 0.

* autogenerated test snapshots
2023-03-30 16:02:54 +02:00
Jim Blandy
53d62b9ede Clean up handling of RayDesc builtin type, somewhat. 2023-03-22 17:23:07 -07:00
Dzmitry Malyshau
c34eed5e47 Address Jim's review notes, use typegen module for atomic struct 2023-03-22 17:23:07 -07:00
Dzmitry Malyshau
024c197cc8 ray query: validation, better test 2023-03-22 17:23:07 -07:00
Jim Blandy
18710fee1e Expand on the documentation for ray-tracing features. 2023-03-22 17:23:07 -07:00
Dzmitry Malyshau
532d1ad510 msl: ray query support 2023-03-22 17:23:07 -07:00
Dzmitry Malyshau
22e341b039 wgsl: handle RayDesc/RayIntersection at the type decl level instead of an AST constructor 2023-03-22 17:23:07 -07:00
Dzmitry Malyshau
ab9c36441f fill up the ray query intersection struct 2023-03-22 17:23:07 -07:00