From 99677208ff3b216fdfec551fbe548da5520cd6fb Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 29 Oct 2020 10:46:47 +0100 Subject: BASELINE: Update Chromium to 86.0.4240.124 Change-Id: Ide0ff151e94cd665ae6521a446995d34a9d1d644 Reviewed-by: Allan Sandfeld Jensen --- chromium/third_party/shaderc/src/Android.mk | 14 +++ chromium/third_party/shaderc/src/BUILD.gn | 10 +- chromium/third_party/shaderc/src/CHANGES | 21 ++++- chromium/third_party/shaderc/src/CMakeLists.txt | 15 +++ chromium/third_party/shaderc/src/DEPS | 14 +-- .../shaderc/src/android_test/Android.mk | 14 +++ .../shaderc/src/android_test/jni/Android.mk | 14 +++ .../shaderc/src/android_test/jni/Application.mk | 14 +++ .../shaderc/src/cmake/linux-mingw-toolchain.cmake | 22 ++++- .../shaderc/src/cmake/setup_build.cmake | 14 +++ chromium/third_party/shaderc/src/cmake/utils.cmake | 14 +++ .../shaderc/src/examples/CMakeLists.txt | 14 +++ .../src/examples/online-compile/CMakeLists.txt | 14 +++ .../third_party/shaderc/src/glslc/CMakeLists.txt | 33 ++++++- .../third_party/shaderc/src/glslc/README.asciidoc | 5 +- .../shaderc/src/glslc/src/file_compiler.cc | 39 +++++++- .../shaderc/src/glslc/src/file_compiler.h | 4 +- chromium/third_party/shaderc/src/glslc/src/main.cc | 15 ++- .../shaderc/src/kokoro/linux/build-docker.sh | 98 ++++++++++++++++++++ .../third_party/shaderc/src/kokoro/linux/build.sh | 102 +++------------------ .../shaderc/src/kokoro/linux/build_clang_asan.sh | 2 +- .../shaderc/src/kokoro/linux/build_clang_debug.sh | 2 +- .../src/kokoro/linux/build_clang_release.sh | 2 +- .../shaderc/src/kokoro/linux/build_gcc_coverage.sh | 2 +- .../shaderc/src/kokoro/linux/build_gcc_debug.sh | 2 +- .../src/kokoro/linux/build_gcc_debug_exception.sh | 2 +- .../shaderc/src/kokoro/linux/build_gcc_release.sh | 2 +- .../src/kokoro/linux/build_mingw_release.sh | 0 .../src/kokoro/linux/continuous_license_check.cfg | 16 ++++ .../shaderc/src/kokoro/linux/license_check.sh | 28 ++++++ .../src/kokoro/linux/license_check_docker.sh | 20 ++++ .../src/kokoro/linux/presubmit_license_check.cfg | 16 ++++ .../third_party/shaderc/src/libshaderc/Android.mk | 14 +++ .../shaderc/src/libshaderc/CMakeLists.txt | 14 +++ .../shaderc/src/libshaderc/src/shaderc_cpp_test.cc | 2 +- .../shaderc/src/libshaderc/src/shaderc_test.cc | 2 +- .../shaderc/src/libshaderc_spvc/Android.mk | 14 +++ .../shaderc/src/libshaderc_spvc/CMakeLists.txt | 14 +++ .../src/libshaderc_spvc/include/spvc/spvc.h | 10 ++ .../src/libshaderc_spvc/include/spvc/spvc.hpp | 15 +++ .../shaderc/src/libshaderc_spvc/src/spvc.cc | 17 ++++ .../src/libshaderc_spvc/src/spvc_cpp_test.cc | 4 + .../src/libshaderc_spvc/src/spvc_private.cc | 51 ++++++++--- .../shaderc/src/libshaderc_spvc/src/spvc_test.cc | 2 +- .../shaderc/src/libshaderc_util/Android.mk | 14 +++ .../shaderc/src/libshaderc_util/CMakeLists.txt | 14 +++ .../include/libshaderc_util/file_finder.h | 2 +- .../third_party/shaderc/src/license-checker.cfg | 42 +++++++++ .../third_party/shaderc/src/spvc/CMakeLists.txt | 14 +++ chromium/third_party/shaderc/src/spvc/src/main.cc | 28 ++++-- .../shaderc/src/third_party/CMakeLists.txt | 24 ++++- chromium/third_party/shaderc/src/utils/roll-deps | 2 +- 52 files changed, 737 insertions(+), 146 deletions(-) create mode 100755 chromium/third_party/shaderc/src/kokoro/linux/build-docker.sh mode change 100644 => 100755 chromium/third_party/shaderc/src/kokoro/linux/build.sh mode change 100644 => 100755 chromium/third_party/shaderc/src/kokoro/linux/build_clang_asan.sh mode change 100644 => 100755 chromium/third_party/shaderc/src/kokoro/linux/build_clang_debug.sh mode change 100644 => 100755 chromium/third_party/shaderc/src/kokoro/linux/build_clang_release.sh mode change 100644 => 100755 chromium/third_party/shaderc/src/kokoro/linux/build_gcc_coverage.sh mode change 100644 => 100755 chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug.sh mode change 100644 => 100755 chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug_exception.sh mode change 100644 => 100755 chromium/third_party/shaderc/src/kokoro/linux/build_gcc_release.sh mode change 100644 => 100755 chromium/third_party/shaderc/src/kokoro/linux/build_mingw_release.sh create mode 100644 chromium/third_party/shaderc/src/kokoro/linux/continuous_license_check.cfg create mode 100755 chromium/third_party/shaderc/src/kokoro/linux/license_check.sh create mode 100755 chromium/third_party/shaderc/src/kokoro/linux/license_check_docker.sh create mode 100644 chromium/third_party/shaderc/src/kokoro/linux/presubmit_license_check.cfg create mode 100644 chromium/third_party/shaderc/src/license-checker.cfg (limited to 'chromium/third_party/shaderc') diff --git a/chromium/third_party/shaderc/src/Android.mk b/chromium/third_party/shaderc/src/Android.mk index 0cad257cb6f..e1ad18a6d92 100644 --- a/chromium/third_party/shaderc/src/Android.mk +++ b/chromium/third_party/shaderc/src/Android.mk @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + ROOT_SHADERC_PATH := $(call my-dir) include $(ROOT_SHADERC_PATH)/third_party/Android.mk diff --git a/chromium/third_party/shaderc/src/BUILD.gn b/chromium/third_party/shaderc/src/BUILD.gn index d9bd6028f0e..57368fedd7a 100644 --- a/chromium/third_party/shaderc/src/BUILD.gn +++ b/chromium/third_party/shaderc/src/BUILD.gn @@ -164,13 +164,11 @@ config("shaderc_spvc_public") { "${spirv_headers_dir}/include", # Accessing a private spirv-tools headers. "${spirv_tools_dir}", + # Accessing auto-generated spirv-tools headers. The headers are generated by + # actions in ${spirv_tools_dir}/BUILD.gn, hence locate the action outputs + # using the generated file directory corresponding to that build file. + get_path_info("${spirv_tools_dir}/BUILD.gn", "gen_dir"), ] - - if (build_with_chromium) { - include_dirs += [ "${target_gen_dir}/../../SPIRV-Tools/src", ] - } else { - include_dirs += [ "${target_gen_dir}/../SPIRV-Tools", ] - } if (is_component_build) { defines = [ "SHADERC_SHAREDLIB" ] diff --git a/chromium/third_party/shaderc/src/CHANGES b/chromium/third_party/shaderc/src/CHANGES index 391c5c061bf..bc383595526 100644 --- a/chromium/third_party/shaderc/src/CHANGES +++ b/chromium/third_party/shaderc/src/CHANGES @@ -1,7 +1,24 @@ Revision history for Shaderc -v2020.2-dev 2020-06-09 - - Start v2020.2-dev +v2020.3-dev 2020-07-23 + - Start v2020.3-dev + +v2020.2 2020-07-23 + - General: + - Remove VS2013 support + - Support both posix and non-posix MinGW toolchains + - Support optionally building Tint tooling for WGSL + - Add -h option to glslc, spvc; same as --help + - Add source file license checker + - BUILD.gn improvements + + - glslc, libshaderc: + - Update to Glslang generator 9 + - Add interface to support 16bit types in HLSL + - Add glslc hidden experimental option -mfmt=wgsl; requires Tint + + - spvc: + - Add minimum buffer size for Dawn reflection v2020.1 2020-06-09 This is the last version that officially supports VS2013. diff --git a/chromium/third_party/shaderc/src/CMakeLists.txt b/chromium/third_party/shaderc/src/CMakeLists.txt index 93a808a20b6..6392d2bd40a 100644 --- a/chromium/third_party/shaderc/src/CMakeLists.txt +++ b/chromium/third_party/shaderc/src/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + cmake_minimum_required(VERSION 2.8.12) project(shaderc) enable_testing() @@ -10,6 +24,7 @@ endif() message(STATUS "Shaderc: build type is \"${CMAKE_BUILD_TYPE}\".") option(SHADERC_ENABLE_SPVC "Enable libshaderc_spvc" OFF) +option(SHADERC_ENABLE_WGSL_OUTPUT "Enable WGSL output" OFF) option(SHADERC_SKIP_INSTALL "Skip installation" ${SHADERC_SKIP_INSTALL}) if(NOT ${SHADERC_SKIP_INSTALL}) diff --git a/chromium/third_party/shaderc/src/DEPS b/chromium/third_party/shaderc/src/DEPS index 9abe91b9176..06fa0ed3d1c 100644 --- a/chromium/third_party/shaderc/src/DEPS +++ b/chromium/third_party/shaderc/src/DEPS @@ -4,13 +4,13 @@ vars = { 'google_git': 'https://github.com/google', 'khronos_git': 'https://github.com/KhronosGroup', - 'effcee_revision' : '5af957bbfc7da4e9f7aa8cac11379fa36dd79b84', - 'glslang_revision': '839704450200e407490c538418f4d1a493b789ab', - 'googletest_revision': 'c6e309b268d4fb9138bed7d0f56b7709c29f102f', - 're2_revision': '14d3193228e3b3cfd21094474d64434a4840bae9', - 'spirv_headers_revision': '11d7637e7a43cd88cfd4e42c99581dcb682936aa', - 'spirv_tools_revision': 'd4b9f576ebb48e716efe14c7ea634a11427fa34d', - 'spirv_cross_revision': 'f9ae06512ef744a1379d564ed0a202b12dc3478b', + 'effcee_revision' : '2ec8f8738118cc483b67c04a759fee53496c5659', + 'glslang_revision': 'f257e0ea6b9aeab2dc7af3207ac6d29d2bbc01d0', + 'googletest_revision': 'adeef192947fbc0f68fa14a6c494c8df32177508', + 're2_revision': 'ca11026a032ce2a3de4b3c389ee53d2bdc8794d6', + 'spirv_headers_revision': '3fdabd0da2932c276b25b9b4a988ba134eba1aa6', + 'spirv_tools_revision': 'b8de4f57e9838c107bcbf17cf1e02608651c0e1d', + 'spirv_cross_revision': '4c7944bb4260ab0466817c932a9673b6cf59438e', } deps = { diff --git a/chromium/third_party/shaderc/src/android_test/Android.mk b/chromium/third_party/shaderc/src/android_test/Android.mk index 4959331bc3f..31ad38195a5 100644 --- a/chromium/third_party/shaderc/src/android_test/Android.mk +++ b/chromium/third_party/shaderc/src/android_test/Android.mk @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) diff --git a/chromium/third_party/shaderc/src/android_test/jni/Android.mk b/chromium/third_party/shaderc/src/android_test/jni/Android.mk index 8a362595e73..1360751ca17 100644 --- a/chromium/third_party/shaderc/src/android_test/jni/Android.mk +++ b/chromium/third_party/shaderc/src/android_test/jni/Android.mk @@ -1,2 +1,16 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + LOCAL_PATH := $(call my-dir) include $(LOCAL_PATH)/../Android.mk diff --git a/chromium/third_party/shaderc/src/android_test/jni/Application.mk b/chromium/third_party/shaderc/src/android_test/jni/Application.mk index c5d90ef574b..ef50946021c 100644 --- a/chromium/third_party/shaderc/src/android_test/jni/Application.mk +++ b/chromium/third_party/shaderc/src/android_test/jni/Application.mk @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + APP_ABI := all APP_BUILD_SCRIPT := Android.mk APP_STL := c++_static diff --git a/chromium/third_party/shaderc/src/cmake/linux-mingw-toolchain.cmake b/chromium/third_party/shaderc/src/cmake/linux-mingw-toolchain.cmake index 400b9a0b2d6..60e965e4156 100644 --- a/chromium/third_party/shaderc/src/cmake/linux-mingw-toolchain.cmake +++ b/chromium/third_party/shaderc/src/cmake/linux-mingw-toolchain.cmake @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + SET(CMAKE_SYSTEM_NAME Windows) set(MINGW_COMPILER_PREFIX "i686-w64-mingw32" CACHE STRING @@ -8,8 +22,12 @@ set(MINGW_SYSROOT "/usr/${MINGW_COMPILER_PREFIX}" CACHE STRING # Which compilers to use for C and C++ find_program(CMAKE_RC_COMPILER NAMES ${MINGW_COMPILER_PREFIX}-windres) -find_program(CMAKE_C_COMPILER NAMES ${MINGW_COMPILER_PREFIX}-gcc) -find_program(CMAKE_CXX_COMPILER NAMES ${MINGW_COMPILER_PREFIX}-g++) +find_program(CMAKE_C_COMPILER NAMES + ${MINGW_COMPILER_PREFIX}-gcc-posix + ${MINGW_COMPILER_PREFIX}-gcc) +find_program(CMAKE_CXX_COMPILER NAMES + ${MINGW_COMPILER_PREFIX}-g++-posix + ${MINGW_COMPILER_PREFIX}-g++) SET(CMAKE_FIND_ROOT_PATH ${MINGW_SYSROOT}) diff --git a/chromium/third_party/shaderc/src/cmake/setup_build.cmake b/chromium/third_party/shaderc/src/cmake/setup_build.cmake index 4dc49c7ac88..5dab38416c5 100644 --- a/chromium/third_party/shaderc/src/cmake/setup_build.cmake +++ b/chromium/third_party/shaderc/src/cmake/setup_build.cmake @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + if(NOT COMMAND find_host_package) macro(find_host_package) find_package(${ARGN}) diff --git a/chromium/third_party/shaderc/src/cmake/utils.cmake b/chromium/third_party/shaderc/src/cmake/utils.cmake index e3b3a7795ae..ffa933674bb 100644 --- a/chromium/third_party/shaderc/src/cmake/utils.cmake +++ b/chromium/third_party/shaderc/src/cmake/utils.cmake @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # utility functions function (shaderc_use_gmock TARGET) diff --git a/chromium/third_party/shaderc/src/examples/CMakeLists.txt b/chromium/third_party/shaderc/src/examples/CMakeLists.txt index 176c40b4c47..ce1f4c02107 100644 --- a/chromium/third_party/shaderc/src/examples/CMakeLists.txt +++ b/chromium/third_party/shaderc/src/examples/CMakeLists.txt @@ -1 +1,15 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + add_subdirectory(online-compile) diff --git a/chromium/third_party/shaderc/src/examples/online-compile/CMakeLists.txt b/chromium/third_party/shaderc/src/examples/online-compile/CMakeLists.txt index feab8f20df0..6cceb6be1bb 100644 --- a/chromium/third_party/shaderc/src/examples/online-compile/CMakeLists.txt +++ b/chromium/third_party/shaderc/src/examples/online-compile/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + add_executable(shaderc-online-compile main.cc) shaderc_default_compile_options(shaderc-online-compile) target_include_directories(shaderc-online-compile PUBLIC ${shaderc_SOURCE_DIR}/libshaderc_util/include) diff --git a/chromium/third_party/shaderc/src/glslc/CMakeLists.txt b/chromium/third_party/shaderc/src/glslc/CMakeLists.txt index acf6fb0b262..31664d1d651 100644 --- a/chromium/third_party/shaderc/src/glslc/CMakeLists.txt +++ b/chromium/third_party/shaderc/src/glslc/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + find_package(Threads) add_library(glslc STATIC @@ -17,9 +31,22 @@ add_library(glslc STATIC shaderc_default_compile_options(glslc) target_include_directories(glslc PUBLIC ${glslang_SOURCE_DIR}) -target_link_libraries(glslc PRIVATE glslang OSDependent OGLCompiler - HLSL glslang SPIRV ${CMAKE_THREAD_LIBS_INIT}) -target_link_libraries(glslc PRIVATE shaderc_util shaderc) + +if (SHADERC_ENABLE_WGSL_OUTPUT) + if (IS_DIRECTORY "${tint_SOURCE_DIR}/include") + target_include_directories(glslc PRIVATE "${tint_SOURCE_DIR}/include") + target_include_directories(glslc PRIVATE "${tint_SOURCE_DIR}") + endif() + # Turn on features in the tint/tint.h header + add_definitions(-DTINT_BUILD_SPV_READER=1 -DTINT_BUILD_WGSL_WRITER=1) + add_definitions(-DSHADERC_ENABLE_WGSL_OUTPUT=1) +endif(SHADERC_ENABLE_WGSL_OUTPUT) + +target_link_libraries(glslc PRIVATE + glslang OSDependent OGLCompiler HLSL glslang SPIRV # Glslang libraries + $<$:libtint> # Tint libraries, optional + shaderc_util shaderc # internal Shaderc libraries + ${CMAKE_THREAD_LIBS_INIT}) add_executable(glslc_exe src/main.cc) shaderc_default_compile_options(glslc_exe) diff --git a/chromium/third_party/shaderc/src/glslc/README.asciidoc b/chromium/third_party/shaderc/src/glslc/README.asciidoc index bfcdbb4067b..dfd105b01e4 100644 --- a/chromium/third_party/shaderc/src/glslc/README.asciidoc +++ b/chromium/third_party/shaderc/src/glslc/README.asciidoc @@ -13,6 +13,7 @@ Clang-compatible arguments. ---- glslc [--help] +glslc [-h] glslc [--show-limits] @@ -119,9 +120,9 @@ Otherwise, === Overall Options -==== `--help` +==== `--help`, `-h` -`--help` tells the glslc compiler to display all available options and exit. +Option `--help` or `-h` tells the glslc compiler to display all available options and exit. ==== `--show-limits` diff --git a/chromium/third_party/shaderc/src/glslc/src/file_compiler.cc b/chromium/third_party/shaderc/src/glslc/src/file_compiler.cc index 839cc6eebcd..5d67be1b5b2 100644 --- a/chromium/third_party/shaderc/src/glslc/src/file_compiler.cc +++ b/chromium/third_party/shaderc/src/glslc/src/file_compiler.cc @@ -20,6 +20,10 @@ #include #include +#if SHADERC_ENABLE_WGSL_OUTPUT == 1 +#include "tint/tint.h" +#endif // SHADERC_ENABLE_WGSL_OUTPUT==1 + #include "file.h" #include "file_includer.h" #include "shader_stage.h" @@ -246,6 +250,26 @@ bool FileCompiler::EmitCompiledResult( *out << "}" << std::endl; } break; + case SpirvBinaryEmissionFormat::WGSL: { +#if SHADERC_ENABLE_WGSL_OUTPUT == 1 + tint::Context ctx; + tint::reader::spirv::Parser spv_reader( + &ctx, std::vector(result.begin(), result.end())); + if (!spv_reader.Parse()) { + std::cout << "error: failed to convert SPIR-V binary to WGSL: " + << spv_reader.error() << std::endl; + return false; + } + tint::writer::wgsl::Generator wgsl_writer(spv_reader.module()); + if (!wgsl_writer.Generate()) { + std::cout << "error: failed to convert to WGSL: " + << wgsl_writer.error() << std::endl; + return false; + } + *out << wgsl_writer.result(); +#endif // SHADERC_ENABLE_WGSL_OUTPUT==1 + break; + } } } @@ -344,12 +368,15 @@ bool FileCompiler::ValidateOptions(size_t num_files) { case SpirvBinaryEmissionFormat::CInitList: std::cerr << "C-style initializer list"; break; + case SpirvBinaryEmissionFormat::WGSL: + std::cerr << "WGSL source program"; + break; case SpirvBinaryEmissionFormat::Unspecified: // The compiler should never be here at runtime. This case is added to // complete the switch cases. break; } - std::cerr << " when the output is not SPIR-V binary code" << std::endl; + std::cerr << " when only preprocessing the source" << std::endl; return false; } if (dependency_info_dumping_handler_ && @@ -357,9 +384,19 @@ bool FileCompiler::ValidateOptions(size_t num_files) { std::cerr << "glslc: error: cannot dump dependency info when specifying " "any binary output format" << std::endl; + return false; } } + if (binary_emission_format_ == SpirvBinaryEmissionFormat::WGSL) { +#if SHADERC_ENABLE_WGSL_OUTPUT != 1 + std::cerr << "glslc: error: can't output WGSL: glslc was built without " + "WGSL output support" + << std::endl; + return false; +#endif + } + return true; } diff --git a/chromium/third_party/shaderc/src/glslc/src/file_compiler.h b/chromium/third_party/shaderc/src/glslc/src/file_compiler.h index 1fa7c7e5ad5..cd41f737581 100644 --- a/chromium/third_party/shaderc/src/glslc/src/file_compiler.h +++ b/chromium/third_party/shaderc/src/glslc/src/file_compiler.h @@ -43,8 +43,10 @@ class FileCompiler { // code form. Binary, // Emits SPIR-V binary code directly. Numbers, // Emits SPIR-V binary code as a list of hex numbers. - CInitList, // Emits SPIR-V bianry code as a C-style initializer list + CInitList, // Emits SPIR-V binary code as a C-style initializer list // of hex numbers. + WGSL, // Emits SPIR-V module converted to WGSL source text. + // Requires a build with Tint support. }; FileCompiler() diff --git a/chromium/third_party/shaderc/src/glslc/src/main.cc b/chromium/third_party/shaderc/src/glslc/src/main.cc index bed325bb5b2..2b1c03edbc9 100644 --- a/chromium/third_party/shaderc/src/glslc/src/main.cc +++ b/chromium/third_party/shaderc/src/glslc/src/main.cc @@ -125,12 +125,15 @@ Options: tesc, tesseval, tese, geometry, geom, compute, and comp. -g Generate source-level debug information. Currently this option has no effect. + -h Display available options. --help Display available options. -I Add directory to include search path. -mfmt= Output SPIR-V binary code using the selected format. This option may be specified only when the compilation output is - in SPIR-V binary code form. Available options include bin, c - and num. By default the binary output format is bin. + in SPIR-V binary code form. Available options are: + bin - SPIR-V binary words. This is the default. + c - Binary words as C initializer list of 32-bit ints + num - List of comma-separated 32-bit hex integers -M Generate make dependencies. Implies -E and -w. -MM An alias for -M. -MD Generate make dependencies and compile. @@ -263,7 +266,7 @@ int main(int argc, char** argv) { for (int i = 1; i < argc; ++i) { const string_piece arg = argv[i]; - if (arg == "--help") { + if (arg == "--help" || arg == "-h") { ::PrintHelp(&std::cout); return 0; } else if (arg == "--show-limits") { @@ -310,7 +313,8 @@ int main(int argc, char** argv) { compiler.options().SetHlslIoMapping(true); } else if (arg == "-fhlsl-offsets") { compiler.options().SetHlslOffsets(true); - } else if (arg == "-fhlsl_functionality1" || arg == "-fhlsl-functionality1") { + } else if (arg == "-fhlsl_functionality1" || + arg == "-fhlsl-functionality1") { compiler.options().SetHlslFunctionality1(true); } else if (arg == "-finvert-y") { compiler.options().SetInvertY(true); @@ -477,6 +481,9 @@ int main(int argc, char** argv) { } else if (binary_output_format == "c") { compiler.SetSpirvBinaryOutputFormat( glslc::FileCompiler::SpirvBinaryEmissionFormat::CInitList); + } else if (binary_output_format == "wgsl") { + compiler.SetSpirvBinaryOutputFormat( + glslc::FileCompiler::SpirvBinaryEmissionFormat::WGSL); } else { std::cerr << "glslc: error: invalid value '" << binary_output_format << "' in '-mfmt=" << binary_output_format << "'" << std::endl; diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build-docker.sh b/chromium/third_party/shaderc/src/kokoro/linux/build-docker.sh new file mode 100755 index 00000000000..fb65f81a68a --- /dev/null +++ b/chromium/third_party/shaderc/src/kokoro/linux/build-docker.sh @@ -0,0 +1,98 @@ +#!/bin/bash + +# Copyright (C) 2017 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Linux Build Script run inside docker container. + +set -e # Fail on any error. + +. /bin/using.sh # Declare the bash `using` function for configuring toolchains. + +set -x # Display commands being run. + +SKIP_TESTS="False" +BUILD_TYPE="Debug" + +using cmake-3.17.2 +using ninja-1.10.0 + +if [ ! -z "$COMPILER" ]; then + using "$COMPILER" +fi + +# Possible configurations are: +# ASAN, COVERAGE, RELEASE, DEBUG, DEBUG_EXCEPTION, RELEASE_MINGW + +if [ $CONFIG = "RELEASE" ] || [ $CONFIG = "RELEASE_MINGW" ] +then + BUILD_TYPE="RelWithDebInfo" +fi + +ADDITIONAL_CMAKE_FLAGS="" +if [ $CONFIG = "ASAN" ] +then + ADDITIONAL_CMAKE_FLAGS="-DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_C_FLAGS=-fsanitize=address" +elif [ $CONFIG = "COVERAGE" ] +then + ADDITIONAL_CMAKE_FLAGS="-DENABLE_CODE_COVERAGE=ON" + SKIP_TESTS="True" +elif [ $CONFIG = "DEBUG_EXCEPTION" ] +then + ADDITIONAL_CMAKE_FLAGS="-DDISABLE_EXCEPTIONS=ON -DDISABLE_RTTI=ON" +elif [ $CONFIG = "RELEASE_MINGW" ] +then + ADDITIONAL_CMAKE_FLAGS="-Dgtest_disable_pthreads=ON -DCMAKE_TOOLCHAIN_FILE=$ROOT_DIR/cmake/linux-mingw-toolchain.cmake" + SKIP_TESTS="True" +fi + +cd $ROOT_DIR +./utils/git-sync-deps + +mkdir build +cd $ROOT_DIR/build + +# Invoke the build. +BUILD_SHA=${KOKORO_GITHUB_COMMIT:-$KOKORO_GITHUB_PULL_REQUEST_COMMIT} +echo $(date): Starting build... +cmake -GNinja -DCMAKE_INSTALL_PREFIX=$KOKORO_ARTIFACTS_DIR/install -DSHADERC_ENABLE_SPVC=ON -DRE2_BUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=$BUILD_TYPE $ADDITIONAL_CMAKE_FLAGS .. + +echo $(date): Build glslang... +ninja glslangValidator + +echo $(date): Build everything... +ninja +echo $(date): Build completed. + +echo $(date): Check Shaderc for copyright notices... +ninja check-copyright + +if [ $CONFIG = "COVERAGE" ] +then + echo $(date): Check coverage... + ninja report-coverage + echo $(date): Check coverage completed. +fi + +echo $(date): Starting ctest... +if [ $SKIP_TESTS = "False" ] +then + ctest --output-on-failure -j4 +fi +echo $(date): ctest completed. + +# Package the build. +ninja install +cd $KOKORO_ARTIFACTS_DIR +tar czf install.tgz install diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build.sh b/chromium/third_party/shaderc/src/kokoro/linux/build.sh old mode 100644 new mode 100755 index a1a33961839..765a3874ec4 --- a/chromium/third_party/shaderc/src/kokoro/linux/build.sh +++ b/chromium/third_party/shaderc/src/kokoro/linux/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2017 Google Inc. +# Copyright (C) 2020 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,94 +16,22 @@ # # Linux Build Script. +set -e # Fail on any error. -# Fail on any error. -set -e -# Display commands being run. -set -x +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" +ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )" -BUILD_ROOT=$PWD -SRC=$PWD/github/shaderc CONFIG=$1 COMPILER=$2 -SKIP_TESTS="False" -BUILD_TYPE="Debug" - -CMAKE_C_CXX_COMPILER="" -if [ $COMPILER = "clang" ] -then - PATH=/usr/lib/llvm-3.8/bin:$PATH - CMAKE_C_CXX_COMPILER="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++" -fi - -# Possible configurations are: -# ASAN, COVERAGE, RELEASE, DEBUG, DEBUG_EXCEPTION, RELEASE_MINGW - -if [ $CONFIG = "RELEASE" ] || [ $CONFIG = "RELEASE_MINGW" ] -then - BUILD_TYPE="RelWithDebInfo" -fi - -ADDITIONAL_CMAKE_FLAGS="" -if [ $CONFIG = "ASAN" ] -then - ADDITIONAL_CMAKE_FLAGS="-DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_C_FLAGS=-fsanitize=address" - [ $COMPILER = "clang" ] || { echo "$CONFIG requires clang"; exit 1; } -elif [ $CONFIG = "COVERAGE" ] -then - ADDITIONAL_CMAKE_FLAGS="-DENABLE_CODE_COVERAGE=ON" - SKIP_TESTS="True" -elif [ $CONFIG = "DEBUG_EXCEPTION" ] -then - ADDITIONAL_CMAKE_FLAGS="-DDISABLE_EXCEPTIONS=ON -DDISABLE_RTTI=ON" -elif [ $CONFIG = "RELEASE_MINGW" ] -then - ADDITIONAL_CMAKE_FLAGS="-Dgtest_disable_pthreads=ON -DCMAKE_TOOLCHAIN_FILE=$SRC/cmake/linux-mingw-toolchain.cmake" - SKIP_TESTS="True" -fi - -# Get NINJA. -wget -q https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-linux.zip -unzip -q ninja-linux.zip -export PATH="$PWD:$PATH" - -cd $SRC -./utils/git-sync-deps - -mkdir build -cd $SRC/build - -# Invoke the build. -BUILD_SHA=${KOKORO_GITHUB_COMMIT:-$KOKORO_GITHUB_PULL_REQUEST_COMMIT} -echo $(date): Starting build... -cmake -GNinja -DCMAKE_INSTALL_PREFIX=$KOKORO_ARTIFACTS_DIR/install -DSHADERC_ENABLE_SPVC=ON -DRE2_BUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=$BUILD_TYPE $ADDITIONAL_CMAKE_FLAGS $CMAKE_C_CXX_COMPILER .. - -echo $(date): Build glslang... -ninja glslangValidator - -echo $(date): Build everything... -ninja -echo $(date): Build completed. - -echo $(date): Check Shaderc for copyright notices... -ninja check-copyright - -if [ $CONFIG = "COVERAGE" ] -then - echo $(date): Check coverage... - ninja report-coverage - echo $(date): Check coverage completed. -fi - -echo $(date): Starting ctest... -if [ $SKIP_TESTS = "False" ] -then - ctest --output-on-failure -j4 -fi -echo $(date): ctest completed. - -# Package the build. -ninja install -cd $KOKORO_ARTIFACTS_DIR -tar czf install.tgz install +docker run --rm -i \ + --volume "${ROOT_DIR}:${ROOT_DIR}" \ + --volume "${KOKORO_ARTIFACTS_DIR}:${KOKORO_ARTIFACTS_DIR}" \ + --workdir "${ROOT_DIR}" \ + --env ROOT_DIR="${ROOT_DIR}" \ + --env SCRIPT_DIR="${SCRIPT_DIR}" \ + --env CONFIG="${CONFIG}" \ + --env COMPILER="${COMPILER}" \ + --env KOKORO_ARTIFACTS_DIR="${KOKORO_ARTIFACTS_DIR}" \ + --entrypoint "${SCRIPT_DIR}/build-docker.sh" \ + "gcr.io/shaderc-build/radial-build:latest" diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build_clang_asan.sh b/chromium/third_party/shaderc/src/kokoro/linux/build_clang_asan.sh old mode 100644 new mode 100755 index dae31730635..9110bc5cd3c --- a/chromium/third_party/shaderc/src/kokoro/linux/build_clang_asan.sh +++ b/chromium/third_party/shaderc/src/kokoro/linux/build_clang_asan.sh @@ -22,4 +22,4 @@ set -e set -x SCRIPT_DIR=`dirname "$BASH_SOURCE"` -source $SCRIPT_DIR/build.sh ASAN clang +source $SCRIPT_DIR/build.sh ASAN "clang-10.0.0" diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build_clang_debug.sh b/chromium/third_party/shaderc/src/kokoro/linux/build_clang_debug.sh old mode 100644 new mode 100755 index 6e045ae65ff..227237e7be8 --- a/chromium/third_party/shaderc/src/kokoro/linux/build_clang_debug.sh +++ b/chromium/third_party/shaderc/src/kokoro/linux/build_clang_debug.sh @@ -22,4 +22,4 @@ set -e set -x SCRIPT_DIR=`dirname "$BASH_SOURCE"` -source $SCRIPT_DIR/build.sh DEBUG clang +source $SCRIPT_DIR/build.sh DEBUG "clang-10.0.0" diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build_clang_release.sh b/chromium/third_party/shaderc/src/kokoro/linux/build_clang_release.sh old mode 100644 new mode 100755 index de73841d494..126f5d441a7 --- a/chromium/third_party/shaderc/src/kokoro/linux/build_clang_release.sh +++ b/chromium/third_party/shaderc/src/kokoro/linux/build_clang_release.sh @@ -22,4 +22,4 @@ set -e set -x SCRIPT_DIR=`dirname "$BASH_SOURCE"` -source $SCRIPT_DIR/build.sh RELEASE clang +source $SCRIPT_DIR/build.sh RELEASE "clang-10.0.0" diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_coverage.sh b/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_coverage.sh old mode 100644 new mode 100755 index 4ee18484677..7270334c6c2 --- a/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_coverage.sh +++ b/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_coverage.sh @@ -22,4 +22,4 @@ set -e set -x SCRIPT_DIR=`dirname "$BASH_SOURCE"` -source $SCRIPT_DIR/build.sh COVERAGE gcc +source $SCRIPT_DIR/build.sh COVERAGE "gcc-7" # gcc-8+ has issues with lcov diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug.sh b/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug.sh old mode 100644 new mode 100755 index 23f4819b32d..3a96cf762ed --- a/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug.sh +++ b/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug.sh @@ -22,4 +22,4 @@ set -e set -x SCRIPT_DIR=`dirname "$BASH_SOURCE"` -source $SCRIPT_DIR/build.sh DEBUG gcc +source $SCRIPT_DIR/build.sh DEBUG "gcc-9" diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug_exception.sh b/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug_exception.sh old mode 100644 new mode 100755 index d2c8e9a8238..9849336acec --- a/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug_exception.sh +++ b/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_debug_exception.sh @@ -22,4 +22,4 @@ set -e set -x SCRIPT_DIR=`dirname "$BASH_SOURCE"` -source $SCRIPT_DIR/build.sh DEBUG_EXCEPTION gcc +source $SCRIPT_DIR/build.sh DEBUG_EXCEPTION "gcc-9" diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_release.sh b/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_release.sh old mode 100644 new mode 100755 index fedc393677b..912360499e3 --- a/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_release.sh +++ b/chromium/third_party/shaderc/src/kokoro/linux/build_gcc_release.sh @@ -22,4 +22,4 @@ set -e set -x SCRIPT_DIR=`dirname "$BASH_SOURCE"` -source $SCRIPT_DIR/build.sh RELEASE gcc +source $SCRIPT_DIR/build.sh RELEASE "gcc-9" diff --git a/chromium/third_party/shaderc/src/kokoro/linux/build_mingw_release.sh b/chromium/third_party/shaderc/src/kokoro/linux/build_mingw_release.sh old mode 100644 new mode 100755 diff --git a/chromium/third_party/shaderc/src/kokoro/linux/continuous_license_check.cfg b/chromium/third_party/shaderc/src/kokoro/linux/continuous_license_check.cfg new file mode 100644 index 00000000000..066a4d3b910 --- /dev/null +++ b/chromium/third_party/shaderc/src/kokoro/linux/continuous_license_check.cfg @@ -0,0 +1,16 @@ +# Copyright (C) 2020 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Continuous build configuration. +build_file: "shaderc/kokoro/linux/license_check.sh" diff --git a/chromium/third_party/shaderc/src/kokoro/linux/license_check.sh b/chromium/third_party/shaderc/src/kokoro/linux/license_check.sh new file mode 100755 index 00000000000..a36e4ff6a1a --- /dev/null +++ b/chromium/third_party/shaderc/src/kokoro/linux/license_check.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# Copyright (C) 2020 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e # Fail on any error. + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" +ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )" + +docker run --rm -i \ + --volume "${ROOT_DIR}:${ROOT_DIR}:ro" \ + --workdir "${ROOT_DIR}" \ + --env ROOT_DIR="${ROOT_DIR}" \ + --env SCRIPT_DIR="${SCRIPT_DIR}" \ + --entrypoint "${SCRIPT_DIR}/license_check_docker.sh" \ + "gcr.io/shaderc-build/radial-build:latest" diff --git a/chromium/third_party/shaderc/src/kokoro/linux/license_check_docker.sh b/chromium/third_party/shaderc/src/kokoro/linux/license_check_docker.sh new file mode 100755 index 00000000000..f88077e87cb --- /dev/null +++ b/chromium/third_party/shaderc/src/kokoro/linux/license_check_docker.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +# Copyright (C) 2020 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e # Fail on any error. +set -x # Display commands being run. + +license-checker --dir="$ROOT_DIR" \ No newline at end of file diff --git a/chromium/third_party/shaderc/src/kokoro/linux/presubmit_license_check.cfg b/chromium/third_party/shaderc/src/kokoro/linux/presubmit_license_check.cfg new file mode 100644 index 00000000000..38db8f54e14 --- /dev/null +++ b/chromium/third_party/shaderc/src/kokoro/linux/presubmit_license_check.cfg @@ -0,0 +1,16 @@ +# Copyright (C) 2020 Google Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Presubmit build configuration. +build_file: "shaderc/kokoro/linux/license_check.sh" diff --git a/chromium/third_party/shaderc/src/libshaderc/Android.mk b/chromium/third_party/shaderc/src/libshaderc/Android.mk index 64618afc61f..294af69f8b5 100644 --- a/chromium/third_party/shaderc/src/libshaderc/Android.mk +++ b/chromium/third_party/shaderc/src/libshaderc/Android.mk @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) diff --git a/chromium/third_party/shaderc/src/libshaderc/CMakeLists.txt b/chromium/third_party/shaderc/src/libshaderc/CMakeLists.txt index f4a80d86330..3ada4198b04 100644 --- a/chromium/third_party/shaderc/src/libshaderc/CMakeLists.txt +++ b/chromium/third_party/shaderc/src/libshaderc/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + project(libshaderc) # Even though shaderc.hpp is a headers-only library, adding diff --git a/chromium/third_party/shaderc/src/libshaderc/src/shaderc_cpp_test.cc b/chromium/third_party/shaderc/src/libshaderc/src/shaderc_cpp_test.cc index 744d2ee1395..af9ae30401b 100644 --- a/chromium/third_party/shaderc/src/libshaderc/src/shaderc_cpp_test.cc +++ b/chromium/third_party/shaderc/src/libshaderc/src/shaderc_cpp_test.cc @@ -363,7 +363,7 @@ TEST_F(CppInterface, D_DisassemblyOption) { const AssemblyCompilationResult result = compiler_.CompileGlslToSpvAssembly( kMinimalShader, shaderc_glsl_vertex_shader, "shader", options_); EXPECT_TRUE(CompilationResultIsSuccess(result)); - // This should work with both the glslang native disassembly format and the + // This should work with both the glslang disassembly format and the // SPIR-V Tools assembly format. EXPECT_THAT(CompilerOutputAsString(result), HasSubstr("Capability Shader")); EXPECT_THAT(CompilerOutputAsString(result), HasSubstr("MemoryModel")); diff --git a/chromium/third_party/shaderc/src/libshaderc/src/shaderc_test.cc b/chromium/third_party/shaderc/src/libshaderc/src/shaderc_test.cc index 14f28abdfc8..31624685d70 100644 --- a/chromium/third_party/shaderc/src/libshaderc/src/shaderc_test.cc +++ b/chromium/third_party/shaderc/src/libshaderc/src/shaderc_test.cc @@ -498,7 +498,7 @@ TEST_F(CompileStringWithOptionsTest, ValuelessMacroCompileOptionsNullPointer) { TEST_F(CompileStringWithOptionsTest, DisassemblyOption) { ASSERT_NE(nullptr, compiler_.get_compiler_handle()); - // This should work with both the glslang native assembly format and the + // This should work with both the glslang assembly format and the // SPIR-V tools assembly format. const std::string disassembly_text = CompilationOutput(kMinimalShader, shaderc_glsl_vertex_shader, diff --git a/chromium/third_party/shaderc/src/libshaderc_spvc/Android.mk b/chromium/third_party/shaderc/src/libshaderc_spvc/Android.mk index f0579a8599e..a13e05baa4e 100644 --- a/chromium/third_party/shaderc/src/libshaderc_spvc/Android.mk +++ b/chromium/third_party/shaderc/src/libshaderc_spvc/Android.mk @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) diff --git a/chromium/third_party/shaderc/src/libshaderc_spvc/CMakeLists.txt b/chromium/third_party/shaderc/src/libshaderc_spvc/CMakeLists.txt index b22f9ebfba7..927375cf589 100644 --- a/chromium/third_party/shaderc/src/libshaderc_spvc/CMakeLists.txt +++ b/chromium/third_party/shaderc/src/libshaderc_spvc/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + project(libshaderc) find_package(Threads) diff --git a/chromium/third_party/shaderc/src/libshaderc_spvc/include/spvc/spvc.h b/chromium/third_party/shaderc/src/libshaderc_spvc/include/spvc/spvc.h index d4d8a5cd989..e40b43400a2 100644 --- a/chromium/third_party/shaderc/src/libshaderc_spvc/include/spvc/spvc.h +++ b/chromium/third_party/shaderc/src/libshaderc_spvc/include/spvc/spvc.h @@ -443,6 +443,11 @@ SHADERC_EXPORT shaderc_spvc_status shaderc_spvc_compile_options_set_msl_buffer_size_buffer_index( shaderc_spvc_compile_options_t options, uint32_t index); +// Set the additional fixed sample mask for MSL +SHADERC_EXPORT shaderc_spvc_status +shaderc_spvc_compile_options_set_msl_additional_fixed_sample_mask( + shaderc_spvc_compile_options_t options, uint32_t mask); + // Set HLSL shader model. Default is 30. SHADERC_EXPORT shaderc_spvc_status shaderc_spvc_compile_options_set_hlsl_shader_model( @@ -458,6 +463,11 @@ SHADERC_EXPORT shaderc_spvc_status shaderc_spvc_compile_options_set_hlsl_point_coord_compat( shaderc_spvc_compile_options_t options, bool b); +// If true, enable 16-bit types. Default is false. +SHADERC_EXPORT shaderc_spvc_status +shaderc_spvc_compile_options_set_hlsl_enable_16bit_types( + shaderc_spvc_compile_options_t options, bool b); + // If true, set non-writable storage images to be SRV, see spirv_hlsl.hpp in // SPIRV-Cross for more details. SHADERC_EXPORT shaderc_spvc_status diff --git a/chromium/third_party/shaderc/src/libshaderc_spvc/include/spvc/spvc.hpp b/chromium/third_party/shaderc/src/libshaderc_spvc/include/spvc/spvc.hpp index 5bdf6011ebc..33e717d4a3c 100644 --- a/chromium/third_party/shaderc/src/libshaderc_spvc/include/spvc/spvc.hpp +++ b/chromium/third_party/shaderc/src/libshaderc_spvc/include/spvc/spvc.hpp @@ -78,6 +78,9 @@ class CompilationResult { uint32_t binary_length; status = shaderc_spvc_result_get_binary_length(result_.get(), &binary_length); + if (status != shaderc_spvc_status_success) { + return status; + } if (!binary_output || !binary_length) { *data = std::vector(); } else { @@ -277,6 +280,12 @@ class CompileOptions { options_.get(), index); } + // Set the additional fixed sample mask for MSL + shaderc_spvc_status SetMSLAdditionalFixedSampleMask(uint32_t mask) { + return shaderc_spvc_compile_options_set_msl_additional_fixed_sample_mask( + options_.get(), mask); + } + // Which HLSL shader model should be used. Default is 30. shaderc_spvc_status SetHLSLShaderModel(uint32_t model) { return shaderc_spvc_compile_options_set_hlsl_shader_model(options_.get(), @@ -295,6 +304,12 @@ class CompileOptions { options_.get(), b); } + // If true, enable 16-bit types. Default is false. + shaderc_spvc_status SetHLSLEnable16BitTypes(bool b) { + return shaderc_spvc_compile_options_set_hlsl_enable_16bit_types( + options_.get(), b); + } + // If true, set non-writable storage images to be SRV, see spirv_hlsl.hpp in // SPIRV-Cross for more details. shaderc_spvc_status SetHLSLNonWritableUAVTextureAsSRV(bool b) { diff --git a/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc.cc b/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc.cc index ebb30d6e90b..8ff4afb73b4 100644 --- a/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc.cc +++ b/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc.cc @@ -606,6 +606,15 @@ shaderc_spvc_compile_options_set_msl_buffer_size_buffer_index( return shaderc_spvc_status_success; } +shaderc_spvc_status +shaderc_spvc_compile_options_set_msl_additional_fixed_sample_mask( + shaderc_spvc_compile_options_t options, uint32_t mask) { + CHECK_OPTIONS(nullptr, options); + + options->msl.additional_fixed_sample_mask = mask; + return shaderc_spvc_status_success; +} + shaderc_spvc_status shaderc_spvc_compile_options_set_hlsl_shader_model( shaderc_spvc_compile_options_t options, uint32_t model) { CHECK_OPTIONS(nullptr, options); @@ -630,6 +639,14 @@ shaderc_spvc_status shaderc_spvc_compile_options_set_hlsl_point_coord_compat( return shaderc_spvc_status_success; } +shaderc_spvc_status shaderc_spvc_compile_options_set_hlsl_enable_16bit_types( + shaderc_spvc_compile_options_t options, bool b) { + CHECK_OPTIONS(nullptr, options); + + options->hlsl.enable_16bit_types = b; + return shaderc_spvc_status_success; +} + shaderc_spvc_status shaderc_spvc_compile_options_set_hlsl_nonwritable_uav_texture_as_srv( shaderc_spvc_compile_options_t options, bool b) { diff --git a/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_cpp_test.cc b/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_cpp_test.cc index 09ad88b5c47..7bb426ad828 100644 --- a/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_cpp_test.cc +++ b/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_cpp_test.cc @@ -25,6 +25,10 @@ namespace { class CompileTest : public testing::Test { public: + CompileTest() + : options_(shaderc_spvc_spv_env_vulkan_1_1, + shaderc_spvc_spv_env_vulkan_1_1) {} + Context context_; CompileOptions options_; CompilationResult result_; diff --git a/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_private.cc b/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_private.cc index 69ca3e4befa..4884db646f2 100644 --- a/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_private.cc +++ b/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_private.cc @@ -29,6 +29,21 @@ #define CATCH_IF_EXCEPTIONS_ENABLED(X) catch (X) #endif +namespace { +bool is_vulkan_env(spv_target_env env) { + switch (env) { + case SPV_ENV_VULKAN_1_0: + case SPV_ENV_VULKAN_1_1: + case SPV_ENV_VULKAN_1_1_SPIRV_1_4: + case SPV_ENV_VULKAN_1_2: + return true; + default: + return false; + } +} + +} // namespace + namespace spvc_private { spv_target_env get_spv_target_env(shaderc_target_env env, @@ -115,29 +130,35 @@ shaderc_spvc_status translate_spirv(shaderc_spvc_context* context, const uint32_t* source, size_t source_len, shaderc_spvc_compile_options_t options, std::vector* target) { + bool registered_pass = false; if (!target) { shaderc_spvc::ErrorLog(context) << "null provided for translation destination."; return shaderc_spvc_status_transformation_error; } - if (source_env == target_env) { - target->resize(source_len); - memcpy(target->data(), source, source_len * sizeof(uint32_t)); - return shaderc_spvc_status_success; - } - spvtools::Optimizer opt(source_env); + opt.SetValidateAfterAll(options->validate); opt.SetMessageConsumer(std::bind( consume_spirv_tools_message, context, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3, std::placeholders::_4)); - if (source_env == SPV_ENV_WEBGPU_0 && target_env == SPV_ENV_VULKAN_1_1) { + if (source_env == SPV_ENV_WEBGPU_0 && is_vulkan_env(target_env)) { + registered_pass = true; opt.RegisterWebGPUToVulkanPasses(); - } else if (source_env == SPV_ENV_VULKAN_1_1 && - target_env == SPV_ENV_WEBGPU_0) { + } else if (is_vulkan_env(source_env) && target_env == SPV_ENV_WEBGPU_0) { + registered_pass = true; opt.RegisterVulkanToWebGPUPasses(); - } else { + } else if (source_env == SPV_ENV_UNIVERSAL_1_0 && + target_env == SPV_ENV_UNIVERSAL_1_0) { + // Assuming that the default constructor in Dawn was used, thus the intent + // was to perform WebGPU->Vulkan conversion. + // + // TODO: Remove this case once deprecated options constructor with defaults + // is removed. + registered_pass = true; + opt.RegisterWebGPUToVulkanPasses(); + } else if (source_env != target_env) { shaderc_spvc::ErrorLog(context) << "No defined transformation between source and target execution " "environments."; @@ -145,10 +166,18 @@ shaderc_spvc_status translate_spirv(shaderc_spvc_context* context, } if (options->robust_buffer_access_pass) { + registered_pass = true; opt.RegisterPass(spvtools::CreateGraphicsRobustAccessPass()); } - if (!opt.Run(source, source_len, target)) { + if (!registered_pass) { + target->resize(source_len); + memcpy(target->data(), source, source_len * sizeof(uint32_t)); + return shaderc_spvc_status_success; + } + + if (!opt.Run(source, source_len, target, spvtools::ValidatorOptions(), + options->validate)) { shaderc_spvc::ErrorLog(context) << "Transformations between source and " "target execution environments failed."; return shaderc_spvc_status_transformation_error; diff --git a/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_test.cc b/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_test.cc index 7a572bd079b..3409668a016 100644 --- a/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_test.cc +++ b/chromium/third_party/shaderc/src/libshaderc_spvc/src/spvc_test.cc @@ -28,7 +28,7 @@ class CompileTest : public testing::Test { void SetUp() override { context_ = shaderc_spvc_context_create(); options_ = shaderc_spvc_compile_options_create( - shaderc_spvc_spv_env_vulkan_1_0, shaderc_spvc_spv_env_vulkan_1_0); + shaderc_spvc_spv_env_vulkan_1_1, shaderc_spvc_spv_env_vulkan_1_1); result_ = shaderc_spvc_result_create(); } diff --git a/chromium/third_party/shaderc/src/libshaderc_util/Android.mk b/chromium/third_party/shaderc/src/libshaderc_util/Android.mk index 81b4c76caea..a694787dbdc 100644 --- a/chromium/third_party/shaderc/src/libshaderc_util/Android.mk +++ b/chromium/third_party/shaderc/src/libshaderc_util/Android.mk @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) diff --git a/chromium/third_party/shaderc/src/libshaderc_util/CMakeLists.txt b/chromium/third_party/shaderc/src/libshaderc_util/CMakeLists.txt index f8ae95d0c2e..48f99912ff3 100644 --- a/chromium/third_party/shaderc/src/libshaderc_util/CMakeLists.txt +++ b/chromium/third_party/shaderc/src/libshaderc_util/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + project(libshaderc_util) add_library(shaderc_util STATIC diff --git a/chromium/third_party/shaderc/src/libshaderc_util/include/libshaderc_util/file_finder.h b/chromium/third_party/shaderc/src/libshaderc_util/include/libshaderc_util/file_finder.h index 2c1c9d12279..a5f91cf6e25 100644 --- a/chromium/third_party/shaderc/src/libshaderc_util/include/libshaderc_util/file_finder.h +++ b/chromium/third_party/shaderc/src/libshaderc_util/include/libshaderc_util/file_finder.h @@ -27,7 +27,7 @@ class FileFinder { // non-empty. The search is attempted on filename prefixed by each element of // search_path() in turn. The first hit is returned, or an empty string if // there are no hits. Search attempts treat their argument the way - // std::fopen() treats its filename argument, blind to whether the path is + // std::fopen() treats its filename argument, ignoring whether the path is // absolute or relative. // // If a search_path() element is non-empty and not ending in a slash, then a diff --git a/chromium/third_party/shaderc/src/license-checker.cfg b/chromium/third_party/shaderc/src/license-checker.cfg new file mode 100644 index 00000000000..d30ca8e5a8a --- /dev/null +++ b/chromium/third_party/shaderc/src/license-checker.cfg @@ -0,0 +1,42 @@ +[ + { + "licenses": [ "Apache-2.0-Header" ], + "paths": [ + { + "exclude": [ + "**.md", + "**.png", + "**/README.asciidoc", + + ".*", + "AUTHORS", + "CHANGES", + "CONTRIBUTORS", + "DEPS", + "LICENSE", + + "cmake/*.pc.in", + "libshaderc_util/testdata/dir/subdir/include_file.2", + "libshaderc_util/testdata/include_file.1", + "spvc/README.asciidoc", + "spvc/test/known_failures", + "spvc/test/known_invalids", + "spvc/test/known_spvc_failures", + "spvc/test/unconfirmed_invalids", + "spvc/test/**.vert", + + "utils/git-sync-deps", + + "third_party/**" + ] + } + ] + }, + { + "licenses": [ "BSD-3-Clause" ], + "paths": [ + { "exclude": [ "**" ] }, + { "include": [ "utils/git-sync-deps" ] } + ] + } +] \ No newline at end of file diff --git a/chromium/third_party/shaderc/src/spvc/CMakeLists.txt b/chromium/third_party/shaderc/src/spvc/CMakeLists.txt index f4659725622..399b04ed705 100644 --- a/chromium/third_party/shaderc/src/spvc/CMakeLists.txt +++ b/chromium/third_party/shaderc/src/spvc/CMakeLists.txt @@ -1,3 +1,17 @@ +# Copyright 2020 The Shaderc Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + add_executable(spvc_exe src/main.cc) shaderc_default_compile_options(spvc_exe) target_include_directories(spvc_exe PRIVATE ${shaderc_SOURCE_DIR}/libshaderc/include ${spirv-tools_SOURCE_DIR}/include) diff --git a/chromium/third_party/shaderc/src/spvc/src/main.cc b/chromium/third_party/shaderc/src/spvc/src/main.cc index 8a31af6d344..86969cbcd7a 100644 --- a/chromium/third_party/shaderc/src/spvc/src/main.cc +++ b/chromium/third_party/shaderc/src/spvc/src/main.cc @@ -38,6 +38,7 @@ Usage: spvc [options] file An input file of - represents standard input. Options: + -h Display available options. --help Display available options. -v Display compiler version information. -o '-' means standard output. @@ -88,6 +89,7 @@ Options: --msl-domain-lower-left --msl-argument-buffers --msl-discrete-descriptor-set= + --msl-additional-fixed-sample-mask= --emit-line-directives --hlsl-enable-compat --shader-model= @@ -110,14 +112,15 @@ bool ReadFile(const std::string& path, std::vector* out) { out->resize(ftell(file) / sizeof((*out)[0])); rewind(file); + bool status = true; if (fread(out->data(), sizeof((*out)[0]), out->size(), file) != out->size()) { std::cerr << "Failed to read SPIR-V file: " << path << std::endl; out->clear(); - return false; + status = false; } fclose(file); - return true; + return status; } bool StringPieceToEnvEnum(const string_piece& str, shaderc_spvc_spv_env* env) { @@ -184,7 +187,7 @@ int main(int argc, char** argv) { shaderc_spvc::CompileOptions options(source_env, target_env); for (int i = 1; i < argc; ++i) { const string_piece arg = argv[i]; - if (arg == "--help") { + if (arg == "--help" || arg == "-h") { ::PrintHelp(&std::cout); return 0; } else if (arg == "-v") { @@ -237,11 +240,11 @@ int main(int argc, char** argv) { } } else if (arg == "--remove-unused-variables") { options.SetRemoveUnusedVariables(true); - } else if (arg == "--no-validate"){ + } else if (arg == "--no-validate") { options.SetValidate(false); - } else if (arg == "--no-optimize"){ + } else if (arg == "--no-optimize") { options.SetOptimize(false); - } else if (arg == "--robust-buffer-access-pass"){ + } else if (arg == "--robust-buffer-access-pass") { options.SetRobustBufferAccessPass(true); } else if (arg == "--vulkan-semantics") { options.SetVulkanSemantics(true); @@ -293,6 +296,17 @@ int main(int argc, char** argv) { return 1; } msl_discrete_descriptor.push_back(descriptor_num); + } else if (arg.starts_with("--msl-additional-fixed-sample-mask=")) { + string_piece sample_mask_str; + GetOptionArgument(argc, argv, &i, + "--msl-additional-fixed-sample-mask=", &sample_mask_str); + uint32_t sample_mask_num; + if (!shaderc_util::ParseUint32(sample_mask_str.str(), &sample_mask_num)) { + std::cerr << "spvc: error: invalid value '" << sample_mask_str + << "' in --msl-additional-fixed-sample-mask=" << std::endl; + return 1; + } + options.SetMSLAdditionalFixedSampleMask(sample_mask_num); } else if (arg == "--emit-line-directives") { options.SetEmitLineDirectives(true); } else if (arg.starts_with("--shader-model=")) { @@ -324,7 +338,7 @@ int main(int argc, char** argv) { options.SetMSLDiscreteDescriptorSets(msl_discrete_descriptor); shaderc_spvc::CompilationResult result; - shaderc_spvc_status status = shaderc_spvc_status_configuration_error; + shaderc_spvc_status status; if (output_language == "glsl") { status = context.InitializeForGlsl((const uint32_t*)input.data(), diff --git a/chromium/third_party/shaderc/src/third_party/CMakeLists.txt b/chromium/third_party/shaderc/src/third_party/CMakeLists.txt index 87c11cb776d..b2293b39193 100644 --- a/chromium/third_party/shaderc/src/third_party/CMakeLists.txt +++ b/chromium/third_party/shaderc/src/third_party/CMakeLists.txt @@ -17,6 +17,8 @@ set(SHADERC_EFFCEE_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/effcee" CACHE STRING "Location of effcee source") set(SHADERC_RE2_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/re2" CACHE STRING "Location of re2 source") +set(SHADERC_TINT_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/tint" CACHE STRING + "Location of tint source") set( SKIP_GLSLANG_INSTALL ${SHADERC_SKIP_INSTALL} ) set( SKIP_SPIRV_TOOLS_INSTALL ${SHADERC_SKIP_INSTALL} ) @@ -33,6 +35,7 @@ if(${SHADERC_ENABLE_TESTS}) endif() set(OLD_PLATFORM_TOOLSET ${CMAKE_GENERATOR_TOOLSET}) +check_cxx_compiler_flag(-fPIC COMPILER_SUPPORTS_PIC) if (IS_DIRECTORY ${SHADERC_SPIRV_HEADERS_DIR}) @@ -82,7 +85,6 @@ if (SHADERC_ENABLE_SPVC) if (NOT TARGET spirv-cross-core) if (IS_DIRECTORY ${SHADERC_SPIRV_CROSS_DIR}) # Add -fPIC to SPIRV-Cross build, if supported - check_cxx_compiler_flag(-fPIC COMPILER_SUPPORTS_PIC) if (COMPILER_SUPPORTS_PIC) set(CXX_BACK ${CMAKE_CXX_FLAGS}) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-fPIC") @@ -99,3 +101,23 @@ if (SHADERC_ENABLE_SPVC) endif() endif() endif (SHADERC_ENABLE_SPVC) + +if (SHADERC_ENABLE_WGSL_OUTPUT) + # Use Google Tint for WGSL output. + if (NOT TARGET libtint) + if (IS_DIRECTORY ${SHADERC_TINT_DIR}) + if (NOT IS_DIRECTORY ${SHADERC_TINT_DIR}/out/docs) + # The Tint Doxygen configuration assumes it can write to the out/docs + # source directory. + message(STATUS "Tint source directory out/docs does not exist. Disabling doc generation") + set(TINT_BUILD_DOCS OFF) + endif() + set(TINT_BUILD_SPV_READER ON CACHE BOOL "Built Tint SPIR-V reader" FORCE) + set(TINT_BUILD_WGSL_WRITER ON CACHE BOOL "Build Tint WGSL writer" FORCE) + add_subdirectory(${SHADERC_TINT_DIR} tint) + endif() + endif() + if (NOT TARGET libtint) + message(FATAL_ERROR "Tint was not found - required for WGSL output") + endif() +endif (SHADERC_ENABLE_WGSL_OUTPUT) diff --git a/chromium/third_party/shaderc/src/utils/roll-deps b/chromium/third_party/shaderc/src/utils/roll-deps index 15942a0fc12..fa05c6204c9 100755 --- a/chromium/third_party/shaderc/src/utils/roll-deps +++ b/chromium/third_party/shaderc/src/utils/roll-deps @@ -19,7 +19,7 @@ # Depends on roll-dep from depot_path being in PATH. effcee_dir="third_party/effcee/" -effcee_trunk="origin/master" +effcee_trunk="origin/main" glslang_dir="third_party/glslang/" glslang_trunk="origin/master" googletest_dir="third_party/googletest/" -- cgit v1.2.1