Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow passing readonly SSBO members as "in" parameters #83

Open
jeffbolznv opened this issue Aug 23, 2019 · 8 comments
Open

Allow passing readonly SSBO members as "in" parameters #83

jeffbolznv opened this issue Aug 23, 2019 · 8 comments
Assignees

Comments

@jeffbolznv
Copy link
Contributor

In KhronosGroup/glslang#1870, glslang was changed to reject passing a readonly buffer member to a function if the formal parameter is not qualified as readonly. The spec language is:

Variables qualified with coherent, volatile, readonly, or writeonly may not be passed to functions whose formal parameters lack such qualifiers. (See section 6.1 “Function Definitions” for more detail on function calling.)

This made sense when image_load_store was added to GLSL (before SSBOs), since any image variable is a reference to memory. It was also a convenient way to say "you can't pass a readonly image to imageStore()." Then when SSBOs came along, they were added to this section by just saying "it's the same as with images":

The memory qualifiers coherent, volatile, restrict, readonly, and writeonly may be used in the declaration of buffer variables (i.e., members of shader storage blocks). When a buffer variable is declared with a memory qualifier, the behavior specified for memory accesses involving image variables described above applies identically to memory accesses involving that buffer variable.

But consider the following example using a readonly buffer:

layout(set = 0, binding = 0, std430) readonly restrict buffer A {
    float b;
} a;

void main()
{
   round(a.b);
}

According to this spec language, it is illegal to pass a.b to round() because a.b is readonly (inherited from its parent) and round's formal parameter is not qualified as readonly. However, round's formal parameter is implicitly in, and IMO it should be valid to pass a readonly buffer member as an in parameter. in is defined as "The keyword in is used as a qualifier to denote a parameter is to be copied in, but not copied out."

My mental model for this is something like "Reading a readonly buffer member returns an rvalue. values passed to an in parameter must be rvalues. Therefore it is valid to pass a readonly buffer member to an in parameter."

I propose we relax the GLSL spec to allow passing readonly buffer members to formal parameters qualified with in. To be consistent, it probably also makes sense to allow passing writeonly buffer members to formal parameters qualified with out.

@johnkslang
Copy link
Member

GLSL was defined with copy-in/copy-out semantics, to unambiguously avoid all such problems, but then some objects got treated like references or handles to other things.

I think we need to be more clear when something is acting on a copy and when it is acting on the original.

@johnkslang
Copy link
Member

johnkslang commented Aug 26, 2019

I also think it is safer to revert the recent change until we have this fully sorted out.

Edit: The change was very syntactic, equating two syntaxes, so the underlying issue is the same either way.

The change just made these two the same:

// 1
layout(set = 0, binding = 0, std430) readonly restrict buffer A {
    float b;
} a;

// 2
layout(set = 0, binding = 0, std430) restrict buffer A {
    readonly float b;
} a;

Based on this language from the spec:

memory qualifiers may also be used in the declaration of shader storage blocks. When a
block declaration is qualified with a memory qualifier, it is as if all of its members were declared with the same memory qualifier.

@alegal-arm
Copy link
Contributor

Is there anything holding back the revert? I'm afraid that we wouldn't be able to get any recent glslang changes into the CTS until this issue is resolved.

@johnkslang
Copy link
Member

The revert does not change the fundamental problem the issue is about.

Do you want glslang to relax the read-only thing in general, not just for a failed inheritance?

@alegal-arm
Copy link
Contributor

I understand that the revert doesn't solve the fundamental problem but I'm trying to solve practical problem of not being able to update glslang in the CTS. New restrictions break shader compilation.

Personally, I would prefer to relax the read-only thing in general but I assume it would require some change in the specification.

@johnkslang
Copy link
Member

johnkslang commented Aug 30, 2019

When the thing passed is effectively a pointer or handle to something else, the readonly is really a modifier on what is pointed to. Passing a readonly handle to a non-readonly in parameter that then goes and updates what was pointed to needs to be disallowed.

My mental model for this is something like "Reading a readonly buffer member returns an rvalue. values passed to an in parameter must be rvalues. Therefore it is valid to pass a readonly buffer member to an in parameter."

I think that works only because members don't happen to (currently) be pointers to other things, while the real distinguishing characteristic should be that it is either:

A. Essentially a pass-by-reference (or pointer, or handle, whatever the term of the moment is). Includes atomic counters, anything atomic operations act on, buffers as a whole, and textures/samplers/images (and futuristically interpolants that interpolate*() functions might be applied to) .

or

B. Everything else; normal stuff, where the entire object in question is [semantically] copied in and copied out, such that the function is operating only on the copy.

For B, readonly should be ignored when passing to in and inout and writeonly should be ignored when passed to out, as Jeff said, I'm just slicing it as A vs. B rather than block member vs. not block member.

I think glslang should move now in that direction as it is much closer (if not exactly) to spec. intent, and while it would technically be a spec. bug, the previous state of glslang for this was also a spec. bug, and adhering to the spec. is clearly wrong and breaks real things.

johnkslang added a commit to KhronosGroup/glslang that referenced this issue Aug 30, 2019
Also fixes, in practice, KhronosGroup/GLSL#83.
When the specification language is correctly created, glslang can be
revisited for correctness.  In the meantime, this seems like the best
"bug" to have relative to the specification.

Memory qualifiers are only relevant to parameters when they apply
to what the argument points to, as otherwise the argument is copied.

This leaves the fix from #1870 in place, and then more correctly
ignores memory qualifiers when something will be passed by copy.
@johnkslang
Copy link
Member

I pushed KhronosGroup/glslang@92f5afd as the least of evils until we have agreement on correct approach.

@johnkslang johnkslang self-assigned this Sep 4, 2019
@pdaniell-nv pdaniell-nv added this to the Needs Action/PR milestone Sep 4, 2019
@pdaniell-nv
Copy link
Contributor

We discussed this in the OpenGL/ES meeting today. @johnkslang agreed to propose a spec change incorporating his proposal in #83 (comment).

mehulagg pushed a commit to mehulagg/superproject that referenced this issue Dec 21, 2019
* Update external/shaderc/glslang from branch 'master-ndk'
  to f4587e26e8fa5ff8532e0428a38f20c677be7fd0
  - Merge remote-tracking branch 'aosp/upstream-master' into update-shaderc
    
    Includes:
    664ad418 Fix #1879: Check for valid variable before checking for unsized arrays.
    34953810 Merge pull request #1892 from greg-lunarg/kg106
    d6df1fb1 Update spirv-tools and spriv-headers known good.
    56f61ccc Merge pull request #1889 from Roy-AMD/code-refine
    2ad4492e code refine
    e8e138b9 Merge pull request #6 from Roy-AMD/sync
    f7f2694b Merge pull request #5 from KhronosGroup/master
    92f5afde Placeholder fix for part of #1870.
    7de044c0 Non-functional: Make whitespace/braces consistent for a recent commit.
    796df2d7 Merge pull request #1885 from zoddicus/fixUnInitializedVariableWarnings
    8b91ecba Change to initializing the variable
    6d35ae89 Return nullptr after assert to avoid uninitialized variables
    14e13e75 Merge pull request #1876 from jeffbolznv/imma
    df1d4ccf ESSL/SPV: Fix #1856: Allow ESSL shaders to compile to OpenGL SPIR-V.
    efd47a8f Documentation: Provide more detail in setting up the environment.
    f27bd2aa Merge pull request #1883 from Kangz/fix_gn
    5442b4ff BUILD.gn: Add missing HLSL files.
    9f5a43a5 Merge pull request #1881 from baldurk/buffer-array-bind-reflection-fix
    32d18c55 Merge pull request #1882 from Kangz/fix-chrome
    9757da4f GN build (for Chromium): enable HLSL in dependents.
    1f1e5369 Dereference any array type before expanding root-level SSBO members
    d6a5cc65 Merge pull request #1878 from dneto0/chrome-fix
    96bec343 GN build (for Chromium): enable HLSL
    387657e4 GL_NV_integer_cooperative_matrix support
    a3bc04b2 Bump revision.
    c190d5bc Merge pull request #1874 from KhronosGroup/inherit-memory-qualifiers
    9a5689f6 GLSL: Inherit memory qualifiers, both declaratively and in execution.
    28f314d4 Merge pull request #1875 from jonahryandavis/extra-tokens
    c27def37 Fix conformance with -Wextra-tokens
    c8176004 Bump version.
    ea69a298 Merge pull request #1855 from KhronosGroup/web
    369ffa95 web: Fix accidental additon of refract() prototypes and update README.
    deec1933 Web: Turn off includes, independent preprocessing path, fine tune all.
    b9197c81 Web: Make switched methods all be non-virtual, more web-dependent code,
    d8834df9 Web: Optional error management and error tightening.
    fb4f2333 Web: Use isEsProfile() instead of run-time testing; remove more atomics
    155d351f Web: Remove unused stage functionality, SPIR-V logger, and hex_utils
    39697cdb Web: Remove unnecessary GLSL numeric types, and some collateral.
    3e4b6ff7 Web: Tighten up sampling code and interfaces.
    eaf44963 Web: Complete the removal of vendor-specific #ifdef's, including CMake.
    441b2ac4 Web: Prune grammar and lexor down to needed subset.
    a28f7a75 Web: Generalize _EXTENSIONS* in SPIR-V back-end.
    b6d3ee5a Web: Turn off bracket-style attributes, reflection, and IO mapping.
    7015bd65 Web: Remove/rationalize a set of *_EXTENSIONS, using GLSLANG_WEB.
    e66dace9 Web: First pass of tabling the built-in function declarations.
    23d27751 Web: Selectively remove a few key features, using #ifndef GLSLANG_WEB
    bfc21ff1 Web: Change a bunch of HLSL methods from dynamic to compile-time known.
    d4ed5158 Web: Remove a few additional HLSL constructs with ENABLE_HLSL.
    13761069 Web: Add sanity check test suite for smaller-footprint builds.
    34cccdc6 Merge pull request #1872 from kainino0x/js-interface
    3aac2d44 Bump revision.
    a761284f convert_glsl_to_spirv: fail early, reduce copies, remove input buffer allocation
    b16a4bc4 make glslang.js easy to use
    a91561d5 enable build for node
    95609e6d Set theme jekyll-theme-merlot
    37fc4d27 Merge pull request #1867 from zoddicus/addWebBuild
    7eb3e6e0 Make non-emscripten flags platform agnostic.
    c1063cd5 Converted ENABLE_HLSL to a dependent option, so it can be always disabled in web builds
    734176a2 Move build instructions to README.md
    c96e42dc Add WASM build target for Web version of glslang
    3cea2e58 Bump revision and give the bots another chance to work.
    a0eb5efd Merge pull request #1860 from zoddicus/fixShaderCRoll
    1f6fedd3 Add in header for uint32_t definition
    eea34004 Merge pull request #1859 from zoddicus/fixNoRTTIForWindows
    8126eb19 Convert no RTTI rule to be compiler specific
    f04f1f93 Merge pull request #1857 from Roy-AMD/automapping-opengl-location
    7fc86834 Merge pull request #1813 from jeffbolznv/compositeconstruct
    642b6ad9 Merge pull request #1844 from alelenv/ast_print_fix
    03a93ae1 Fix Clang compiler warning.
    c24033af Fix location distribution not in order
    1247baa6 Merge branch 'sync' into automapping-opengl-location
    42f81340 Merge pull request #1853 from s-perron/per
    208cb580 Remove execute permission from LICENSE.txt
    8a5824f5 Fix memory init issue, to make sure the class members are init in order.
    302fe97e Revert "Merge pull request #1792 from Roy-AMD/automapping-opengl-location"
    50ada66c Merge pull request #1792 from Roy-AMD/automapping-opengl-location
    3464b6f5 Merge pull request #1847 from alelenv/member_remap_fix
    c1e61d6c Fix bugs in missing Builtin decoration for some NV builtins for tessellation control shaders. Fix bug in member remapping.
    2bb2da91 SPV: Update to latest SPIR-V header.
    333d1c95 Merge pull request #1845 from greg-lunarg/kg105
    38317065 Update spirv-tools and spirv-headers known good.
    9f2236e5 Build: shut up warning to add unnecessary parens.
    a76d1c21 Fix bug in printing trailing comma when dumping AST for a structure.
    74426f75 Merge pull request #1841 from jmacnak-nv/jmacnak-raytracing-descriptor-indexing-validation
    ea5715ca Update known good SPIRV-Tools commit
    53134490 Handle SPIR-V type mismatch when constructing a composite
    fc017379 code format refine
    a137d2ba Add interface symbol and uniform symbol location auto mapping for OpenGL shader.
    faebe101 Merge pull request #3 from KhronosGroup/master
    adec2ec1 Merge pull request #1 from KhronosGroup/master
    
    Testing: checkbuild.py on Linux; unit testing on Windows
    Change-Id: Ia8e7680208f067bca64745c0761671cf94aecd2a
    
  - Fix #1879: Check for valid variable before checking for unsized arrays.
    
    The order of error checking was not quite being correct (maybe there is no correct
    ordering, when many checks must be done and they affect each other).
    So, check for block-name reuse twice.
    
  - Merge pull request #1892 from greg-lunarg/kg106
    
    Update spirv-tools and spriv-headers known good.
  - Update spirv-tools and spriv-headers known good.
    
  - Merge pull request #1889 from Roy-AMD/code-refine
    
    Code refine
  - code refine
    
    Reduce the number of cycles.
    
  - Merge pull request #6 from Roy-AMD/sync
    
    Sync code
  - Merge pull request #5 from KhronosGroup/master
    
    Sync code from KhronosGroup/glslang master
  - Placeholder fix for part of #1870.
    
    Also fixes, in practice, https://github.com/KhronosGroup/GLSL/issues/83.
    When the specification language is correctly created, glslang can be
    revisited for correctness.  In the meantime, this seems like the best
    "bug" to have relative to the specification.
    
    Memory qualifiers are only relevant to parameters when they apply
    to what the argument points to, as otherwise the argument is copied.
    
    This leaves the fix from #1870 in place, and then more correctly
    ignores memory qualifiers when something will be passed by copy.
    
  - Non-functional: Make whitespace/braces consistent for a recent commit.
    
  - Merge pull request #1885 from zoddicus/fixUnInitializedVariableWarnings
    
    Initialize variable to avoid uninitialized variable warnings in Clang
  - Change to initializing the variable
    
  - Return nullptr after assert to avoid uninitialized variables
    
    In the current version of the code on non-debug builds these cases
    will fallthrough, since assert is a no-op, and eventually make a call
    passing in |op| which hasn't been initialized. clang is currently
    throwing a warning about this behaviour when integrating downstream.
    
    This patch changes the behaviour, so that in any branch that has an
    assert now has a return nullptr, to indicate failure after it and
    avoid the uninitialized variable usage.
    
  - Merge pull request #1876 from jeffbolznv/imma
    
    GL_NV_integer_cooperative_matrix support
  - ESSL/SPV: Fix #1856: Allow ESSL shaders to compile to OpenGL SPIR-V.
    
  - Documentation: Provide more detail in setting up the environment.
    
  - Merge pull request #1883 from Kangz/fix_gn
    
    BUILD.gn: Add missing HLSL files.
  - BUILD.gn: Add missing HLSL files.
    
  - Merge pull request #1881 from baldurk/buffer-array-bind-reflection-fix
    
    Dereference any array type before expanding root-level SSBO members
  - Merge pull request #1882 from Kangz/fix-chrome
    
    GN build (for Chromium): enable HLSL in dependents.
  - GN build (for Chromium): enable HLSL in dependents.
    
    The previous fix for this only enabled HLSL internally in glslang which
    means that dependent using HLSL, for example shaderc, failed
    compilation.
    
  - Dereference any array type before expanding root-level SSBO members
    
    If we don't do this then we get reflection output like so:
    
    ArrayedBind[0].a.a: offset 0, type 1406, size 1, index 4, binding -1, stages 0
    ArrayedBind[0].a.b: offset 4, type 1406, size 1, index 4, binding -1, stages 0
    ArrayedBind[0].b.a: offset 4, type 1406, size 1, index 4, binding -1, stages 0
    ArrayedBind[0].b.b: offset 8, type 1406, size 1, index 4, binding -1, stages 0
    ArrayedBind[0].b: offset 4, type 1406, size 1, index 4, binding -1, stages 1
    
    When the outer reflection loop that calls blowUpActiveAggregate incorrectly iterates over the struct members.
    
  - Merge pull request #1878 from dneto0/chrome-fix
    
    GN build (for Chromium): enable HLSL
  - GN build (for Chromium): enable HLSL
    
  - GL_NV_integer_cooperative_matrix support
    
  - Bump revision.
    
  - Merge pull request #1874 from KhronosGroup/inherit-memory-qualifiers
    
    GLSL: Inherit memory qualifiers, both declaratively and in execution.
  - GLSL: Inherit memory qualifiers, both declaratively and in execution.
    
    Fixes #1870, probably others.
    
  - Merge pull request #1875 from jonahryandavis/extra-tokens
    
    Fix conformance with -Wextra-tokens
  - Fix conformance with -Wextra-tokens
    
  - Bump version.
    
  - Merge pull request #1855 from KhronosGroup/web
    
    Web:  Create a very small-footprint glslang for web use.
  - web: Fix accidental additon of refract() prototypes and update README.
    
  - Web: Turn off includes, independent preprocessing path, fine tune all.
    
    Saved about 21K, size down to 380K of MSVC x86 code.
    Fixed one bug that needs to be looked at on the master branch:
    The test for needing a Vulkan binding has a bug in it, "!layoutAttachment"
    which does not mean "no layoutAttachment", because that is non-zero.
    This is why some test and test results changed.
    
  - Web: Make switched methods all be non-virtual, more web-dependent code,
    
    added a few more HLSL flag tests.  This was mostly focused on the SPV generator.
    Saves about 17K.
    
  - Web: Optional error management and error tightening.
    
    Saves about 6.5K
    
  - Web: Use isEsProfile() instead of run-time testing; remove more atomics
    
    Saves 2.5K, and design is better.
    
  - Web: Remove unused stage functionality, SPIR-V logger, and hex_utils
    
    Saves another 20K.
    
  - Web: Remove unnecessary GLSL numeric types, and some collateral.
    
    This saves another 40K of x86 binary, which is about 13% of the target size.
    
  - Web: Tighten up sampling code and interfaces.
    
    Saves about 9K.
    
  - Web: Complete the removal of vendor-specific #ifdef's, including CMake.
    
  - Web: Prune grammar and lexor down to needed subset.
    
    About 60K smaller (20% the target size is these units of 300K).
    Over 300 fewer #ifdef.
    
    This adds a new glslang.m4 file that needs to be processed by m4 to get
    the glslang.y file needed by bison.  See comment in glslang.m4 for more
    detail.
    
    This updates the updateGrammar script to do the .m4 -> .y processing,
    to conditionally exclude grammar not needed for the web build.
    
  - Web: Generalize _EXTENSIONS* in SPIR-V back-end.
    
    About 50 fewer #ifdefs.
    About 14K smaller.
    Note, the base size is ill-defined due to optimizer settings (size vs. performance),
    compression, and target architecture.  Some recent %'s are accidentally reported as
    3X the real savings.  Early %'s were accurate.  What matters though is that each
    step got worthwhile gains, and what the final size ends up being.
    
  - Web: Turn off bracket-style attributes, reflection, and IO mapping.
    
  - Web: Remove/rationalize a set of *_EXTENSIONS, using GLSLANG_WEB.
    
    Focus was on the front end (not SPIR-V), minus the grammar.
    Reduces #ifdef count by around 320 and makes the web build 270K smaller,
    which is about 90% the  target size.
    
    The grammar and scanner will be another step, as will the SPIR-V backend.
    This makes heavy use of methods #ifdef'd to return false as a global way
    of turning off code, relying on C++ DCE to do the rest.
    
  - Web: First pass of tabling the built-in function declarations.
    
    Doing this much saved about 11.5K, including adding all the infrastructure.
    
  - Web: Selectively remove a few key features, using #ifndef GLSLANG_WEB
    
    Save about 100K.
    
    N.B.: This is done by eliminating a function call, at a high level,
    not by #ifdef'ing a bunch of code.
    
    Also, removed no longer needed *_EXTENSION #ifdef in the code not
    needed by GLSLANG_WEB.
    
  - Web: Change a bunch of HLSL methods from dynamic to compile-time known.
    
    This saves about 7K.
    By changing just a few methods to be compile-time known, a bunch of
    scattered code becomes DCE.
    
  - Web: Remove a few additional HLSL constructs with ENABLE_HLSL.
    
    Saves about 3K.
    
  - Web: Add sanity check test suite for smaller-footprint builds.
    
    For the smallest builds, google tests will not be present, in
    addition to a large number of tests not being capable of running.
    
  - Merge pull request #1872 from kainino0x/js-interface
    
    make glslang.js easy to use and work on node, and related changes
  - Bump revision.
    
  - convert_glsl_to_spirv: fail early, reduce copies, remove input buffer allocation
    
  - make glslang.js easy to use
    
  - enable build for node
    
  - Set theme jekyll-theme-merlot
  - Merge pull request #1867 from zoddicus/addWebBuild
    
    Add WASM build target for Web version of glslang
  - Make non-emscripten flags platform agnostic.
    
  - Converted ENABLE_HLSL to a dependent option, so it can be always disabled in web builds
    
  - Move build instructions to README.md
    
  - Add WASM build target for Web version of glslang
    
    This adds build rules to support generating a WASM binary to be used
    on the web. The API exposed to web applications is definated in the
    new glslang.js.cpp file.
    
  - Bump revision and give the bots another chance to work.
    
  - Merge pull request #1860 from zoddicus/fixShaderCRoll
    
    Add in header for uint32_t definition
  - Add in header for uint32_t definition
    
    This is needed for stricter/newer MSVC builds of downstream users.
    
  - Merge pull request #1859 from zoddicus/fixNoRTTIForWindows
    
    Convert no RTTI rule to be compiler specific
  - Convert no RTTI rule to be compiler specific
    
    MSVC uses a different flag for disabling RTTI, so is currently
    including RTTI information and throwing warnings.
    
  - Merge pull request #1857 from Roy-AMD/automapping-opengl-location
    
    Automapping opengl location
  - Merge pull request #1813 from jeffbolznv/compositeconstruct
    
    Handle SPIR-V type mismatch when constructing a composite
  - Merge pull request #1844 from alelenv/ast_print_fix
    
    Fix bug in printing trailing comma when dumping AST for a structure.
  - Fix Clang compiler warning.
    
  - Fix location distribution not in order
    
  - Merge branch 'sync' into automapping-opengl-location
    
    Sync code from KhronosGroup/glslang.
    
  - Merge pull request #1853 from s-perron/per
    
    Remove execute permission from LICENSE.txt
  - Remove execute permission from LICENSE.txt
    
  - Fix memory init issue, to make sure the class members are init in order.
    
  - Revert "Merge pull request #1792 from Roy-AMD/automapping-opengl-location"
    
    This reverts commit 50ada66c2717fb579979d54ac723475de2b1a5c4, reversing
    changes made to 3464b6f519be1500faa60698918f13f4dd796dd0.
    
  - Merge pull request #1792 from Roy-AMD/automapping-opengl-location
    
    Automapping opengl location
  - Merge pull request #1847 from alelenv/member_remap_fix
    
    Fix missing decoration and bug in member remap
  - Fix bugs in missing Builtin decoration for some NV builtins for tessellation
    control shaders.
    Fix bug in member remapping.
    
  - SPV: Update to latest SPIR-V header.
    
  - Merge pull request #1845 from greg-lunarg/kg105
    
    Update spirv-tools and spirv-headers known good.
  - Update spirv-tools and spirv-headers known good.
    
    Previous known-good contained regression per sperron at Google.
    
  - Build: shut up warning to add unnecessary parens.
    
  - Fix bug in printing trailing comma when dumping AST for a structure.
    
  - Merge pull request #1841 from jmacnak-nv/jmacnak-raytracing-descriptor-indexing-validation
    
    Update known good SPIRV-Tools commit
  - Update known good SPIRV-Tools commit
    
    Update the known good SPIRV-Tools commit to eventually propagate the
    commit allowing the ray tracing stages in pass instrumentation to the
    vulkan validation layers (validation layers depends on glslang which
    depends on spirv-tools).
    
  - Handle SPIR-V type mismatch when constructing a composite
    
  - code format refine
    
  - Add interface symbol and uniform symbol location auto mapping for OpenGL shader.
    
  - Merge pull request #3 from KhronosGroup/master
    
    Merge code form KhronosGroup/glslang
  - Merge pull request #1 from KhronosGroup/master
    
    Sync code from KhronosGroup/glslang/master

* Update external/shaderc/shaderc from branch 'master-ndk'
  to 6028ff28e400196ec54ee22baa2103a11c27d529
  - Merge remote-tracking branch 'aosp/upstream-master' into update-shaderc
    
    Includes:
    9cb02b6 Improve testing .asm., .nocompat., and .vk. chases (#797)
    0597d39 Remove unsetting compiler check variables (#801)
    3b038fa Pass in source not target env into spirv-opt (#799)
    febf7e9 Use agreed upon include paths for spirv-cross (#795)
    4c187a6 Rolling 5 dependencies and updating known_failures (#796)
    f478667 Seperate non-API spvc code into private source file (#794)
    8ba3dcb Rolling 7 dependencies and updating known_failures (#791)
    c5a91bb Add ToVulkan API methods (#792)
    be14352 Refactor internals of conversion API to be more modular (#785)
    8e49d0a Remove extra semi-colons (#790)
    3367690 GN build: enable HLSL in Glslang (#789)
    659a8ea spvc: Add option to inject code to enforce robust-buffer-access
    ec4ea59 Force Glslang to support HLSL in its interface (#784)
    78f41f5 Fix some Python2 vs 3 issues in update_build_version.py (#783)
    068e0cc Manually cast fuzzing data to avoid new GCC warning (#782)
    210fac8 Rolling 4 dependencies (#779)
    90c0091 Rolling 3 dependencies (#777)
    b3b228c Rolling 7 dependencies (#776)
    d289a55 Only use -fPIC on compilers that support it (#772)
    3101bd5 Turn on warnings on about missing semi-colons (#770)
    747518d Remove extra semicolons in shaderc (#768)
    8f74bea Be more pythonic about "not in" (#763)
    8f36a0d Fix typo (#762)
    
    Testing: checkbuild.py on Linux; unit testing on Windows
    Change-Id: I9558732818bc79a18cc5fe7cdfac4d195b460ed5
    
  - Improve testing .asm., .nocompat., and .vk. chases (#797)
    
    .nocompat. indicates that the test is known to be bad for GLSL, and is
    skipped in the spirv-cross tests. Skipping these tests removes about
    600 cases from the test runs.
    
    .vk. indicates this is a Vulkan test case and .vk. indicates that this
    is a SPIR-V based one. Passing in the same flags that the spriv-cross
    tests use and handling that the output file will now have a .vk
    appended.
    
    Fixes #627
  - Remove unsetting compiler check variables (#801)
    
    This does not appear to be standard practice. The results of these
    checks would only change if the compiler itself changes, so checking
    it on everyrun is unnecessary.
    
    Fixes #773
  - Pass in source not target env into spirv-opt (#799)
    
    The environment should be the same as the source binary, not the
    outputted binary.
    
    Fixes #798
  - Use agreed upon include paths for spirv-cross (#795)
    
    All other projects using spirv-cross include it using <spirv_msl.hpp>
    for example. Follow that convention so we can more easily integrate with
    other projects.
  - Rolling 5 dependencies and updating known_failures (#796)
    
    Roll third_party/glslang/ f27bd2aa2..56f61ccce (8 commits)
    
    https://github.com/KhronosGroup/glslang/compare/f27bd2aa2e3f...56f61ccceffa
    
    $ git log f27bd2aa2..56f61ccce --date=short --no-merges --format='%ad %ae %s'
    2019-09-02 lryer code refine
    2019-08-30 cepheus Placeholder fix for part of #1870.
    2019-08-30 cepheus Non-functional: Make whitespace/braces consistent for a recent commit.
    2019-08-28 rharrison Change to initializing the variable
    2019-08-28 rharrison Return nullptr after assert to avoid uninitialized variables
    2019-08-28 cepheus ESSL/SPV: Fix #1856: Allow ESSL shaders to compile to OpenGL SPIR-V.
    2019-08-28 cepheus Documentation: Provide more detail in setting up the environment.
    2019-08-22 jbolz GL_NV_integer_cooperative_matrix support
    
    Roll third_party/googletest/ 6a3d632f4..565f1b848 (5 commits)
    
    https://github.com/google/googletest/compare/6a3d632f40a1...565f1b848215
    
    $ git log 6a3d632f4..565f1b848 --date=short --no-merges --format='%ad %ae %s'
    2019-08-28 absl-team Googletest export
    2019-08-24 krystian.kuzniarek post-review to db1b7399 (#2396)
    2019-08-22 krystian.kuzniarek remove references to autotools and combine gTest&gMock sections
    2019-08-08 krystian.kuzniarek remove a dead metafunction
    2019-08-13 krystian.kuzniarek remove a custom implementation of std::iterator_traits
    
    Roll third_party/spirv-cross/ 563e99448..a06997a6a (9 commits)
    
    https://github.com/KhronosGroup/SPIRV-Cross/compare/563e99448692...a06997a6a496
    
    $ git log 563e99448..a06997a6a --date=short --no-merges --format='%ad %ae %s'
    2019-08-02 cdavis MSL: Add support for sampler Y'CbCr conversion.
    2019-08-30 t.roughton Clang-format changes
    2019-08-30 t.roughton Update tests to account for all non-entry-point functions being inlined
    2019-08-29 post MSL: Add {Base,}{Vertex,Instance}Index to bitcast_from_builtin_load.
    2019-08-29 t.roughton Inline all non-entry-point functions
    2019-06-10 t.roughton MSL: inline all emitted functions
    2019-08-02 cdavis GLSL: Fix post-depth coverage for ESSL.
    2019-08-28 post Run format_all.sh.
    2019-08-27 post GLSL: Assume image and sampler can be RelaxedPrecision.
    
    Roll third_party/spirv-headers/ 059a49598..38cafab37 (1 commit)
    
    https://github.com/KhronosGroup/SPIRV-Headers/compare/059a49598c3c...38cafab379e5
    
    $ git log 059a49598..38cafab37 --date=short --no-merges --format='%ad %ae %s'
    2019-08-30 cepheus Minor tweak for Rev. 2 of SPIR-V 1.4.
    
    Roll third_party/spirv-tools/ 15fc19d09..b54d95029 (9 commits)
    
    https://github.com/KhronosGroup/SPIRV-Tools/compare/15fc19d0912d...b54d95029800
    
    $ git log 15fc19d09..b54d95029 --date=short --no-merges --format='%ad %ae %s'
    2019-09-03 stevenperron Fold Fmix should accept vector operands. (#2826)
    2019-09-02 afdx Fix end comments in header files (#2829)
    2019-08-30 bclayton AggressiveDCEPass: Set modified to true when appending to to_kill_ (#2825)
    2019-08-30 stevenperron Replace SwizzleInvocationsAMD extended instruction. (#2823)
    2019-08-30 stevenperron Replace SwizzleInvocationsMaskedAMD extended instruction. (#2822)
    2019-08-30 cwallez Fix gn check (#2821)
    2019-08-29 stevenperron Amd ext to khr (#2811)
    2019-08-29 bclayton spvtools::Optimizer - don't assume original_binary and optimized_binary are aliased (#2799)
    2019-08-28 stevenperron Check feature mgr in context consistency check (#2818)
    
    Created with:
      roll-dep third_party/effcee third_party/glslang third_party/googletest third_party/re2 third_party/spirv-cross third_party/spirv-headers third_party/spirv-tools
  - Seperate non-API spvc code into private source file (#794)
    
    Fixes #793
  - Rolling 7 dependencies and updating known_failures (#791)
    
    Also adds enabling HLSL on Android builds
    
    
    Roll third_party/effcee/ 4bef5dbed..6527fb254 (4 commits)
    
    https://github.com/google/effcee/compare/4bef5dbed590...6527fb25482e
    
    $ git log 4bef5dbed..6527fb254 --date=short --no-merges --format='%ad %ae %s'
    2019-08-26 dneto Fail parsing checks if var def regexp is bad
    2019-08-24 dneto Fail parsing checks if the regexp is bad.
    2019-08-23 dneto Add effcee-fuzz
    2019-08-19 dnovillo Add Bazel build rules.
    
    Roll third_party/glslang/ 95609e6d9..f27bd2aa2 (30 commits)
    
    https://github.com/KhronosGroup/glslang/compare/95609e6d923a...f27bd2aa2e3f
    
    $ git log 95609e6d9..f27bd2aa2 --date=short --no-merges --format='%ad %ae %s'
    2019-08-27 cwallez BUILD.gn: Add missing HLSL files.
    2019-08-26 cwallez GN build (for Chromium): enable HLSL in dependents.
    2019-08-26 baldurk Dereference any array type before expanding root-level SSBO members
    2019-08-23 dneto GN build (for Chromium): enable HLSL
    2019-08-22 cepheus Bump revision.
    2019-08-22 cepheus GLSL: Inherit memory qualifiers, both declaratively and in execution.
    2019-08-22 jonahr Fix conformance with -Wextra-tokens
    2019-08-21 cepheus Bump version.
    2019-08-21 cepheus web: Fix accidental additon of refract() prototypes and update README.
    2019-08-13 cepheus Web: Turn off includes, independent preprocessing path, fine tune all.
    2019-08-11 cepheus Web: Make switched methods all be non-virtual, more web-dependent code,
    2019-08-10 cepheus Web: Optional error management and error tightening.
    2019-08-09 cepheus Web: Use isEsProfile() instead of run-time testing; remove more atomics
    2019-08-08 cepheus Web: Remove unused stage functionality, SPIR-V logger, and hex_utils
    2019-08-08 cepheus Web: Remove unnecessary GLSL numeric types, and some collateral.
    2019-08-08 cepheus Web: Tighten up sampling code and interfaces.
    2019-08-07 cepheus Web: Complete the removal of vendor-specific #ifdef's, including CMake.
    2019-08-06 cepheus Web: Prune grammar and lexor down to needed subset.
    2019-08-06 cepheus Web: Generalize _EXTENSIONS* in SPIR-V back-end.
    2019-08-06 cepheus Web: Turn off bracket-style attributes, reflection, and IO mapping.
    2019-08-01 cepheus Web: Remove/rationalize a set of *_EXTENSIONS, using GLSLANG_WEB.
    2019-07-31 cepheus Web: First pass of tabling the built-in function declarations.
    2019-07-28 cepheus Web: Selectively remove a few key features, using #ifndef GLSLANG_WEB
    2019-07-27 cepheus Web: Change a bunch of HLSL methods from dynamic to compile-time known.
    2019-07-27 cepheus Web: Remove a few additional HLSL constructs with ENABLE_HLSL.
    2019-07-26 cepheus Web: Add sanity check test suite for smaller-footprint builds.
    2019-08-20 cepheus Bump revision.
    2019-08-14 kainino convert_glsl_to_spirv: fail early, reduce copies, remove input buffer allocation
    2019-07-25 kainino make glslang.js easy to use
    2019-08-14 kainino enable build for node
    
    Roll third_party/googletest/ c9ccac7cb..6a3d632f4 (8 commits)
    
    https://github.com/google/googletest/compare/c9ccac7cb734...6a3d632f40a1
    
    $ git log c9ccac7cb..6a3d632f4 --date=short --no-merges --format='%ad %ae %s'
    2019-08-26 misterg Googletest export
    2019-08-23 absl-team Googletest export
    2019-08-23 krystian.kuzniarek Googletest export
    2019-08-20 absl-team Googletest export
    2019-08-14 krystian.kuzniarek reuse IndexSequence from googletest
    2019-08-13 krystian.kuzniarek remove a custom implementation of std::remove_const
    2019-08-13 krystian.kuzniarek remove a custom implementation of std::enable_if
    2019-08-13 krystian.kuzniarek remove a custom implementation of std::add_lvalue_reference
    
    Roll third_party/re2/ be0e1305d..5bd613749 (4 commits)
    
    https://github.com/google/re2/compare/be0e1305d264...5bd613749fd5
    
    $ git log be0e1305d..5bd613749 --date=short --no-merges --format='%ad %ae %s'
    2019-08-26 junyer Partial revert of commit 7a10064.
    2019-08-26 junyer Adjust a thread annotation.
    2019-08-13 milkovic.marek Improvements in install target generated by CMake
    2019-08-26 junyer Simplify the plumbing for re2.pc.
    
    Roll third_party/spirv-cross/ 4ce04480e..563e99448 (7 commits)
    
    https://github.com/KhronosGroup/SPIRV-Cross/compare/4ce04480ec54...563e99448692
    
    $ git log 4ce04480e..563e99448 --date=short --no-merges --format='%ad %ae %s'
    2019-08-27 post MSL: Deal with array copies from and to threadgroup.
    2019-08-27 post Do not allow base expressions for non-native row-major matrices.
    2019-08-27 post Deal with ldexp taking uint input.
    2019-08-26 post Move branchless analysis to CFG.
    2019-08-26 post Elide branches to continue block when continue block is also a merge.
    2019-08-26 post Deal correctly with sign on bitfield operations.
    2019-08-26 post Fix variable scope when switch block exits multiple times.
    
    Roll third_party/spirv-headers/ e4322e3be..059a49598 (1 commit)
    
    https://github.com/KhronosGroup/SPIRV-Headers/compare/e4322e3be589...059a49598c3c
    
    $ git log e4322e3be..059a49598 --date=short --no-merges --format='%ad %ae %s'
    2019-06-12 cepheus Grammar: Add instruction-printing classes.
    
    Roll third_party/spirv-tools/ bc62722b8..15fc19d09 (7 commits)
    
    https://github.com/KhronosGroup/SPIRV-Tools/compare/bc62722b80a6...15fc19d0912d
    
    $ git log bc62722b8..15fc19d09 --date=short --no-merges --format='%ad %ae %s'
    2019-08-26 stevenperron Refactor instruction folders (#2815)
    2019-08-23 8729214+jonahryandavis Add missing files to BUILD.gn (#2809)
    2019-08-22 afdx Extend reducer to remove relaxed precision decorations (#2797)
    2019-08-22 stevenperron Handle Id overflow in private-to-local (#2807)
    2019-08-21 stevenperron Even more id overflow in sroa (#2806)
    2019-08-21 stevenperron Add name for variables in desc sroa (#2805)
    2019-08-20 dneto Remove unimplemented method declaration (#2804)
    
    Created with:
      roll-dep third_party/effcee third_party/glslang third_party/googletest third_party/re2 third_party/spirv-cross third_party/spirv-headers third_party/spirv-tools
  - Add ToVulkan API methods (#792)
    
    Fixes #788
  - Refactor internals of conversion API to be more modular (#785)
    
    Reorganizing all of the code to make it clearer what each function
    does. Each conversion function invokes a validate & translate
    function, then generation function. The validate & translate function
    in turn invoke functions that just validate or translate. There are
    seperate generation functions for each backend, handling configuring
    the compiler, but they all use a common wrapper function to actually
    call the compiler to properly handle catching exceptions from the
    compiler.
    
    Fixes #588
    
  - Remove extra semi-colons (#790)
    
    
  - GN build: enable HLSL in Glslang (#789)
    
    
  - spvc: Add option to inject code to enforce robust-buffer-access
    
    Fixes #767
  - Force Glslang to support HLSL in its interface (#784)
    
    Fixes a compilation problem introduced by recent
    Glslang changes to optionally build into a very small
    GLSL-only binary.
    
    Also fix test cases to have set and binding layout qualifiers on
    buffers when compiling for Vulkan.  This rule is now enforced by
    Glslang.
  - Fix some Python2 vs 3 issues in update_build_version.py (#783)
    
    Cleans up a usage of print.
    
    Also changes the behaviour of reading in the CHANGES file to insert
    '?' when encountering non-ASCII, instead of throwing. Given that this
    part of the code is just extracting the version string from CHANGES,
    this should not have unicode in it. If a ? is getting inserted in
    there, then the file is malformed and this operation will fail.
    
    Fixes #778
  - Manually cast fuzzing data to avoid new GCC warning (#782)
    
    -Wclass-memaccess warnings/errors is being triggered somewhat
     spuriously. Coercing the type to avoid this warning, since this
     should be valid.
    
    Fixes #780
  - Rolling 4 dependencies (#779)
    
    Roll third_party/glslang/ 37fc4d27d..95609e6d9 (1 commit)
    
    https://github.com/KhronosGroup/glslang/compare/37fc4d27d612...95609e6d923a
    
    $ git log 37fc4d27d..95609e6d9 --date=short --no-merges --format='%ad %ae %s'
    2019-08-14 johnkslang Set theme jekyll-theme-merlot
    
    Roll third_party/googletest/ 90a443f9c..c9ccac7cb (18 commits)
    
    https://github.com/google/googletest/compare/90a443f9c243...c9ccac7cb734
    
    $ git log 90a443f9c..c9ccac7cb --date=short --no-merges --format='%ad %ae %s'
    2019-08-19 misterg Googletest export
    2019-08-16 absl-team Googletest export
    2019-08-16 absl-team Googletest export
    2019-08-16 misterg Googletest export
    2019-08-16 misterg Googletest export
    2019-08-16 misterg Googletest export
    2019-08-15 misterg Googletest export
    2019-08-15 absl-team Googletest export
    2019-08-12 absl-team Googletest export
    2019-08-09 absl-team Googletest export
    2019-08-09 absl-team Googletest export
    2019-08-13 krystian.kuzniarek remove custom implementations of std::is_same
    2019-08-14 krystian.kuzniarek remove a custom implementation of std::is_reference
    2019-08-11 adam.f.badura Use -Wa,-mbig-obj for Cygwin/MinGW always
    2019-08-11 krystian.kuzniarek remove an outdated comment
    2019-08-08 krystian.kuzniarek remove a dead metafunction
    2019-08-07 contact Update Bazel on Windows
    2019-08-07 contact Prepare for Bazel incompatible changes
    
    Roll third_party/re2/ 67bce690d..be0e1305d (15 commits)
    
    https://github.com/google/re2/compare/67bce690decd...be0e1305d264
    
    $ git log 67bce690d..be0e1305d --date=short --no-merges --format='%ad %ae %s'
    2019-08-19 junyer Add Clang 9 to the Travis CI matrix.
    2019-08-19 junyer Don't assume that iterators are just pointers.
    2019-08-18 junyer No, it was right before. Try the /cygdrive form.
    2019-08-18 junyer Try under 'C:\Program Files (x86)' instead. Sigh.
    2019-08-18 junyer Ensure that CMake is in the path on Windows.
    2019-08-18 junyer Comment on why we pin to Visual Studio 2015.
    2019-08-18 junyer Attempt to avoid VCVARSALL.BAT breakage entirely.
    2019-08-18 junyer Attempt to address VCVARSALL.BAT breakage. Sigh.
    2019-08-18 junyer Argh. Try a different flag.
    2019-08-18 junyer Try to upgrade Bazel harder on Windows.
    2019-08-18 junyer Upgrade Bazel before trying to build with it.
    2019-08-18 junyer Switch to Starlark for C++ rules.
    2019-08-15 junyer Configure Kokoro to run CMake builds on Ubuntu.
    2019-08-15 junyer Configure CMake to require version 3.5.1, which is what Xenial has.
    2019-08-15 junyer Upgrade Travis CI from Trusty to Xenial.
    
    Roll third_party/spirv-tools/ f701237f2..bc62722b8 (8 commits)
    
    https://github.com/KhronosGroup/SPIRV-Tools/compare/f701237f2d88...bc62722b80a6
    
    $ git log f701237f2..bc62722b8 --date=short --no-merges --format='%ad %ae %s'
    2019-08-18 stevenperron Handle overflow in wrap-opkill (#2801)
    2019-08-16 stevenperron More handle overflow in sroa (#2800)
    2019-08-16 greg Instrument: Add support for Buffer Device Address extension (#2792)
    2019-08-15 toomas.remmelg Update remquo validation to match the OpenCL Extended Instruction Set Specification (#2791)
    2019-08-15 jaebaek Use ascii code based characters (#2796)
    2019-08-14 jaebaek Change the way to include header (#2795)
    2019-08-14 alanbaker Fix validation of constant matrices (#2794)
    2019-08-14 stevenperron Replace OpKill With function call. (#2790)
    
    Created with:
      roll-dep third_party/effcee third_party/glslang third_party/googletest third_party/re2 third_party/spirv-cross third_party/spirv-headers third_party/spirv-tools
  - Rolling 3 dependencies (#777)
    
    Also updated known_failures
    
    Roll third_party/glslang/ 3cea2e588..37fc4d27d (4 commits)
    
    https://github.com/KhronosGroup/glslang/compare/3cea2e5882e3...37fc4d27d612
    
    $ git log 3cea2e588..37fc4d27d --date=short --no-merges --format='%ad %ae %s'
    2019-08-09 rharrison Make non-emscripten flags platform agnostic.
    2019-08-09 rharrison Converted ENABLE_HLSL to a dependent option, so it can be always disabled in web builds
    2019-08-09 rharrison Move build instructions to README.md
    2019-08-08 rharrison Add WASM build target for Web version of glslang
    
    Roll third_party/googletest/ b4961ab1c..90a443f9c (6 commits)
    
    https://github.com/google/googletest/compare/b4961ab1cbda...90a443f9c243
    
    $ git log b4961ab1c..90a443f9c --date=short --no-merges --format='%ad %ae %s'
    2019-08-07 absl-team Googletest export
    2019-08-07 absl-team Googletest export
    2019-08-07 krystian.kuzniarek fix an improperly generated table
    2019-08-06 krystian.kuzniarek fix broken links
    2019-08-06 antoine Fix #2371: Redirect Windows CRT assertions to stderr
    2019-08-01 krystian.kuzniarek remove an excessive mutable type specifier
    
    Roll third_party/spirv-tools/ 698b56a8f..f701237f2 (9 commits)
    
    https://github.com/KhronosGroup/SPIRV-Tools/compare/698b56a8f024...f701237f2d88
    
    $ git log 698b56a8f..f701237f2 --date=short --no-merges --format='%ad %ae %s'
    2019-08-12 stevenperron Remove useless semi-colons (#2789)
    2019-08-09 greg Instrument: Fix version 2 output record write for tess eval shaders. (#2782)
    2019-08-08 stevenperron Start SPIRV-Tools v2019.5
    2019-08-08 stevenperron Finalize SPIRV-Tools v2019.4
    2019-08-08 stevenperron Add descriptor array scalar replacement (#2742)
    2019-08-08 stevenperron Update CHANGES
    2019-08-08 greg Add SPV_EXT_physical_storage_buffer to opt whitelists (#2779)
    2019-08-07 stevenperron Handle RelaxedPrecision in SROA (#2788)
    2019-08-07 zoddicus Add -fextra-semi to Clang builds (#2787)
    
    Created with:
      roll-dep third_party/effcee third_party/glslang third_party/googletest third_party/re2 third_party/spirv-cross third_party/spirv-headers third_party/spirv-tools
  - Rolling 7 dependencies (#776)
    
    * Rolling 7 dependencies
    
    Also updates known_failures and fixes a broken build rule.
    
    Roll third_party/effcee/ b83b58d17..4bef5dbed (2 commits)
    
    https://github.com/google/effcee/compare/b83b58d177b7...4bef5dbed590
    
    $ git log b83b58d17..4bef5dbed --date=short --no-merges --format='%ad %ae %s'
    2019-07-08 dneto Require Python 3
    2019-07-08 dneto Add Clang warning -Wextra-semi
    
    Roll third_party/glslang/ 4b4b41a63..3cea2e588 (29 commits)
    
    https://github.com/KhronosGroup/glslang/compare/4b4b41a63499...3cea2e5882e3
    
    $ git log 4b4b41a63..3cea2e588 --date=short --no-merges --format='%ad %ae %s'
    2019-08-02 cepheus Bump revision and give the bots another chance to work.
    2019-08-01 rharrison Add in header for uint32_t definition
    2019-07-30 rharrison Convert no RTTI rule to be compiler specific
    2019-07-28 lryer Fix Clang compiler warning.
    2019-07-28 lryer Fix location distribution not in order
    2019-07-25 stevenperron Remove execute permission from LICENSE.txt
    2019-07-25 lryer Fix memory init issue, to make sure the class members are init in order.
    2019-07-23 cepheus Revert "Merge pull request #1792 from Roy-AMD/automapping-opengl-location"
    2019-07-22 alele Fix bugs in missing Builtin decoration for some NV builtins for tessellation control shaders. Fix bug in member remapping.
    2019-07-22 cepheus SPV: Update to latest SPIR-V header.
    2019-07-18 greg Update spirv-tools and spirv-headers known good.
    2019-07-17 cepheus Build: shut up warning to add unnecessary parens.
    2019-07-17 alele Fix bug in printing trailing comma when dumping AST for a structure.
    2019-07-16 jmacnak Update known good SPIRV-Tools commit
    2019-07-15 sparmar Allow unsized view array dimension for non-block perviewNV attributes
    2019-07-15 cepheus ESSL: Fix #1823: Conditions for when derivatives are in compute shader.
    2019-07-15 rex.xu OpIsHelperInvocationEXT should declare relevant SPV extension and capability
    2019-07-13 cepheus GLSL: Fix #1833: Don't constant fold integer mix to a float.
    2019-07-12 jmacnak spirv: Generate missing SampleMaskOverrideCoverageNV capability op
    2019-07-12 rharrison Explicitly remove RTTI in the top-level build config
    2019-07-10 aaron.hagan Add support for SPV_KHR_shader_clock
    2019-07-10 jbolz Avoid generating 8/16-bit constants when 8/16-bit arithmetic extensions aren't enabled
    2019-07-08 alanbaker Test updates
    2019-07-08 alanbaker Update SPIRV-Tools revision
    2019-07-06 rex.xu Change implementation of gl_SIMDGroupSizeAMD
    2019-07-03 cepheus SPV: Fix #1783: Don't do bounds checking for spec-const-expression size
    2019-06-25 jbolz Handle SPIR-V type mismatch when constructing a composite
    2019-06-07 lryer code format refine
    2019-06-06 lryer Add interface symbol and uniform symbol location auto mapping for OpenGL shader.
    
    Roll third_party/googletest/ 437e1008c..b4961ab1c (60 commits)
    
    https://github.com/google/googletest/compare/437e1008c97b...b4961ab1cbda
    
    $ git log 437e1008c..b4961ab1c --date=short --no-merges --format='%ad %ae %s'
    2019-08-06 absl-team Googletest export
    2019-08-05 misterg Googletest export
    2019-08-05 misterg Googletest export
    2019-08-02 absl-team Googletest export
    2019-08-01 absl-team Googletest export
    2019-08-01 absl-team Googletest export
    2019-07-31 absl-team Googletest export
    2019-07-31 absl-team Googletest export
    2019-07-31 misterg Googletest export
    2019-08-01 guillemglez Fix table formatting in advanced.md
    2019-07-09 krystian.kuzniarek adjust a comment to the similar section in advanced.md
    2019-07-31 anttsov Update README.md
    2019-07-28 krystian.kuzniarek update pre-C++11 paragraphs
    2019-07-26 krystian.kuzniarek fix typos
    2019-07-26 krystian.kuzniarek fix numbering of ordered lists in Markdown
    2019-07-25 krystian.kuzniarek remove trailing whitespaces
    2019-07-30 anttsov Update README.md
    2019-07-29 absl-team Googletest export
    2019-07-29 misterg Googletest export
    2019-07-29 misterg Manual docs tweaks still in preparation for including docs with code pushes
    2019-07-29 misterg Manual docs tweaks still in preparation for including docs with code pushes
    2019-07-11 adam.f.badura Correct CMake to cover Cygwin
    2019-07-25 absl-team Googletest export
    2019-07-25 absl-team Googletest export
    2019-07-18 misterg Googletest export
    2019-07-23 rytis.karpuska Fix small errors in primer.md
    2019-07-19 chris.baish Moved explanation to single line as well
    2019-07-19 chris.baish Moved table to single lines
    2019-07-18 misterg Manual docs tweaks still in preparation for including docs with code pushes
    2019-07-18 misterg Manual docs tweaks still in preparation for including docs with code pushes
    2019-07-18 misterg Manual docs tweaks still in preparation for including docs with code pushes
    2019-07-18 misterg Manual docs tweaks still in preparation for including docs with code pushes
    2019-07-18 krystian.kuzniarek explicitly show overriding to align examples to their comments
    2019-07-18 krystian.kuzniarek document a missing parent class
    2019-07-18 43465319+ChrisBaish Update primer.md
    2019-07-17 misterg remove outdated
    2019-07-17 misterg remove outdated
    2019-07-17 misterg Preparation for including docs in round-trip with OSS, Manual merge, review and merge docs internal-OSS
    2019-07-17 absl-team Googletest export
    2019-07-11 adam.f.badura Add missing <functional> include
    2019-07-16 misterg Preparation for including docs in round-trip with OSS. Manual review and merge docs internal-OSS
    2019-07-16 misterg Preparation for including docs in round-trip with OSS. Manual review and merge docs internal-OSS
    2019-07-16 misterg Googletest export
    2019-07-15 absl-team Googletest export
    2019-07-10 absl-team Googletest export
    2019-07-15 misterg Preparation for including docs in round-trip with OSS
    2019-07-15 misterg Preparation for including docs in round-trip with OSS
    2019-07-15 misterg Preparation for including docs in round-trip with OSS
    2019-07-15 misterg Preparation for including docs in round-trip with OSS
    2019-07-13 krystian.kuzniarek fix a broken link
    2019-07-13 krystian.kuzniarek add missing references to DesignDoc and KnownIssues
    2019-07-13 krystian.kuzniarek rename and apply snake_case on KnownIssues.md
    2019-07-13 krystian.kuzniarek rename and apply snake_case on FrequentlyAskedQuestions.md
    2019-07-13 krystian.kuzniarek rename and apply snake_case on ForDummies.md
    2019-07-13 krystian.kuzniarek rename and apply snake_case on Documentation.md
    2019-07-13 krystian.kuzniarek rename and apply snake_case on DesignDoc.md
    2019-07-13 krystian.kuzniarek rename and apply snake_case on CheatSheet.md
    2019-07-10 sam.sobell Fix bad advice in cook book (#2308)
    2019-07-01 cclauss Travis CI: The sudo: tag is now deprecated in Travis CI
    2018-01-29 knut.omang Remove / from parameterized test names if base test name is empty
    
    Roll third_party/re2/ e356bd3f8..67bce690d (8 commits)
    
    https://github.com/google/re2/compare/e356bd3f80e0...67bce690decd
    
    $ git log e356bd3f8..67bce690d --date=short --no-merges --format='%ad %ae %s'
    2019-07-31 junyer Switch from //... to //:all when building with Bazel.
    2019-07-26 junyer Get rid of StringAppendF().
    2019-07-26 junyer Get rid of SStringPrintf().
    2019-07-25 junyer Oops, missed a couple.
    2019-07-25 junyer Don't make the arraysize() macro cast to int.
    2019-07-24 junyer One more tweak for Python 3.
    2019-07-24 junyer Get the Unicode scripts working with Python 3.
    2019-07-21 junyer Update Unicode data to 12.1.0.
    
    Roll third_party/spirv-cross/ 53ab2144b..4ce04480e (79 commits)
    
    https://github.com/KhronosGroup/SPIRV-Cross/compare/53ab2144b90a...4ce04480ec54
    
    $ git log 53ab2144b..4ce04480e --date=short --no-merges --format='%ad %ae %s'
    2019-08-01 post Fix severe performance issue with invariant expression invalidation.
    2019-07-26 cdavis MSL: Unify the get_*_address_space() methods.
    2019-07-26 post MSL: Cleanup temporary use with emit_uninitialized_temporary.
    2019-07-26 post MSL: Deal with Modf/Frexp where output is access chain to scalar.
    2019-07-26 post Do not force temporary unless continue-only for loop dominates.
    2019-07-25 post Missed case where DoWhile continue block deals with Phi.
    2019-07-25 post Vulkan GLSL: Support disabling samplerless texture function EXT.
    2019-07-25 post Workaround MSVC 2013 compiler issues.
    2019-07-22 cdavis MSL: Adjust BuiltInWorkgroupId for vkCmdDispatchBase().
    2019-07-24 post Fix some typos in comments.
    2019-07-24 post Do not attempt to pack types which are already scalar.
    2019-07-24 post HLSL query lod cleanups.
    2019-07-24 post Do not eagerly invalidate all active variables on a branch.
    2019-07-23 post Do not disable temporary forwarding when we suppress usage tracking.
    2019-07-23 post Add another test for unpacking without load forwarding.
    2019-07-23 post Look at pointee type when unpacking expressions.
    2019-07-23 post Fix some warnings when building in MoltenVK.
    2019-07-23 post Deal correctly with non-forwarded packed loads.
    2019-07-23 post Test CompositeInsert/Extract/VectorShuffle on packed vectors.
    2019-07-23 post Add test for array of scalar struct.
    2019-07-23 post Recursively pack struct types when we find scalar packed structs.
    2019-07-23 post Run format_all.sh.
    2019-07-23 post Unpack vector expression in Matrix-Vector multiplies.
    2019-07-23 post Test matrix multiplies in more complex scenarios.
    2019-07-23 post Test implicit packing of struct members.
    2019-07-23 post GLSL/HLSL: Verify member alignment for explicit offset as well.
    2019-07-23 post Add tests for struct padding and self-alignment.
    2019-07-23 post Use to_unpacked_row_major_expression to unify row-major in MSL/GLSL.
    2019-07-23 post Simplify row-major matrix/vector multiplies.
    2019-07-23 post Test array of std140 vectors.
    2019-07-23 post Add struct size padding tests.
    2019-07-22 post Add test for CompositeExtract from row-major loaded vector.
    2019-07-22 post Add test for split access chain into row-major matrix.
    2019-07-22 post Remove obsolete matrix workaround code.
    2019-07-22 post Only transpose unpacked expressions.
    2019-07-22 post Deal correctly with complete stores to row_major matrices.
    2019-07-22 post Declare correct matrix type when unpacking.
    2019-07-22 post Don't forget to register a write to LHS expression in certain case.
    2019-07-22 post Deal with swizzled stores to std140 matrices.
    2019-07-22 post Fix some row-major column store cases.
    2019-07-22 post Fix more stray parens.
    2019-07-22 post Fixup stray parent in output.
    2019-07-22 post Correctly unpack row-major matrices when storing to LHS.
    2019-07-22 post MSL: Add std140 and scalar matrix layouts.
    2019-07-22 post MSL: Add std430 matrix access test.
    2019-07-22 post MSL: Support storing to row-major column.
    2019-07-22 post Tests run clean.
    2019-07-19 post Fix unpacking of packed but not remapped types on load.
    2019-07-19 post Traverse correct types when checking scalar layout.
    2019-07-19 post Deal with scalar layout of entire structs.
    2019-07-19 post Pass down row-major state to unpacking functions.
    2019-07-19 post Deal with all forms of matrix writes ...
    2019-07-19 post Can deal with std140 matrices now.
    2019-07-18 post Start considering how to emit physical type ID.
    2019-07-18 post Deal more cleanly with matrices and row-major.
    2019-07-18 post Reintroduce struct_member_* MSL queries.
    2019-07-18 post MSL: Begin rewrite of buffer packing logic.
    2019-07-18 cdavis Don't forward uses of an OpIsHelperInvocationEXT op.
    2019-07-13 cdavis Support the SPV_EXT_demote_to_helper_invocation extension.
    2019-07-17 post Test glsl.std450 more exhaustively.
    2019-07-11 cdavis MSL: Support the SPV_INTEL_shader_integer_functions2 extension.
    2019-07-11 cdavis Update external repos.
    2019-07-12 cdavis Support the SPV_KHR_device_group extension.
    2019-07-11 cdavis MSL: Support the SPV_AMD_shader_trinary_minmax extension.
    2019-07-12 post Run format_all.sh.
    2019-07-12 post Deal correctly with return sign of bitscan operations.
    2019-07-10 post MSVC 2015: Workaround bogus warning with move_backwards.
    2019-07-10 post MSVC: Fix some warnings in C wrapper.
    2019-07-10 cdavis MSL: Use the select() function for OpSelect.
    2019-07-10 cdavis Support the SPV_KHR_post_depth_coverage extension.
    2019-07-10 cdavis MSL: Handle coherent, volatile, and restrict.
    2019-07-11 post GLSL: Need extension to use bitcast on GLSL < 330.
    2019-07-11 lifeng.pan Remove unreasonable assertion for OpTypeImage Sampled parameter.
    2019-07-10 cdavis MSL: Handle packed matrices.
    2019-07-10 cdavis MSL: Fix alignment of packed types.
    2019-07-10 post Forget loop variable enables after emitting block chain.
    2019-07-10 post MSL: Re-roll array expressions in initializers.
    2019-07-09 cdavis MSL: Support scalar block layout.
    2019-07-09 post MSVC 2013: Work around another compiler bug with array init.
    
    Roll third_party/spirv-headers/ 29c11140b..e4322e3be (2 commits)
    
    https://github.com/KhronosGroup/SPIRV-Headers/compare/29c11140baaf...e4322e3be589
    
    $ git log 29c11140b..e4322e3be --date=short --no-merges --format='%ad %ae %s'
    2019-07-14 aaron.hagan Add SPV_KHR_shader_clock to spirv-headers
    2019-07-12 michael.kinsner Reserve additional loop control bit for upcoming update to SPV_INTEL_fpga_loop_controls extension
    
    Roll third_party/spirv-tools/ b8ab80843..698b56a8f (43 commits)
    
    https://github.com/KhronosGroup/SPIRV-Tools/compare/b8ab80843f67...698b56a8f024
    
    $ git log b8ab80843..698b56a8f --date=short --no-merges --format='%ad %ae %s'
    2019-08-05 afdx Add 'copy object' transformation (#2766)
    2019-08-02 paulthomson fuzz: change output extension and fix usage string (#2778)
    2019-08-01 geoff Remove extra ';' after member function definition. (#2780)
    2019-07-31 zoddicus Update WebGPU validation rules of OpAtomic*s (#2777)
    2019-07-31 alanbaker Treat access chain indexes as signed in SROA (#2776)
    2019-07-30 dneto Add pass to inject code for robust-buffer-access semantics (#2771)
    2019-07-30 zoddicus Update OpMemoryBarriers rules for WebGPU (#2775)
    2019-07-30 dneto Add opt test fixture method SinglePassRunAndFail (#2770)
    2019-07-29 dneto Element type is const for analysis::Vector,Matrix,RuntimeArray (#2765)
    2019-07-29 dnovillo Protect against out-of-bounds references when folding OpCompositeExtract (#2774)
    2019-07-29 alanbaker Don't move debug or decorations when folding (#2772)
    2019-07-29 zoddicus Update OpControlBarriers rules for WebGPU (#2769)
    2019-07-26 dnovillo Fix #2609 - Handle out-of-bounds scalar replacements. (#2767)
    2019-07-25 afdx Limit fuzzer tests so that they take less time to run (#2763)
    2019-07-25 stevenperron Fix check for unreachable blocks in merge-return (#2762)
    2019-07-25 afdx Transformation and fuzzer pass to add dead continues (#2758)
    2019-07-24 zoddicus Remove unneeded future imports (#2739)
    2019-07-24 stevenperron Process OpDecorateId in ADCE (#2761)
    2019-07-24 stevenperron Record correct dominators in merge return (#2760)
    2019-07-23 stevenperron SSA rewriter: Don't use trivial phis (#2757)
    2019-07-23 alanbaker Fix block depth rule priority (#2755)
    2019-07-23 alanbaker Case validation with repeated labels (#2689)
    2019-07-22 greg Bindless Instrument: Make init check depend solely on input_init_enabled (#2753)
    2019-07-22 kevin.petit Validate storage class OpenCL environment rules for atomics (#2750)
    2019-07-22 51214578+jmacnak-nv Allow LOD ops in compute shaders with derivative group execution modes (#2752)
    2019-07-18 dneto Document opt::Instruction::InsertBefore methods (#2751)
    2019-07-17 stevenperron Revert "Do not inline OpKill Instructions (#2713)" (#2749)
    2019-07-16 jbolz For Vulkan, disallow structures containing opaque types (#2546)
    2019-07-16 stevenperron Fix bug in merge return (#2734)
    2019-07-15 51214578+jmacnak-nv Allow ray tracing shaders in inst bindle check pass. (#2733)
    2019-07-12 zoddicus Correctly implement WebGPU related flag exclusions (#2737)
    2019-07-12 greg Remove Common Uniform Elimination Pass (#2731)
    2019-07-12 cwallez BUILD.gn: Add deps and move files for `gn check` (#2735)
    2019-07-11 zoddicus Update execution scope rules for WebGPU (#2730)
    2019-07-11 33432579+alan-baker Extra small storage validation (#2732)
    2019-07-11 jbolz Add validation for SPV_EXT_demote_to_helper_invocation (#2707)
    2019-07-10 52076061+digit-google BUILD.gn: Add targets to build all command-line tools (#2727)
    2019-07-10 stevenperron Change the order branches are simplified in dead branch elim (#2728)
    2019-07-11 troughton Add —preserve-bindings and —preserve-spec-constants (#2693)
    2019-07-10 stevenperron Handle decorations better in some optimizations (#2716)
    2019-07-10 zoddicus Update memory scope rules for WebGPU (#2725)
    2019-07-08 33432579+alan-baker Remove extra semis (#2717)
    2019-07-08 33432579+alan-baker Validate usage of 8- and 16-bit types with only storage capabilities (#2704)
    
    Created with:
      roll-dep third_party/effcee third_party/glslang third_party/googletest third_party/re2 third_party/spirv-cross third_party/spirv-headers third_party/spirv-tools
  - Only use -fPIC on compilers that support it (#772)
    
    Fixes #771
  - Turn on warnings on about missing semi-colons (#770)
    
    Cleans up additional incidents of this code smell.
    
    Fixes #769
  - Remove extra semicolons in shaderc (#768)
    
    The extra semicolons will be treat as warning error if build shaderc
    as a third party library.
  - Be more pythonic about "not in" (#763)
    
    Avoid a complaint by a linter.
  - Fix typo (#762)
    
    

* Update external/shaderc/spirv-headers from branch 'master-ndk'
  to b401e4ecf728f346595b79cc5bcc6344d87ef252
  - Merge remote-tracking branch 'aosp/upstream-master' into update-shaderc
    
    Includes:
    38cafab Minor tweak for Rev. 2 of SPIR-V 1.4.
    059a495 Merge branch 'printing-classes'
    e4322e3 Merge pull request #123 from AaronHaganAMD/master
    5bc5041 Add SPV_KHR_shader_clock to spirv-headers
    cca9cc7 Grammar: Add instruction-printing classes.
    
    Change-Id: I7f2a54cadc31d573dcb6454178b185221fbb90bf
    Testing: checkbuild.py on Linux; unit tests on Windows
    
  - Minor tweak for Rev. 2 of SPIR-V 1.4.
    
  - Merge branch 'printing-classes'
    
  - Merge pull request #123 from AaronHaganAMD/master
    
    Add SPV_KHR_shader_clock to spirv-headers
  - Add SPV_KHR_shader_clock to spirv-headers
    
  - Grammar: Add instruction-printing classes.
    
    Each instruction belongs to exactly one instruction class.
    @exclude will put in the headers, but not in the specification.
    Reserved is for instructions that are both to be reserved in the
    specification and not yet put into another printing class.
    (It is okay to establish a printing class for a reserved instruction.)
    

* Update external/shaderc/spirv-tools from branch 'master-ndk'
  to 540f46c833ad7e5285b593b1744c0a1c1ff9d38e
  - Merge from aosp/upstream-master into update-shaderc
    
    Includes:
    19b25661 For WebGPU<->Vulkan optimization, set correct execution environment (#2834)
    1dfb5fc1 Export SPIRV-Tools targets on installation (#2785)
    635b583c GN: Add Chromium GoogleTest deps. (#2832)
    9b3cc3e0 Upadate CHANGES
    c77045b4 Instrument: Be sure Float16 capability on when generating float16 null (#2831)
    d11725b1 Add --relax-float-ops and --convert-relaxed-to-half (#2808)
    1c9ca422 GN: Make SPIRV-Tools target use public_deps. (#2828)
    b54d9502 Fold Fmix should accept vector operands. (#2826)
    2c5ed16b Fix end comments in header files (#2829)
    65e362b7 AggressiveDCEPass: Set modified to true when appending to to_kill_ (#2825)
    d67130ca Replace SwizzleInvocationsAMD extended instruction. (#2823)
    ad71c057 Replace SwizzleInvocationsMaskedAMD extended instruction. (#2822)
    4ae9b716 Fix gn check (#2821)
    35d98be3 Amd ext to khr (#2811)
    5a581e73 spvtools::Optimizer - don't assume original_binary and optimized_binary are aliased (#2799)
    73422a0a Check feature mgr in context consistency check (#2818)
    15fc19d0 Refactor instruction folders (#2815)
    1eb89172 Add missing files to BUILD.gn (#2809)
    8336d192 Extend reducer to remove relaxed precision decorations (#2797)
    b00ef0d2 Handle Id overflow in private-to-local (#2807)
    aef8f92b Even more id overflow in sroa (#2806)
    c5d1dab9 Add name for variables in desc sroa (#2805)
    0cbdc7a2 Remove unimplemented method declaration (#2804)
    bc62722b Handle overflow in wrap-opkill (#2801)
    9cd07272 More handle overflow in sroa (#2800)
    06407250 Instrument: Add support for Buffer Device Address extension (#2792)
    7b4e5bd5 Update remquo validation to match the OpenCL Extended Instruction Set Specification (#2791)
    dac9210d Use ascii code based characters (#2796)
    ff872dc6 Change the way to include header (#2795)
    bbd80462 Fix validation of constant matrices (#2794)
    60043edf Replace OpKill With function call. (#2790)
    f701237f Remove useless semi-colons (#2789)
    95386f9e Instrument: Fix version 2 output record write for tess eval shaders. (#2782)
    22ce39c8 Start SPIRV-Tools v2019.5
    d65513e9 Finalize SPIRV-Tools v2019.4
    4b64beb1 Add descriptor array scalar replacement (#2742)
    c26c2615 Update CHANGES
    29af42df Add SPV_EXT_physical_storage_buffer to opt whitelists (#2779)
    b029d369 Handle RelaxedPrecision in SROA (#2788)
    370375d2 Add -fextra-semi to Clang builds (#2787)
    698b56a8 Add 'copy object' transformation (#2766)
    4f14b4c8 fuzz: change output extension and fix usage string (#2778)
    0b70972a Remove extra ';' after member function definition. (#2780)
    5ada98d0 Update WebGPU validation rules of OpAtomic*s (#2777)
    3726b500 Treat access chain indexes as signed in SROA (#2776)
    31590104 Add pass to inject code for robust-buffer-access semantics (#2771)
    4a28259c Update OpMemoryBarriers rules for WebGPU (#2775)
    7621034a Add opt test fixture method SinglePassRunAndFail (#2770)
    ac3d1310 Element type is const for analysis::Vector,Matrix,RuntimeArray (#2765)
    49797609 Protect against out-of-bounds references when folding OpCompositeExtract (#2774)
    7fd2365b Don't move debug or decorations when folding (#2772)
    7bafeda2 Update OpControlBarriers rules for WebGPU (#2769)
    9559cdbd Fix #2609 - Handle out-of-bounds scalar replacements. (#2767)
    f54b8653 Limit fuzzer tests so that they take less time to run (#2763)
    bb0e2f65 Fix check for unreachable blocks in merge-return (#2762)
    1a89ac8b Transformation and fuzzer pass to add dead continues (#2758)
    65f49dfc Remove unneeded future imports (#2739)
    c7fcb8c3 Process OpDecorateId in ADCE (#2761)
    fb83b6fb Record correct dominators in merge return (#2760)
    c9190a54 SSA rewriter: Don't use trivial phis (#2757)
    aea4e6b1 Fix block depth rule priority (#2755)
    a94ddc26 Case validation with repeated labels (#2689)
    3855447d Bindless Instrument: Make init check depend solely on input_init_enabled (#2753)
    11516c0b Validate storage class OpenCL environment rules for atomics (#2750)
    bac82f49 Allow LOD ops in compute shaders with derivative group execution modes (#2752)
    76b75c40 Document opt::Instruction::InsertBefore methods (#2751)
    
    Testing: checkbuild.py on Linux; unit tests on Windows
    Change-Id: If228fe7af11f71f7d78079067381a57478003c64
    
  - For WebGPU<->Vulkan optimization, set correct execution environment (#2834)
    
    Fixes #2833
    
  - Export SPIRV-Tools targets on installation (#2785)
    
    This allows the targets to be used in other cmake projects. See the following for more details:
    https://cmake.org/cmake/help/latest/manual/cmake-packages.7.html#creating-packages
    https://foonathan.net/blog/2016/07/07/cmake-dependency-handling.html
  - GN: Add Chromium GoogleTest deps. (#2832)
    
    This fixes a GN header check in the Chromium integration.
  - Upadate CHANGES
    
  - Instrument: Be sure Float16 capability on when generating float16 null (#2831)
    
    
  - Add --relax-float-ops and --convert-relaxed-to-half (#2808)
    
    The first pass applies the RelaxedPrecision decoration to all executable
    instructions with float32 based type results. …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants