Update SPIRV-Tools to 8910ea5f1

Also applies a fix for `spvOpcodeString` being moved to the public spirv-tools interface.

Changes:
    8910ea5f1 Fix Wrange-loop-analysis warnings in SPIRV-Tools. (#3201)
    c316fb15f Add missing dependencies when generating spvtools_core_tables (#3199)
    03c9effb5 Brief guide to writing a spirv-fuzz fuzzer pass (#3190)
    dea1040fa Fix ignored const qualifier warning in static_cast (#3197)
    4a80497a8 Make spvOpcodeString part of the public API (#3174)
    03794b8f5 Fix static libraries linking order (#3189)
    79f8caf91 vscode: Add missing fields to schema.Opcode (#3169)
    4d912f4e6 spirv-val: Add support for SPV_AMD_shader_image_load_store_lod (#3186)
    77fefe765 spirvfuzz: Fix type-related bug, change undef to zero, and add assert (#3188)
    6c218ec60 spirv-fuzz: Fuzzer pass that adds access chains (#3182)
    77fb303e5 spirv-fuzz: Fuzzer pass to add function calls (#3178)
    3d4a0dd48 spirv-fuzz: Ensure that donated variables are always initialized (#3181)
    fe10239f9 spirv-fuzz: Add fuzzer passes to add loads/stores (#3176)
    1f03ac102 spirv-fuzz: Fuzzer passes to add local and global variables (#3175)
    9e52bc0d0 utils/vscode: LSP - Support OpExtInst (#3140)
    a3b5ad909 Fix typos in opt's help. Update environment version. (#3170)
    da5457f6b Start SPIRV-Tools v2020.2
    8dd174809 Finalize SPIRV-Tools v2020.1
    76616bab6 Update CHANGES
    bb56e892f spirv-fuzz: Fuzzer pass to add composite types (#3171)
    fdd0c8776 Update script that checks copyright years. (#3173)
    b7e0998e3 spirv-fuzz: Disallow copying of null and undefined pointers (#3172)
    a9624b4d5 Handle TimeAMD in AmdExtensionToKhrPass. (#3168)
    ddcc11763 Update CHANGES
    0265a9d4d Implement constant folding for many transcendentals (#3166)
    7a2d408de Fix typo in comment. (#3163)
    1fc7a9ec7 spirv-fuzz: Arbitrary variable facts (#3165)
    dd3f8d492 spirv-fuzz: Add outlining test (#3164)
    521223b70 spirv-fuzz: Make functions "livesafe" during donation (#3146)
    97f1d485b Dead branch elim fix (#3160)
    1b3441036 Fix chromium build (#3152)
    5d786f6cc Clarify mapping of target env to SPIR-V version (#3150)
    e7afeb060 Use dummy switch instead of dummy loop in MergeReturn pass. (#3151)
    6729c4a7c Fix structured exit validation (#3141)
    bb236c326 Add spvParseVulkanEnv (#3142)
    dd37d73c5 Handle conflict between debug info and existing validation rule (#3104)
    b97057e7f Use spirv-headers' BUILD.gn (#3148)
    6a1a1b326 Roll external/spirv-headers/ af64a9e82..dc77030ac (4 commits) (#3147)
    ab7ac60f1 spirv-fuzz: Refactoring and type-related fixes (#3144)
    323a81fc5 Validate Vulkan 1.2 capabilities
    d46a1b048 Add basic support for Vulkan 1.2: SPV_ENV_VULKAN_1_2
    f8d7df760 Fix OpLine bug of merge-blocks pass (#3130)
    8013d477a spirv-fuzz: add dead blocks (#3135)
    18b3b9456 Remove names and decorations of imported symbols (#3081)
    fb2e81981 Fix GN build for OpenCL.DebugInfo.100 update (#3134)
    c86dc0bcd Fix bad parameter names in error message (#3129)
    899735f45 Revert PR #3093 (#3131)
    a466b99db Disallow forward references in arrays (#3093)
    31acc7882 spirv-fuzz: Add fuzzer pass to perform module donation (#3117)
    c8bf14393 GetOperandConstants operand can be const (#3126)

Commands:
    git subtree pull --prefix third_party/SPIRV-Tools https://github.com/KhronosGroup/SPIRV-Tools master --squash

Bug: b/123642959
Bug: angleproject:4425
Change-Id: I73076a22b474893d900a017d94a5d122061381bc
tree: 02d1c8e9d6f73dd997edc94ab11281e043ea9d1e
  1. .vscode/
  2. build/
  3. build_overrides/
  4. docs/
  5. extensions/
  6. include/
  7. src/
  8. tests/
  9. third_party/
  10. .clang-format
  11. .dir-locals.el
  12. .gitignore
  13. .gitmodules
  14. .travis.yml
  15. Android.bp
  16. AUTHORS.txt
  17. BUILD.gn
  18. CMakeLists.txt
  19. CMakeSettings.json
  20. CONTRIBUTING.txt
  21. CONTRIBUTORS.txt
  22. LICENSE.txt
  23. OWNERS
  24. README.md
  25. SwiftShader.sln
README.md

SwiftShader

License Build Status Build status

Introduction

SwiftShader is a high-performance CPU-based implementation of the Vulkan, OpenGL ES, and Direct3D 9 graphics APIs12. Its goal is to provide hardware independence for advanced 3D graphics.

Building

SwiftShader libraries can be built for Windows, Linux, and Mac OS X.
Android and Chrome (OS) build environments are also supported.

  • Visual Studio
    For building the Vulkan ICD library, use Visual Studio 2019 to open the project folder and wait for it to run CMake. Open the CMake Targets View in the Solution Explorer and select the vk_swiftshader project to build it.

    There is also a legacy SwiftShader.sln file for Visual Studio 2017 for building OpenGL ES and Direct3D libraries. Output DLLs will be placed in the out subfolder. Sample executables such as OGLES3ColourGrading can be found under the Tests solution folder and can be run from the IDE.

  • CMake

    Install CMake for Linux, Mac OS X, or Windows and use either the IDE or run the following terminal commands:

    cd build
    cmake ..
    make --jobs=8
    
    ./gles-unittests
    ./OGLES2HelloAPI
    

Usage

The SwiftShader libraries act as drop-in replacements for graphics drivers.

On Windows, most applications can be made to use SwiftShader's DLLs by placing them in the same folder as the executable. On Linux, the LD_LIBRARY_PATH environment variable or -rpath linker option can be used to direct applications to search for shared libraries in the indicated directory first.

Contributing

See CONTRIBUTING.txt for important contributing requirements.

The canonical repository for SwiftShader is hosted at: https://swiftshader.googlesource.com/SwiftShader

All changes must be reviewed and approved in the Gerrit review tool at: https://swiftshader-review.googlesource.com

Authenticate your account here: https://swiftshader-review.googlesource.com/new-password

All changes require a Change-ID tag in the commit message. A commit hook may be used to add this tag automatically, and can be found at: https://gerrit-review.googlesource.com/tools/hooks/commit-msg. To clone the repository and install the commit hook in one go:

git clone https://swiftshader.googlesource.com/SwiftShader && (cd SwiftShader && curl -Lo `git rev-parse --git-dir`/hooks/commit-msg https://gerrit-review.googlesource.com/tools/hooks/commit-msg ; chmod +x `git rev-parse --git-dir`/hooks/commit-msg)

Changes are uploaded to Gerrit by executing:

git push origin HEAD:refs/for/master

Testing

SwiftShader's OpenGL ES implementation can be tested using the dEQP test suite.

See docs/dEQP.md for details.

Third-Party Dependencies

The third_party directory contains projects which originated outside of SwiftShader:

subzero contains a fork of the Subzero project. It is part of Google Chrome‘s (Portable) Native Client project. Its authoritative source is at https://chromium.googlesource.com/native_client/pnacl-subzero/. The fork was made using git-subtree to include all of Subzero’s history, and until further notice it should not diverge from the upstream project. Contributions must be tested using the README instructions, reviewed at https://chromium-review.googlesource.com, and then pulled into the SwiftShader repository.

llvm-subzero contains a minimized set of LLVM dependencies of the Subzero project.

PowerVR_SDK contains a subset of the PowerVR Graphics Native SDK for running several sample applications.

googletest contains the Google Test project, as a Git submodule. It is used for running unit tests for Chromium, and Reactor unit tests. Run git submodule update --init to obtain/update the code. Any contributions should be made upstream.

Documentation

See docs/Index.md.

Contact

Public mailing list: swiftshader@googlegroups.com

General bug tracker: https://g.co/swiftshaderbugs
Chrome specific bugs: https://bugs.chromium.org/p/swiftshader

License

The SwiftShader project is licensed under the Apache License Version 2.0. You can find a copy of it in LICENSE.txt.

Files in the third_party folder are subject to their respective license.

Authors and Contributors

The legal authors for copyright purposes are listed in AUTHORS.txt.

CONTRIBUTORS.txt contains a list of names of individuals who have contributed to SwiftShader. If you‘re not on the list, but you’ve signed the Google CLA and have contributed more than a formatting change, feel free to request to be added.

Disclaimer

  1. Trademarks are the property of their respective owners.
  2. We do not claim official conformance with the Direct3D and OpenGL graphics APIs at this moment.
  3. This is not an official Google product.