Update SPIR-V Tools to 55af3902f

Changes:
    55af3902fc2 Fix function use (#3372)
    9cb2571a184 spirv-val: allow DebugInfoNone for DebugTypeComposite.Size (#3374)
    4386ef4234e Add validation support for ImageGatherBiasLodAMD (#3363)
    b0264b87ffb Fix validation failure on OpDecorationGroup (#3365)
    4410272bdda Remove deprecated interfaces from instrument passes (#3361)
    50b15578866 Preserve debug info in inline pass (#3349)
    4dbe18b0c86 Reject folding comparisons with unfoldable types. (#3370)
    55193b06e5e Improve build instructions for fuzzer (#3364)
    3c47dac2820 Add unrolling to performance passes (#3082)
    2b987c49a4e Handle OpConstantNull in ssa-rewrite (#3362)
    95df4c9643c Add in a bunch of missed files to the BUILD.gn (#3360)
    90930cb3115 Remove stale entries from BUILD.gn (#3358)
    18ba3d9a353 allow cross compiling for Windows Store, UWP, etc. (#3330)
    2f69ea849aa spirv-fuzz: Remove FuzzerPassAddUsefulConstructs (#3341)
    522561619a9 Add support for StorageBuffer (#3348)
    b75dbf82a69 Prevent Effcee install his things when build spirv-tools with testing enabled (#3256)
    85c7e7956bf Don't register edges twice in merge return (#3350)
    bd0a2da946c Revert "Revert "[spirv-opt] refactor inlining pass (#3328)" (#3342)" (#3345)
    31182763704 spirv-reduce: Remove unused struct members (#3329)
    a6b0e132ecc Add adjust branch weights transformation (#3336)
    d4fac3451b7 Revert "[spirv-opt] refactor inlining pass (#3328)" (#3342)
    233246bc9c5 [spirv-opt] refactor inlining pass (#3328)
    2992386ebea spirv-reduce: Remove unused uniforms and similar (#3321)
    a9f2a145e65 spirv-fuzz: Fix to fact manager (#3339)
    045a26e6e37 spirv-fuzz: Get rid of unnecessary template method (#3340)
    63fa9114a93 Do merge return if the return is not at the end of the function. (#3337)
    c8590c18bd0 Preserve debug info for wrap-opkill (#3331)
    d2b48621949 Validate ShaderCallKHR memory scope (#3332)
    2e1d208ed9d spirv-fuzz: Do not allow adding stores to read-only pointers (#3316)
    54fb17b2d30 reduce: increase default step limit (#3327)
    49842b88eec Generalize IsReadOnlyVariable() to apply to pointers (#3325)
    49ca250b44c Delete nullptr in function bb list immedietly (#3326)
    d0a87194f7b Set DebugScope for termination instructions (#3323)
    f278b467dfd spirv-fuzz: Do not outline regions that end with a loop header (#3312)
    23d68608b00 vscode: Handle '|' chains on BitEnum / ValueEnum (#3309)
    42268740c95 Add debug information analysis (#3305)
    eed48ae479d Add spvtools::opt::Operand::AsLiteralUint64 (#3320)
    94d6002dc53 spirv-fuzz: Pass on validator options during shrinking (#3317)
    88faf63ad3c spirv-fuzz: Clamp statically out-of-bounds accesses in code donation (#3315)
    b74199a22d4 spirv-fuzz: Fix memory management in the fact manager (#3313)
    d158ffe5405 spirv-fuzz: Do not replace the Sample argument in OpImageTexelPointer (#3311)
    5547553a0c7 Allow various validation options to be passed to spirv-opt (#3314)
    30ffe62e257 typo fix: in README.md exectuable->executable (#3306)
    67f4838659f spirv-fuzz: Make handling of synonym facts more efficient (#3301)
    61b7de3c39f Remove unreachable code. (#3304)
    ed96301c6c4 spirv-fuzz: Fix to outliner (#3302)
    c018fc6ae66 spirv-fuzz: Do not outline regions that produce pointer outputs (#3291)
    f460cca9dca spirv-fuzz: Handle OpRuntimeArray when replacing ids with synonyms (#3292)
    2f180468a71 spirv-fuzz: Handle image storage class in donation (#3290)
    f82d47003e7 spirv-fuzz: Respect rules for OpSampledImage (#3287)
    7ce2db1763b spirv-fuzz: Fix comment. (#3300)
    7d65bce0bbe Sampled images as read-only storage (#3295)
    2a2bdbd5d72 Remove implicit fallthrough (#3298)
    49566448944 Add tests for recently added command line option (#3297)
    ca5751590ed If SPIRV-Headers is in our tree, include it as subproject (#3299)
    e70d25f6fa5 Struct CFG analysus and single block loop (#3293)
    000040e707a Preserve debug info in eliminate-dead-functions (#3251)
    c531099eb34 Update acorn version (#3294)
    34be23373b9 Handle more cases in dead member elim (#3289)
    d0490ef080c Fix pch macro to ignore clang-cl (#3283)
    538512e8e89 spirv-fuzz: Improve the handling of equation facts (#3281)
    183e3242a36 spirv-fuzz: Handle more general SPIR-V in donation (#3280)
    4af38c49bfe spirv-fuzz: Improve support for compute shaders in donation (#3277)
    e95fbfb1f50 spirv-fuzz: Transformation to add OpConstantNull (#3273)
    5d491a7ed66 spirv-fuzz: Handle isomorphic types property in composite construction (#3262)
    bfd25ace084 spirv-fuzz: Limit adding of new variables to 'basic' types (#3257)
    f28cdeff16f spirv-fuzz: Only replace regular ids with synonyms (#3255)
    8d4261bc440 spirv-fuzz: Introduce TransformationContext (#3272)
    2fdea57d19d spirv-fuzz: Add validator options (#3254)
    af01d57b5e3 Update dominates to check for null nodes (#3271)
    f20c0d7971c Set wrapped kill basic block's parent (#3269)
    c37c94929bf Validate Buffer and BufferBlock apply only to struct types (#3259)

Commands:
    ./third_party/update-spirvtools.sh

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

SwiftShader

License Build Status Build status

Introduction

SwiftShader is a high-performance CPU-based implementation of the Vulkan and OpenGL ES 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.

  • 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
    
    ./vk-unittests
    

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 OpenGL graphics API at this moment.
  3. This is not an official Google product.