1922 Commits

Author SHA1 Message Date
Sahil Parmar
3958927a59 Add missing support for gl_MeshViewCountNV/gl_MeshViewIndicesNV in task shaders 2019-02-07 14:28:12 -08:00
Alan Baker
aeeaf08f02 Update expected test results 2019-02-06 14:18:19 -05:00
baldurk
a972e73ad7 Add option to reflect all block members, inactive or active.
* The stages mask is more fine-grained, and each variable or block's mask
  indicates which stages it's active in.
2019-02-04 12:02:59 +00:00
baldurk
657acc0c40 Add option to reflect buffer blocks & variables separately to uniforms
* Also note the uniform indices of atomic counter buffers
2019-02-04 12:02:59 +00:00
baldurk
4a2aa82236 Reflect array stride, top-level array stride, and block member count 2019-02-04 12:02:59 +00:00
baldurk
0af5e3e346 Reflect pipeline outputs as well as inputs, optionally from other stages
* We add an option to reflect inputs from other stages than vertex, if only a
  later subset of the stages is linked into the program.
2019-02-04 12:02:59 +00:00
baldurk
edf8212ab8 Add an option to report array variables with trailing [0] suffix
* This is as expected by ARB_program_interface_query
2019-02-04 11:21:09 +00:00
baldurk
15c37f79a9 Include array index in reflected uniform names more consistently
* This comes from the resolution of issues 4, 5 & 6 in
  ARB_program_interface_query, stating that uniform buffers should have their
  members expanded out as normal and arrays should have elements added.
* If a buffer block has a large array e.g. [10000] we don't want to iterate over
  every array element. Instead we should only expand out the first [0] element,
  then expand as normal from there.
* The array name should still be appended with [0] to indicate that it's an
  array.
2019-02-04 11:21:09 +00:00
John Kessenich
9983f99e87
Merge pull request #1687 from Igalia/apinheiro/no-more-struct-member-offsets
ParseHelper: don't assign xfb_offset for struct members
2019-02-03 23:22:21 +07:00
Rex Xu
eaf31ab98c Add 8-bit/16-bit transform feedback support for future use 2019-02-03 23:31:32 +08:00
John Kessenich
de3b8e3bf3 Fix #1682: flesh out more vulkan/SPV ModuleProcessed 2019-02-01 04:09:38 -07:00
Alejandro Piñeiro
0f66082d1d ParseHelper: don't assign xfb_offset for struct members
This commit undoes the code on the commit "ParseHelper: assign
xfb_offset for struct members too" (commit
af8c1bdb161e4b2ddf019b61bdfca61f84cb1ca8), except the method renaming,
and updates the tests.

During the review of the implementation of Vulkan extension
VK_EXT_transform_feedback for the Linux Intel driver, it was pointed
that the Vulkan environment spec for SPIR-V only ever refers to block
or block members being decorated. It would be strange to not do the
same for OpenGL (ARB_gl_spirv). That would also fit better to what
GLSL does, where setting explicit xfb offsets for struct members is
not allowed.

FWIW, the original patch was proposed based on the fact that
ARB_gl_spirv is relying on OpenGL for how xfb offsets should be
assigned to members, and it was not clear (at least to me) which is
the responsible of such.
2019-01-31 17:09:30 +01:00
John Kessenich
c9e03360e2
Merge pull request #1675 from nicebyte/ext_yuv_target
Add support for GL_EXT_YUV_target
2019-01-29 19:03:11 -08:00
nicebyte
c28369b75f Add support for GL_EXT_YUV_target 2019-01-29 13:17:47 -08:00
baldurk
90995f5dae Update reflection offset consistently for structure members
* Previously the offset was only updated with EOpIndexDirectStruct, but we also
  need to update it for the other index types into arrays, and when expanding an
  aggregate reached after dereferencing.
2019-01-29 17:00:53 +00:00
John Kessenich
544c039d26 HLSL: Fix #1679: Add HLSL earlydepthstencil -> SPV EarlyFragmentTests. 2019-01-28 22:19:43 -07:00
Jeff Bolz
e135a4897a More precisely check for the qualifiers that enable the vulkan memory model for buffer references.
Not all memory qualifiers necessarily need the vulkan memory model, e.g. volatile/restrict that correspond to core SPIR-V features do not.
2019-01-20 00:59:38 -06:00
Rex Xu
75c5603ada Fix xfb_stride incorrectness(#1654)
Add int64 support in XFB. Change containsDouble to contains64BitType. Make
it more general.
2019-01-14 12:02:58 +08:00
David Neto
c4d5ac6bfa Update SPIRV-Tools known good: relax Uconvert check
Permit UConvert as an OpSpecConstantOp operation when
SPV_AMD_gpu_shader_int_16 is used.
2019-01-09 10:32:32 -05:00
John Kessenich
69932ab47f
Merge pull request #1645 from KhronosGroup/dupe-accelstruct
Don't output duplicate OpTypeAccelerationStructureNV declarations
2019-01-08 09:39:32 +07:00
Piers Daniell
3cf3f96292 Don't output duplicate TypeAccelerationStructureNV declarations 2019-01-07 14:17:44 -07:00
Jeff Bolz
9f2aec49e9 GL_EXT_buffer_reference 2019-01-07 12:36:13 -06:00
David Neto
082184bcc9 Mark spv.int16.amd.frag.out as failing validation
See #1642

Also updates SPIRV-Tools and SPIRV-Headers known_good.
2019-01-03 14:36:20 -05:00
Greg Fischer
d445bb2867 Create separate OpSource for each included file 2018-12-28 12:06:43 -07:00
John Kessenich
9ed38739b9
Merge pull request #1627 from greg-lunarg/lines8
Add passes to spirv-opt passes to preserve source line info when compiling -g.
2018-12-18 10:38:32 -07:00
Alan Baker
3b656c79f4 Move memory model scope tests to Vulkan 1.1 batch
Fixes #1610

* Updated expected result due to version change
2018-12-17 17:07:55 -05:00
Greg Fischer
5620a2f95e Add passes to legalization to preserve source line info when generated. 2018-12-16 13:13:46 -07:00
Jeff Bolz
61a0cd19cc Fix bug where shaderRecordNV buffers were using StorageBuffer storage class 2018-12-14 20:59:53 -06:00
John Kessenich
236eb0d325 GLSL/SPV: XFB: No streams on types, but support them on built-in blocks.
From internal Khronos discussions, work, and testing.
2018-12-13 12:06:12 -07:00
Jeff Bolz
0a93cfbb79 Update to newest SPIRV-Tools. It checks the Vulkan rule that all resources must have a set and binding decoration, which many tests fail. So add code to set a default value of zero. Also disable PCH for Ninja builds. 2018-12-11 20:58:29 -06:00
Rémi Verschelde
ebfd91a719 Remove Unix executable permission from text files 2018-12-10 10:49:16 +01:00
John Kessenich
bd1c1831d5 Manually merge ClemensRognerSD-dx9-sampler and resolve conflicts. 2018-12-07 18:38:26 -07:00
greg-lunarg
5d43c4aac7 SPV: Fix #1575, fix #1593: Support HLSL #line
SPIR-V OpLines now contain filenames from HLSL-style #lines.
2018-12-07 17:36:33 -07:00
Alan Baker
ed777b0fbd Modify testing to only record validation pass/fail
* Changed unit tests to only record known the validation pass/fail
status
 * errors are output as part of the failure message if the result is
 unexpected
 * can turn off validation for each test individually
* Moved some SPV_KHR_vulkan_memory_model tests to be compiled for Vulkan
1.1
2018-12-07 13:58:46 -05:00
Alexander Galazin
32def9f467 Rename GL_KHX_shader_explicit_arithmetic_types to GL_EXT_shader_explicit_arithmetic_types 2018-12-03 13:16:59 +01:00
John Kessenich
667506a5ea
Merge pull request #1602 from Igalia/apinheiro/prevent-xfbstride-twice
GlslangToSpv: prevent add XfbStride twice
2018-11-29 10:43:25 -07:00
Alejandro Piñeiro
16ef9da372 GlslangToSpv: prevent add XfbStride twice
Without this commit, if the XfbStride was explicitly set, the
decoration was added twice on the shader.

v2 (changes after Jonh Kessenich first review)
   * Simplified by just removing the firs assignment
   * Removed assert
2018-11-29 11:49:04 +01:00
John Kessenich
8c869679f2 SPV: For GLSL only, bitcast OpArrayLength result back to int.
This makes the rest of the AST consuming the result match GLSL
semantics and hence get complete type matching.
2018-11-28 07:01:37 -07:00
John Kessenich
e045c23a34 SPV: Generate OpArrayLength with no signedness. 2018-11-27 09:19:10 -07:00
John Kessenich
c7a84a9247
Merge pull request #1567 from Igalia/apinheiro/xfb-1535
ParseHelper: assign global XfbBuffer to a block missing it
2018-11-27 07:17:10 -07:00
John Kessenich
d7baecfab7
Merge pull request #1595 from dgkoch/EXT_fragment_invocation_density
Implement GL_EXT_fragment_invocation_density
2018-11-27 06:41:36 -07:00
John Kessenich
2173c650ac
Merge pull request #1597 from sheredom/add_conversion_folding
Add conversion folding when the source is a constant.
2018-11-27 03:53:28 -07:00
Alan Baker
440f95b1e7 Update known good SPIRV tools and headers
* Fixes use of optimizer
* Updated test outputs
 * GeometryStreams and TransformFeedback no longer fail validation
2018-11-26 11:24:22 -05:00
Daniel Koch
5154db5183 Implement GL_EXT_fragment_invocation_density
including SPV generation using SPV_EXT_fragment_invocation_density.
This is an alias of the functionality in SPV_NV_shading_rate, and thus in some
cases we can only have one set of the tokens present (switch statements), so
we have picked the EXT version. This required updating the expected test
results for SPV_NV_shading_rate.

Also updated the known-good for spirv-headers so that the validator in
spirv-tools knows about the new extension.
2018-11-26 10:01:58 -05:00
Neil Henning
81a63f1de0 Add conversion folding when the source is a constant.
This change adds unary conversion folding when the source is a constant.
This fixes an ISV issue whereby:

```
const float16_t f = float16_t(42.0);
```

Wouldn't compile because the conversion operator would always produce an
EvqTemporary when it could have produced an EvqConst.

I've also added a test case that proves out that all basic-type to
basic-type conversions work.
2018-11-26 12:45:33 +00:00
John Kessenich
f2675d4d6c GLSL: Fix #1591: Require the id in subgroupBroadcast to be constant. 2018-11-21 15:16:30 -07:00
David Neto
2d1739d57a Update to newer SPIRV-Tools, including VK_EXT_scalar_block_layout
Validator has more refined messages about what kind of block layout
rules have been applied.
2018-11-16 16:16:31 -05:00
John Kessenich
e3b76ed608 Merge branch 'scalar_block_layout' of https://github.com/jeffbolznv/glslang into jeffbolznv-scalar_block_layout 2018-11-16 09:57:33 -07:00
John Kessenich
30cb924538 Move to next SPIRV-Tools known good. 2018-11-15 23:43:35 -07:00
John Kessenich
f4ba9522ec GLSL: Increase supported sizes of XBF strides and offsets. 2018-11-15 15:12:07 -07:00