Update SPIR-V Headers to 29817199b

Changes:
    29817199b Merge pull request #250 from kpet/clspv-reflection-subgroups
    1380cbbec Merge pull request #248 from pmistryNV/bindless_texture
    43d173bd6 Add SpecConstantSubgroupMaxSize to the clspv reflection non-semantic instruction set
    cec308490 Implement header definitions for SPV_NV_bindless_texture
    92f21c9b2 Merge pull request #247 from bashbaug/intel-enum-block
    442c6a62d reserve SPIR-V enum block for Intel extensions
    19e835041 Merge pull request #245 from pmistryNV/nonconstoffset
    e225eb0be Define a new Image operand bit mask for non constant offsets
    5ea2d62e8 Merge pull request #242 from egdaniel/patch-3
    2c4b19569 Register Magic Num for Skia SkSL SPIR-V Generator
    ae217c178 Merge pull request #240 from gnl21/fast-math
    f487ad919 Remove 'Kernel' capability from fast-math flags
    635049b5e Merge pull request #237 from BedrockDotPng/patch-2
    7ec2a1264 Update CMakeLists.txt
    0d3c45cdb Merge pull request #209 from kloczek/master
    6cae8216a Merge pull request #236 from greg-lunarg/db7
    4dcae4859 Add nonsemantic.shader.debuginfo to Bazel
    449bc986b Merge pull request #231 from MarijnS95/duplicate-grammar
    b1a7c66be spirv.core.grammar: Remove duplicate OpArbitraryFloatPowNINTEL declaration
    e71feddb3 Merge pull request #226 from clayengine/master
    1160d54e9 Merge pull request #233 from NikitaRudenkoIntel/opt
    4cce109bc Merge pull request #235 from alelenv/rt_motion
    b1d2909b9 Add support for SPV_NV_ray_tracing_motion_blur.
    b6b8b6792 Fix minor details in SPV_INTEL_optnone extension
    e7b49d7fb Implement SPV_INTEL_optnone extension (#230)
    cf653e4ca Merge pull request #229 from gnl21/gnl-local-size-hint-id
    737f9dcde Correct grammar for LocalSizeHintId
    1d4e3a7e3 Merge pull request #227 from kpet/fix-integer-dot-product-grammar
    ddcc06200 Merge pull request #228 from mmerecki/fix_version_of_QuantizationModes_and_OverflowModes
    810d13d3e Add missing capabilities and '"version" : "None"' to QuantizationModes and OverflowModes enumerants
    6c7e7f9f2 Fix grammar for PackedVectorFormat
    ddf3230c1 Merge pull request #222 from kpet/github-actions
    e3bc1b14e Merge pull request #223 from WyvernWang/master
    8aec5fcf9 Merge pull request #224 from Fznamznon/upstream-debug-module-ext
    71b51d4f4 Merge pull request #225 from bashbaug/SPV_KHR_bit_instructions
    5f003bd00 Clay is an internal framework of Tellusim Technologies Inc.
    0320c5dd2 Upstream SPV_INTEL_debug_module
    8ed0ff2c7 reserve value range
    6553701d3 add support for SPV_KHR_bit_instructions
    292387ae1 Add CI using Github actions and update README
    f95c3b376 Merge pull request #219 from cmarcelo/SPV_EXT_shader_atomic_float16_add
    64fbc2ff9 Merge pull request #220 from kpet/spv-khr-integer-dot-product
    e51883ece Support SPV_KHR_integer_dot_product
    2351f3a74 Add header changes for SPV_EXT_shader_atomic_float16_add
    07f259e68 Merge pull request #218 from KhronosGroup/fix-ordering
    7b5a2f411 Fix two ordering problems.
    f5417a4b6 Merge pull request #216 from mkinsner/mkinsner/allocate_vendor_extension_enum_range
    bce66d87b Merge pull request #213 from alan-baker/SPV_KHR_subgroup_uniform_control_flow
    857642c6b Merge pull request #217 from StuartDBrady/add-C++-for-OpenCL-lang
    7bfb1b532 Merge pull request #177 from MrSidims/private/MrSidims/AP
    67da8a913 Add CPP_for_OpenCL to grammar
    9a4b24433 Allocate additional Intel vendor extension enum blocks
    f836486eb Merge pull request #215 from dneto0/warnings
    c1e11359e buildHeaders: Add override decoration
    bfe6ce52f Merge pull request #214 from dneto0/cmake-3.0-in-build-headers
    5f7de8b4c Update to CMake 3.0
    9daf63c96 Support SPV_KHR_subgroup_uniform_control_flow
    8ea6700d3 Update arbitrary float cast interfaces
    0c28b6451 Merge pull request #212 from alan-baker/fix-xml
    02ba4e73c Fix xml entry for SpvGenTwo generator
    135b508e0 Merge pull request #210 from rAzoR8/spvgentwo
    ce23100fb Add SpvGenTwo to vendor IDs
    2e1bc6dcd Merge pull request #208 from mkinsner/mkinsner/tripcount_loop_control_bit
    60a5738c0 Rename spirv-headers.pc to SPIRV-Headers.pc
    4f87476e1 removed excesive space in configure_file() line
    1a8c9feb9 Fixed substituted string with paths and version
    d23495700 Add spirv-headers pkgconfig file
    ba29b3f59 Fix OpTypeBufferSurfaceINTEL token description (#207)
    819fb44e4 Reserve loop control bit for upcoming trip count (min,max,avg) control
    85b7e00c7 Merge pull request #206 from NikitaRudenkoIntel/sc
    fa3585c26 Add VectorComputeINTEL as enabling capability for Private StorageClass
    dafead176 Merge pull request #204 from DataBeaver/master
    ba086aec6 Add generator ID for MSP shader compiler
    f88a1f98f Merge pull request #201 from baldurk/spv-khr-non-semantic-info
    6804a0431 Merge pull request #202 from mkinsner/mkinsner/mem_operand_allocation_section
    a3ffef8e2 Upstream AP Intel extensions
    a3082dab5 Add xml section for memory operand bit allocation tracking, and reserve two bits for an upcoming Intel extension
    820d0ae3a Add NonSemantic.Vulkan.DebugInfo.100 JSON/header
    bcf55210f Merge pull request #178 from orbea/datadir
    fdab0e727 Merge pull request #200 from dneto0/public-spv-khr-linkonce-odr-spv-khr-expect-assume
    cf00fad5b Support SPV_KHR_expect_assume
    7ac7a0f36 Support SPV_KHR_linkonce_odr
    19e951f3d Merge pull request #198 from alan-baker/read-clock-scope
    eff6090ce Merge pull request #195 from kvark/patch-1
    00e861df6 Change operand name in OpReadClockKHR to match extension
    a3fdfe814 Merge pull request #193 from bashbaug/DebugInfoFlags-None
    29406f358 Add Naga as SPIR-V generation tool
    75b30a659 Merge pull request #187 from bashbaug/function_control_bit_16
    2e335d5fb Merge pull request #190 from dneto0/check-enumerant-ordering
    2da20c0c1 Merge pull request #189 from jekstrand/SPV_EXT_shader_atomic_float_min_max
    25fd8d031 Add header changes for SPV_EXT_shader_atomic_float_min_max
    86e8eed50 Re-run buildSpvHeaders to fix indentation
    e50154dbd Header generator: Check enumerant ordering
    03034f165 add generated headers
    faa570afb Merge pull request #192 from cmarcelo/SPV_KHR_workgroup_memory_explicit_layout
    25ac9d50e add None as a possible value for DebugInfoFlags
    38fe9b085 Add SPV_KHR_workgroup_memory_explicit_layout
    f9e1ffdcc Merge pull request #191 from dneto0/reorder-enums-in-spec
    80438cd0d Push FPDenormMode, FPOperationMode to the end
    49f96f47c add function control bitfield reservation section reserve bit 16 for an upcoming Intel extension
    eae955f05 cmake: Install cmake files to CMAKE_INSTALL_DATADIR

Commands:
    ./third_party/update-spirvheaders.sh

Bug: b/123642959
tree: 5cd0f18ecfd27fa1000c8404110a97df3ee977c4
  1. .vscode/
  2. build/
  3. build_overrides/
  4. docs/
  5. extensions/
  6. include/
  7. infra/
  8. src/
  9. tests/
  10. third_party/
  11. tools/
  12. .clang-format
  13. .dir-locals.el
  14. .gitignore
  15. .gitmodules
  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. DIR_METADATA
  25. LICENSE.txt
  26. OWNERS
  27. README.md
README.md

SwiftShader

License

Introduction

SwiftShader is a high-performance CPU-based implementation of the Vulkan graphics API12. Its goal is to provide hardware independence for advanced 3D graphics.

NOTE: SwiftShader's OpenGL ES implementation is no longer supported, and will be removed. Read more about our recommendation to use ANGLE on top of SwiftShader Vulkan here (aka. “SwANGLE”).

Building

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

  • CMake
    Install CMake for Linux, macOS, or Windows and use either the GUI or run the following terminal commands:

    cd build
    cmake ..
    cmake --build . --parallel
    
    ./vk-unittests
    

    Tip: Set the CMAKE_BUILD_PARALLEL_LEVEL environment variable to control the level of parallelism.

  • Visual Studio
    To build 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.

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.

In general, Vulkan applications look for a shared library named vulkan-1.dll on Windows (vulkan-1.so on Linux). This ‘loader’ library then redirects API calls to the actual Installable Client Driver (ICD). SwiftShader's ICD is named libvk_swiftshader.dll, but it can be renamed to vulkan-1.dll to be loaded directly by the application. Alternatively, you can set the VK_ICD_FILENAMES environment variable to the path to vk_swiftshader_icd.json file that is generated under the build directory (e.g. .\SwiftShader\build\Windows\vk_swiftshader_icd.json). To learn more about how Vulkan loading works, read the official documentation here.

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 (use the same e-mail address as the one configured as the Git commit author).

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. You can execute git clone https://swiftshader.googlesource.com/SwiftShader and manually place the commit hook in SwiftShader/.git/hooks/, or to clone the repository and install the commit hook in one go:

git clone https://swiftshader.googlesource.com/SwiftShader && (cd SwiftShader && git submodule update --init --recursive third_party/git-hooks && ./third_party/git-hooks/install_hooks.sh)

On Windows, this command line requires using the Git Bash Shell.

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 11.0.1. Most IDEs come with clang-format support, but may require upgrading/downgrading to the clang-format version 11.0.0 release version (notably Chromium's buildtools has a clang-format binary which can be an in-between revision which produces different formatting results).

Testing

SwiftShader's Vulkan 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 originates from Google Chrome‘s (Portable) Native Client project. The fork was made using git-subtree to include all of Subzero’s history.

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. This is not an official Google product.