Jason Ekstrand
01ba96e059
nir/spirv: Add support for msb/lsb opcodes
2016-01-04 17:37:10 -08:00
Jason Ekstrand
f32370a536
nir/spirv: Add a documenting assert for OpConstantSampler
2016-01-04 17:37:10 -08:00
Jason Ekstrand
0309199802
nir/spirv: Add initial support for ConstantNull
2016-01-04 17:37:10 -08:00
Jason Ekstrand
f6c4658cde
nir/spirv: Fix group decorations
...
They were completely bogus before. For one thing, OpDecorationGroup
created a value of type undef rather than decoration_group. Also
OpGroupMemberDecorate didn't properly apply the decoration to the different
members of the different groups. It *should* be correct now but there's no
good way to test it yet.
2016-01-02 11:53:36 -08:00
Jason Ekstrand
1ddcbbf05f
nir/spirv: Add a missing break statement in handle_image
2015-12-30 21:57:04 -08:00
Jason Ekstrand
0bb103d010
nir/spirv: Handle push constants after decorations
2015-12-30 20:54:27 -08:00
Jason Ekstrand
cf6ce424e0
nir/spirv: Fix constant num_elements and allocation
...
Thanks to the addition of nir_clone, we now have a num_elements field in
nir_constant which we weren't setting. Also, constants have to be parented
to the variable they initialize, so we have to make a copy.
2015-12-30 18:51:59 -08:00
Jason Ekstrand
5afac62b28
nir/spirv: Handle OpLine
2015-12-30 17:45:43 -08:00
Jason Ekstrand
149f35bbba
nir/spirv: Let OpEntryPoint act as an OpName
2015-12-30 17:45:43 -08:00
Jason Ekstrand
5f7f88524c
nir/lower_outputs_to_temporaries: Take a nir_function entrypoint
2015-12-30 17:45:43 -08:00
Jason Ekstrand
0fe4580e64
nir/spirv: Add support for multiple entrypoints per shader
...
This is done by passing the entrypoint name into spirv_to_nir. It will
then process the shader as if that were the only entrypoint we care about.
Instead of returning a nir_shader, it now returns a nir_function.
2015-12-30 17:45:43 -08:00
Jason Ekstrand
e993e45eb1
nir/spirv: Get the shader stage from the SPIR-V
...
Previously, we depended on it being passed in.
2015-12-30 17:45:43 -08:00
Jason Ekstrand
db3a64fcea
nir/spirv: Use shader stage for determining variable locations
2015-12-30 17:45:43 -08:00
Jason Ekstrand
d7ae2200f9
nir/spirv: Get rid of default GS info
...
shaderc has been fixed for a while now.
2015-12-30 17:45:43 -08:00
Jason Ekstrand
d9c9a117dc
nir/spirv: Handle execution modes as decorations
...
They're basically the same thing.
2015-12-30 17:45:43 -08:00
Jason Ekstrand
2b6bcaf91a
nir/spirv: Separate handling of preamble from type/var/const instructions
2015-12-30 17:45:43 -08:00
Jason Ekstrand
07b4f17aaf
nir/spirv/GLSL450: Add support for SAbs
2015-12-30 14:41:49 -08:00
Kenneth Graunke
e6cd0c0e1c
nir/spirv: Implement IsInf and IsNan built-ins.
2015-12-30 14:10:44 -08:00
Kenneth Graunke
9f23116bfa
Revert "nir/spirv: Update to the 1.0 GLSL.std.450 header"
...
This reverts commit b33f5d3889
,
and also removes the (empty) case statements for the new built-ins.
It doesn't look like glslang has updated yet, so updating the header
just breaks everything, as we no longer agree on opcode numbers.
2015-12-30 13:26:56 -08:00
Jason Ekstrand
451fe2670c
nir/spirv/cfg: Handle discard
2015-12-29 19:23:25 -08:00
Kenneth Graunke
7cdcee3bed
nir/spirv/glsl450: Enumerate more built-in opcodes.
2015-12-29 16:06:35 -08:00
Jason Ekstrand
2a58cb03d0
nir/spirv: Use instr_rewrite_src for updating phi sources
...
You can't just add a new source to a phi because use/def information won't
get updated properly. Instead, you have to use one of the core helpers.
Some day, we may want to add a nir_phi_instr_add_src helper.
2015-12-29 15:44:39 -08:00
Kenneth Graunke
b4a1c9b506
nir/spirv/glsl450: Implement inverse hyperbolic trig built-ins.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
2ea111664c
nir/spirv/glsl450: Implement Refract built-in.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
74529a2c50
nir/spirv/glsl450: Implement hyperbolic trig built-ins.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
0b1a436ac8
nir/spirv/glsl450: implement Reflect built-in.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
659a3623b0
nir/spirv/glsl450: Implement FaceForward built-in.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
b10af36d93
nir/spirv/glsl450: Implement SmoothStep.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
6a0fa2d758
nir/spirv/glsl450: Implement Cross built-in.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
083fd6ec2a
nir/spirv/glsl450: Implement Clamp/SClamp/UClamp.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
034010924e
nir/spirv/glsl450: Implement the Log built-in.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
ffc5ae7c9e
nir/spirv/glsl450: Implement Exp built-in.
2015-12-29 15:27:03 -08:00
Kenneth Graunke
227e250005
nir/spirv/glsl450: Add a helper for doing fclamp().
2015-12-29 15:27:03 -08:00
Kenneth Graunke
0f801752f2
nir/spirv/glsl450: Add helpers for calculating exp() and log().
2015-12-29 15:27:03 -08:00
Kenneth Graunke
9c9edd1ce8
nir/spirv/glsl450: Add an 'nb' shortcut variable.
...
"nb" is shorter and more convenient than "&b->nb", especially
when several operations are composed together into a larger expression
tree.
2015-12-29 15:27:03 -08:00
Jason Ekstrand
6fa47c9c17
nir/builder: Add a nir_jump helper
2015-12-29 14:48:34 -08:00
Jason Ekstrand
b33f5d3889
nir/spirv: Update to the 1.0 GLSL.std.450 header
2015-12-29 14:29:03 -08:00
Jason Ekstrand
5dd4386b92
nir/spirv: Use a C99-style initializer for structure fields
...
This ensures that all unknown fields get zero-initizlied so we don't have
undefined values floating around.
2015-12-29 13:15:20 -08:00
Jason Ekstrand
0a2ab87947
nir/spirv: Move CF emit code into vtn_cfg.c
2015-12-29 12:50:31 -08:00
Jason Ekstrand
4e22cd2e32
nir/spirv: Add support for switch statements
2015-12-29 12:50:31 -08:00
Jason Ekstrand
cf555dc1c2
nir/spirv: A couple simple loop fixes
2015-12-29 12:50:31 -08:00
Jason Ekstrand
303d095f58
nir/spirv: Add an actual CFG data structure
...
The current data structure doesn't handle much that we couldn't handle
before. However, this will be absolutely crucial for doing swith
statements. Also, this should fix structured continues.
2015-12-29 12:50:31 -08:00
Jason Ekstrand
b005fd62f9
nir/spirv: Add GLSL.std.450.h
...
It accidentally got removed during the mass rename.
2015-12-28 15:46:22 -08:00
Jason Ekstrand
7aaed91581
nir/spirv: Move to its own directory
2015-12-28 11:49:39 -08:00