platform/upstream/glslang.git
8 years agoFor MinGW, statically link exes against basic runtimes
David Neto [Thu, 2 Jun 2016 18:37:24 +0000 (14:37 -0400)]
For MinGW, statically link exes against basic runtimes

Avoids the need to ship basic runtimes like libgcc_s_sjlj-1.dll
with the executables.

8 years agoMerge pull request #311 from jherico/debug_postfix
John Kessenich [Thu, 2 Jun 2016 00:39:18 +0000 (18:39 -0600)]
Merge pull request #311 from jherico/debug_postfix

Build: Produce different names for files in debug builds on MSVC

8 years agoMerge pull request #317 from iostrowsINTEL/double_matrix_fix
John Kessenich [Thu, 2 Jun 2016 00:26:52 +0000 (18:26 -0600)]
Merge pull request #317 from iostrowsINTEL/double_matrix_fix

SPV: Fix double matrix creation

8 years agoFix double matrix creation
iostrows [Wed, 1 Jun 2016 14:40:00 +0000 (16:40 +0200)]
Fix double matrix creation

8 years agoFront-end: Complete GL_ARB_compute_shader, previous commit was missing new barriers.
John Kessenich [Tue, 31 May 2016 01:38:39 +0000 (19:38 -0600)]
Front-end: Complete GL_ARB_compute_shader, previous commit was missing new barriers.

This amends the previous commit, which ommitted barriers in version 420 for compute shader.

8 years agoFront-end: Complete GL_ARB_compute_shader implementation.
John Kessenich [Tue, 31 May 2016 01:29:40 +0000 (19:29 -0600)]
Front-end: Complete GL_ARB_compute_shader implementation.

Core compute shaders were working, but the extension wasn't implemented.

8 years agoFix issue #313: Catch internal attempts to modify built-in symbols that don't exist.
John Kessenich [Mon, 30 May 2016 00:24:31 +0000 (18:24 -0600)]
Fix issue #313: Catch internal attempts to modify built-in symbols that don't exist.

Also beefed up support for running compute shaders is #version 420, but this
work is only partially done.

8 years agoMerge pull request #230 from dekimir/incresconst
John Kessenich [Wed, 25 May 2016 23:43:54 +0000 (17:43 -0600)]
Merge pull request #230 from dekimir/incresconst

Make two more IncludeResult members const.

8 years agoMerge pull request #309 from jekstrand/sampler-params
John Kessenich [Wed, 25 May 2016 23:35:54 +0000 (17:35 -0600)]
Merge pull request #309 from jekstrand/sampler-params

SPV: Don't shadow sampler parameters when performing function calls

8 years agoMerge pull request #308 from thp/multiple-es-compilation-units
John Kessenich [Wed, 25 May 2016 23:31:58 +0000 (17:31 -0600)]
Merge pull request #308 from thp/multiple-es-compilation-units

Link: Handle multiple ES profile compilation units for a single shader stage

8 years agoSPV: Don't shadow sampler parameters when performing function calls
Jason Ekstrand [Wed, 25 May 2016 18:50:21 +0000 (11:50 -0700)]
SPV: Don't shadow sampler parameters when performing function calls

Fixes #179

8 years agoProduce different names for files in debug builds on MSVC
Brad Davis [Wed, 25 May 2016 20:08:34 +0000 (13:08 -0700)]
Produce different names for files in debug builds on MSVC

8 years agoCheck for linking multiple ES shaders to the same stage
Thomas Perl [Wed, 25 May 2016 07:26:43 +0000 (09:26 +0200)]
Check for linking multiple ES shaders to the same stage

8 years agoFix test case for the "empty" linker test case
Thomas Perl [Tue, 24 May 2016 11:18:31 +0000 (13:18 +0200)]
Fix test case for the "empty" linker test case

The test result should only give one error about linking
ES and non-ES shading language compilation units:

 - empty.frag: No version info, interpreted as 100, ES
 - empty2.frag: No version info, interpreted as 100, ES
 - empty3.frag: Version declared as 110, non-ES

Previously, because the new intermediate is always created
without version/profile information, there would be two
linker errors:

 1.) When merging the new intermediate with empty.frag
 2.) When merging (new intermediate + empty.frag + empty2.frag) with empty3.frag

Now, there is only one error; as the error with merging the
new intermediate with empty.frag has been removed.

8 years agoUse version/profile from first compilation stage
Thomas Perl [Tue, 24 May 2016 11:16:08 +0000 (13:16 +0200)]
Use version/profile from first compilation stage

When linking multiple compilation units per shader stage,
the code creates a new intermediate, but fails to set its
version and profile.

This change makes it so that the new intermediate inherits
the version and profile of the first compilation unit, so
that two ES SL compilation units can be combined.

8 years agoAdd test case: Link 2 ESSL fragment shader units
Thomas Perl [Tue, 24 May 2016 11:15:01 +0000 (13:15 +0200)]
Add test case: Link 2 ESSL fragment shader units

8 years agoMerge pull request #306 from johnkslang/finish-spec-const-semantics
John Kessenich [Tue, 24 May 2016 05:37:39 +0000 (23:37 -0600)]
Merge pull request #306 from johnkslang/finish-spec-const-semantics

Vulkan: Finish semantics for what creates spec-const-semantics.

8 years agoVulkan: Finish semantics for what creates spec-const-semantics.
John Kessenich [Mon, 23 May 2016 22:07:07 +0000 (16:07 -0600)]
Vulkan: Finish semantics for what creates spec-const-semantics.

Note: This required adding a new test mode to see the AST for vulkan tests.
This also required reworking some deeper parts of type creation, regarding
when storage qualification and constness is deduced bottom-up or dictated
top-down.

8 years agoMerge pull request #305 from steve-lunarg/intrinsics
John Kessenich [Mon, 23 May 2016 23:55:07 +0000 (17:55 -0600)]
Merge pull request #305 from steve-lunarg/intrinsics

HLSL: Add base class TParseables for intrinsic / builtin generation.

8 years agoAdd base class TParseables for intrinsic / builtin generation.
LoopDawg [Fri, 20 May 2016 19:45:20 +0000 (13:45 -0600)]
Add base class TParseables for intrinsic / builtin generation.
Add stubbed HLSL derivation.  GLSL derivation is still called TBuiltIns,
for historical compatibility.

8 years agoMerge pull request #302 from amdrexu/bugfix
John Kessenich [Mon, 23 May 2016 17:43:31 +0000 (11:43 -0600)]
Merge pull request #302 from amdrexu/bugfix

SPV: Fix an issue of interpolation decoration.

8 years agoSPV: Fix an issue of interpolation decoration.
Rex Xu [Sat, 21 May 2016 01:40:44 +0000 (09:40 +0800)]
SPV: Fix an issue of interpolation decoration.

GLSL interpolation qualifiers and auxiliary storage qualifiers are not
mutually exclusive. So when they are translated to SPIR-V decorations, two
independent utility methods should be employed to do this job.

8 years agoKHR_vulkan_glsl: name mangle distinguish pure textures.
John Kessenich [Fri, 20 May 2016 22:59:27 +0000 (16:59 -0600)]
KHR_vulkan_glsl: name mangle distinguish pure textures.

Fixes issue #252.

8 years agoSPV: Don't put locations on OpTypeStruct. Related to Issue #291.
John Kessenich [Fri, 20 May 2016 21:40:53 +0000 (15:40 -0600)]
SPV: Don't put locations on OpTypeStruct. Related to Issue #291.

8 years agoMerge pull request #301 from dneto0/fix-android-build-atoi-in-cstddef
John Kessenich [Fri, 20 May 2016 21:14:23 +0000 (15:14 -0600)]
Merge pull request #301 from dneto0/fix-android-build-atoi-in-cstddef

Build: atoi comes from stddef.h or cstddef

8 years agoatoi comes from stddef.h or cstddef
David Neto [Fri, 20 May 2016 20:05:21 +0000 (16:05 -0400)]
atoi comes from stddef.h or cstddef

This is required to fix the Android build for ARM.

8 years agoMerge pull request #297 from antiagainst/config-tests
John Kessenich [Fri, 20 May 2016 19:46:31 +0000 (13:46 -0600)]
Merge pull request #297 from antiagainst/config-tests

Test compiling shaders with given resource limits using GTest.

8 years agoMerge pull request #300 from Qining/fix-slow-down-in-no-contraction-propagation
John Kessenich [Fri, 20 May 2016 19:44:07 +0000 (13:44 -0600)]
Merge pull request #300 from Qining/fix-slow-down-in-no-contraction-propagation

Fix the slow down in noContraction propagation

8 years agoremove redundant 'return false'
qining [Fri, 20 May 2016 18:30:38 +0000 (14:30 -0400)]
remove redundant 'return false'

8 years agoHLSL: Add more matrix types to the grammar.
John Kessenich [Fri, 20 May 2016 18:17:26 +0000 (12:17 -0600)]
HLSL: Add more matrix types to the grammar.

8 years agoFull stack: distinguish between a scalar and a vector of size 1.
John Kessenich [Fri, 20 May 2016 18:06:03 +0000 (12:06 -0600)]
Full stack: distinguish between a scalar and a vector of size 1.

There have been GLSL extensions considering this, and HLSL does it.
This is a fully backward compatible change that allows this distinction.

8 years agoFix the slow down in noContraction propagation
qining [Fri, 20 May 2016 18:11:28 +0000 (14:11 -0400)]
Fix the slow down in noContraction propagation

8 years agoSPV: Don't emit memory barrier for ESSL barrier(), but still do for GLSL barrier().
John Kessenich [Fri, 20 May 2016 00:26:42 +0000 (18:26 -0600)]
SPV: Don't emit memory barrier for ESSL barrier(), but still do for GLSL barrier().

Addresses issue #205.
Current open Khronos bug for finalizing this.

8 years agoMerge pull request #298 from thp/remove-unused-prototype
John Kessenich [Thu, 19 May 2016 22:35:25 +0000 (16:35 -0600)]
Merge pull request #298 from thp/remove-unused-prototype

Nonfunctional: Remove declaration for ShGetPhysicalAttributeBindings

8 years agoRemove declaration for ShGetPhysicalAttributeBindings
Thomas Perl [Thu, 19 May 2016 20:19:58 +0000 (22:19 +0200)]
Remove declaration for ShGetPhysicalAttributeBindings

The function ShGetPhysicalAttributeBindings() is declared in the
header, but not defined (or referenced) anywhere in the codebase.

8 years agoTest compiling shaders with given resource limits using GTest.
Lei Zhang [Thu, 19 May 2016 17:50:49 +0000 (13:50 -0400)]
Test compiling shaders with given resource limits using GTest.

8 years agoRename DefaultResourceLimits.* to ResourceLimits.*.
Lei Zhang [Thu, 19 May 2016 17:31:43 +0000 (13:31 -0400)]
Rename DefaultResourceLimits.* to ResourceLimits.*.

8 years agoMerge pull request #288 from thp/attribute-reflection
John Kessenich [Thu, 19 May 2016 16:13:08 +0000 (10:13 -0600)]
Merge pull request #288 from thp/attribute-reflection

Reflection: Add support for querying vertex attributes in reflection API

8 years agoUpdate test cases for vertex attribute reflection
Thomas Perl [Thu, 19 May 2016 07:26:20 +0000 (09:26 +0200)]
Update test cases for vertex attribute reflection

8 years agoAdd support for querying vertex attributes in reflection API
Thomas Perl [Tue, 17 May 2016 11:59:13 +0000 (13:59 +0200)]
Add support for querying vertex attributes in reflection API

8 years agoMerge pull request #295 from amdrexu/bugfix
John Kessenich [Thu, 19 May 2016 06:00:54 +0000 (00:00 -0600)]
Merge pull request #295 from amdrexu/bugfix

Parser: Redeclaration of gl_CullDistance is disallowed mistakenly.

8 years agoMerge pull request #293 from antiagainst/link-tests
John Kessenich [Thu, 19 May 2016 05:55:54 +0000 (23:55 -0600)]
Merge pull request #293 from antiagainst/link-tests

Testing: Add link tests in the GTest framework

8 years agoParser: Redeclaration of gl_CullDistance is disallowed mistakenly.
Rex Xu [Wed, 18 May 2016 23:10:01 +0000 (07:10 +0800)]
Parser: Redeclaration of gl_CullDistance is disallowed mistakenly.

8 years agoRun link tests in the GTest framework.
Lei Zhang [Wed, 18 May 2016 03:03:28 +0000 (23:03 -0400)]
Run link tests in the GTest framework.

8 years agoMerge pull request #294 from scyganINTEL/scygan-fix-io_storage_structs-location
John Kessenich [Thu, 19 May 2016 00:06:53 +0000 (18:06 -0600)]
Merge pull request #294 from scyganINTEL/scygan-fix-io_storage_structs-location

SPV: Fix missing location decoration for structures put directly on input/output interfaces

8 years agoFix missing location decoration for structures put directly on input/output interfaces
scygan [Wed, 18 May 2016 16:09:17 +0000 (18:09 +0200)]
Fix missing location decoration for structures put directly on input/output interfaces

Spec for decorating the OpVariable:
"The remaining variables listed by OpEntryPoint with the Input or Output storage class form the user-defined variable interface. These variables must be identified with a Location decoration"

Spec for decorating struct type:
"The layout of a structure type used as an Input or Output depends on whether it is also a Block (i.e. has a Block decoration).
If it is a not a Block, then the structure type must have a Location decoration"

8 years agoFix several comments in GTest fixture.
Lei Zhang [Tue, 17 May 2016 20:43:05 +0000 (16:43 -0400)]
Fix several comments in GTest fixture.

8 years agoNon-functional: Fix some comments English and brace formatting in recent merges.
John Kessenich [Tue, 17 May 2016 16:24:00 +0000 (10:24 -0600)]
Non-functional: Fix some comments English and brace formatting in recent merges.

8 years agoMerge branch 'scyganINTEL-struct_member_decorations'
John Kessenich [Tue, 17 May 2016 16:04:05 +0000 (10:04 -0600)]
Merge branch 'scyganINTEL-struct_member_decorations'

8 years agoMerge branch 'struct_member_decorations' of https://github.com/scyganINTEL/glslang...
John Kessenich [Tue, 17 May 2016 16:03:37 +0000 (10:03 -0600)]
Merge branch 'struct_member_decorations' of https://github.com/scyganINTEL/glslang into scyganINTEL-struct_member_decorations

8 years agoMerge pull request #286 from amdrexu/bugfix
John Kessenich [Tue, 17 May 2016 15:59:39 +0000 (09:59 -0600)]
Merge pull request #286 from amdrexu/bugfix

SPV: Correct an issue in createUnaryMatrixOperation().

8 years agoSPV: Correct an issue in createUnaryMatrixOperation().
Rex Xu [Tue, 17 May 2016 10:57:18 +0000 (18:57 +0800)]
SPV: Correct an issue in createUnaryMatrixOperation().

Type of the source is not necessarily the same as that of the destination.

8 years agoMerge pull request #285 from baldurk/vs2010-fixes
John Kessenich [Tue, 17 May 2016 06:31:36 +0000 (00:31 -0600)]
Merge pull request #285 from baldurk/vs2010-fixes

VS2010 compilation fixes

8 years agoSPV: Don't add clip/cull distance capabilities unless used.
John Kessenich [Tue, 17 May 2016 01:22:05 +0000 (19:22 -0600)]
SPV: Don't add clip/cull distance capabilities unless used.

These capabalities were added on declaration of the members, but
that is considered too aggressive, as those members are automatically
declared in some shaders that don't use them.  Now, actual access
is needed to make the capabalities be declared.

8 years agoTests: Add a set of gtest-file-based HLSL tests.
John Kessenich [Mon, 16 May 2016 23:39:50 +0000 (17:39 -0600)]
Tests: Add a set of gtest-file-based HLSL tests.

8 years agoCompile fix - if _MSC_VER is undefined, _MSC_VER < 1700 is true!
baldurk [Mon, 16 May 2016 23:38:56 +0000 (01:38 +0200)]
Compile fix - if _MSC_VER is undefined, _MSC_VER < 1700 is true!

8 years ago[VS2010] Define strtoll() and atoll() functions
baldurk [Mon, 16 May 2016 23:28:44 +0000 (01:28 +0200)]
[VS2010] Define strtoll() and atoll() functions

8 years ago[VS2010] Locally define std::to_string on VS2010 as well as android
baldurk [Mon, 16 May 2016 23:23:57 +0000 (01:23 +0200)]
[VS2010] Locally define std::to_string on VS2010 as well as android

8 years ago[VS2010] Remove use of ranged-for loops
baldurk [Mon, 16 May 2016 23:19:23 +0000 (01:19 +0200)]
[VS2010] Remove use of ranged-for loops

8 years ago[VS2010] Remove use of "= default" and "= delete"
baldurk [Mon, 16 May 2016 23:17:06 +0000 (01:17 +0200)]
[VS2010] Remove use of "= default" and "= delete"

8 years ago[VS2010] Change "using X = Y;" to "typedef Y X;"
baldurk [Mon, 16 May 2016 23:16:46 +0000 (01:16 +0200)]
[VS2010] Change "using X = Y;" to "typedef Y X;"

8 years agoMerge pull request #284 from antiagainst/gtest-hlsl
John Kessenich [Mon, 16 May 2016 22:56:40 +0000 (16:56 -0600)]
Merge pull request #284 from antiagainst/gtest-hlsl

Tests: Add support for testing file-based HLSL source code in GTest.

8 years agoMerge pull request #253 from amdrexu/bugfix2
John Kessenich [Mon, 16 May 2016 22:49:20 +0000 (16:49 -0600)]
Merge pull request #253 from amdrexu/bugfix2

SPV: Handle matrix's OpFConvert vector by vector.

8 years agoMerge pull request #281 from amdrexu/bugfix
John Kessenich [Mon, 16 May 2016 22:47:51 +0000 (16:47 -0600)]
Merge pull request #281 from amdrexu/bugfix

Parser: Add missing vector relational functions for double type.

8 years agoMerge pull request #282 from baldurk/android-warning-fix
John Kessenich [Mon, 16 May 2016 22:47:01 +0000 (16:47 -0600)]
Merge pull request #282 from baldurk/android-warning-fix

Build: Minor android compile warning fix

8 years agoAdd support for testing file-based HLSL source code in GTest.
Lei Zhang [Mon, 16 May 2016 16:50:30 +0000 (12:50 -0400)]
Add support for testing file-based HLSL source code in GTest.

8 years agoUse DetachThreadLinux wrapper on android
baldurk [Sat, 14 May 2016 12:57:41 +0000 (14:57 +0200)]
Use DetachThreadLinux wrapper on android

* Fixes a warning - static function being defined but not used.
* Just in case any more code is added to DetachThreadLinux, this will go
  through the same path on both platforms.

8 years agoParser: Add missing vector relational functions for double type.
Rex Xu [Sat, 14 May 2016 06:21:16 +0000 (14:21 +0800)]
Parser: Add missing vector relational functions for double type.

8 years agoSPV: Handle matrix's OpFConvert vector by vector.
Rex Xu [Wed, 27 Apr 2016 10:48:17 +0000 (18:48 +0800)]
SPV: Handle matrix's OpFConvert vector by vector.

8 years agoHLSL: Add function call syntax and AST building.
John Kessenich [Fri, 13 May 2016 15:33:42 +0000 (09:33 -0600)]
HLSL: Add function call syntax and AST building.

8 years agoMerge pull request #278 from greg-lunarg/greg-mr3
John Kessenich [Thu, 12 May 2016 22:51:15 +0000 (16:51 -0600)]
Merge pull request #278 from greg-lunarg/greg-mr3

Build: fix for -Werror=non-virtual-dtor for Android system builds

8 years agoMerge pull request #276 from amdrexu/bugfix
John Kessenich [Thu, 12 May 2016 20:22:56 +0000 (14:22 -0600)]
Merge pull request #276 from amdrexu/bugfix

Parser: Redeclare gl_ClipDistance/gl_CullDistance should update their array sizes.

8 years agoMerge pull request #277 from amdrexu/bugfix3
John Kessenich [Thu, 12 May 2016 20:18:13 +0000 (14:18 -0600)]
Merge pull request #277 from amdrexu/bugfix3

SPV: Add capability ImageGatherExtended if necessary.

8 years agofix for -Werror=non-virtual-dtor for Android system builds
GregF [Wed, 11 May 2016 20:46:48 +0000 (14:46 -0600)]
fix for -Werror=non-virtual-dtor for Android system builds

8 years agoSPV: Add capability ImageGatherExtended if necessary.
Rex Xu [Wed, 11 May 2016 08:38:50 +0000 (16:38 +0800)]
SPV: Add capability ImageGatherExtended if necessary.

8 years agoParser: Redeclare gl_ClipDistance/gl_CullDistance should update their array sizes.
Rex Xu [Wed, 11 May 2016 07:50:41 +0000 (15:50 +0800)]
Parser: Redeclare gl_ClipDistance/gl_CullDistance should update their array sizes.

8 years agoMerge pull request #274 from antiagainst/stoul-strtoul
John Kessenich [Tue, 10 May 2016 18:30:26 +0000 (12:30 -0600)]
Merge pull request #274 from antiagainst/stoul-strtoul

Use strtoul instead of stoul for Android.

8 years agoUse strtoul instead of stoul for Android.
Lei Zhang [Tue, 10 May 2016 17:38:08 +0000 (13:38 -0400)]
Use strtoul instead of stoul for Android.

8 years agoMerge pull request #273 from antiagainst/appveyor-readme-status
John Kessenich [Tue, 10 May 2016 17:37:03 +0000 (11:37 -0600)]
Merge pull request #273 from antiagainst/appveyor-readme-status

Add badge status for Appveyor build in README.

8 years agoAdd badge status for Appveyor build in README.
Lei Zhang [Tue, 10 May 2016 17:04:55 +0000 (13:04 -0400)]
Add badge status for Appveyor build in README.

8 years agoMerge pull request #272 from antiagainst/appveyor
John Kessenich [Tue, 10 May 2016 15:38:37 +0000 (09:38 -0600)]
Merge pull request #272 from antiagainst/appveyor

Configuration for Windows buildbot & fix a bug

8 years agoUse std::string for TBD/missing functionality reporting.
Lei Zhang [Tue, 10 May 2016 14:22:48 +0000 (10:22 -0400)]
Use std::string for TBD/missing functionality reporting.

We can have multiple instances of the same string, so comparing
const char* is not guaranteed working.

Fixed the failure on VS 2013 with Debug build.

8 years agoAdd test configuration for Appveyor.
Lei Zhang [Tue, 10 May 2016 13:55:05 +0000 (09:55 -0400)]
Add test configuration for Appveyor.

8 years agoMerge pull request #222 from Qining/support-precise
John Kessenich [Tue, 10 May 2016 02:18:33 +0000 (20:18 -0600)]
Merge pull request #222 from Qining/support-precise

Full stack: Support *precise* qualifier

8 years agoMerge pull request #270 from scyganINTEL/bitfield_buildins
John Kessenich [Tue, 10 May 2016 02:17:40 +0000 (20:17 -0600)]
Merge pull request #270 from scyganINTEL/bitfield_buildins

Use proper precision qualifiers for bitfield build-in functions on ES

8 years agoMerge pull request #271 from greg-lunarg/greg-mr2
John Kessenich [Tue, 10 May 2016 02:16:19 +0000 (20:16 -0600)]
Merge pull request #271 from greg-lunarg/greg-mr2

fix check for non-positive array size

8 years agoremove double underscore
qining [Tue, 10 May 2016 01:38:42 +0000 (21:38 -0400)]
remove double underscore

8 years agoRebase to d3d3ce7160001846ede74978954e67f4f9fd84e4,update comments, rename a member...
qining [Tue, 10 May 2016 01:18:33 +0000 (21:18 -0400)]
Rebase to d3d3ce7160001846ede74978954e67f4f9fd84e4,update comments, rename a member variable name, fix format issue

8 years agofix check for non-positive array size
GregF [Mon, 9 May 2016 23:07:04 +0000 (17:07 -0600)]
fix check for non-positive array size

8 years agoUse proper precision qualifiers for bitfield build-in functions on ES
scygan [Mon, 9 May 2016 15:51:25 +0000 (17:51 +0200)]
Use proper precision qualifiers for bitfield build-in functions on ES

This change causes ES shaders to precision qualifiers for build-in functions as defined in ESSL spec. It especially mattersfor functions that are defined as highp or taking a highp.

Fixes vulkanCTS dEQP-VK.glsl.builtin.function.integer.bitfieldreverse.*, where bitfieldReverse() retval was wrongly marked as RelaxedPrecision.

Note: floatBitsToInt/floatBitsToUInt precision is also broken, but in different way - so it is not addressed here.

8 years agointeger type operation should not be noContraction
qining [Sat, 7 May 2016 01:52:28 +0000 (21:52 -0400)]
integer type operation should not be noContraction

8 years agosimplified the symbol definition collector code, add assert()
qining [Sat, 7 May 2016 00:00:44 +0000 (20:00 -0400)]
simplified the symbol definition collector code, add assert()

8 years agoadd a test for matrix, fix a variable name
qining [Fri, 6 May 2016 22:56:33 +0000 (18:56 -0400)]
add a test for matrix, fix a variable name

8 years agoResolve comments
qining [Fri, 6 May 2016 21:25:16 +0000 (17:25 -0400)]
Resolve comments

1. Sink adding noContraction decoration to createBinaryOperation() and
createUnaryOperation().

2. Fix comments.

3. Remove the #define of my delimiter, use global constant char.

8 years agoRemoved the redundant functionalities in the assignee checking traverser
qining [Fri, 6 May 2016 02:34:52 +0000 (22:34 -0400)]
Removed the redundant functionalities in the assignee checking traverser

8 years agoFix the test of precise output function parameter
qining [Thu, 5 May 2016 21:47:27 +0000 (17:47 -0400)]
Fix the test of precise output function parameter

Rebase to 5cc344d8ce09a6d35ff88b9ea9f351062d779081 and update the
expected test result.

8 years agoPrecise and noContraction propagation
qining [Wed, 4 May 2016 21:34:38 +0000 (17:34 -0400)]
Precise and noContraction propagation

    Reimplement the whole workflow to make that: precise'ness of struct
    members won't spread to other non-precise members of the same struct
    instance.

    Approach:
    1. Build the map from symbols to their defining nodes. And for each
    object node (StructIndex, DirectIndex, Symbol nodes, etc), generates an
    accesschain path. Different AST nodes that indicating a same object
    should have the same accesschain path.

    2. Along the building phase in step 1, collect the initial set of
    'precise' (AST qualifier: 'noContraction') objects' accesschain paths.

    3. Start with the initial set of 'precise' accesschain paths, use it as
    a worklist, do as the following steps until the worklist is empty:

        1) Pop an accesschain path from worklist.
        2) Get the symbol part from the accesschain path.
        3) Find the defining nodes of that symbol.
        4) For each defining node, check whether it is defining a 'precise'
        object, or its assignee has nested 'precise' object. Get the
        incremental path from assignee to its nested 'precise' object (if
        any).
        5) Traverse the right side of the defining node, obtain the
        accesschain paths of the corresponding involved 'precise' objects.
        Update the worklist with those new objects' accesschain paths.
        Label involved operations with 'noContraction'.

    In each step, whenever we find the parent object of an nested object is
    'precise' (has 'noContraction' qualifier), we let the nested object
    inherit the 'precise'ness from its parent object.

8 years agoComments only.
John Kessenich [Fri, 6 May 2016 19:06:11 +0000 (13:06 -0600)]
Comments only.

8 years agoSPIR-V do not decorate: members of plain structs with location; non-top level members...
scygan [Fri, 6 May 2016 14:54:54 +0000 (16:54 +0200)]
SPIR-V do not decorate: members of plain structs with location; non-top level members with interp.

This fixes some vulkanCTS tests that use struct arrays as a member of in/out interface blocks.

From Vulkan spec:
"If it is a not a Block, then the structure type must have a Location decoration. Its members are assigned consecutive locations in their declaration order, with the first member assigned to the location specified for the structure type. >>>>> The members, and their nested types, must not themselves have Location decorations <<<<"

From SPIR-V spec:
"When applied to structure-type members, the Decorations Noperspective, Flat, Patch, Centroid, and Sample can only be applied to the top-level members of the structure type. (Nested objects' types cannot be structures whose members are decorated with these decorations.)"

8 years agoREADME: Editorial update.
John Kessenich [Fri, 6 May 2016 06:08:03 +0000 (00:08 -0600)]
README: Editorial update.