Update SPIR-V Tools to 8a5500656

Changes:
    8a5500656 spirv-fuzz: adds TransformationReplaceLoadStoreWithCopyMemory (#3586)
    7c901a49c Preserve OpenCL.DebugInfo.100 through private-to-local pass (#3571)
    767518e8e spirv-fuzz: Relax type checking for int contants (#3573)
    f8920bcfa spirv-fuzz: Generalise transformation access chain (#3546)
    98ac9fd6d spirv-fuzz: Split blocks starting with OpPhi before trying to outline (#3581)
    059ab0819 spirv-fuzz: Set message consumer in replayer when shrinking (#3591)
    d6306537d spirv-fuzz: Don't use default parameters (#3583)
    969f02864 Change DEPS rolling script to point at external/ (#3584)
    1aaf5c613 spirv-fuzz: Create a helper in fuzzerutil to reuse function type (#3572)
    89b3bc5a8 spirv-fuzz: Test usages of IdIsIrrelevant fact (#3578)
    9dc1bfa31 spirv-fuzz: adds TransformationReplaceCopyMemoryWithLoadStore (#3575)
    586a12b9d spirv-fuzz: adds TransformationReplaceCopyObjectWithStoreLoad (#3567)
    0b84727f2 Start SPIRV-Tools v2020.5
    895927bd3 Finalize SPIRV-Tools v2020.4
    bc2f78b7d spirv-fuzz: Fix usages of irrelevant constants (#3566)
    a0d8dc2b4 Update CHANGES
    f3cec9366 Support SPV_KHR_terminate_invocation (#3568)
    dca2c86bc Sink pointer instructions in merge return (#3569)
    cf7e922e7 Preserve OpenCL.DebugInfo.100 through elim-dead-code-aggressive (#3542)
    fe9e5db89 spirv-fuzz: TransformationReplaceParamsWithStruct (#3455)
    e4aebf99f Add changes for SPV_EXT_shader_atomic_float (#3562)
    5dc96d5d2 spirv-fuzz: Use irrelevant constants (#3565)
    98395b834 spirv-fuzz: Extend TransformationRecordSynonymousConstants to allow composite constants (#3537)
    a3b0adc30 spirv-fuzz: Add is_irrelevant parameter (#3563)
    8b5ed4448 spirv-fuzz: Add IdIsIrrelevant fact (#3561)
    c10d6cebb spirv-fuzz: refactor to use RemoveAtRandomIndex (#3560)
    0d8fe0fba spirv-fuzz: add TransformationAddRelaxedDecoration (#3545)
    717e7877c Store location values sparsely (#3488)
    d5766f280 Permit Simple and GLSL450 memory model in WEBGPU_0 (#3463)
    bcc78b3e9 spirv-fuzz: support floating-point in TransformationInvertComparisonOperator (#3551)
    fb32c4074 Change MaybeApplyTransformation to return a boolean (#3555)
    7dfd9b868 spirv-fuzz: Implement MaybeApplyTransformation helper function (#3540)
    de1ff50f2 spirv-fuzz: Assert false in IsApplicable method of TransformationAccessChain (#3528)
    680c77fa6 spirv-fuzz: Add support for OpBitcast to TransformationEquationInstruction (#3523)
    b0206b0f6 spirv-fuzz: Add support for OpConvert to TransformationEquationInstruction (#3472)
    7221ccf85 Fix reachability in the validator (#3541)
    2fa735dc0 spirv-fuzz: Remove TransformationCopyObject (#3531)
    8e0215afe spirv-opt: Add support for OpLabel to dominator analysis (#3516)
    f12c40f5a spirv-fuzz: Fuzzer pass to interchange zero-like constants (#3524)
    3e7238c68 spirv-fuzz: Add replay range option (#3535)
    4c33fb0d3 Rewrite KillDebugDeclares() (#3513)
    362276978 spirv-fuzz: Fix instruction insertion issue (#3521)
    91d921e89 spirv-fuzz: Implement the OpMatrixTimesMatrix linear algebra case (#3527)
    282392dda Add support to GPU-AV instrumentation for Task and Mesh shaders (#3512)
    c9b254d04 spirv-fuzz: Support adding dead break from back-edge block (#3519)
    fe4dca516 Support OpPhi when replacing boolean constant operand (#3518)
    40c3c1cac spirv-fuzz: TransformationAddSynonyms (#3447)
    13dc28ce7 spirv-fuzz: Remove unused functions (#3510)
    282962362 spirv-fuzz: Minor refactoring (#3507)
    cf8c86a2d Preserve OpenCL.DebugInfo.100 through elim-local-single-store (#3498)
    a687057a8 Preserve debug info in vector DCE pass (#3497)
    5f8cdd8b4 Implement transformation to record synonymous constants. (#3494)
    94667fbf6 Fix build failure (#3508)
    44428352b Upgrade elim-local-single-block for OpenCL.DebugInfo.100 (#3451)
    de56c34bd spirv-fuzz: TransformationReplaceParameterWithGlobal (#3434)
    11946e640 Implement the OpMatrixTimesVector linear algebra case (#3500)
    f8eddbbe5 Preserve OpenCL.100.DebugInfo in reduce-load-size pass (#3492)
    daa3b47ed spirv-fuzz: Add image sample unused components transformation (#3439)
    7afbc0c8b spirv-fuzz: Add variables with workgroup storage class (#3485)
    2fbeb04b6 spirv-fuzz: Implement the OpVectorTimesMatrix linear algebra case (#3489)
    6d61c1159 spirv-fuzz: fuzzerutil::MaybeGetConstant* #3487
    6a4da9da4 Debug info preservation in copy-prop-array pass (#3444)
    bd2a9ea85 spirv-fuzz: TransformationInvertComparisonOperator (#3475)
    2c1ff230c Fix regression (#3481)
    4a92579a4 spirv-fuzz: Add fuzzerutil::FindOrCreate* (#3479)
    fba90d6b0 spirv-fuzz: Add FuzzerPassAddCopyMemoryInstructions (#3391)
    ab10489a0 spirv-fuzz: Add one parameter at a time (#3469)
    fc0dc3a9c Fix ADCE pass bug for mulitple entries (#3470)
    91c50e3fc Add gl_BaseInstance to the name mapper. (#3462)
    c3680adbd Implement the OpMatrixTimesScalar linear algebra case (#3450)
    efaae24d0 Clear debug information for kill and replacement (#3459)
    a1fb255a2 Validate location assignments (#3308)
    7a1af5878 Support OpCompositeExtract pattern in desc_sroa (#3456)
    29ba53f2a spirv-fuzz: Implement FuzzerPassAddParameters (#3399)
    71a5b6770 spirv-fuzz: Add GetParameters (#3454)
    8e586e46a spirv-fuzz: Permute OpPhi instruction operands (#3421)
    36b5bb701 Add support for different default/trunks in roll-deps (#3442)
    d4b9f576e [spirv-opt] debug info preservation in ssa-rewrite (#3356)
    2a1b8c062 Updated desc_sroa to support flattening structures (#3448)
    33cf7c425 spirv-fuzz: Refactor variable creation (#3414)
    d5306c8e8 spirv-fuzz: Swap operands in OpBranchConditional (#3423)
    545d158a2 Use structured order to unroll loops. (#3443)
    5342930f9 Debug info preservation in dead branch elimination (#3425)
    99651228b Add RemoveParameter method (#3437)
    57d9e360c Fix return type (#3435)
    a7112d544 Eliminate branches with condition of OpConstantNull (#3438)
    949470354 spirv-fuzz: Implement vector shuffle fuzzer pass (#3412)
    12a4fb3bc spirv-fuzz: Add replace linear algebra instruction transformation (#3402)
    52a5f074e Update access control lists. (#3433)
    30bf46dbe Fix operand access (#3427)
    5543d5faa Debug info preservation in ccp pass (#3420)
    458140aed Fix round trip tests that weren't instantiated (#3417)
    e49896709 spirv-fuzz: Add a test (#3238)
    c01f826bc spirv-fuzz: Add support for OpSpecConstant* (#3373)
    7c213720b spirv-fuzz: Fix replayer bug (#3401)
    9ed0fef6e Add value instruction condition (#3385)
    ffaecad32 Fix instruction function use (#3390)
    94808bd0f spirv-fuzz: Fix regression (#3396)
    74130f2d3 Fix googletest inclusion (#3398)
    636f449e1 Add tests for merge-return debug info preservation (#3389)
    f050cca7e spirv-fuzz: Add push id through variable transformation (#3359)
    8dfdbeff8 Rolling 4 dependencies (#3380)
    20e7fc505 Start SPIRV-Tools v2020.4
    e128ab0d6 Finalize SPIRV-Tools v2020.3
    9b8a6a144 Update CHANGES
    d3d89bb90 spirv-fuzz: Support bit width argument for int and float types (#3378)

Commands:
    ./third_party/update-spirvtools.sh

Bug: b/123642959
Change-Id: Id54668de78b22bf61434d050162e06de30366d52
tree: a033ef202a17f9c7bb28c8f5217e8ca52fc6408b
  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. Android.bp
  16. AUTHORS.txt
  17. BUILD.gn
  18. CMakeLists.txt
  19. CMakeSettings.json
  20. codereview.settings
  21. CONTRIBUTING.txt
  22. CONTRIBUTORS.txt
  23. LICENSE.txt
  24. OWNERS
  25. README.md
README.md

SwiftShader

License

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

When ready, add a project owner as a reviewer on your change.

Some tests will automatically be run against the change. Notably, presubmit.sh verifies the change has been formatted using clang-format 10.0. Most IDEs come with clang-format support, but may require downgrading to clang-format version 10.0.

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.