Commit Graph

981 Commits

Author SHA1 Message Date
Jim Blandy
562af28773 [spv-out] Move cached expression table to BlockContext.
Since the table of cached expressions is only meaningful within a single
function, it's really something that should only be accessed from
`BlockContext`.

However, to save heap allocations, it makes sense to retain it in the `Writer`
between functions. But the `Writer` field should have a different name, to
ensure people don't use it by accident.
2021-07-06 14:57:09 -04:00
Jim Blandy
a818b2e089 Document Loop, Break, and Continue statements. 2021-07-06 13:55:09 -04:00
João Capucho
e8bb7f2503 [glsl-in] Parse array initializers 2021-07-06 11:24:05 -04:00
João Capucho
ee1004d443 [glsl-in] Use cast for implicit conversion
Previously this was a bitcast
2021-07-06 11:24:05 -04:00
João Capucho
ee343b3017 [glsl-in] Implicit splat max builtin 2021-07-06 11:24:05 -04:00
João Capucho
7bced3f4e8 [glsl-in] Add support for all texture types 2021-07-06 11:24:05 -04:00
João Capucho
2b475ecc96 [spv-out] Support object-wise select 2021-07-06 10:12:24 -04:00
Dzmitry Malyshau
9473340c16 wgsl-in: fix auto array stride 2021-07-06 02:20:26 -04:00
Dzmitry Malyshau
beabd62d96 wgsl: type inference for local variables 2021-07-06 01:26:03 -04:00
Gordon-F
65fbbf1101 [hlsl-out] Return only real names on entry point in ReflectionInfo 2021-07-05 18:54:42 -04:00
Gordon-F
2812acf8cd [hlsl-out] Handle output semantic for shader stage 2021-07-05 18:54:42 -04:00
Joshua Groves
9192f7b882 wgsl-in: add more error tests 2021-07-05 02:24:18 -04:00
João Capucho
2f002a0594 [spv-out] Load texture arguments ahead of time 2021-07-05 02:23:00 -04:00
João Capucho
c7b98f5ab9 [spv-out] accept texture trough function argument 2021-07-05 02:23:00 -04:00
Joshua Groves
c5805a9e10 wgsl-in: add more error tests 2021-07-04 01:00:21 -04:00
Jasper St. Pierre
7a9fb864ad [glsl-in] Add support for gl_FragCoord / gl_FragDepth
And remove the ability to read gl_Position in fragment.
2021-07-03 00:29:44 +01:00
Jasper St. Pierre
0b9af95793 [glsl-in] Make sure to Load on a ValuePointer as well
Fixes issues with indexing vectors.
2021-07-02 01:44:57 -04:00
Jasper St. Pierre
78e1304d42 [glsl-in] Convert bool -> scalar cast to Select 2021-07-02 01:34:34 -04:00
Dzmitry Malyshau
a92f7689f2 [mtl] detect binding incomatibility 2021-07-02 00:25:48 -04:00
João Capucho
6e9410c056 [glsl-in] More implicit casts for builtins 2021-07-01 21:02:19 -04:00
João Capucho
1e2aee2263 [glsl-in] Clamp function fixes
Allow vector sources and scalar selector
Do implicit conversions
2021-07-01 21:02:19 -04:00
João Capucho
e277cd1b12 [glsl-in] Fix shifts between vectors and scalars 2021-07-01 21:02:19 -04:00
Robert Swain
377941a98f [msl-out] Add 'this' as a reserved keyword 2021-07-01 21:00:29 -04:00
Jasper St. Pierre
cb8e9f2cad [glsl-in] Implicitly splat the inputs of clamp() 2021-07-01 18:32:33 +01:00
João Capucho
8880faf360 Address more comments 2021-07-01 11:19:28 -04:00
João Capucho
a1749ab9c5 [glsl-out] Fix argument skipping 2021-07-01 11:19:28 -04:00
João Capucho
2bb15eb0a8 [glsl-in] Add support for texture arguments 2021-07-01 11:19:28 -04:00
João Capucho
4da665d3ba Address comments 2021-07-01 11:19:28 -04:00
João Capucho
d0fd065096 [glsl-out]Handle texture/sampler function argument 2021-07-01 11:19:28 -04:00
João Capucho
7df4a52af9 [valid] Handle texture/sampler function argument 2021-07-01 11:19:28 -04:00
João Capucho
f98b4e2f48 [spv-in] Support texture/sampler function argument 2021-07-01 11:19:28 -04:00
Jim Blandy
e32f10f940 [spv-out] recyclable: Remove capacity reduction code. 2021-07-01 01:07:01 -04:00
Jim Blandy
3a1a2ed8b3 [spv-out] Move BlockContext into its own file.
Rearrange some code for easier visibility.

`make_local` doesn't need a PhysicalLayout `self`; make it a free function.
2021-07-01 01:06:18 -04:00
Jim Blandy
f878a9dcaf [spv-out]: Introduce helpers for BlockContext code.
Give `BlockContext` its own `temp_list`, which it steals from `Writer` for a
bit.

Add `BlockContext::cached`, for getting cached expression ids.
2021-07-01 01:06:18 -04:00
Jim Blandy
9f7424c3af [spv-out]: Remove all #[allow(clippy::too_many_arguments)] attrs. 2021-07-01 01:06:18 -04:00
Jim Blandy
634632a382 [spv-out]: Introduce BlockContext.
This commit should should cause no visible change in behavior.

Many `back::spv::Writer` methods take long lists of arguments simply describing
the module and function we're generating code for, but these never change while
we generate a given function. This commit moves some of those values into a
`BlockContext` type, and turns those `Writer` methods into `BlockContext`
methods, so that code can access these values through `self`, rather than
threading them through everywhere as arguments.

Many uses of `self.foo` become `self.writer.foo`. Some of these can be
simplified, but to make this commit easier to review, most of those changes are
left to later commits.

This allows us to remove some `#[allow(clippy::too_many_arguments)]` attributes.
2021-07-01 01:06:18 -04:00
Jim Blandy
e0b37667ca [spv-out] Move future BlockContext methods into their own impl block.
This commit should introduce no meaningful code changes. It's simply isolating
the `Writer` methods that should be `BlockContext` methods into their own impl
block, to make it easier to see the meaningful changes needed to introduce
`BlockContext`.
2021-07-01 01:06:18 -04:00
Jasper St. Pierre
fbab3a3ba5 [glsl-in] Add support for texture function with LOD bias 2021-07-01 02:45:13 +01:00
Gordon-F
607206f9a5 [hlsl-out] Enable operators snapshot test 2021-06-29 09:49:00 -04:00
Gordon-F
6723c8f6ae [hlsl-out] Implement Derivative expression and enable standard snapshot test for HLSL 2021-06-29 09:49:00 -04:00
Dzmitry Malyshau
68a2efd3c5 glsl-out: make the cs adjustment to also flip Y 2021-06-29 02:18:56 -04:00
Dzmitry Malyshau
ba066c83e7 glsl-out: proper continuing block 2021-06-29 01:44:54 -04:00
Dzmitry Malyshau
e8b71b8dc5 [glsl-out] Support extended shadow sampling instructions, and the offset 2021-06-28 15:01:39 -04:00
Dzmitry Malyshau
cfbe83e384 glsl-out: adjust coordinate space 2021-06-28 15:01:39 -04:00
Igor Shaposhnik
0cf5484bba [hlsl-out] Implement loop statement and composite constants 2021-06-27 18:36:28 -04:00
Jim Blandy
06cfbbde4e Flesh out the Naga module-level documentation. 2021-06-27 18:26:58 -04:00
Jasper St. Pierre
dd791a26ae glsl: Replace todo!() with a NotImplemented error
So we can get a source location rather than a panic.
2021-06-27 21:54:21 +01:00
Jasper St. Pierre
8729391e53 [glsl-in] Fix function lookup
First look for exact matches before trying the implicit
lookup. Otherwise, finding two wrong matches first will
result in an ambiguous function error.

This logic could use with a bit of a cleanup, keeping
track of a closer score and doing more exact matching
on types, but this might be good enough for now.
2021-06-27 21:54:04 +01:00
Dzmitry Malyshau
57b3256020 [glsl-out] binding location mapping 2021-06-27 01:09:53 -04:00
Gordon-F
19de60f6e4 [hlsl-out] Implement more expressions 2021-06-26 13:15:44 -04:00