Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package shaderc for openSUSE:Factory checked 
in at 2023-06-03 00:05:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/shaderc (Old)
 and      /work/SRC/openSUSE:Factory/.shaderc.new.15902 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "shaderc"

Sat Jun  3 00:05:20 2023 rev:22 rq:1089887 version:2023.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/shaderc/shaderc.changes  2023-03-30 
22:50:50.768439650 +0200
+++ /work/SRC/openSUSE:Factory/.shaderc.new.15902/shaderc.changes       
2023-06-03 00:05:21.273326732 +0200
@@ -1,0 +2,7 @@
+Mon May 29 12:51:28 UTC 2023 - Jan Engelhardt <jeng...@inai.de>
+
+- Update to release 2023.4
+  * Add option to preserve bindings
+  * Add options to control mesh shading limits
+
+-------------------------------------------------------------------

Old:
----
  v2023.2.tar.gz

New:
----
  v2023.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ shaderc.spec ++++++
--- /var/tmp/diff_new_pack.Ta4AuU/_old  2023-06-03 00:05:22.065331409 +0200
+++ /var/tmp/diff_new_pack.Ta4AuU/_new  2023-06-03 00:05:22.069331433 +0200
@@ -19,7 +19,7 @@
 # Remember to bump in baselibs.conf
 %define lname libshaderc_shared1
 Name:           shaderc
-Version:        2023.2
+Version:        2023.4
 Release:        0
 Summary:        A collection of tools, libraries and tests for shader 
compilation
 License:        Apache-2.0
@@ -31,14 +31,14 @@
 Patch1:         0001-Use-system-third-party-libs.patch
 BuildRequires:  c++_compiler
 BuildRequires:  cmake >= 2.8.12
-BuildRequires:  glslang-devel >= 12
+BuildRequires:  glslang-devel >= 12.2
 BuildRequires:  glslang-nonstd-devel
-BuildRequires:  spirv-headers >= 1.6.1~sdk239
-BuildRequires:  spirv-tools-devel >= 2023.1
+BuildRequires:  spirv-headers >= 1.6.1~sdk250
+BuildRequires:  spirv-tools-devel >= 2023.3~rc1
 
 %description
 A collection of tools, libraries and tests for shader compilation.
-At the moment, included are:
+Included are:
 
 * glslc, a command line compiler for GLSL/HLSL to SPIR-V, and
 * libshaderc, a library API for doing the same.

++++++ v2023.2.tar.gz -> v2023.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/Android.mk 
new/shaderc-2023.4/Android.mk
--- old/shaderc-2023.2/Android.mk       2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/Android.mk       2023-05-24 21:30:26.000000000 +0200
@@ -32,45 +32,38 @@
 SHADERC_HEADERS_IN_OUT_DIR=$(foreach 
H,$(SHADERC_HEADERS),$(NDK_APP_LIBS_OUT)/../include/shaderc/$(H))
 
 define gen_libshaderc_header
+$(call generate-file-dir,$(NDK_APP_LIBS_OUT)/../include/shaderc/$(1))
 $(NDK_APP_LIBS_OUT)/../include/shaderc/$(1) : \
                $(ROOT_SHADERC_PATH)/libshaderc/include/shaderc/$(1)
-       $(call host-mkdir,$(NDK_APP_LIBS_OUT)/../include/shaderc)
        $(call host-cp,$(ROOT_SHADERC_PATH)/libshaderc/include/shaderc/$(1) \
                ,$(NDK_APP_LIBS_OUT)/../include/shaderc/$(1))
 
 endef
+# Generate headers
+$(eval $(foreach H,$(SHADERC_HEADERS),$(call gen_libshaderc_header,$(H))))
+libshaderc_headers: $(SHADERC_HEADERS_IN_OUT_DIR)
+.PHONY: libshaderc_headers
 
-define gen_libshaderc
 
-$(1)/combine.ar: $(addprefix $(1)/, $(ALL_LIBS))
-       @echo "create libshaderc_combined.a" > $(1)/combine.ar
-       $(foreach lib,$(ALL_LIBS),
-               @echo "addlib $(lib)" >> $(1)/combine.ar
-       )
-       @echo "save" >> $(1)/combine.ar
-       @echo "end" >> $(1)/combine.ar
+# Rules for combining library files to form a single libshader_combined.a.
+# It always goes into $(TARGET_OUT)
+$(call generate-file-dir,$(TARGET_OUT)/combine.ar)
+$(TARGET_OUT)/combine.ar: $(TARGET_OUT) $(addprefix $(TARGET_OUT)/, 
$(ALL_LIBS))
+       $(file >$(TARGET_OUT)/combine.ar,create libshaderc_combined.a)
+       $(foreach lib,$(ALL_LIBS),$(file >>$(TARGET_OUT)/combine.ar,addlib 
$(lib)))
+       $(file >>$(TARGET_OUT)/combine.ar,save)
+       $(file >>$(TARGET_OUT)/combine.ar,end)
 
-$(1)/libshaderc_combined.a: $(addprefix $(1)/, $(ALL_LIBS)) $(1)/combine.ar
+$(TARGET_OUT)/libshaderc_combined.a: $(addprefix $(TARGET_OUT)/, $(ALL_LIBS)) 
$(TARGET_OUT)/combine.ar
        @echo "[$(TARGET_ARCH_ABI)] Combine: libshaderc_combined.a <= 
$(ALL_LIBS)"
-       @cd $(1) && $(TARGET_AR) -M < combine.ar && cd $(ROOT_SHADERC_PATH)
-       @$(TARGET_STRIP) --strip-debug $(1)/libshaderc_combined.a
+       @cd $(TARGET_OUT) && $(TARGET_AR) -M < combine.ar && cd 
$(ROOT_SHADERC_PATH)
+       @$(TARGET_STRIP) --strip-debug $(TARGET_OUT)/libshaderc_combined.a
 
+$(call 
generate-file-dir,$(NDK_APP_LIBS_OUT)/$(APP_STL)/$(TARGET_ARCH_ABI)/libshaderc.a)
 $(NDK_APP_LIBS_OUT)/$(APP_STL)/$(TARGET_ARCH_ABI)/libshaderc.a: \
-               $(1)/libshaderc_combined.a
-       $(call host-mkdir,$(NDK_APP_LIBS_OUT)/$(APP_STL)/$(TARGET_ARCH_ABI))
-       $(call host-cp,$(1)/libshaderc_combined.a \
+               $(TARGET_OUT)/libshaderc_combined.a
+       $(call host-cp,$(TARGET_OUT)/libshaderc_combined.a \
                ,$(NDK_APP_LIBS_OUT)/$(APP_STL)/$(TARGET_ARCH_ABI)/libshaderc.a)
 
-ifndef HEADER_TARGET
-HEADER_TARGET=1
-$(eval $(foreach H,$(SHADERC_HEADERS),$(call gen_libshaderc_header,$(H))))
-endif
-
-libshaderc_combined: \
+libshaderc_combined: libshaderc_headers \
        $(NDK_APP_LIBS_OUT)/$(APP_STL)/$(TARGET_ARCH_ABI)/libshaderc.a
-
-endef
-
-libshaderc_combined: $(SHADERC_HEADERS_IN_OUT_DIR)
-
-$(eval $(call gen_libshaderc,$(TARGET_OUT)))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/CHANGES new/shaderc-2023.4/CHANGES
--- old/shaderc-2023.2/CHANGES  2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/CHANGES  2023-05-24 21:30:26.000000000 +0200
@@ -1,5 +1,20 @@
 Revision history for Shaderc
 
+v2023.4 2022-05-24
+ - Refresh Glslang, SPIRV-Tools, SPIRV-Headers
+ - Android.mk:
+    - Require NDK 21d or later
+    - Update scripts for generating the shared library, which
+      should fix Windows
+ - glslc and APIs:
+    - Add options to control mesh shading limits
+
+v2023.3 2022-03-17
+ - Shaderc now requires C++17
+ - Drop support for VS 2015
+ - Add glslc option -fpreserve-bindings
+ - Refresh Glslang, SPIRV-Tools
+
 v2023.2 2022-01-18
  - Update DEPS to pull in SPIRV-Tools bugfix #5049
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/CMakeLists.txt 
new/shaderc-2023.4/CMakeLists.txt
--- old/shaderc-2023.2/CMakeLists.txt   2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/CMakeLists.txt   2023-05-24 21:30:26.000000000 +0200
@@ -68,7 +68,7 @@
 
 option(SHADERC_ENABLE_WERROR_COMPILE "Enable passing -Werror to compiler, if 
available" ON)
 
-set (CMAKE_CXX_STANDARD 11)
+set (CMAKE_CXX_STANDARD 17)
 
 include(GNUInstallDirs)
 include(cmake/setup_build.cmake)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/DEPS new/shaderc-2023.4/DEPS
--- old/shaderc-2023.2/DEPS     2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/DEPS     2023-05-24 21:30:26.000000000 +0200
@@ -4,12 +4,12 @@
   'google_git':  'https://github.com/google',
   'khronos_git': 'https://github.com/KhronosGroup',
 
-  'effcee_revision' : '35912e1b7778ec2ddcff7e7188177761539e59',
-  'glslang_revision': '1fb2f1d7896627d62a289439a2c3e750e551a7ab',
-  'googletest_revision': 'd9bb8412d60b993365abb53f00b6dad9b2c01b62',
-  're2_revision': '954656f47fe8fb505d4818da1e128417a79ea500',
-  'spirv_headers_revision': 'd13b52222c39a7e9a401b44646f0ca3a640fbd47',
-  'spirv_tools_revision': '63de608daeb7e91fbea6d7477a50debe7cac57ce',
+  'effcee_revision' : '66edefd2bb641de8a2f46b476de21f227fc03a28',
+  'glslang_revision': '9fbc561947f6b5275289a1985676fb7267273e09',
+  'googletest_revision': 'd9c309fdab807b716c2cf4d4a42989b8c34f712a',
+  're2_revision': '3a8436ac436124a57a4e22d5c8713a2d42b381d7',
+  'spirv_headers_revision': 'bdbfd019be6952fd8fa9bd5606a8798a7530c853',
+  'spirv_tools_revision': 'e7c6084fd1d6d6f5ac393e842728d8be309688ca',
 }
 
 deps = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/README.md new/shaderc-2023.4/README.md
--- old/shaderc-2023.2/README.md        2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/README.md        2023-05-24 21:30:26.000000000 +0200
@@ -42,7 +42,7 @@
 [Android NDK](https://developer.android.com/ndk/index.html) since version r12b.
 (The NDK build uses sources from 
https://android.googlesource.com/platform/external/shaderc/.
 Those repos are downstream from GitHub.)
-We currently require r18b.
+We currently require r21d.
 
 For licensing terms, please see the [`LICENSE`](LICENSE) file.  If interested 
in
 contributing to this project, please see [`CONTRIBUTING.md`](CONTRIBUTING.md).
@@ -172,7 +172,7 @@
 
 On Windows, the following tools should be installed and available on your path:
 
-- Visual Studio 2015 or later. Previous versions of Visual Studio may work but
+- Visual Studio 2017 or later. Previous versions of Visual Studio may work but
   are untested and unsupported.
 - Git - including the associated tools, Bash, `diff`.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/downloads.md 
new/shaderc-2023.4/downloads.md
--- old/shaderc-2023.2/downloads.md     2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/downloads.md     2023-05-24 21:30:26.000000000 +0200
@@ -7,11 +7,11 @@
 ## Release
 | Windows | Linux | MacOS |
 | --- | --- | --- |
-| [MSVC 
2017](https://storage.googleapis.com/shaderc/badges/build_link_windows_vs2017_release.html)
 | 
[clang](https://storage.googleapis.com/shaderc/badges/build_link_linux_clang_release.html)
 | 
[clang](https://storage.googleapis.com/shaderc/badges/build_link_macos_clang_release.html)
 |
-| [MSVC 
2015](https://storage.googleapis.com/shaderc/badges/build_link_windows_vs2015_release.html)
 | 
[gcc](https://storage.googleapis.com/shaderc/badges/build_link_linux_gcc_release.html)
 | |
+| [MSVC 
2019](https://storage.googleapis.com/shaderc/badges/build_link_windows_vs2019_release.html)
 | 
[clang](https://storage.googleapis.com/shaderc/badges/build_link_linux_clang_release.html)
 | 
[clang](https://storage.googleapis.com/shaderc/badges/build_link_macos_clang_release.html)
 |
+| [MSVC 
2017](https://storage.googleapis.com/shaderc/badges/build_link_windows_vs2017_release.html)
 | 
[gcc](https://storage.googleapis.com/shaderc/badges/build_link_linux_gcc_release.html)
 | |
 
 ## Debug
 | Windows | Linux | MacOS |
 | --- | --- | --- |
-| [MSVC 
2017](https://storage.googleapis.com/shaderc/badges/build_link_windows_vs2017_debug.html)
 | 
[clang](https://storage.googleapis.com/shaderc/badges/build_link_linux_clang_debug.html)
 | 
[clang](https://storage.googleapis.com/shaderc/badges/build_link_macos_clang_debug.html)
 |
-| | 
[gcc](https://storage.googleapis.com/shaderc/badges/build_link_linux_gcc_debug.html)
 | |
+| [MSVC 
2019](https://storage.googleapis.com/shaderc/badges/build_link_windows_vs2019_debug.html)
 | 
[clang](https://storage.googleapis.com/shaderc/badges/build_link_linux_clang_debug.html)
 | 
[clang](https://storage.googleapis.com/shaderc/badges/build_link_macos_clang_debug.html)
 |
+| [MSVC 
2017](https://storage.googleapis.com/shaderc/badges/build_link_windows_vs2017_debug.html)
 | 
[gcc](https://storage.googleapis.com/shaderc/badges/build_link_linux_gcc_debug.html)
 | |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/glslc/README.asciidoc 
new/shaderc-2023.4/glslc/README.asciidoc
--- old/shaderc-2023.2/glslc/README.asciidoc    2023-01-18 21:58:09.000000000 
+0100
+++ new/shaderc-2023.4/glslc/README.asciidoc    2023-05-24 21:30:26.000000000 
+0200
@@ -437,6 +437,13 @@
 }
 ----
 
+[[option-fpreserve-bindings
+==== `-fpreserve-bindings`
+
+Directs the optimizer to preserve bindings declarations, even when those
+bindings are known to be unused.
+
+
 === Warning and Error Options
 
 ==== `-w`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/glslc/src/main.cc 
new/shaderc-2023.4/glslc/src/main.cc
--- old/shaderc-2023.2/glslc/src/main.cc        2023-01-18 21:58:09.000000000 
+0100
+++ new/shaderc-2023.4/glslc/src/main.cc        2023-05-24 21:30:26.000000000 
+0200
@@ -87,6 +87,9 @@
                     a NaN operand, the other operand is returned. Similarly,
                     the clamp builtin will favour the non-NaN operands, as if
                     clamp were implemented as a composition of max and min.
+  -fpreserve-bindings
+                    Preserve all binding declarations, even if those bindings
+                    are not used.
   -fresource-set-binding [stage] <reg0> <set0> <binding0>
                         [<reg1> <set1> <binding1>...]
                     Explicitly sets the descriptor set and binding for
@@ -330,6 +333,8 @@
       compiler.options().SetInvertY(true);
     } else if (arg == "-fnan-clamp") {
       compiler.options().SetNanClamp(true);
+    } else if (arg.starts_with("-fpreserve-bindings")) {
+      compiler.options().SetPreserveBindings(true);
     } else if (((u_kind = shaderc_uniform_kind_image),
                 (arg == "-fimage-binding-base")) ||
                ((u_kind = shaderc_uniform_kind_texture),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/glslc/test/option_flimit.py 
new/shaderc-2023.4/glslc/test/option_flimit.py
--- old/shaderc-2023.2/glslc/test/option_flimit.py      2023-01-18 
21:58:09.000000000 +0100
+++ new/shaderc-2023.4/glslc/test/option_flimit.py      2023-05-24 
21:30:26.000000000 +0200
@@ -31,7 +31,6 @@
 
     return FileShader(shader_source_with_tex_offset(offset), ".vert")
 
-
 @inside_glslc_testsuite('OptionFLimit')
 class TestFLimitNoEqual(expect.ErrorMessage):
     """Tests -flimit without equal."""
@@ -134,3 +133,246 @@
     environment = Directory('.', [limits_file, shader])
     glslc_args = ['-c', shader.name, '-flimit-file', limits_file.name]
     expected_error = 'glslc: error: -flimit-file error: invalid resource 
limit: thisIsBad\n'
+
+## Mesh shading
+
+def mesh_shader_with_params(kwargs):
+    """Returns a mesh shader as a FileShader, with given parameters"""
+    import sys
+
+    source = """#version 450
+#extension {} : enable
+      layout(local_size_x={}) in;
+      layout(local_size_y={}) in;
+      layout(local_size_z={}) in;
+      layout(triangles) out;
+      layout(max_vertices={}) out;
+      layout(max_primitives={}) out;
+      layout(triangles) out;
+      void main() {{ }}
+      
""".format(kwargs['extension'],kwargs['x'],kwargs['y'],kwargs['z'],kwargs['max_vert'],kwargs['max_prim'])
+    return FileShader(source,".mesh")
+
+def task_shader_with_params(kwargs):
+    """Returns a task shader as a FileShader, with given parameters"""
+    import sys
+
+    source = """#version 450
+#extension {} : enable
+      layout(local_size_x={}) in;
+      layout(local_size_y={}) in;
+      layout(local_size_z={}) in;
+      void main() {{ }}
+      """.format(kwargs['extension'],kwargs['x'],kwargs['y'],kwargs['z'])
+    return FileShader(source,".task")
+
+
+def meshDefaults(nv_or_ext,show=False):
+  result = dict({
+    # See Glslang's glslang/ResourceLimits/ResourceLimits.cpp
+    'nv': { 'extension': 'GL_NV_mesh_shader', 'x': 32, 'y': 1, 'z': 1, 
'max_vert': 256, 'max_prim': 512 },
+    'ext': { 'extension': 'GL_EXT_mesh_shader', 'x': 128, 'y': 128, 'z': 128, 
'max_vert': 256, 'max_prim': 256 }
+  })[nv_or_ext]
+  if show:
+      import sys
+      print(result,file=sys.stderr)
+  return result
+
+## GL_NV_mesh_shader
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_X_ok(expect.ValidObjectFile):
+    shader = mesh_shader_with_params(meshDefaults('nv'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeX_NV 32']
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_X_bad(expect.ErrorMessageSubstr):
+    shader = mesh_shader_with_params(meshDefaults('nv'))
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxMeshWorkGroupSizeNV"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeX_NV 31']
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_Y_ok(expect.ValidObjectFile):
+    shader = mesh_shader_with_params(meshDefaults('nv'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeY_NV 1']
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_Y_bad(expect.ErrorMessageSubstr):
+    d = meshDefaults('nv')
+    d['y'] = 3
+    shader = mesh_shader_with_params(d)
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxMeshWorkGroupSizeNV"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeY_NV 2']
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_Z_ok(expect.ValidObjectFile):
+    shader = mesh_shader_with_params(meshDefaults('nv'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeZ_NV 1']
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_Z_bad(expect.ErrorMessageSubstr):
+    d = meshDefaults('nv')
+    d['z'] = 3
+    shader = mesh_shader_with_params(d)
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxMeshWorkGroupSizeNV"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeZ_NV 2']
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_MaxVert_ok(expect.ValidObjectFile):
+    shader = mesh_shader_with_params(meshDefaults('nv'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshOutputVerticesNV 256']
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_MaxVert_bad(expect.ErrorMessageSubstr):
+    shader = mesh_shader_with_params(meshDefaults('nv'))
+    expected_error_substr = "'max_vertices' : too large, must be less than 
gl_MaxMeshOutputVerticesNV"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshOutputVerticesNV 255']
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_MaxPrim_ok(expect.ValidObjectFile):
+    shader = mesh_shader_with_params(meshDefaults('nv'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshOutputPrimitivesNV 512']
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_NV_MaxPrim_bad(expect.ErrorMessageSubstr):
+    shader = mesh_shader_with_params(meshDefaults('nv'))
+    expected_error_substr = "'max_primitives' : too large, must be less than 
gl_MaxMeshOutputPrimitivesNV"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshOutputPrimitivesNV 511']
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_NV_X_ok(expect.ValidObjectFile):
+    shader = task_shader_with_params(meshDefaults('nv'))
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeX_NV 32']
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_NV_X_bad(expect.ErrorMessageSubstr):
+    shader = task_shader_with_params(meshDefaults('nv'))
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxTaskWorkGroupSizeNV"
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeX_NV 31']
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_NV_Y_ok(expect.ValidObjectFile):
+    shader = task_shader_with_params(meshDefaults('nv'))
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeY_NV 1']
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_NV_Y_bad(expect.ErrorMessageSubstr):
+    d = meshDefaults('nv')
+    d['y'] = 3
+    shader = task_shader_with_params(d)
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxTaskWorkGroupSizeNV"
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeY_NV 2']
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_NV_Z_ok(expect.ValidObjectFile):
+    shader = task_shader_with_params(meshDefaults('nv'))
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeZ_NV 1']
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_NV_Z_bad(expect.ErrorMessageSubstr):
+    d = meshDefaults('nv')
+    d['z'] = 3
+    shader = task_shader_with_params(d)
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxTaskWorkGroupSizeNV"
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeZ_NV 2']
+
+# TODO: Test MaxMeshViewCountNV
+
+
+## GL_EXT_mesh_shader
+## It requires SPIR-V 1.4
+
+s14 = '--target-spv=spv1.4'
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_X_ok(expect.ValidObjectFile1_4):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeX_EXT 128', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_X_bad(expect.ErrorMessageSubstr):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxMeshWorkGroupSizeEXT"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeX_EXT 127', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_Y_ok(expect.ValidObjectFile1_4):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeY_EXT 128', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_Y_bad(expect.ErrorMessageSubstr):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxMeshWorkGroupSizeEXT"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeY_EXT 127', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_Z_ok(expect.ValidObjectFile1_4):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeZ_EXT 128', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_Z_bad(expect.ErrorMessageSubstr):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxMeshWorkGroupSizeEXT"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshWorkGroupSizeZ_EXT 127', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_MaxVert_ok(expect.ValidObjectFile1_4):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshOutputVerticesEXT 256', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_MaxVert_bad(expect.ErrorMessageSubstr):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    expected_error_substr = "'max_vertices' : too large, must be less than 
gl_MaxMeshOutputVerticesEXT"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshOutputVerticesEXT 255', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_MaxPrim_ok(expect.ValidObjectFile1_4):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    glslc_args = ['-c', shader, '-flimit= MaxMeshOutputPrimitivesEXT 256', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Mesh')
+class TestFLimitMeshShader_EXT_MaxPrim_bad(expect.ErrorMessageSubstr):
+    shader = mesh_shader_with_params(meshDefaults('ext'))
+    expected_error_substr = "'max_primitives' : too large, must be less than 
gl_MaxMeshOutputPrimitivesEXT"
+    glslc_args = ['-c', shader, '-flimit= MaxMeshOutputPrimitivesEXT 255', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_EXT_X_ok(expect.ValidObjectFile1_4):
+    shader = task_shader_with_params(meshDefaults('ext'))
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeX_EXT 128', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_EXT_X_bad(expect.ErrorMessageSubstr):
+    shader = task_shader_with_params(meshDefaults('ext'))
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxTaskWorkGroupSizeEXT"
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeX_EXT 127', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_EXT_Y_ok(expect.ValidObjectFile1_4):
+    shader = task_shader_with_params(meshDefaults('ext'))
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeY_EXT 128', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_EXT_Y_bad(expect.ErrorMessageSubstr):
+    import sys
+    d = meshDefaults('ext',True)
+    print("TaskShader_EXT_Y_bad {}".format(str(d)),file=sys.stderr)
+    shader = task_shader_with_params(meshDefaults('ext',True))
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxTaskWorkGroupSizeEXT"
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeY_EXT 127', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_EXT_Z_ok(expect.ValidObjectFile1_4):
+    shader = task_shader_with_params(meshDefaults('ext'))
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeZ_EXT 128', s14]
+
+@inside_glslc_testsuite('OptionFLimit_Task')
+class TestFLimitTaskShader_EXT_Z_bad(expect.ErrorMessageSubstr):
+    shader = task_shader_with_params(meshDefaults('ext'))
+    expected_error_substr = "'local_size' : too large, see 
gl_MaxTaskWorkGroupSizeEXT"
+    glslc_args = ['-c', shader, '-flimit= MaxTaskWorkGroupSizeZ_EXT 127', s14]
+
+# TODO: Test MaxMeshViewCountEXT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/glslc/test/option_fpreserve_bindings.py 
new/shaderc-2023.4/glslc/test/option_fpreserve_bindings.py
--- old/shaderc-2023.2/glslc/test/option_fpreserve_bindings.py  1970-01-01 
01:00:00.000000000 +0100
+++ new/shaderc-2023.4/glslc/test/option_fpreserve_bindings.py  2023-05-24 
21:30:26.000000000 +0200
@@ -0,0 +1,70 @@
+# Copyright 2023 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.
+
+import expect
+from glslc_test_framework import inside_glslc_testsuite
+from placeholder import FileShader
+
+# A GLSL shader with unused bindings.
+GLSL_SHADER_WITH_UNUSED_BINDINGS = """#version 450
+  layout(binding=0) buffer InputA { vec4 x[]; } inputA;
+  layout(binding=1) buffer InputB { vec4 x[]; } inputB;
+  layout(binding=2) buffer Output { vec4 x[]; } outputO;
+
+  void main() {}
+  """
+
+
+@inside_glslc_testsuite('OptionFPreserveBindings')
+class TestFPreserveBindingsInputA(expect.ValidAssemblyFileWithSubstr):
+    """Tests that the compiler preserves bindings when optimizations are
+    enabled."""
+
+    shader = FileShader(GLSL_SHADER_WITH_UNUSED_BINDINGS, '.comp')
+    glslc_args = ['-S', '-O', shader, '-fpreserve-bindings']
+    # Check the first buffer.
+    expected_assembly_substr = "Binding 0"
+
+
+@inside_glslc_testsuite('OptionFPreserveBindings')
+class TestFPreserveBindingsInputB(expect.ValidAssemblyFileWithSubstr):
+    """Tests that the compiler preserves bindings when optimizations are
+    enabled."""
+
+    shader = FileShader(GLSL_SHADER_WITH_UNUSED_BINDINGS, '.comp')
+    glslc_args = ['-S', '-O', shader, '-fpreserve-bindings']
+    # Check the first buffer.
+    expected_assembly_substr = "Binding 1"
+
+
+@inside_glslc_testsuite('OptionFPreserveBindings')
+class TestFPreserveBindingsOutputO(expect.ValidAssemblyFileWithSubstr):
+    """Tests that the compiler preserves bindings when optimizations are
+    enabled."""
+
+    shader = FileShader(GLSL_SHADER_WITH_UNUSED_BINDINGS, '.comp')
+    glslc_args = ['-S', '-O', shader, '-fpreserve-bindings']
+    # Check the first buffer.
+    expected_assembly_substr = "Binding 2"
+
+
+@inside_glslc_testsuite('OptionFPreserveBindings')
+class TestFNoPreserveBindings(expect.ValidAssemblyFileWithoutSubstr):
+    """Tests that the compiler removes bindings when -fpreserve-bindings is not
+    set."""
+
+    shader = FileShader(GLSL_SHADER_WITH_UNUSED_BINDINGS, '.comp')
+    glslc_args = ['-S', '-O', shader]
+    # Check that all binding decorations are gone.
+    unexpected_assembly_substr = "OpDecorate"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/glslc/test/parameter_tests.py 
new/shaderc-2023.4/glslc/test/parameter_tests.py
--- old/shaderc-2023.2/glslc/test/parameter_tests.py    2023-01-18 
21:58:09.000000000 +0100
+++ new/shaderc-2023.4/glslc/test/parameter_tests.py    2023-05-24 
21:30:26.000000000 +0200
@@ -91,6 +91,9 @@
                     a NaN operand, the other operand is returned. Similarly,
                     the clamp builtin will favour the non-NaN operands, as if
                     clamp were implemented as a composition of max and min.
+  -fpreserve-bindings
+                    Preserve all binding declarations, even if those bindings
+                    are not used.
   -fresource-set-binding [stage] <reg0> <set0> <binding0>
                         [<reg1> <set1> <binding1>...]
                     Explicitly sets the descriptor set and binding for
@@ -365,4 +368,23 @@
 MaxCullDistances 8
 MaxCombinedClipAndCullDistances 8
 MaxSamples 4
+MaxMeshOutputVerticesNV 256
+MaxMeshOutputPrimitivesNV 512
+MaxMeshWorkGroupSizeX_NV 32
+MaxMeshWorkGroupSizeY_NV 1
+MaxMeshWorkGroupSizeZ_NV 1
+MaxTaskWorkGroupSizeX_NV 32
+MaxTaskWorkGroupSizeY_NV 1
+MaxTaskWorkGroupSizeZ_NV 1
+MaxMeshViewCountNV 4
+MaxMeshOutputVerticesEXT 256
+MaxMeshOutputPrimitivesEXT 256
+MaxMeshWorkGroupSizeX_EXT 128
+MaxMeshWorkGroupSizeY_EXT 128
+MaxMeshWorkGroupSizeZ_EXT 128
+MaxTaskWorkGroupSizeX_EXT 128
+MaxTaskWorkGroupSizeY_EXT 128
+MaxTaskWorkGroupSizeZ_EXT 128
+MaxMeshViewCountEXT 4
+MaxDualSourceDrawBuffersEXT 1
 """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/kokoro/linux/build-docker.sh 
new/shaderc-2023.4/kokoro/linux/build-docker.sh
--- old/shaderc-2023.2/kokoro/linux/build-docker.sh     2023-01-18 
21:58:09.000000000 +0100
+++ new/shaderc-2023.4/kokoro/linux/build-docker.sh     2023-05-24 
21:30:26.000000000 +0200
@@ -66,7 +66,7 @@
 # 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 -GNinja -DCMAKE_INSTALL_PREFIX=$KOKORO_ARTIFACTS_DIR/install 
-DRE2_BUILD_TESTING=OFF -DCMAKE_BUILD_TYPE=$BUILD_TYPE $ADDITIONAL_CMAKE_FLAGS 
..
 
 echo $(date): Build glslang...
 ninja glslangValidator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/kokoro/macos/build.sh 
new/shaderc-2023.4/kokoro/macos/build.sh
--- old/shaderc-2023.2/kokoro/macos/build.sh    2023-01-18 21:58:09.000000000 
+0100
+++ new/shaderc-2023.4/kokoro/macos/build.sh    2023-05-24 21:30:26.000000000 
+0200
@@ -40,7 +40,7 @@
 # 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_C_COMPILER=clang 
-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=$BUILD_TYPE ..
+cmake -GNinja -DCMAKE_INSTALL_PREFIX=$KOKORO_ARTIFACTS_DIR/install 
-DRE2_BUILD_TESTING=OFF -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ 
-DCMAKE_BUILD_TYPE=$BUILD_TYPE ..
 
 echo $(date): Build glslang...
 ninja glslangValidator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/kokoro/ndk-build/build-docker.sh 
new/shaderc-2023.4/kokoro/ndk-build/build-docker.sh
--- old/shaderc-2023.2/kokoro/ndk-build/build-docker.sh 1970-01-01 
01:00:00.000000000 +0100
+++ new/shaderc-2023.4/kokoro/ndk-build/build-docker.sh 2023-05-24 
21:30:26.000000000 +0200
@@ -0,0 +1,66 @@
+#!/bin/bash
+# Copyright (c) 2018 Google LLC.
+#
+# 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.
+
+# Fail on any error.
+set -e
+# Display commands being run.
+set -x
+
+# This is required to run any git command in the docker since owner will
+# have changed between the clone environment, and the docker container.
+# Marking the root of the repo as safe for ownership changes.
+git config --global --add safe.directory $ROOT_DIR
+
+. /bin/using.sh # Declare the bash `using` function for configuring toolchains.
+
+cd $ROOT_DIR
+
+function clean_dir() {
+  dir=$1
+  if [[ -d "$dir" ]]; then
+    rm -fr "$dir"
+  fi
+  mkdir "$dir"
+}
+
+# Get source for dependencies, as specified in the DEPS file
+/usr/bin/python3 utils/git-sync-deps --treeless
+
+using ndk-r21d
+
+clean_dir "$ROOT_DIR/build"
+cd "$ROOT_DIR/build"
+
+function do_ndk_build () {
+  echo $(date): Starting ndk-build $@...
+  $ANDROID_NDK_HOME/ndk-build \
+    -C $ROOT_DIR/android_test \
+    NDK_PROJECT_PATH=. \
+    NDK_LIBS_OUT=./libs \
+    NDK_APP_OUT=./app \
+    V=1 \
+    SPVTOOLS_LOCAL_PATH=$ROOT_DIR/third_party/spirv-tools \
+    SPVHEADERS_LOCAL_PATH=$ROOT_DIR/third_party/spirv-headers \
+    -j8 $@
+}
+
+do_ndk_build
+
+# Check that libshaderc_combined builds
+do_ndk_build libshaderc_combined
+
+echo $(date): ndk-build completed.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/kokoro/ndk-build/build.sh 
new/shaderc-2023.4/kokoro/ndk-build/build.sh
--- old/shaderc-2023.2/kokoro/ndk-build/build.sh        2023-01-18 
21:58:09.000000000 +0100
+++ new/shaderc-2023.4/kokoro/ndk-build/build.sh        2023-05-24 
21:30:26.000000000 +0200
@@ -1,6 +1,5 @@
 #!/bin/bash
-
-# Copyright (C) 2017 Google Inc.
+# Copyright (c) 2021 Google LLC.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -18,47 +17,40 @@
 
 # Fail on any error.
 set -e
-# Display commands being run.
-set -x
-
-BUILD_ROOT=$PWD
-SRC=$PWD/github/shaderc
 
-# 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"
-
-# Get Android NDK.
-wget -q 
https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip
-unzip -q android-ndk-r18b-linux-x86_64.zip
-export ANDROID_NDK=$PWD/android-ndk-r18b
-
-# Get shaderc dependencies.
-cd $SRC
-./utils/git-sync-deps
-
-cd $SRC
-mkdir build
-cd $SRC/build
+SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )"
+ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )"
 
-# Invoke the build.
 BUILD_SHA=${KOKORO_GITHUB_COMMIT:-$KOKORO_GITHUB_PULL_REQUEST_COMMIT}
 
-function do_ndk_build () {
-  echo $(date): Starting ndk-build $@...
-  $ANDROID_NDK/ndk-build \
-    -C $SRC/android_test \
-    NDK_APP_OUT=`pwd` \
-    V=1 \
-    SPVTOOLS_LOCAL_PATH=$SRC/third_party/spirv-tools \
-    SPVHEADERS_LOCAL_PATH=$SRC/third_party/spirv-headers \
-    -j 8 $@
+# chown the given directory to the current user, if it exists.
+# Docker creates files with the root user - this can upset the Kokoro artifact 
copier.
+function chown_dir() {
+  dir=$1
+  if [[ -d "$dir" ]]; then
+    sudo chown -R "$(id -u):$(id -g)" "$dir"
+  fi
 }
 
-do_ndk_build
-
-# Check that libshaderc_combined builds
-do_ndk_build libshaderc_combined
+set +e
+# Allow build failures
 
-echo $(date): ndk-build completed.
+# "--privileged" is required to run ptrace in the asan builds.
+docker run --rm -i \
+  --privileged \
+  --volume "${ROOT_DIR}:${ROOT_DIR}" \
+  --volume "${KOKORO_ARTIFACTS_DIR}:${KOKORO_ARTIFACTS_DIR}" \
+  --workdir "${ROOT_DIR}" \
+  --env SCRIPT_DIR=${SCRIPT_DIR} \
+  --env ROOT_DIR=${ROOT_DIR} \
+  --env KOKORO_ARTIFACTS_DIR="${KOKORO_ARTIFACTS_DIR}" \
+  --env BUILD_SHA="${BUILD_SHA}" \
+  --entrypoint "${SCRIPT_DIR}/build-docker.sh" \
+  "gcr.io/shaderc-build/radial-build:latest"
+RESULT=$?
+
+# This is important. If the permissions are not fixed, kokoro will fail
+# to pull build artifacts, and put the build in tool-failure state, which
+# blocks the logs.
+chown_dir "${ROOT_DIR}/build"
+exit $RESULT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/kokoro/windows/build.bat 
new/shaderc-2023.4/kokoro/windows/build.bat
--- old/shaderc-2023.2/kokoro/windows/build.bat 2023-01-18 21:58:09.000000000 
+0100
+++ new/shaderc-2023.4/kokoro/windows/build.bat 2023-05-24 21:30:26.000000000 
+0200
@@ -35,12 +35,12 @@
 :: #########################################
 :: set up msvc build env
 :: #########################################
-if %VS_VERSION% == 2017 (
+if %VS_VERSION% == 2019 (
+  call "C:\Program Files (x86)\Microsoft Visual 
Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
+  echo "Using VS 2019..."
+) else if %VS_VERSION% == 2017 (
   call "C:\Program Files (x86)\Microsoft Visual 
Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
   echo "Using VS 2017..."
-) else if %VS_VERSION% == 2015 (
-  call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" 
amd64
-  echo "Using VS 2015..."
 )
 
 :: #########################################
@@ -53,7 +53,7 @@
   set BUILD_SHA=%KOKORO_GITHUB_COMMIT%
 )
 
-set CMAKE_FLAGS=-DCMAKE_INSTALL_PREFIX=%KOKORO_ARTIFACTS_DIR%\install 
-DSHADERC_ENABLE_SPVC=ON -DRE2_BUILD_TESTING=OFF -GNinja 
-DCMAKE_BUILD_TYPE=%BUILD_TYPE% -DCMAKE_C_COMPILER=cl.exe 
-DCMAKE_CXX_COMPILER=cl.exe
+set CMAKE_FLAGS=-DCMAKE_INSTALL_PREFIX=%KOKORO_ARTIFACTS_DIR%\install 
-DRE2_BUILD_TESTING=OFF -GNinja -DCMAKE_BUILD_TYPE=%BUILD_TYPE% 
-DCMAKE_C_COMPILER=cl.exe -DCMAKE_CXX_COMPILER=cl.exe
 
 cmake %CMAKE_FLAGS% ..
 if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL%
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/kokoro/windows/build_debug_2019.bat 
new/shaderc-2023.4/kokoro/windows/build_debug_2019.bat
--- old/shaderc-2023.2/kokoro/windows/build_debug_2019.bat      1970-01-01 
01:00:00.000000000 +0100
+++ new/shaderc-2023.4/kokoro/windows/build_debug_2019.bat      2023-05-24 
21:30:26.000000000 +0200
@@ -0,0 +1,23 @@
+:: Copyright (C) 2023 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.
+::
+:: Windows Build Script.
+
+@echo on
+
+:: Find out the directory of the common build script.
+set SCRIPT_DIR=%~dp0
+
+:: Call with correct parameter
+call %SCRIPT_DIR%\build.bat Debug 2019
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/kokoro/windows/build_release_2015.bat 
new/shaderc-2023.4/kokoro/windows/build_release_2015.bat
--- old/shaderc-2023.2/kokoro/windows/build_release_2015.bat    2023-01-18 
21:58:09.000000000 +0100
+++ new/shaderc-2023.4/kokoro/windows/build_release_2015.bat    1970-01-01 
01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-:: 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.
-::
-:: Windows Build Script.
-
-@echo on
-
-:: Find out the directory of the common build script.
-set SCRIPT_DIR=%~dp0
-
-:: Call with correct parameter
-call %SCRIPT_DIR%\build.bat RelWithDebInfo 2015
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/kokoro/windows/build_release_2019.bat 
new/shaderc-2023.4/kokoro/windows/build_release_2019.bat
--- old/shaderc-2023.2/kokoro/windows/build_release_2019.bat    1970-01-01 
01:00:00.000000000 +0100
+++ new/shaderc-2023.4/kokoro/windows/build_release_2019.bat    2023-05-24 
21:30:26.000000000 +0200
@@ -0,0 +1,23 @@
+:: Copyright (C) 2023 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.
+::
+:: Windows Build Script.
+
+@echo on
+
+:: Find out the directory of the common build script.
+set SCRIPT_DIR=%~dp0
+
+:: Call with correct parameter
+call %SCRIPT_DIR%\build.bat RelWithDebInfo 2019
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/kokoro/windows/continuous_debug_2019.cfg 
new/shaderc-2023.4/kokoro/windows/continuous_debug_2019.cfg
--- old/shaderc-2023.2/kokoro/windows/continuous_debug_2019.cfg 1970-01-01 
01:00:00.000000000 +0100
+++ new/shaderc-2023.4/kokoro/windows/continuous_debug_2019.cfg 2023-05-24 
21:30:26.000000000 +0200
@@ -0,0 +1,22 @@
+# Copyright (C) 2023 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/windows/build_debug_2019.bat"
+
+action {
+  define_artifacts {
+    regex: "install.zip"
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/kokoro/windows/continuous_release_2015.cfg 
new/shaderc-2023.4/kokoro/windows/continuous_release_2015.cfg
--- old/shaderc-2023.2/kokoro/windows/continuous_release_2015.cfg       
2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/kokoro/windows/continuous_release_2015.cfg       
1970-01-01 01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
-# 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.
-
-# Continuous build configuration.
-build_file: "shaderc/kokoro/windows/build_release_2015.bat"
-
-action {
-  define_artifacts {
-    regex: "install.zip"
-  }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/kokoro/windows/continuous_release_2019.cfg 
new/shaderc-2023.4/kokoro/windows/continuous_release_2019.cfg
--- old/shaderc-2023.2/kokoro/windows/continuous_release_2019.cfg       
1970-01-01 01:00:00.000000000 +0100
+++ new/shaderc-2023.4/kokoro/windows/continuous_release_2019.cfg       
2023-05-24 21:30:26.000000000 +0200
@@ -0,0 +1,22 @@
+# Copyright (C) 2023 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/windows/build_release_2019.bat"
+
+action {
+  define_artifacts {
+    regex: "install.zip"
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/kokoro/windows/presubmit_debug_2019.cfg 
new/shaderc-2023.4/kokoro/windows/presubmit_debug_2019.cfg
--- old/shaderc-2023.2/kokoro/windows/presubmit_debug_2019.cfg  1970-01-01 
01:00:00.000000000 +0100
+++ new/shaderc-2023.4/kokoro/windows/presubmit_debug_2019.cfg  2023-05-24 
21:30:26.000000000 +0200
@@ -0,0 +1,16 @@
+# Copyright (C) 2023 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/windows/build_debug_2019.bat"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/kokoro/windows/presubmit_release_2015.cfg 
new/shaderc-2023.4/kokoro/windows/presubmit_release_2015.cfg
--- old/shaderc-2023.2/kokoro/windows/presubmit_release_2015.cfg        
2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/kokoro/windows/presubmit_release_2015.cfg        
1970-01-01 01:00:00.000000000 +0100
@@ -1,16 +0,0 @@
-# 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.
-
-# Presubmit build configuration.
-build_file: "shaderc/kokoro/windows/build_release_2015.bat"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/kokoro/windows/presubmit_release_2019.cfg 
new/shaderc-2023.4/kokoro/windows/presubmit_release_2019.cfg
--- old/shaderc-2023.2/kokoro/windows/presubmit_release_2019.cfg        
1970-01-01 01:00:00.000000000 +0100
+++ new/shaderc-2023.4/kokoro/windows/presubmit_release_2019.cfg        
2023-05-24 21:30:26.000000000 +0200
@@ -0,0 +1,16 @@
+# Copyright (C) 2023 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/windows/build_release_2019.bat"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/libshaderc/include/shaderc/shaderc.h 
new/shaderc-2023.4/libshaderc/include/shaderc/shaderc.h
--- old/shaderc-2023.2/libshaderc/include/shaderc/shaderc.h     2023-01-18 
21:58:09.000000000 +0100
+++ new/shaderc-2023.4/libshaderc/include/shaderc/shaderc.h     2023-05-24 
21:30:26.000000000 +0200
@@ -189,6 +189,25 @@
   shaderc_limit_max_cull_distances,
   shaderc_limit_max_combined_clip_and_cull_distances,
   shaderc_limit_max_samples,
+  shaderc_limit_max_mesh_output_vertices_nv,
+  shaderc_limit_max_mesh_output_primitives_nv,
+  shaderc_limit_max_mesh_work_group_size_x_nv,
+  shaderc_limit_max_mesh_work_group_size_y_nv,
+  shaderc_limit_max_mesh_work_group_size_z_nv,
+  shaderc_limit_max_task_work_group_size_x_nv,
+  shaderc_limit_max_task_work_group_size_y_nv,
+  shaderc_limit_max_task_work_group_size_z_nv,
+  shaderc_limit_max_mesh_view_count_nv,
+  shaderc_limit_max_mesh_output_vertices_ext,
+  shaderc_limit_max_mesh_output_primitives_ext,
+  shaderc_limit_max_mesh_work_group_size_x_ext,
+  shaderc_limit_max_mesh_work_group_size_y_ext,
+  shaderc_limit_max_mesh_work_group_size_z_ext,
+  shaderc_limit_max_task_work_group_size_x_ext,
+  shaderc_limit_max_task_work_group_size_y_ext,
+  shaderc_limit_max_task_work_group_size_z_ext,
+  shaderc_limit_max_mesh_view_count_ext,
+  shaderc_limit_max_dual_source_draw_buffers_ext,
 } shaderc_limit;
 
 // Uniform resource kinds.
@@ -439,6 +458,11 @@
     shaderc_compile_options_t options, shaderc_shader_kind shader_kind,
     shaderc_uniform_kind kind, uint32_t base);
 
+// Sets whether the compiler should preserve all bindings, even when those
+// bindings are not used.
+SHADERC_EXPORT void shaderc_compile_options_set_preserve_bindings(
+    shaderc_compile_options_t options, bool preserve_bindings);
+
 // Sets whether the compiler should automatically assign locations to
 // uniform variables that don't have explicit locations in the shader source.
 SHADERC_EXPORT void shaderc_compile_options_set_auto_map_locations(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/libshaderc/include/shaderc/shaderc.hpp 
new/shaderc-2023.4/libshaderc/include/shaderc/shaderc.hpp
--- old/shaderc-2023.2/libshaderc/include/shaderc/shaderc.hpp   2023-01-18 
21:58:09.000000000 +0100
+++ new/shaderc-2023.4/libshaderc/include/shaderc/shaderc.hpp   2023-05-24 
21:30:26.000000000 +0200
@@ -311,6 +311,12 @@
                                                        kind, base);
   }
 
+  // Sets whether the compiler should preserve all bindings, even when those
+  // bindings are not used.
+  void SetPreserveBindings(bool preserve_bindings) {
+    shaderc_compile_options_set_preserve_bindings(options_, preserve_bindings);
+  }
+
   // Sets whether the compiler automatically assigns locations to
   // uniform variables that don't have explicit locations.
   void SetAutoMapLocations(bool auto_map) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/libshaderc/src/shaderc.cc 
new/shaderc-2023.4/libshaderc/src/shaderc.cc
--- old/shaderc-2023.2/libshaderc/src/shaderc.cc        2023-01-18 
21:58:09.000000000 +0100
+++ new/shaderc-2023.4/libshaderc/src/shaderc.cc        2023-05-24 
21:30:26.000000000 +0200
@@ -12,6 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include "shaderc/shaderc.h"
+
 #include <algorithm>
 #include <cassert>
 #include <cstdint>
@@ -529,6 +531,11 @@
                                                GetUniformKind(kind), base);
 }
 
+void shaderc_compile_options_set_preserve_bindings(
+    shaderc_compile_options_t options, bool preserve_bindings) {
+  options->compiler.SetPreserveBindings(preserve_bindings);
+}
+
 void shaderc_compile_options_set_auto_map_locations(
     shaderc_compile_options_t options, bool auto_map) {
   options->compiler.SetAutoMapLocations(auto_map);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/libshaderc_util/include/libshaderc_util/compiler.h 
new/shaderc-2023.4/libshaderc_util/include/libshaderc_util/compiler.h
--- old/shaderc-2023.2/libshaderc_util/include/libshaderc_util/compiler.h       
2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/libshaderc_util/include/libshaderc_util/compiler.h       
2023-05-24 21:30:26.000000000 +0200
@@ -206,6 +206,7 @@
         auto_combined_image_sampler_(false),
         auto_binding_base_(),
         auto_map_locations_(false),
+        preserve_bindings_(false),
         hlsl_iomap_(false),
         hlsl_offsets_(false),
         hlsl_legalization_enabled_(true),
@@ -307,6 +308,12 @@
     auto_binding_base_[static_cast<int>(stage)][static_cast<int>(kind)] = base;
   }
 
+  // Sets whether the compiler should preserve all bindings, even when those
+  // bindings are not used.
+  void SetPreserveBindings(bool preserve_bindings) {
+    preserve_bindings_ = preserve_bindings;
+  }
+
   // Sets whether the compiler automatically assigns locations to
   // uniform variables that don't have explicit locations.
   void SetAutoMapLocations(bool auto_map) { auto_map_locations_ = auto_map; }
@@ -518,6 +525,9 @@
   // have explicit locations.
   bool auto_map_locations_;
 
+  // True if the compiler should preserve all bindings, even when unused.
+  bool preserve_bindings_;
+
   // True if the compiler should use HLSL IO mapping rules when compiling HLSL.
   bool hlsl_iomap_;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/libshaderc_util/include/libshaderc_util/resources.inc 
new/shaderc-2023.4/libshaderc_util/include/libshaderc_util/resources.inc
--- old/shaderc-2023.2/libshaderc_util/include/libshaderc_util/resources.inc    
2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/libshaderc_util/include/libshaderc_util/resources.inc    
2023-05-24 21:30:26.000000000 +0200
@@ -105,3 +105,39 @@
 RESOURCE(MaxCullDistances,maxCullDistances,max_cull_distances)
 
RESOURCE(MaxCombinedClipAndCullDistances,maxCombinedClipAndCullDistances,max_combined_clip_and_cull_distances)
 RESOURCE(MaxSamples,maxSamples,max_samples)
+RESOURCE(MaxMeshOutputVerticesNV, maxMeshOutputVerticesNV,
+         max_mesh_output_vertices_nv)
+RESOURCE(MaxMeshOutputPrimitivesNV, maxMeshOutputPrimitivesNV,
+         max_mesh_output_primitives_nv)
+RESOURCE(MaxMeshWorkGroupSizeX_NV, maxMeshWorkGroupSizeX_NV,
+         max_mesh_work_group_size_x_nv)
+RESOURCE(MaxMeshWorkGroupSizeY_NV, maxMeshWorkGroupSizeY_NV,
+         max_mesh_work_group_size_y_nv)
+RESOURCE(MaxMeshWorkGroupSizeZ_NV, maxMeshWorkGroupSizeZ_NV,
+         max_mesh_work_group_size_z_nv)
+RESOURCE(MaxTaskWorkGroupSizeX_NV, maxTaskWorkGroupSizeX_NV,
+         max_task_work_group_size_x_nv)
+RESOURCE(MaxTaskWorkGroupSizeY_NV, maxTaskWorkGroupSizeY_NV,
+         max_task_work_group_size_y_nv)
+RESOURCE(MaxTaskWorkGroupSizeZ_NV, maxTaskWorkGroupSizeZ_NV,
+         max_task_work_group_size_z_nv)
+RESOURCE(MaxMeshViewCountNV, maxMeshViewCountNV, max_mesh_view_count_nv)
+RESOURCE(MaxMeshOutputVerticesEXT, maxMeshOutputVerticesEXT,
+         max_mesh_output_vertices_ext)
+RESOURCE(MaxMeshOutputPrimitivesEXT, maxMeshOutputPrimitivesEXT,
+         max_mesh_output_primitives_ext)
+RESOURCE(MaxMeshWorkGroupSizeX_EXT, maxMeshWorkGroupSizeX_EXT,
+         max_mesh_work_group_size_x_ext)
+RESOURCE(MaxMeshWorkGroupSizeY_EXT, maxMeshWorkGroupSizeY_EXT,
+         max_mesh_work_group_size_y_ext)
+RESOURCE(MaxMeshWorkGroupSizeZ_EXT, maxMeshWorkGroupSizeZ_EXT,
+         max_mesh_work_group_size_z_ext)
+RESOURCE(MaxTaskWorkGroupSizeX_EXT, maxTaskWorkGroupSizeX_EXT,
+         max_task_work_group_size_x_ext)
+RESOURCE(MaxTaskWorkGroupSizeY_EXT, maxTaskWorkGroupSizeY_EXT,
+         max_task_work_group_size_y_ext)
+RESOURCE(MaxTaskWorkGroupSizeZ_EXT, maxTaskWorkGroupSizeZ_EXT,
+         max_task_work_group_size_z_ext)
+RESOURCE(MaxMeshViewCountEXT, maxMeshViewCountEXT, max_mesh_view_count_ext)
+RESOURCE(MaxDualSourceDrawBuffersEXT, maxDualSourceDrawBuffersEXT,
+         max_dual_source_draw_buffers_ext)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/libshaderc_util/include/libshaderc_util/spirv_tools_wrapper.h
 
new/shaderc-2023.4/libshaderc_util/include/libshaderc_util/spirv_tools_wrapper.h
--- 
old/shaderc-2023.2/libshaderc_util/include/libshaderc_util/spirv_tools_wrapper.h
    2023-01-18 21:58:09.000000000 +0100
+++ 
new/shaderc-2023.4/libshaderc_util/include/libshaderc_util/spirv_tools_wrapper.h
    2023-05-24 21:30:26.000000000 +0200
@@ -60,6 +60,7 @@
 bool SpirvToolsOptimize(Compiler::TargetEnv env,
                         Compiler::TargetEnvVersion version,
                         const std::vector<PassId>& enabled_passes,
+                        spvtools::OptimizerOptions& optimizer_options,
                         std::vector<uint32_t>* binary, std::string* errors);
 
 }  // namespace shaderc_util
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/libshaderc_util/src/compiler.cc 
new/shaderc-2023.4/libshaderc_util/src/compiler.cc
--- old/shaderc-2023.2/libshaderc_util/src/compiler.cc  2023-01-18 
21:58:09.000000000 +0100
+++ new/shaderc-2023.4/libshaderc_util/src/compiler.cc  2023-05-24 
21:30:26.000000000 +0200
@@ -29,6 +29,7 @@
 #include "libshaderc_util/spirv_tools_wrapper.h"
 #include "libshaderc_util/string_piece.h"
 #include "libshaderc_util/version_profile.h"
+#include "spirv-tools/libspirv.hpp"
 
 namespace {
 using shaderc_util::string_piece;
@@ -348,9 +349,12 @@
                     enabled_opt_passes_.end());
 
   if (!opt_passes.empty()) {
+    spvtools::OptimizerOptions opt_options;
+    opt_options.set_preserve_bindings(preserve_bindings_);
+
     std::string opt_errors;
-    if (!SpirvToolsOptimize(target_env_, target_env_version_,
-                            opt_passes, &spirv, &opt_errors)) {
+    if (!SpirvToolsOptimize(target_env_, target_env_version_, opt_passes,
+                            opt_options, &spirv, &opt_errors)) {
       *error_stream << "shaderc: internal error: compilation succeeded but "
                        "failed to optimize: "
                     << opt_errors << "\n";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/shaderc-2023.2/libshaderc_util/src/spirv_tools_wrapper.cc 
new/shaderc-2023.4/libshaderc_util/src/spirv_tools_wrapper.cc
--- old/shaderc-2023.2/libshaderc_util/src/spirv_tools_wrapper.cc       
2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/libshaderc_util/src/spirv_tools_wrapper.cc       
2023-05-24 21:30:26.000000000 +0200
@@ -17,6 +17,7 @@
 #include <algorithm>
 #include <sstream>
 
+#include "spirv-tools/libspirv.hpp"
 #include "spirv-tools/optimizer.hpp"
 
 namespace shaderc_util {
@@ -108,6 +109,7 @@
 bool SpirvToolsOptimize(Compiler::TargetEnv env,
                         Compiler::TargetEnvVersion version,
                         const std::vector<PassId>& enabled_passes,
+                        spvtools::OptimizerOptions& optimizer_options,
                         std::vector<uint32_t>* binary, std::string* errors) {
   errors->clear();
   if (enabled_passes.empty()) return true;
@@ -125,9 +127,9 @@
   // This uses relaxed rules for pre-legalized HLSL.
   val_opts.SetBeforeHlslLegalization(true);
 
-  spvtools::OptimizerOptions opt_opts;
-  opt_opts.set_validator_options(val_opts);
-  opt_opts.set_run_validator(true);
+  // Set additional optimizer options.
+  optimizer_options.set_validator_options(val_opts);
+  optimizer_options.set_run_validator(true);
 
   spvtools::Optimizer optimizer(GetSpirvToolsTargetEnv(env, version));
 
@@ -159,7 +161,8 @@
     }
   }
 
-  if (!optimizer.Run(binary->data(), binary->size(), binary, opt_opts)) {
+  if (!optimizer.Run(binary->data(), binary->size(), binary,
+                     optimizer_options)) {
     *errors = oss.str();
     return false;
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/shaderc-2023.2/utils/roll-deps 
new/shaderc-2023.4/utils/roll-deps
--- old/shaderc-2023.2/utils/roll-deps  2023-01-18 21:58:09.000000000 +0100
+++ new/shaderc-2023.4/utils/roll-deps  2023-05-24 21:30:26.000000000 +0200
@@ -21,7 +21,7 @@
 effcee_dir="third_party/effcee/"
 effcee_trunk="origin/main"
 glslang_dir="third_party/glslang/"
-glslang_trunk="origin/master"
+glslang_trunk="origin/main"
 googletest_dir="third_party/googletest/"
 googletest_trunk="origin/master"
 re2_dir="third_party/re2/"

Reply via email to