Commit Graph

33 Commits

Author SHA1 Message Date
Hans-Kristian Arntzen
3186701739 GLSL: Support GL_EXT_nonuniform_qualifier. 2019-05-02 11:15:51 +02:00
Hans-Kristian Arntzen
6f091e7c8f GLSL: Support GL_EXT_scalar_block_layout. 2019-04-26 15:43:37 +02:00
Hans-Kristian Arntzen
2cc374a0c8 GLSL: Implement GL_EXT_buffer_reference.
Buffer objects can contain arbitrary pointers to blocks.
We can also implement ConvertPtrToU and ConvertUToPtr.
The latter can cast a uint64_t to any type as it pleases,
so we will need to generate fake buffer reference blocks to be able to
cast the type.
2019-04-26 11:43:51 +02:00
Hans-Kristian Arntzen
689a7deb3e Make ray-tracing files .nocompat. 2019-03-27 10:04:42 +01:00
Patrick Mours
0f72199b8f Add generated reference shaders again 2019-03-26 15:21:12 +01:00
Patrick Mours
90c91e4f23 Fix missing check for purity on ray tracing builtins 2019-03-26 14:25:25 +01:00
Patrick Mours
aa1c72bc51 Add ray tracing test shaders
Slightly modified from https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#_sample_code_2
2019-03-25 15:07:51 +01:00
Hans-Kristian Arntzen
0474848d4a GLSL: Support emitting push constant block as a plain UBO. 2019-03-19 10:58:52 +01:00
Hans-Kristian Arntzen
2ed171e525 GLSL/MSL: Implement 8-bit part of VK_KHR_shader_float16_int8.
Storage was in place already, so mostly just dealing with bitcasts and
constants.

Simplies some of the bitcasting logic, and this exposed some bugs in the
implementation. Refactor to use correct width integers with explicit bitcast opcodes.
2019-01-30 15:45:24 +01:00
Chip Davis
1fb27b4cda Add support for 8- and 16-bit types to GLSL and MSL.
In GLSL, 8-bit types require GL_EXT_shader_8bit_storage. 16-bit types
can use either GL_AMD_gpu_shader_int16/GL_AMD_gpu_shader_half_float or
GL_EXT_shader_16bit_storage.
2018-11-01 10:20:57 -05:00
Hans-Kristian Arntzen
480acdad18 Deal with OpSpecConstantOp used as array size.
When trying to validate buffer sizes, we usually need to bail out when
using SpecConstantOps, but for some very specific cases where we allow
unsized arrays currently, we can safely allow "unknown" sized arrays as
well.

This is probably the best we can do, when we have even more difficult
cases than this, we throw a more sensible error message.
2018-11-01 14:58:02 +01:00
Hans-Kristian Arntzen
d4ad1e266a Add test case for local_size_x_id and some complex cases. 2018-11-01 11:23:48 +01:00
Hans-Kristian Arntzen
ffa9133d77 Support ternary expressions in OpSpecConstantOp. 2018-06-25 09:49:13 +02:00
Hans-Kristian Arntzen
17be3c652f Deal with fake overloads when using combined image samplers. 2018-05-02 10:36:00 +02:00
Hans-Kristian Arntzen
f56433b802 Add new tests for combined arrays of sampler + image. 2018-04-23 12:28:05 +02:00
Hans-Kristian Arntzen
146ea76f52 Add test shader for subgroup.
Update SPIRV-Tools/glslang commits.
Use vulkan1.1 environment for testing.
Found new "errors" in SPIRV-Tools, so disable validation on those shaders
for now.
2018-04-11 10:29:47 +02:00
Hans-Kristian Arntzen
e1ccfd5dbb Implement all of subgroup. 2018-04-10 17:16:41 +02:00
Hans-Kristian Arntzen
f6c0e53f58 Start adding Vulkan 1.1 subgroup support to GLSL. 2018-04-10 16:13:33 +02:00
Hans-Kristian Arntzen
e7bf8d2f48 Refactor out noopt shaders to their own folders.
Makes maintenance easier with less clutter.
2018-03-13 10:39:49 +01:00
Hans-Kristian Arntzen
9fbd8b789e Update tests for latest SPIRV-Tools and glslang. 2018-03-12 15:11:55 +01:00
Hans-Kristian Arntzen
dd603eab58 Support spec constant array size in blocks.
Won't really be correct if the spec constant is changed outside
SPIRV-Cross, but nothing we can do about that, really.
2018-02-23 15:11:45 +01:00
Hans-Kristian Arntzen
2e68675ef7 Support mediump in desktop Vulkan GLSL. 2017-12-06 10:25:58 +01:00
Hans-Kristian Arntzen
d7f38ab4bf Add support for SPV_KHR_multiview. 2017-08-15 13:28:16 +02:00
Hans-Kristian Arntzen
c8d60914c4 Add support for SampleId/SampleMask/SamplePosition builtins. 2017-07-24 10:07:31 +02:00
Hans-Kristian Arntzen
de33d89074 Add explicit in/out locations everywhere.
Needed for newer glslang. With Vulkan semantics for SPIR-V, all
locations must be explicitly defined.
2017-06-21 09:39:08 +02:00
Hans-Kristian Arntzen
89d57e15ba Add test case for combined depth image sampler in GLSL. 2017-05-06 13:56:45 +02:00
Hans-Kristian Arntzen
5d4bb687bc Support arrays which have spec constant size.
The size of an array can be a specialization constant or a spec constant
op. This complicates things quite a lot.

Reflection becomes very painful in the presence of expressions instead
of literals so add a new array which expresses this.

It is unlikely that we will need to do accurate reflection of interface
types which have specialization constant size.

SSBOs and UBOs will for now throw exception if a dynamic size is used since it
is very difficult to know the real size.
2016-10-03 17:17:11 +02:00
Hans-Kristian Arntzen
7e8afa872b Implement OpSpecConstantOp.
The details here get quite hairy, and it's not complete as not all
functionality is implemented in glslang yet.
2016-10-03 15:54:02 +02:00
Hans-Kristian Arntzen
3c5f55cde1 Add special test for more coverage in combined image sampler. 2016-09-11 13:41:38 +02:00
Hans-Kristian Arntzen
50839910a2 Separate image samplers are compatible now. 2016-09-11 13:26:03 +02:00
Hans-Kristian Arntzen
3265e1fc3f Implement subpassInputMS loading. 2016-07-11 13:36:11 +02:00
Hans-Kristian Arntzen
4739d16e98 Remove workaround for overly conservative memory barriers.
This is now fixed in ESSL 3.10 backend of glslang, so we can remove the old workaround
of dropping full memory barriers.

Also fixes unrelated issue which newer glslang detects.
2016-05-28 11:46:33 +02:00
Hans-Kristian Arntzen
8869a167d6 Drop --vulkan flag to test_shaders.py
We can infer shader types from file extensions.
2016-05-11 20:02:31 +02:00