From b6b0997e702f342eff094a9cb1c461f94a9cdc81 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sun, 28 Jul 2024 18:56:05 +1000 Subject: [PATCH] Build: Favor git repositories over in-tree patches Too messy. --- scripts/appimage/make-appimage.sh | 2 +- scripts/deps/build-dependencies-linux.sh | 56 +- scripts/deps/build-dependencies-mac.sh | 48 +- .../deps/build-dependencies-windows-arm64.bat | 36 +- .../deps/build-dependencies-windows-x64.bat | 36 +- scripts/deps/cpuinfo-changes.patch | 223 ------- scripts/deps/shaderc-changes.patch | 586 ------------------ scripts/deps/spirv-cross-changes.patch | 27 - scripts/flatpak/modules/22-shaderc.json | 26 +- scripts/flatpak/modules/23-spirv-cross.json | 8 +- scripts/flatpak/modules/24-cpuinfo.json | 8 +- src/util/gpu_device.cpp | 18 +- 12 files changed, 76 insertions(+), 998 deletions(-) delete mode 100644 scripts/deps/cpuinfo-changes.patch delete mode 100644 scripts/deps/shaderc-changes.patch delete mode 100644 scripts/deps/spirv-cross-changes.patch diff --git a/scripts/appimage/make-appimage.sh b/scripts/appimage/make-appimage.sh index 99fc2fe86..0d588794d 100755 --- a/scripts/appimage/make-appimage.sh +++ b/scripts/appimage/make-appimage.sh @@ -58,7 +58,7 @@ STRIP=strip declare -a MANUAL_LIBS=( "libdiscord-rpc.so" "libshaderc_shared.so" - "libspirv-cross-c-shared.so" + "libspirv-cross-c-shared.so.0.61.0" ) declare -a MANUAL_QT_LIBS=( diff --git a/scripts/deps/build-dependencies-linux.sh b/scripts/deps/build-dependencies-linux.sh index 8f2e1844e..adff9e29f 100755 --- a/scripts/deps/build-dependencies-linux.sh +++ b/scripts/deps/build-dependencies-linux.sh @@ -22,13 +22,10 @@ SDL2=2.30.5 QT=6.7.2 ZSTD=1.5.6 -SHADERC=2024.1 -SHADERC_GLSLANG=142052fa30f9eca191aa9dcf65359fcaed09eeec -SHADERC_SPIRVHEADERS=5e3ad389ee56fca27c9705d093ae5387ce404df4 -SHADERC_SPIRVTOOLS=dd4b663e13c07fea4fbb3f70c1c91c86731099f7 -SPIRV_CROSS=vulkan-sdk-1.3.283.0 -CPUINFO=05332fd802d9109a2a151ec32154b107c1e5caf9 +CPUINFO=7524ad504fdcfcf75a18a133da6abd75c5d48053 DISCORD_RPC=842c15192041f8e71c512851834f4dadb1a554fb +SHADERC=feb2460bf3a504d67011246edeb810c45ea58826 +SPIRV_CROSS=vulkan-sdk-1.3.290.0 mkdir -p deps-build cd deps-build @@ -46,13 +43,9 @@ fb0d1286a35be3583fee34aeb5843c94719e07193bdf1d4d8b0dc14009caef01 qtsvg-everywhe 58e855ad1b2533094726c8a425766b63a04a0eede2ed85086860e54593aa4b2a qttools-everywhere-src-$QT.tar.xz 9845780b5dc1b7279d57836db51aeaf2e4a1160c42be09750616f39157582ca9 qttranslations-everywhere-src-$QT.tar.xz a2a057e1dd644bd44abb9990fecc194b2e25c2e0f39e81aa9fee4c1e5e2a8a5b qtwayland-everywhere-src-$QT.tar.xz -eb3b5f0c16313d34f208d90c2fa1e588a23283eed63b101edd5422be6165d528 shaderc-$SHADERC.tar.gz -aa27e4454ce631c5a17924ce0624eac736da19fc6f5a2ab15a6c58da7b36950f shaderc-glslang-$SHADERC_GLSLANG.tar.gz -5d866ce34a4b6908e262e5ebfffc0a5e11dd411640b5f24c85a80ad44c0d4697 shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz -03ee1a2c06f3b61008478f4abe9423454e53e580b9488b47c8071547c6a9db47 shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz -3376a58abe186a695a50ff12697d210ce27673cea5de1a5090cb2b092b261414 SPIRV-Cross-$SPIRV_CROSS.tar.gz -74a8d9ae0b8b45b39d35708c873320de227bbfe01a46e4d2a91818b8877f4137 cpuinfo-$CPUINFO.tar.gz +e1351218d270db49c3dddcba04fb2153b09731ea3fa6830e423f5952f44585be cpuinfo-$CPUINFO.tar.gz acb111ebdb4f1459899b9c594be81ed284de23ac0f5376e5963aad16df98584f discord-rpc-$DISCORD_RPC.tar.gz +5a7f86eba3c6301bb573def825977c31aa3d5fc5500f213c123498707fdbd378 shaderc-$SHADERC.tar.gz EOF curl -C - -L \ @@ -68,16 +61,17 @@ curl -C - -L \ -O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \ -O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \ -O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtwayland-everywhere-src-$QT.tar.xz" \ - -o "shaderc-$SHADERC.tar.gz" "https://github.com/google/shaderc/archive/refs/tags/v$SHADERC.tar.gz" \ - -o "shaderc-glslang-$SHADERC_GLSLANG.tar.gz" "https://github.com/KhronosGroup/glslang/archive/$SHADERC_GLSLANG.tar.gz" \ - -o "shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Headers/archive/$SHADERC_SPIRVHEADERS.tar.gz" \ - -o "shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Tools/archive/$SHADERC_SPIRVTOOLS.tar.gz" \ - -o "SPIRV-Cross-$SPIRV_CROSS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Cross/archive/refs/tags/$SPIRV_CROSS.tar.gz" \ - -o "cpuinfo-$CPUINFO.tar.gz" "https://github.com/pytorch/cpuinfo/archive/$CPUINFO.tar.gz" \ - -o "discord-rpc-$DISCORD_RPC.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC.tar.gz" + -o "cpuinfo-$CPUINFO.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO.tar.gz" \ + -o "discord-rpc-$DISCORD_RPC.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC.tar.gz" \ + -o "shaderc-$SHADERC.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC.tar.gz" shasum -a 256 --check SHASUMS +# Have to clone with git, because it does version detection. +if [ ! -d "SPIRV-Cross" ]; then + git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS --depth 1 +fi + echo "Building libbacktrace..." rm -fr "libbacktrace-$LIBBACKTRACE" unzip "$LIBBACKTRACE.zip" @@ -236,41 +230,29 @@ echo "Building shaderc..." rm -fr "shaderc-$SHADERC" tar xf "shaderc-$SHADERC.tar.gz" cd "shaderc-$SHADERC" -cd third_party -tar xf "../../shaderc-glslang-$SHADERC_GLSLANG.tar.gz" -mv "glslang-$SHADERC_GLSLANG" "glslang" -tar xf "../../shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" -mv "SPIRV-Headers-$SHADERC_SPIRVHEADERS" "spirv-headers" -tar xf "../../shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" -mv "SPIRV-Tools-$SHADERC_SPIRVTOOLS" "spirv-tools" -cd .. -patch -p1 < "$SCRIPTDIR/shaderc-changes.patch" cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build -G Ninja cmake --build build --parallel ninja -C build install cd .. -echo "Building SPIRV-Cross" -rm -fr "SPIRV-Cross-$SPIRV_CROSS" -tar xf "SPIRV-Cross-$SPIRV_CROSS.tar.gz" -cd "SPIRV-Cross-$SPIRV_CROSS" -patch -p1 < "$SCRIPTDIR/spirv-cross-changes.patch" +echo "Building SPIRV-Cross..." +cd SPIRV-Cross +rm -fr build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=OFF -DSPIRV_CROSS_ENABLE_MSL=OFF -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build -G Ninja cmake --build build --parallel ninja -C build install cd .. -echo "Building cpuinfo" +echo "Building cpuinfo..." rm -fr "cpuinfo-$CPUINFO" tar xf "cpuinfo-$CPUINFO.tar.gz" cd "cpuinfo-$CPUINFO" -patch -p1 < "$SCRIPTDIR/cpuinfo-changes.patch" cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build -G Ninja cmake --build build --parallel ninja -C build install cd .. -echo "Building discord-rpc" +echo "Building discord-rpc..." rm -fr "discord-rpc-$DISCORD_RPC" tar xf "discord-rpc-$DISCORD_RPC.tar.gz" cd "discord-rpc-$DISCORD_RPC" @@ -281,4 +263,4 @@ cd .. echo "Cleaning up..." cd .. -rm -r deps-build +rm -fr deps-build diff --git a/scripts/deps/build-dependencies-mac.sh b/scripts/deps/build-dependencies-mac.sh index 3f7f53ebd..a0439a238 100755 --- a/scripts/deps/build-dependencies-mac.sh +++ b/scripts/deps/build-dependencies-mac.sh @@ -44,13 +44,10 @@ LIBWEBP=1.4.0 MOLTENVK=1.2.9 QT=6.7.2 -SHADERC=2024.1 -SHADERC_GLSLANG=142052fa30f9eca191aa9dcf65359fcaed09eeec -SHADERC_SPIRVHEADERS=5e3ad389ee56fca27c9705d093ae5387ce404df4 -SHADERC_SPIRVTOOLS=dd4b663e13c07fea4fbb3f70c1c91c86731099f7 -SPIRV_CROSS=vulkan-sdk-1.3.283.0 -CPUINFO=05332fd802d9109a2a151ec32154b107c1e5caf9 +CPUINFO=7524ad504fdcfcf75a18a133da6abd75c5d48053 DISCORD_RPC=842c15192041f8e71c512851834f4dadb1a554fb +SHADERC=feb2460bf3a504d67011246edeb810c45ea58826 +SPIRV_CROSS=vulkan-sdk-1.3.290.0 mkdir -p deps-build cd deps-build @@ -84,13 +81,9 @@ e1a1d8785fae67d16ad0a443b01d5f32663a6b68d275f1806ebab257485ce5d6 qtimageformats fb0d1286a35be3583fee34aeb5843c94719e07193bdf1d4d8b0dc14009caef01 qtsvg-everywhere-src-$QT.tar.xz 58e855ad1b2533094726c8a425766b63a04a0eede2ed85086860e54593aa4b2a qttools-everywhere-src-$QT.tar.xz 9845780b5dc1b7279d57836db51aeaf2e4a1160c42be09750616f39157582ca9 qttranslations-everywhere-src-$QT.tar.xz -eb3b5f0c16313d34f208d90c2fa1e588a23283eed63b101edd5422be6165d528 shaderc-$SHADERC.tar.gz -aa27e4454ce631c5a17924ce0624eac736da19fc6f5a2ab15a6c58da7b36950f shaderc-glslang-$SHADERC_GLSLANG.tar.gz -5d866ce34a4b6908e262e5ebfffc0a5e11dd411640b5f24c85a80ad44c0d4697 shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz -03ee1a2c06f3b61008478f4abe9423454e53e580b9488b47c8071547c6a9db47 shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz -3376a58abe186a695a50ff12697d210ce27673cea5de1a5090cb2b092b261414 SPIRV-Cross-$SPIRV_CROSS.tar.gz -74a8d9ae0b8b45b39d35708c873320de227bbfe01a46e4d2a91818b8877f4137 cpuinfo-$CPUINFO.tar.gz +e1351218d270db49c3dddcba04fb2153b09731ea3fa6830e423f5952f44585be cpuinfo-$CPUINFO.tar.gz acb111ebdb4f1459899b9c594be81ed284de23ac0f5376e5963aad16df98584f discord-rpc-$DISCORD_RPC.tar.gz +5a7f86eba3c6301bb573def825977c31aa3d5fc5500f213c123498707fdbd378 shaderc-$SHADERC.tar.gz EOF @@ -108,16 +101,17 @@ curl -L \ -O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere-src-$QT.tar.xz" \ -O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttools-everywhere-src-$QT.tar.xz" \ -O "https://download.qt.io/official_releases/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere-src-$QT.tar.xz" \ - -o "shaderc-$SHADERC.tar.gz" "https://github.com/google/shaderc/archive/refs/tags/v$SHADERC.tar.gz" \ - -o "shaderc-glslang-$SHADERC_GLSLANG.tar.gz" "https://github.com/KhronosGroup/glslang/archive/$SHADERC_GLSLANG.tar.gz" \ - -o "shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Headers/archive/$SHADERC_SPIRVHEADERS.tar.gz" \ - -o "shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Tools/archive/$SHADERC_SPIRVTOOLS.tar.gz" \ - -o "SPIRV-Cross-$SPIRV_CROSS.tar.gz" "https://github.com/KhronosGroup/SPIRV-Cross/archive/refs/tags/$SPIRV_CROSS.tar.gz" \ - -o "cpuinfo-$CPUINFO.tar.gz" "https://github.com/pytorch/cpuinfo/archive/$CPUINFO.tar.gz" \ - -o "discord-rpc-$DISCORD_RPC.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC.tar.gz" + -o "cpuinfo-$CPUINFO.tar.gz" "https://github.com/stenzek/cpuinfo/archive/$CPUINFO.tar.gz" \ + -o "discord-rpc-$DISCORD_RPC.tar.gz" "https://github.com/stenzek/discord-rpc/archive/$DISCORD_RPC.tar.gz" \ + -o "shaderc-$SHADERC.tar.gz" "https://github.com/stenzek/shaderc/archive/$SHADERC.tar.gz" shasum -a 256 --check SHASUMS +# Have to clone with git, because it does version detection. +if [ ! -d "SPIRV-Cross" ]; then + git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b $SPIRV_CROSS --depth 1 +fi + echo "Installing SDL2..." rm -fr "SDL2-$SDL2" tar xf "SDL2-$SDL2.tar.gz" @@ -319,25 +313,14 @@ echo "Building shaderc..." rm -fr "shaderc-$SHADERC" tar xf "shaderc-$SHADERC.tar.gz" cd "shaderc-$SHADERC" -cd third_party -tar xf "../../shaderc-glslang-$SHADERC_GLSLANG.tar.gz" -mv "glslang-$SHADERC_GLSLANG" "glslang" -tar xf "../../shaderc-spirv-headers-$SHADERC_SPIRVHEADERS.tar.gz" -mv "SPIRV-Headers-$SHADERC_SPIRVHEADERS" "spirv-headers" -tar xf "../../shaderc-spirv-tools-$SHADERC_SPIRVTOOLS.tar.gz" -mv "SPIRV-Tools-$SHADERC_SPIRVTOOLS" "spirv-tools" -cd .. -patch -p1 < "$SCRIPTDIR/shaderc-changes.patch" cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -B build make -C build "-j$NPROCS" make -C build install cd .. echo "Building SPIRV-Cross..." -rm -fr "SPIRV-Cross-$SPIRV_CROSS" -tar xf "SPIRV-Cross-$SPIRV_CROSS.tar.gz" -cd "SPIRV-Cross-$SPIRV_CROSS" -patch -p1 < "$SCRIPTDIR/spirv-cross-changes.patch" +cd SPIRV-Cross +rm -fr build cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_UNIVERSAL" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=OFF -DSPIRV_CROSS_ENABLE_MSL=ON -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build cmake --build build --parallel cmake --install build @@ -347,7 +330,6 @@ echo "Building cpuinfo..." rm -fr "cpuinfo-$CPUINFO" tar xf "cpuinfo-$CPUINFO.tar.gz" cd "cpuinfo-$CPUINFO" -patch -p1 < "$SCRIPTDIR/cpuinfo-changes.patch" cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_X64" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build make -C build "-j$NPROCS" cmake "${CMAKE_COMMON[@]}" "$CMAKE_ARCH_ARM64" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build-arm64 diff --git a/scripts/deps/build-dependencies-windows-arm64.bat b/scripts/deps/build-dependencies-windows-arm64.bat index 5c71ed867..35e694ae0 100644 --- a/scripts/deps/build-dependencies-windows-arm64.bat +++ b/scripts/deps/build-dependencies-windows-arm64.bat @@ -54,13 +54,10 @@ set ZLIB=1.3.1 set ZLIBSHORT=131 set ZSTD=1.5.6 -set SHADERC=2024.1 -set SHADERC_GLSLANG=142052fa30f9eca191aa9dcf65359fcaed09eeec -set SHADERC_SPIRVHEADERS=5e3ad389ee56fca27c9705d093ae5387ce404df4 -set SHADERC_SPIRVTOOLS=dd4b663e13c07fea4fbb3f70c1c91c86731099f7 -set SPIRV_CROSS=vulkan-sdk-1.3.283.0 -set CPUINFO=05332fd802d9109a2a151ec32154b107c1e5caf9 +set CPUINFO=7524ad504fdcfcf75a18a133da6abd75c5d48053 set DISCORD_RPC=842c15192041f8e71c512851834f4dadb1a554fb +set SHADERC=feb2460bf3a504d67011246edeb810c45ea58826 +set SPIRV_CROSS=vulkan-sdk-1.3.290.0 call :downloadfile "freetype-%FREETYPE%.tar.gz" https://download.savannah.gnu.org/releases/freetype/freetype-%FREETYPE%.tar.gz 1ac27e16c134a7f2ccea177faba19801131116fd682efc1f5737037c5db224b5 || goto error call :downloadfile "harfbuzz-%HARFBUZZ%.zip" https://github.com/harfbuzz/harfbuzz/archive/refs/tags/%HARFBUZZ%.zip b2bc56184ae37324bc4829fde7d3f9e6916866ad711ee85792e457547c9fd127 || goto error @@ -77,13 +74,13 @@ call :downloadfile "zlib%ZLIBSHORT%.zip" "https://zlib.net/zlib%ZLIBSHORT%.zip" call :downloadfile "zstd-%ZSTD%.zip" "https://github.com/facebook/zstd/archive/refs/tags/v%ZSTD%.zip" 3b1c3b46e416d36931efd34663122d7f51b550c87f74de2d38249516fe7d8be5 || goto error call :downloadfile "zstd-fd5f8106a58601a963ee816e6a57aa7c61fafc53.patch" https://github.com/facebook/zstd/commit/fd5f8106a58601a963ee816e6a57aa7c61fafc53.patch 675f144b11f8ab2424b64bed8ccdca5d3f35b9326046fa7a883925dd180f0651 || goto error -call :downloadfile "cpuinfo-%CPUINFO%.zip" "https://github.com/pytorch/cpuinfo/archive/%CPUINFO%.zip" d4a3e252d04b55b1a3bec800fcf2eee36746a2f54405280a9c8355306e09ebe4 || goto error +call :downloadfile "cpuinfo-%CPUINFO%.zip" "https://github.com/pytorch/cpuinfo/archive/%CPUINFO%.zip" 13146ae7983d767a678dd01b0d6af591e77cec82babd41264b9164ab808d7d41 || goto error call :downloadfile "discord-rpc-%DISCORD_RPC%.zip" "https://github.com/stenzek/discord-rpc/archive/%DISCORD_RPC%.zip" 2a32201439fc2ddfc9c0ea4f4f7cfce40706983b9abac22cdba4ce750bcb55a1 || goto error -call :downloadfile "shaderc-%SHADERC%.zip" "https://github.com/google/shaderc/archive/refs/tags/v%SHADERC%.zip" 6c9f42ed6bf42750f5369b089909abfdcf0101488b4a1f41116d5159d00af8e7 || goto error -call :downloadfile "shaderc-glslang-%SHADERC_GLSLANG%.zip" "https://github.com/KhronosGroup/glslang/archive/%SHADERC_GLSLANG%.zip" 03ad8a6fa987af4653d0cfe6bdaed41bcf617f1366a151fb1574da75950cd3e8 || goto error -call :downloadfile "shaderc-spirv-headers-%SHADERC_SPIRVHEADERS%.zip" "https://github.com/KhronosGroup/SPIRV-Headers/archive/%SHADERC_SPIRVHEADERS%.zip" fa59a54334feaba5702b9c25724c3f4746123865769b36dd5a28d9ef5e9d39ab || goto error -call :downloadfile "shaderc-spirv-tools-%SHADERC_SPIRVTOOLS%.zip" "https://github.com/KhronosGroup/SPIRV-Tools/archive/%SHADERC_SPIRVTOOLS%.zip" bf385994c20293485b378c27dfdbd77a31b949deabccd9218a977f173eda9f6f || goto error -call :downloadfile "SPIRV-Cross-%SPIRV_CROSS%.zip" "https://github.com/KhronosGroup/SPIRV-Cross/archive/refs/tags/%SPIRV_CROSS%.zip" 452e2c036c53b4cf5fbba9c2f34be3b43b0c5adbe3ccf3c2430cce826f82277b || goto error +call :downloadfile "shaderc-%SHADERC%.zip" "https://github.com/stenzek/shaderc/archive/%SHADERC%.zip" a50687a3903328976c3a49f6ba6326196f7713660048957eb033408630af70b1 || goto error + +if not exist SPIRV-Cross\ ( + git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b %SPIRV_CROSS% --depth 1 || goto error +) if %DEBUG%==1 ( echo Building debug and release libraries... @@ -245,24 +242,14 @@ echo Building shaderc... rmdir /S /Q "shaderc-%SHADERC%" %SEVENZIP% x "shaderc-%SHADERC%.zip" || goto error cd "shaderc-%SHADERC%" || goto error -cd third_party || goto error -%SEVENZIP% x "..\..\shaderc-glslang-%SHADERC_GLSLANG%.zip" || goto error -rename "glslang-%SHADERC_GLSLANG%" "glslang" || goto error -%SEVENZIP% x "..\..\shaderc-spirv-headers-%SHADERC_SPIRVHEADERS%.zip" || goto error -rename "SPIRV-Headers-%SHADERC_SPIRVHEADERS%" "spirv-headers" || goto error -%SEVENZIP% x "..\..\shaderc-spirv-tools-%SHADERC_SPIRVTOOLS%.zip" || goto error -rename "SPIRV-Tools-%SHADERC_SPIRVTOOLS%" "spirv-tools" || goto error -cd .. || goto error -%PATCH% -p1 < "%SCRIPTDIR%\shaderc-changes.patch" || goto error cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -DSHADERC_ENABLE_SHARED_CRT=ON -B build -G Ninja || goto error cmake --build build --parallel || goto error ninja -C build install || goto error cd .. || goto error echo Building SPIRV-Cross... -rmdir /S /Q "SPIRV-Cross-%SPIRV_CROSS%" -%SEVENZIP% x "SPIRV-Cross-%SPIRV_CROSS%.zip" || goto error -cd "SPIRV-Cross-%SPIRV_CROSS%" || goto error +cd SPIRV-Cross || goto error +rmdir /S /Q "build" cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=ON -DSPIRV_CROSS_ENABLE_MSL=OFF -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build -G Ninja cmake --build build --parallel || goto error ninja -C build install || goto error @@ -272,7 +259,6 @@ echo Building cpuinfo... rmdir /S /Q "cpuinfo-%CPUINFO%" %SEVENZIP% x "cpuinfo-%CPUINFO%.zip" || goto error cd "cpuinfo-%CPUINFO%" || goto error -%PATCH% -p1 < "%SCRIPTDIR%\cpuinfo-changes.patch" || goto error cmake %ARM64TOOLCHAIN% -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build -G Ninja cmake --build build --parallel || goto error ninja -C build install || goto error diff --git a/scripts/deps/build-dependencies-windows-x64.bat b/scripts/deps/build-dependencies-windows-x64.bat index 6925b078d..523a2b6e3 100644 --- a/scripts/deps/build-dependencies-windows-x64.bat +++ b/scripts/deps/build-dependencies-windows-x64.bat @@ -52,13 +52,10 @@ set ZLIB=1.3.1 set ZLIBSHORT=131 set ZSTD=1.5.6 -set SHADERC=2024.1 -set SHADERC_GLSLANG=142052fa30f9eca191aa9dcf65359fcaed09eeec -set SHADERC_SPIRVHEADERS=5e3ad389ee56fca27c9705d093ae5387ce404df4 -set SHADERC_SPIRVTOOLS=dd4b663e13c07fea4fbb3f70c1c91c86731099f7 -set SPIRV_CROSS=vulkan-sdk-1.3.283.0 -set CPUINFO=05332fd802d9109a2a151ec32154b107c1e5caf9 +set CPUINFO=7524ad504fdcfcf75a18a133da6abd75c5d48053 set DISCORD_RPC=842c15192041f8e71c512851834f4dadb1a554fb +set SHADERC=feb2460bf3a504d67011246edeb810c45ea58826 +set SPIRV_CROSS=vulkan-sdk-1.3.290.0 call :downloadfile "freetype-%FREETYPE%.tar.gz" https://download.savannah.gnu.org/releases/freetype/freetype-%FREETYPE%.tar.gz 1ac27e16c134a7f2ccea177faba19801131116fd682efc1f5737037c5db224b5 || goto error call :downloadfile "harfbuzz-%HARFBUZZ%.zip" https://github.com/harfbuzz/harfbuzz/archive/refs/tags/%HARFBUZZ%.zip b2bc56184ae37324bc4829fde7d3f9e6916866ad711ee85792e457547c9fd127 || goto error @@ -75,13 +72,13 @@ call :downloadfile "zlib%ZLIBSHORT%.zip" "https://zlib.net/zlib%ZLIBSHORT%.zip" call :downloadfile "zstd-%ZSTD%.zip" "https://github.com/facebook/zstd/archive/refs/tags/v%ZSTD%.zip" 3b1c3b46e416d36931efd34663122d7f51b550c87f74de2d38249516fe7d8be5 || goto error call :downloadfile "zstd-fd5f8106a58601a963ee816e6a57aa7c61fafc53.patch" https://github.com/facebook/zstd/commit/fd5f8106a58601a963ee816e6a57aa7c61fafc53.patch 675f144b11f8ab2424b64bed8ccdca5d3f35b9326046fa7a883925dd180f0651 || goto error -call :downloadfile "cpuinfo-%CPUINFO%.zip" "https://github.com/pytorch/cpuinfo/archive/%CPUINFO%.zip" d4a3e252d04b55b1a3bec800fcf2eee36746a2f54405280a9c8355306e09ebe4 || goto error +call :downloadfile "cpuinfo-%CPUINFO%.zip" "https://github.com/pytorch/cpuinfo/archive/%CPUINFO%.zip" 13146ae7983d767a678dd01b0d6af591e77cec82babd41264b9164ab808d7d41 || goto error call :downloadfile "discord-rpc-%DISCORD_RPC%.zip" "https://github.com/stenzek/discord-rpc/archive/%DISCORD_RPC%.zip" 2a32201439fc2ddfc9c0ea4f4f7cfce40706983b9abac22cdba4ce750bcb55a1 || goto error -call :downloadfile "shaderc-%SHADERC%.zip" "https://github.com/google/shaderc/archive/refs/tags/v%SHADERC%.zip" 6c9f42ed6bf42750f5369b089909abfdcf0101488b4a1f41116d5159d00af8e7 || goto error -call :downloadfile "shaderc-glslang-%SHADERC_GLSLANG%.zip" "https://github.com/KhronosGroup/glslang/archive/%SHADERC_GLSLANG%.zip" 03ad8a6fa987af4653d0cfe6bdaed41bcf617f1366a151fb1574da75950cd3e8 || goto error -call :downloadfile "shaderc-spirv-headers-%SHADERC_SPIRVHEADERS%.zip" "https://github.com/KhronosGroup/SPIRV-Headers/archive/%SHADERC_SPIRVHEADERS%.zip" fa59a54334feaba5702b9c25724c3f4746123865769b36dd5a28d9ef5e9d39ab || goto error -call :downloadfile "shaderc-spirv-tools-%SHADERC_SPIRVTOOLS%.zip" "https://github.com/KhronosGroup/SPIRV-Tools/archive/%SHADERC_SPIRVTOOLS%.zip" bf385994c20293485b378c27dfdbd77a31b949deabccd9218a977f173eda9f6f || goto error -call :downloadfile "SPIRV-Cross-%SPIRV_CROSS%.zip" "https://github.com/KhronosGroup/SPIRV-Cross/archive/refs/tags/%SPIRV_CROSS%.zip" 452e2c036c53b4cf5fbba9c2f34be3b43b0c5adbe3ccf3c2430cce826f82277b || goto error +call :downloadfile "shaderc-%SHADERC%.zip" "https://github.com/stenzek/shaderc/archive/%SHADERC%.zip" a50687a3903328976c3a49f6ba6326196f7713660048957eb033408630af70b1 || goto error + +if not exist SPIRV-Cross\ ( + git clone https://github.com/KhronosGroup/SPIRV-Cross/ -b %SPIRV_CROSS% --depth 1 || goto error +) if %DEBUG%==1 ( echo Building debug and release libraries... @@ -242,24 +239,14 @@ echo Building shaderc... rmdir /S /Q "shaderc-%SHADERC%" %SEVENZIP% x "shaderc-%SHADERC%.zip" || goto error cd "shaderc-%SHADERC%" || goto error -cd third_party || goto error -%SEVENZIP% x "..\..\shaderc-glslang-%SHADERC_GLSLANG%.zip" || goto error -rename "glslang-%SHADERC_GLSLANG%" "glslang" || goto error -%SEVENZIP% x "..\..\shaderc-spirv-headers-%SHADERC_SPIRVHEADERS%.zip" || goto error -rename "SPIRV-Headers-%SHADERC_SPIRVHEADERS%" "spirv-headers" || goto error -%SEVENZIP% x "..\..\shaderc-spirv-tools-%SHADERC_SPIRVTOOLS%.zip" || goto error -rename "SPIRV-Tools-%SHADERC_SPIRVTOOLS%" "spirv-tools" || goto error -cd .. || goto error -%PATCH% -p1 < "%SCRIPTDIR%\shaderc-changes.patch" || goto error cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON -DSHADERC_SKIP_COPYRIGHT_CHECK=ON -DSHADERC_ENABLE_SHARED_CRT=ON -B build -G Ninja || goto error cmake --build build --parallel || goto error ninja -C build install || goto error cd .. || goto error echo Building SPIRV-Cross... -rmdir /S /Q "SPIRV-Cross-%SPIRV_CROSS%" -%SEVENZIP% x "SPIRV-Cross-%SPIRV_CROSS%.zip" || goto error -cd "SPIRV-Cross-%SPIRV_CROSS%" || goto error +cd SPIRV-Cross || goto error +rmdir /S /Q "build" cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DSPIRV_CROSS_SHARED=ON -DSPIRV_CROSS_STATIC=OFF -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_ENABLE_GLSL=ON -DSPIRV_CROSS_ENABLE_HLSL=ON -DSPIRV_CROSS_ENABLE_MSL=OFF -DSPIRV_CROSS_ENABLE_CPP=OFF -DSPIRV_CROSS_ENABLE_REFLECT=OFF -DSPIRV_CROSS_ENABLE_C_API=ON -DSPIRV_CROSS_ENABLE_UTIL=ON -B build -G Ninja cmake --build build --parallel || goto error ninja -C build install || goto error @@ -269,7 +256,6 @@ echo Building cpuinfo... rmdir /S /Q "cpuinfo-%CPUINFO%" %SEVENZIP% x "cpuinfo-%CPUINFO%.zip" || goto error cd "cpuinfo-%CPUINFO%" || goto error -%PATCH% -p1 < "%SCRIPTDIR%\cpuinfo-changes.patch" || goto error cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="%INSTALLDIR%" -DCMAKE_INSTALL_PREFIX="%INSTALLDIR%" -DCPUINFO_LIBRARY_TYPE=shared -DCPUINFO_RUNTIME_TYPE=shared -DCPUINFO_LOG_LEVEL=error -DCPUINFO_LOG_TO_STDIO=ON -DCPUINFO_BUILD_TOOLS=OFF -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF -DUSE_SYSTEM_LIBS=ON -B build -G Ninja cmake --build build --parallel || goto error ninja -C build install || goto error diff --git a/scripts/deps/cpuinfo-changes.patch b/scripts/deps/cpuinfo-changes.patch deleted file mode 100644 index c57201541..000000000 --- a/scripts/deps/cpuinfo-changes.patch +++ /dev/null @@ -1,223 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -253,6 +253,8 @@ - IF(CPUINFO_LIBRARY_TYPE STREQUAL "default") - ADD_LIBRARY(cpuinfo ${CPUINFO_SRCS}) - ELSEIF(CPUINFO_LIBRARY_TYPE STREQUAL "shared") -+ SET(CMAKE_C_VISIBILITY_PRESET hidden) -+ SET(CMAKE_CXX_VISIBILITY_PRESET hidden) - ADD_LIBRARY(cpuinfo SHARED ${CPUINFO_SRCS}) - ELSEIF(CPUINFO_LIBRARY_TYPE STREQUAL "static") - ADD_LIBRARY(cpuinfo STATIC ${CPUINFO_SRCS}) -@@ -301,8 +303,14 @@ - TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE "CPUINFO_LOG_LEVEL=0") - TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE "CPUINFO_LOG_TO_STDIO=1") - -+IF(CPUINFO_LIBRARY_TYPE STREQUAL "shared") -+ TARGET_COMPILE_DEFINITIONS(cpuinfo PUBLIC CPUINFO_SHARED) -+ TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_BUILD) -+ TARGET_COMPILE_DEFINITIONS(cpuinfo_internals PRIVATE CPUINFO_SHARED CPUINFO_BUILD) -+ENDIF() -+ - IF(CPUINFO_SUPPORTED_PLATFORM) -- TARGET_COMPILE_DEFINITIONS(cpuinfo INTERFACE CPUINFO_SUPPORTED_PLATFORM=1) -+ TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_SUPPORTED_PLATFORM=1) - IF(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android") - TARGET_LINK_LIBRARIES(cpuinfo PUBLIC ${CMAKE_THREAD_LIBS_INIT}) - TARGET_LINK_LIBRARIES(cpuinfo_internals PUBLIC ${CMAKE_THREAD_LIBS_INIT}) -@@ -313,7 +321,7 @@ - TARGET_LINK_LIBRARIES(cpuinfo_internals PUBLIC ${CMAKE_THREAD_LIBS_INIT}) - ENDIF() - ELSE() -- TARGET_COMPILE_DEFINITIONS(cpuinfo INTERFACE CPUINFO_SUPPORTED_PLATFORM=0) -+ TARGET_COMPILE_DEFINITIONS(cpuinfo PRIVATE CPUINFO_SUPPORTED_PLATFORM=0) - ENDIF() - - ADD_LIBRARY(${PROJECT_NAME}::cpuinfo ALIAS cpuinfo) -@@ -329,6 +337,7 @@ - - INSTALL(TARGETS cpuinfo - EXPORT cpuinfo-targets -+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) ---- a/include/cpuinfo.h -+++ b/include/cpuinfo.h -@@ -96,6 +96,24 @@ - #define CPUINFO_ARCH_RISCV64 0 - #endif - -+#ifdef CPUINFO_SHARED -+#ifdef _WIN32 -+#ifdef CPUINFO_BUILD -+#define CPUINFO_EXPORT __declspec(dllexport) -+#else -+#define CPUINFO_EXPORT __declspec(dllimport) -+#endif -+#else -+#ifdef CPUINFO_BUILD -+#define CPUINFO_EXPORT __attribute__((visibility("default"))) -+#else -+#define CPUINFO_EXPORT -+#endif -+#endif -+#else -+#define CPUINFO_EXPORT -+#endif -+ - #if CPUINFO_ARCH_X86 && defined(_MSC_VER) - #define CPUINFO_ABI __cdecl - #elif CPUINFO_ARCH_X86 && defined(__GNUC__) -@@ -735,9 +753,9 @@ - extern "C" { - #endif - --bool CPUINFO_ABI cpuinfo_initialize(void); -+CPUINFO_EXPORT bool CPUINFO_ABI cpuinfo_initialize(void); - --void CPUINFO_ABI cpuinfo_deinitialize(void); -+CPUINFO_EXPORT void CPUINFO_ABI cpuinfo_deinitialize(void); - - #if CPUINFO_ARCH_X86 || CPUINFO_ARCH_X86_64 - /* This structure is not a part of stable API. Use cpuinfo_has_x86_* functions -@@ -856,7 +874,7 @@ - bool lwp; - }; - --extern struct cpuinfo_x86_isa cpuinfo_isa; -+extern CPUINFO_EXPORT struct cpuinfo_x86_isa cpuinfo_isa; - #endif - - static inline bool cpuinfo_has_x86_rdtsc(void) { -@@ -1679,7 +1697,7 @@ - bool crc32; - }; - --extern struct cpuinfo_arm_isa cpuinfo_isa; -+extern CPUINFO_EXPORT struct cpuinfo_arm_isa cpuinfo_isa; - #endif - - static inline bool cpuinfo_has_arm_thumb(void) { -@@ -2064,7 +2082,7 @@ - bool v; - }; - --extern struct cpuinfo_riscv_isa cpuinfo_isa; -+extern CPUINFO_EXPORT struct cpuinfo_riscv_isa cpuinfo_isa; - #endif - - static inline bool cpuinfo_has_riscv_i(void) { -@@ -2137,43 +2155,43 @@ - #endif - } - --const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processors(void); --const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_cores(void); --const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_clusters(void); --const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_packages(void); --const struct cpuinfo_uarch_info* CPUINFO_ABI cpuinfo_get_uarchs(void); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_caches(void); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_caches(void); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_caches(void); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_caches(void); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_caches(void); -- --const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processor(uint32_t index); --const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_core(uint32_t index); --const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_cluster(uint32_t index); --const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_package(uint32_t index); --const struct cpuinfo_uarch_info* CPUINFO_ABI cpuinfo_get_uarch(uint32_t index); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_cache(uint32_t index); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_cache(uint32_t index); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_cache(uint32_t index); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_cache(uint32_t index); --const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_cache(uint32_t index); -- --uint32_t CPUINFO_ABI cpuinfo_get_processors_count(void); --uint32_t CPUINFO_ABI cpuinfo_get_cores_count(void); --uint32_t CPUINFO_ABI cpuinfo_get_clusters_count(void); --uint32_t CPUINFO_ABI cpuinfo_get_packages_count(void); --uint32_t CPUINFO_ABI cpuinfo_get_uarchs_count(void); --uint32_t CPUINFO_ABI cpuinfo_get_l1i_caches_count(void); --uint32_t CPUINFO_ABI cpuinfo_get_l1d_caches_count(void); --uint32_t CPUINFO_ABI cpuinfo_get_l2_caches_count(void); --uint32_t CPUINFO_ABI cpuinfo_get_l3_caches_count(void); --uint32_t CPUINFO_ABI cpuinfo_get_l4_caches_count(void); -+CPUINFO_EXPORT const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processors(void); -+CPUINFO_EXPORT const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_cores(void); -+CPUINFO_EXPORT const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_clusters(void); -+CPUINFO_EXPORT const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_packages(void); -+CPUINFO_EXPORT const struct cpuinfo_uarch_info* CPUINFO_ABI cpuinfo_get_uarchs(void); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_caches(void); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_caches(void); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_caches(void); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_caches(void); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_caches(void); -+ -+CPUINFO_EXPORT const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_processor(uint32_t index); -+CPUINFO_EXPORT const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_core(uint32_t index); -+CPUINFO_EXPORT const struct cpuinfo_cluster* CPUINFO_ABI cpuinfo_get_cluster(uint32_t index); -+CPUINFO_EXPORT const struct cpuinfo_package* CPUINFO_ABI cpuinfo_get_package(uint32_t index); -+CPUINFO_EXPORT const struct cpuinfo_uarch_info* CPUINFO_ABI cpuinfo_get_uarch(uint32_t index); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1i_cache(uint32_t index); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l1d_cache(uint32_t index); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l2_cache(uint32_t index); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l3_cache(uint32_t index); -+CPUINFO_EXPORT const struct cpuinfo_cache* CPUINFO_ABI cpuinfo_get_l4_cache(uint32_t index); -+ -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_processors_count(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_cores_count(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_clusters_count(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_packages_count(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_uarchs_count(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_l1i_caches_count(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_l1d_caches_count(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_l2_caches_count(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_l3_caches_count(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_l4_caches_count(void); - - /** - * Returns upper bound on cache size. - */ --uint32_t CPUINFO_ABI cpuinfo_get_max_cache_size(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_max_cache_size(void); - - /** - * Identify the logical processor that executes the current thread. -@@ -2182,7 +2200,7 @@ - * for any time. Callers should treat the result as only a hint, and be prepared - * to handle NULL return value. - */ --const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_current_processor(void); -+CPUINFO_EXPORT const struct cpuinfo_processor* CPUINFO_ABI cpuinfo_get_current_processor(void); - - /** - * Identify the core that executes the current thread. -@@ -2191,7 +2209,7 @@ - * time. Callers should treat the result as only a hint, and be prepared to - * handle NULL return value. - */ --const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_current_core(void); -+CPUINFO_EXPORT const struct cpuinfo_core* CPUINFO_ABI cpuinfo_get_current_core(void); - - /** - * Identify the microarchitecture index of the core that executes the current -@@ -2201,7 +2219,7 @@ - * There is no guarantee that the thread will stay on the same type of core for - * any time. Callers should treat the result as only a hint. - */ --uint32_t CPUINFO_ABI cpuinfo_get_current_uarch_index(void); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_current_uarch_index(void); - - /** - * Identify the microarchitecture index of the core that executes the current -@@ -2211,7 +2229,7 @@ - * There is no guarantee that the thread will stay on the same type of core for - * any time. Callers should treat the result as only a hint. - */ --uint32_t CPUINFO_ABI cpuinfo_get_current_uarch_index_with_default(uint32_t default_uarch_index); -+CPUINFO_EXPORT uint32_t CPUINFO_ABI cpuinfo_get_current_uarch_index_with_default(uint32_t default_uarch_index); - - #ifdef __cplusplus - } /* extern "C" */ diff --git a/scripts/deps/shaderc-changes.patch b/scripts/deps/shaderc-changes.patch deleted file mode 100644 index d235df621..000000000 --- a/scripts/deps/shaderc-changes.patch +++ /dev/null @@ -1,586 +0,0 @@ -diff --git a/CHANGES b/CHANGES -index 5d3dd16..587b612 100644 ---- a/CHANGES -+++ b/CHANGES -@@ -4,7 +4,7 @@ v2024.1 - - Update dependencies - - Propagate test/install options to Glslang - --v2024.0 -+v2024.0 2024-03-09 - - Update dependencies - - Utilities: - - Use Python3 explicitly in utility scripts -diff --git a/CMakeLists.txt b/CMakeLists.txt -index ffcb54b..7c1a6d8 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -117,6 +117,9 @@ if(MSVC) - endif() - endif(MSVC) - -+if(NOT WIN32) -+ add_definitions("-fvisibility=hidden") -+endif() - - # Configure subdirectories. - # We depend on these for later projects, so they should come first. -@@ -124,7 +127,6 @@ add_subdirectory(third_party) - - add_subdirectory(libshaderc_util) - add_subdirectory(libshaderc) --add_subdirectory(glslc) - if(${SHADERC_ENABLE_EXAMPLES}) - add_subdirectory(examples) - endif() -@@ -158,5 +160,3 @@ function(define_pkg_config_file NAME LIBS) - endfunction() - - define_pkg_config_file(shaderc -lshaderc_shared) --define_pkg_config_file(shaderc_static "-lshaderc ${EXTRA_STATIC_PKGCONFIG_LIBS} -lshaderc_util") --define_pkg_config_file(shaderc_combined -lshaderc_combined) -diff --git a/libshaderc/CMakeLists.txt b/libshaderc/CMakeLists.txt -index df9a88d..b15e5d7 100644 ---- a/libshaderc/CMakeLists.txt -+++ b/libshaderc/CMakeLists.txt -@@ -24,13 +24,6 @@ - src/shaderc_private.h - ) - --add_library(shaderc STATIC ${SHADERC_SOURCES}) --shaderc_default_compile_options(shaderc) --target_include_directories(shaderc -- PUBLIC include -- PRIVATE ${glslang_SOURCE_DIR} -- ${SPIRV-Headers_SOURCE_DIR}/include) -- - add_library(shaderc_shared SHARED ${SHADERC_SOURCES}) - shaderc_default_compile_options(shaderc_shared) - target_include_directories(shaderc_shared -@@ -41,7 +34,6 @@ - PRIVATE SHADERC_IMPLEMENTATION - PUBLIC SHADERC_SHAREDLIB - ) --set_target_properties(shaderc_shared PROPERTIES SOVERSION 1) - - if(SHADERC_ENABLE_INSTALL) - install( -@@ -54,7 +46,7 @@ - DESTINATION - ${CMAKE_INSTALL_INCLUDEDIR}/shaderc) - -- install(TARGETS shaderc shaderc_shared -+ install(TARGETS shaderc_shared - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} -@@ -69,21 +61,9 @@ - SPIRV-Tools - ) - --target_link_libraries(shaderc PRIVATE ${SHADERC_LIBS}) - target_link_libraries(shaderc_shared PRIVATE ${SHADERC_LIBS}) - - shaderc_add_tests( -- TEST_PREFIX shaderc -- LINK_LIBS shaderc -- INCLUDE_DIRS include ${shaderc_SOURCE_DIR}/libshaderc_util/include ${glslang_SOURCE_DIR} -- ${spirv-tools_SOURCE_DIR}/include -- ${SPIRV-Headers_SOURCE_DIR}/include -- TEST_NAMES -- shaderc -- shaderc_cpp -- shaderc_private) -- --shaderc_add_tests( - TEST_PREFIX shaderc_shared - LINK_LIBS shaderc_shared SPIRV-Tools - INCLUDE_DIRS include ${shaderc_SOURCE_DIR}/libshaderc_util/include ${glslang_SOURCE_DIR} -@@ -94,22 +74,6 @@ - shaderc_cpp - shaderc_private) - --shaderc_combine_static_lib(shaderc_combined shaderc) -- --if(SHADERC_ENABLE_INSTALL) -- install(TARGETS shaderc_combined DESTINATION ${CMAKE_INSTALL_LIBDIR}) --endif(SHADERC_ENABLE_INSTALL) -- --shaderc_add_tests( -- TEST_PREFIX shaderc_combined -- LINK_LIBS shaderc_combined ${CMAKE_THREAD_LIBS_INIT} -- INCLUDE_DIRS include ${shaderc_SOURCE_DIR}/libshaderc_util/include ${glslang_SOURCE_DIR} -- ${spirv-tools_SOURCE_DIR}/include -- ${SPIRV-Headers_SOURCE_DIR}/include -- TEST_NAMES -- shaderc -- shaderc_cpp) -- - if(${SHADERC_ENABLE_TESTS}) - add_executable(shaderc_c_smoke_test ./src/shaderc_c_smoke_test.c) - shaderc_default_c_compile_options(shaderc_c_smoke_test) -diff --git a/libshaderc/include/shaderc/shaderc.h b/libshaderc/include/shaderc/shaderc.h -index 3a3e97d..65d5b77 100644 ---- a/libshaderc/include/shaderc/shaderc.h -+++ b/libshaderc/include/shaderc/shaderc.h -@@ -317,7 +317,7 @@ SHADERC_EXPORT void shaderc_compile_options_set_source_language( - - // Sets the compiler mode to generate debug information in the output. - SHADERC_EXPORT void shaderc_compile_options_set_generate_debug_info( -- shaderc_compile_options_t options); -+ shaderc_compile_options_t options, bool enabled, bool enable_non_semantic); - - // Sets the compiler optimization level to the given level. Only the last one - // takes effect if multiple calls of this function exist. -@@ -506,6 +506,10 @@ SHADERC_EXPORT void shaderc_compile_options_set_invert_y( - SHADERC_EXPORT void shaderc_compile_options_set_nan_clamp( - shaderc_compile_options_t options, bool enable); - -+// Returns a string representation of the specified compilation status. -+SHADERC_EXPORT const char* shaderc_compilation_status_to_string( -+ shaderc_compilation_status status); -+ - // An opaque handle to the results of a call to any shaderc_compile_into_*() - // function. - typedef struct shaderc_compilation_result* shaderc_compilation_result_t; -@@ -529,28 +533,31 @@ typedef struct shaderc_compilation_result* shaderc_compilation_result_t; - // present. May be safely called from multiple threads without explicit - // synchronization. If there was failure in allocating the compiler object, - // null will be returned. --SHADERC_EXPORT shaderc_compilation_result_t shaderc_compile_into_spv( -+SHADERC_EXPORT shaderc_compilation_status shaderc_compile_into_spv( - const shaderc_compiler_t compiler, const char* source_text, - size_t source_text_size, shaderc_shader_kind shader_kind, - const char* input_file_name, const char* entry_point_name, -- const shaderc_compile_options_t additional_options); -+ const shaderc_compile_options_t additional_options, -+ shaderc_compilation_result_t* result); - - // Like shaderc_compile_into_spv, but the result contains SPIR-V assembly text - // instead of a SPIR-V binary module. The SPIR-V assembly syntax is as defined - // by the SPIRV-Tools open source project. --SHADERC_EXPORT shaderc_compilation_result_t shaderc_compile_into_spv_assembly( -+SHADERC_EXPORT shaderc_compilation_status shaderc_compile_into_spv_assembly( - const shaderc_compiler_t compiler, const char* source_text, - size_t source_text_size, shaderc_shader_kind shader_kind, - const char* input_file_name, const char* entry_point_name, -- const shaderc_compile_options_t additional_options); -+ const shaderc_compile_options_t additional_options, -+ shaderc_compilation_result_t* result); - - // Like shaderc_compile_into_spv, but the result contains preprocessed source - // code instead of a SPIR-V binary module --SHADERC_EXPORT shaderc_compilation_result_t shaderc_compile_into_preprocessed_text( -+SHADERC_EXPORT shaderc_compilation_status shaderc_compile_into_preprocessed_text( - const shaderc_compiler_t compiler, const char* source_text, - size_t source_text_size, shaderc_shader_kind shader_kind, - const char* input_file_name, const char* entry_point_name, -- const shaderc_compile_options_t additional_options); -+ const shaderc_compile_options_t additional_options, -+ shaderc_compilation_result_t* result); - - // Takes an assembly string of the format defined in the SPIRV-Tools project - // (https://github.com/KhronosGroup/SPIRV-Tools/blob/master/syntax.md), -@@ -561,10 +568,11 @@ SHADERC_EXPORT shaderc_compilation_result_t shaderc_compile_into_preprocessed_te - // May be safely called from multiple threads without explicit synchronization. - // If there was failure in allocating the compiler object, null will be - // returned. --SHADERC_EXPORT shaderc_compilation_result_t shaderc_assemble_into_spv( -+SHADERC_EXPORT shaderc_compilation_status shaderc_assemble_into_spv( - const shaderc_compiler_t compiler, const char* source_assembly, - size_t source_assembly_size, -- const shaderc_compile_options_t additional_options); -+ const shaderc_compile_options_t additional_options, -+ shaderc_compilation_result_t* result); - - // The following functions, operating on shaderc_compilation_result_t objects, - // offer only the basic thread-safety guarantee. -diff --git a/libshaderc/include/shaderc/shaderc.hpp b/libshaderc/include/shaderc/shaderc.hpp -index 3817af8..5592b49 100644 ---- a/libshaderc/include/shaderc/shaderc.hpp -+++ b/libshaderc/include/shaderc/shaderc.hpp -@@ -168,8 +168,9 @@ class CompileOptions { - } - - // Sets the compiler mode to generate debug information in the output. -- void SetGenerateDebugInfo() { -- shaderc_compile_options_set_generate_debug_info(options_); -+ void SetGenerateDebugInfo(bool enabled, bool non_semantic_debug_info) { -+ shaderc_compile_options_set_generate_debug_info(options_, enabled, -+ non_sematic_debug_info); - } - - // Sets the compiler optimization level to the given level. Only the last one -@@ -425,9 +426,10 @@ class Compiler { - const char* input_file_name, - const char* entry_point_name, - const CompileOptions& options) const { -- shaderc_compilation_result_t compilation_result = shaderc_compile_into_spv( -+ shaderc_compilation_result_t compilation_result = nullptr; -+ shaderc_compile_into_spv( - compiler_, source_text, source_text_size, shader_kind, input_file_name, -- entry_point_name, options.options_); -+ entry_point_name, options.options_, &compilation_result); - return SpvCompilationResult(compilation_result); - } - -@@ -451,9 +453,10 @@ class Compiler { - size_t source_text_size, - shaderc_shader_kind shader_kind, - const char* input_file_name) const { -- shaderc_compilation_result_t compilation_result = -- shaderc_compile_into_spv(compiler_, source_text, source_text_size, -- shader_kind, input_file_name, "main", nullptr); -+ shaderc_compilation_result_t compilation_result = nullptr; -+ shaderc_compile_into_spv(compiler_, source_text, source_text_size, -+ shader_kind, input_file_name, "main", nullptr, -+ &compilation_result); - return SpvCompilationResult(compilation_result); - } - -@@ -504,8 +507,11 @@ class Compiler { - SpvCompilationResult AssembleToSpv(const char* source_assembly, - size_t source_assembly_size, - const CompileOptions& options) const { -- return SpvCompilationResult(shaderc_assemble_into_spv( -- compiler_, source_assembly, source_assembly_size, options.options_)); -+ shaderc_compilation_result_t compilation_result = nullptr; -+ shaderc_assemble_into_spv( -+ compiler_, source_assembly, source_assembly_size, options.options_, -+ &compilation_result); -+ return SpvCompilationResult(compilation_result); - } - - // Assembles the given SPIR-V assembly and returns a SPIR-V binary module -@@ -513,8 +519,11 @@ class Compiler { - // Like the first AssembleToSpv method but uses the default compiler options. - SpvCompilationResult AssembleToSpv(const char* source_assembly, - size_t source_assembly_size) const { -- return SpvCompilationResult(shaderc_assemble_into_spv( -- compiler_, source_assembly, source_assembly_size, nullptr)); -+ shaderc_compilation_result_t compilation_result = nullptr; -+ shaderc_assemble_into_spv( -+ compiler_, source_assembly, source_assembly_size, nullptr, -+ &compilation_result); -+ return SpvCompilationResult(compilation_result); - } - - // Assembles the given SPIR-V assembly and returns a SPIR-V binary module -@@ -523,9 +532,11 @@ class Compiler { - // std::string. - SpvCompilationResult AssembleToSpv(const std::string& source_assembly, - const CompileOptions& options) const { -- return SpvCompilationResult( -- shaderc_assemble_into_spv(compiler_, source_assembly.data(), -- source_assembly.size(), options.options_)); -+ shaderc_compilation_result_t compilation_result = nullptr; -+ shaderc_assemble_into_spv( -+ compiler_, source_assembly.data(), source_assembly.size(), -+ options.options_, &compilation_result); -+ return SpvCompilationResult(compilation_result); - } - - // Assembles the given SPIR-V assembly and returns a SPIR-V binary module -@@ -533,8 +544,10 @@ class Compiler { - // Like the first AssembleToSpv method but the source is provided as a - // std::string and also uses default compiler options. - SpvCompilationResult AssembleToSpv(const std::string& source_assembly) const { -- return SpvCompilationResult(shaderc_assemble_into_spv( -- compiler_, source_assembly.data(), source_assembly.size(), nullptr)); -+ shaderc_compilation_result_t compilation_result = nullptr; -+ shaderc_assemble_into_spv(compiler_, source_assembly.data(), -+ source_assembly.size(), nullptr, &compilation_result); -+ return SpvCompilationResult(compilation_result); - } - - // Compiles the given source GLSL and returns the SPIR-V assembly text -@@ -544,10 +557,11 @@ class Compiler { - const char* source_text, size_t source_text_size, - shaderc_shader_kind shader_kind, const char* input_file_name, - const char* entry_point_name, const CompileOptions& options) const { -- shaderc_compilation_result_t compilation_result = -- shaderc_compile_into_spv_assembly( -- compiler_, source_text, source_text_size, shader_kind, -- input_file_name, entry_point_name, options.options_); -+ shaderc_compilation_result_t compilation_result = nullptr; -+ shaderc_compile_into_spv_assembly( -+ compiler_, source_text, source_text_size, shader_kind, -+ input_file_name, entry_point_name, options.options_, -+ &compilation_result); - return AssemblyCompilationResult(compilation_result); - } - -@@ -592,10 +606,10 @@ class Compiler { - const char* source_text, size_t source_text_size, - shaderc_shader_kind shader_kind, const char* input_file_name, - const CompileOptions& options) const { -- shaderc_compilation_result_t compilation_result = -- shaderc_compile_into_preprocessed_text( -+ shaderc_compilation_result_t compilation_result; -+ shaderc_compile_into_preprocessed_text( - compiler_, source_text, source_text_size, shader_kind, -- input_file_name, "main", options.options_); -+ input_file_name, "main", options.options_, &compilation_result); - return PreprocessedSourceCompilationResult(compilation_result); - } - -diff --git a/libshaderc/src/shaderc.cc b/libshaderc/src/shaderc.cc -index 63f1bbc..c1a9b12 100644 ---- a/libshaderc/src/shaderc.cc -+++ b/libshaderc/src/shaderc.cc -@@ -418,8 +418,12 @@ void shaderc_compile_options_set_source_language( - } - - void shaderc_compile_options_set_generate_debug_info( -- shaderc_compile_options_t options) { -- options->compiler.SetGenerateDebugInfo(); -+ shaderc_compile_options_t options, bool enabled, bool enable_non_semantic) { -+ if (enabled) { -+ options->compiler.SetGenerateDebugInfo(); -+ if (enable_non_semantic) -+ options->compiler.SetEmitNonSemanticDebugInfo(); -+ } - } - - void shaderc_compile_options_set_optimization_level( -@@ -591,8 +595,31 @@ void shaderc_compiler_release(shaderc_compiler_t compiler) { - delete compiler; - } - -+const char* shaderc_compilation_status_to_string(shaderc_compilation_status status) -+{ -+ static constexpr const std::pair status_names[] = { -+ {shaderc_compilation_status_success, "shaderc_compilation_status_success"}, -+ {shaderc_compilation_status_invalid_stage, "shaderc_compilation_status_invalid_stage"}, -+ {shaderc_compilation_status_compilation_error, "shaderc_compilation_status_compilation_error"}, -+ {shaderc_compilation_status_internal_error, "shaderc_compilation_status_internal_error"}, -+ {shaderc_compilation_status_null_result_object, "shaderc_compilation_status_null_result_object"}, -+ {shaderc_compilation_status_invalid_assembly, "shaderc_compilation_status_invalid_assembly"}, -+ {shaderc_compilation_status_validation_error, "shaderc_compilation_status_validation_error"}, -+ {shaderc_compilation_status_transformation_error, "shaderc_compilation_status_transformation_error"}, -+ {shaderc_compilation_status_configuration_error, "shaderc_compilation_status_configuration_error"}, -+ }; -+ -+ for (const auto& it : status_names) -+ { -+ if (status == it.first) -+ return it.second; -+ } -+ -+ return "shaderc_compilation_status_unknown"; -+} -+ - namespace { --shaderc_compilation_result_t CompileToSpecifiedOutputType( -+shaderc_compilation_result_vector* CompileToSpecifiedOutputType( - const shaderc_compiler_t compiler, const char* source_text, - size_t source_text_size, shaderc_shader_kind shader_kind, - const char* input_file_name, const char* entry_point_name, -@@ -669,48 +696,59 @@ shaderc_compilation_result_t CompileToSpecifiedOutputType( - } - } // anonymous namespace - --shaderc_compilation_result_t shaderc_compile_into_spv( -+shaderc_compilation_status shaderc_compile_into_spv( - const shaderc_compiler_t compiler, const char* source_text, - size_t source_text_size, shaderc_shader_kind shader_kind, - const char* input_file_name, const char* entry_point_name, -- const shaderc_compile_options_t additional_options) { -- return CompileToSpecifiedOutputType( -+ const shaderc_compile_options_t additional_options, -+ shaderc_compilation_result_t* result) { -+ shaderc_compilation_result_vector* resultv = CompileToSpecifiedOutputType( - compiler, source_text, source_text_size, shader_kind, input_file_name, - entry_point_name, additional_options, - shaderc_util::Compiler::OutputType::SpirvBinary); -+ *result = resultv; -+ return resultv ? resultv->compilation_status : shaderc_compilation_status_internal_error; - } - --shaderc_compilation_result_t shaderc_compile_into_spv_assembly( -+shaderc_compilation_status shaderc_compile_into_spv_assembly( - const shaderc_compiler_t compiler, const char* source_text, - size_t source_text_size, shaderc_shader_kind shader_kind, - const char* input_file_name, const char* entry_point_name, -- const shaderc_compile_options_t additional_options) { -- return CompileToSpecifiedOutputType( -+ const shaderc_compile_options_t additional_options, -+ shaderc_compilation_result_t* result) { -+ shaderc_compilation_result_vector* resultv = CompileToSpecifiedOutputType( - compiler, source_text, source_text_size, shader_kind, input_file_name, - entry_point_name, additional_options, - shaderc_util::Compiler::OutputType::SpirvAssemblyText); -+ *result = resultv; -+ return resultv ? resultv->compilation_status : shaderc_compilation_status_internal_error; - } - --shaderc_compilation_result_t shaderc_compile_into_preprocessed_text( -+shaderc_compilation_status shaderc_compile_into_preprocessed_text( - const shaderc_compiler_t compiler, const char* source_text, - size_t source_text_size, shaderc_shader_kind shader_kind, - const char* input_file_name, const char* entry_point_name, -- const shaderc_compile_options_t additional_options) { -- return CompileToSpecifiedOutputType( -+ const shaderc_compile_options_t additional_options, -+ shaderc_compilation_result_t* result) { -+ shaderc_compilation_result_vector* resultv = CompileToSpecifiedOutputType( - compiler, source_text, source_text_size, shader_kind, input_file_name, - entry_point_name, additional_options, - shaderc_util::Compiler::OutputType::PreprocessedText); -+ *result = resultv; -+ return resultv ? resultv->compilation_status : shaderc_compilation_status_internal_error; - } - --shaderc_compilation_result_t shaderc_assemble_into_spv( -+shaderc_compilation_status shaderc_assemble_into_spv( - const shaderc_compiler_t compiler, const char* source_assembly, - size_t source_assembly_size, -- const shaderc_compile_options_t additional_options) { -- auto* result = new (std::nothrow) shaderc_compilation_result_spv_binary; -- if (!result) return nullptr; -- result->compilation_status = shaderc_compilation_status_invalid_assembly; -- if (!compiler->initializer) return result; -- if (source_assembly == nullptr) return result; -+ const shaderc_compile_options_t additional_options, -+ shaderc_compilation_result_t* result) { -+ auto* bresult = new (std::nothrow) shaderc_compilation_result_spv_binary; -+ if (!bresult) return shaderc_compilation_status_internal_error; -+ bresult->compilation_status = shaderc_compilation_status_invalid_assembly; -+ *result = bresult; -+ if (!compiler->initializer) return bresult->compilation_status; -+ if (source_assembly == nullptr) return bresult->compilation_status; - - TRY_IF_EXCEPTIONS_ENABLED { - spv_binary assembling_output_data = nullptr; -@@ -724,22 +762,22 @@ shaderc_compilation_result_t shaderc_assemble_into_spv( - GetCompilerTargetEnvVersion(target_env_version), - {source_assembly, source_assembly + source_assembly_size}, - &assembling_output_data, &errors); -- result->num_errors = !assembling_succeeded; -+ bresult->num_errors = !assembling_succeeded; - if (assembling_succeeded) { -- result->SetOutputData(assembling_output_data); -- result->output_data_size = -+ bresult->SetOutputData(assembling_output_data); -+ bresult->output_data_size = - assembling_output_data->wordCount * sizeof(uint32_t); -- result->compilation_status = shaderc_compilation_status_success; -+ bresult->compilation_status = shaderc_compilation_status_success; - } else { -- result->messages = std::move(errors); -- result->compilation_status = shaderc_compilation_status_invalid_assembly; -+ bresult->messages = std::move(errors); -+ bresult->compilation_status = shaderc_compilation_status_invalid_assembly; - } - } - CATCH_IF_EXCEPTIONS_ENABLED(...) { -- result->compilation_status = shaderc_compilation_status_internal_error; -+ bresult->compilation_status = shaderc_compilation_status_internal_error; - } - -- return result; -+ return bresult->compilation_status; - } - - size_t shaderc_result_get_length(const shaderc_compilation_result_t result) { -diff --git a/libshaderc_util/include/libshaderc_util/compiler.h b/libshaderc_util/include/libshaderc_util/compiler.h -index d9d02b9..b076ec8 100644 ---- a/libshaderc_util/include/libshaderc_util/compiler.h -+++ b/libshaderc_util/include/libshaderc_util/compiler.h -@@ -195,6 +195,7 @@ class Compiler { - warnings_as_errors_(false), - suppress_warnings_(false), - generate_debug_info_(false), -+ emit_non_semantic_debug_info_(false), - enabled_opt_passes_(), - target_env_(TargetEnv::Vulkan), - target_env_version_(TargetEnvVersion::Default), -@@ -220,6 +221,10 @@ class Compiler { - // such as identifier names and line numbers. - void SetGenerateDebugInfo(); - -+ // Requests that the compiler emit non-semantic debug information. -+ // Requires VK_KHR_shader_non_semantic_info. -+ void SetEmitNonSemanticDebugInfo(); -+ - // Sets the optimization level to the given level. Only the last one takes - // effect if multiple calls of this method exist. - void SetOptimizationLevel(OptimizationLevel level); -@@ -486,6 +491,10 @@ class Compiler { - // output. - bool generate_debug_info_; - -+ // When true and generate_debug_info_ is also set, generate non-semantic debug -+ // information. -+ bool emit_non_semantic_debug_info_; -+ - // Optimization passes to be applied. - std::vector enabled_opt_passes_; - -diff --git a/libshaderc_util/src/compiler.cc b/libshaderc_util/src/compiler.cc -index e5f5d10..1f9e6a5 100644 ---- a/libshaderc_util/src/compiler.cc -+++ b/libshaderc_util/src/compiler.cc -@@ -341,6 +341,11 @@ std::tuple, size_t> Compiler::Compile( - options.generateDebugInfo = generate_debug_info_; - options.disableOptimizer = true; - options.optimizeSize = false; -+ options.emitNonSemanticShaderDebugInfo = -+ generate_debug_info_ && emit_non_semantic_debug_info_; -+ options.emitNonSemanticShaderDebugSource = -+ generate_debug_info_ && emit_non_semantic_debug_info_; -+ - // Note the call to GlslangToSpv also populates compilation_output_data. - glslang::GlslangToSpv(*program.getIntermediate(used_shader_stage), spirv, - &options); -@@ -438,6 +443,10 @@ void Compiler::SetGenerateDebugInfo() { - } - } - -+void Compiler::SetEmitNonSemanticDebugInfo() { -+ emit_non_semantic_debug_info_ = true; -+} -+ - void Compiler::SetOptimizationLevel(Compiler::OptimizationLevel level) { - // Clear previous settings first. - enabled_opt_passes_.clear(); -diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt -index d44f62a..83966b6 100644 ---- a/third_party/CMakeLists.txt -+++ b/third_party/CMakeLists.txt -@@ -20,9 +20,9 @@ set(SHADERC_TINT_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/tint" CACHE STRING - set(SHADERC_ABSL_DIR "${SHADERC_THIRD_PARTY_ROOT_DIR}/abseil_cpp" CACHE STRING - "Location of re2 source") - --set( SKIP_GLSLANG_INSTALL ${SHADERC_SKIP_INSTALL} ) --set( SKIP_SPIRV_TOOLS_INSTALL ${SHADERC_SKIP_INSTALL} ) --set( SKIP_GOOGLETEST_INSTALL ${SHADERC_SKIP_INSTALL} ) -+set( SKIP_GLSLANG_INSTALL ON ) -+set( SKIP_SPIRV_TOOLS_INSTALL ON ) -+set( SKIP_GOOGLETEST_INSTALL ON ) - - # Configure third party projects. - if(${SHADERC_ENABLE_TESTS}) -@@ -64,7 +64,10 @@ if (NOT TARGET SPIRV-Tools) - add_subdirectory(${SHADERC_RE2_DIR} re2) - add_subdirectory(${SHADERC_EFFCEE_DIR} effcee) - endif() -- add_subdirectory(${SHADERC_SPIRV_TOOLS_DIR} spirv-tools) -+ set(SPIRV_SKIP_EXECUTABLES ON CACHE BOOL "Skip building SPIRV-Tools executables") -+ set(SPIRV_TOOLS_BUILD_STATIC OFF CACHE BOOL "Skip building two SPIRV-Tools libs") -+ set(SPIRV_TOOLS_LIBRARY_TYPE STATIC CACHE STRING "Build static SPIRV-Tools libs") -+ add_subdirectory(${SHADERC_SPIRV_TOOLS_DIR} spirv-tools EXCLUDE_FROM_ALL) - if (NOT "${SPIRV_SKIP_TESTS}") - if (MSVC) - if (${MSVC_VERSION} LESS 1920) -@@ -87,8 +90,8 @@ if (NOT TARGET glslang) - # Glslang tests are off by default. Turn them on if testing Shaderc. - set(GLSLANG_TESTS ON) - endif() -- set(GLSLANG_ENABLE_INSTALL $) -- add_subdirectory(${SHADERC_GLSLANG_DIR} glslang) -+ set(GLSLANG_ENABLE_INSTALL OFF) -+ add_subdirectory(${SHADERC_GLSLANG_DIR} glslang EXCLUDE_FROM_ALL) - endif() - if (NOT TARGET glslang) - message(FATAL_ERROR "glslang was not found - required for compilation") diff --git a/scripts/deps/spirv-cross-changes.patch b/scripts/deps/spirv-cross-changes.patch deleted file mode 100644 index bf0e7e50a..000000000 --- a/scripts/deps/spirv-cross-changes.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -73,9 +73,9 @@ - set(spirv-cross-link-flags "") - - message(STATUS "SPIRV-Cross: Finding Git version for SPIRV-Cross.") --set(spirv-cross-build-version "unknown") -+set(spirv-cross-build-version "vulkan-sdk-1.3.280.0") - find_package(Git) --if (GIT_FOUND) -+if (FALSE) - execute_process( - COMMAND ${GIT_EXECUTABLE} describe --always --tags --dirty=+ - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -@@ -409,9 +409,9 @@ - - target_compile_definitions(spirv-cross-c-shared PRIVATE SPVC_EXPORT_SYMBOLS) - -- set_target_properties(spirv-cross-c-shared PROPERTIES -- VERSION ${SPIRV_CROSS_VERSION} -- SOVERSION ${spirv-cross-abi-major}) -+ #set_target_properties(spirv-cross-c-shared PROPERTIES -+ # VERSION ${SPIRV_CROSS_VERSION} -+ # SOVERSION ${spirv-cross-abi-major}) - endif() - - if (SPIRV_CROSS_CLI) diff --git a/scripts/flatpak/modules/22-shaderc.json b/scripts/flatpak/modules/22-shaderc.json index 1a5fa7a0b..a64cd2e22 100644 --- a/scripts/flatpak/modules/22-shaderc.json +++ b/scripts/flatpak/modules/22-shaderc.json @@ -14,30 +14,8 @@ "sources": [ { "type": "git", - "url": "https://github.com/google/shaderc.git", - "commit": "47a9387ef5b3600d30d84c71ec77a59dc7db46fa" - }, - { - "type": "archive", - "url": "https://github.com/KhronosGroup/glslang/archive/142052fa30f9eca191aa9dcf65359fcaed09eeec.tar.gz", - "sha256": "aa27e4454ce631c5a17924ce0624eac736da19fc6f5a2ab15a6c58da7b36950f", - "dest": "third_party/glslang" - }, - { - "type": "archive", - "url": "https://github.com/KhronosGroup/SPIRV-Headers/archive/5e3ad389ee56fca27c9705d093ae5387ce404df4.tar.gz", - "sha256": "5d866ce34a4b6908e262e5ebfffc0a5e11dd411640b5f24c85a80ad44c0d4697", - "dest": "third_party/spirv-headers" - }, - { - "type": "archive", - "url": "https://github.com/KhronosGroup/SPIRV-Tools/archive/dd4b663e13c07fea4fbb3f70c1c91c86731099f7.tar.gz", - "sha256": "03ee1a2c06f3b61008478f4abe9423454e53e580b9488b47c8071547c6a9db47", - "dest": "third_party/spirv-tools" - }, - { - "type": "patch", - "path": "../../deps/shaderc-changes.patch" + "url": "https://github.com/stenzek/shaderc.git", + "commit": "feb2460bf3a504d67011246edeb810c45ea58826" } ], "cleanup": [ diff --git a/scripts/flatpak/modules/23-spirv-cross.json b/scripts/flatpak/modules/23-spirv-cross.json index f6bd1f576..2aa8c9024 100644 --- a/scripts/flatpak/modules/23-spirv-cross.json +++ b/scripts/flatpak/modules/23-spirv-cross.json @@ -23,12 +23,8 @@ { "type": "git", "url": "https://github.com/KhronosGroup/SPIRV-Cross.git", - "tag": "vulkan-sdk-1.3.283.0", - "commit": "2ccc81fd826e4dd4a2db2f94b8e6eb738a89f5f1" - }, - { - "type": "patch", - "path": "../../deps/spirv-cross-changes.patch" + "tag": "vulkan-sdk-1.3.290.0", + "commit": "5d127b917f080c6f052553c47170ec0ba702e54f" } ], "cleanup": [ diff --git a/scripts/flatpak/modules/24-cpuinfo.json b/scripts/flatpak/modules/24-cpuinfo.json index 7712e70dc..f2feebdbb 100644 --- a/scripts/flatpak/modules/24-cpuinfo.json +++ b/scripts/flatpak/modules/24-cpuinfo.json @@ -20,12 +20,8 @@ "sources": [ { "type": "git", - "url": "https://github.com/pytorch/cpuinfo.git", - "commit": "05332fd802d9109a2a151ec32154b107c1e5caf9" - }, - { - "type": "patch", - "path": "../../deps/cpuinfo-changes.patch" + "url": "https://github.com/stenzek/cpuinfo.git", + "commit": "7524ad504fdcfcf75a18a133da6abd75c5d48053" } ], "cleanup": [ diff --git a/src/util/gpu_device.cpp b/src/util/gpu_device.cpp index 31c4805ef..acc898c42 100644 --- a/src/util/gpu_device.cpp +++ b/src/util/gpu_device.cpp @@ -1192,6 +1192,7 @@ std::unique_ptr GPUDevice::CreateDeviceForAPI(RenderAPI api) X(shaderc_result_get_length) \ X(shaderc_result_get_num_warnings) \ X(shaderc_result_get_bytes) \ + X(shaderc_result_get_compilation_status) \ X(shaderc_result_get_error_message) #define SPIRV_CROSS_FUNCTIONS(X) \ @@ -1305,7 +1306,13 @@ bool dyn_libs::OpenSpirvCross(Error* error) if (s_spirv_cross_library.IsOpen()) return true; +#ifdef _WIN32 + // SPVC's build on Windows doesn't spit out a versioned DLL. const std::string libname = DynamicLibrary::GetVersionedFilename("spirv-cross-c-shared"); +#else + const std::string libname = DynamicLibrary::GetVersionedFilename("spirv-cross-c-shared", SPVC_C_API_VERSION_MAJOR, + SPVC_C_API_VERSION_MINOR, SPVC_C_API_VERSION_PATCH); +#endif if (!s_spirv_cross_library.Open(libname.c_str(), error)) { Error::AddPrefix(error, "Failed to load spirv-cross: "); @@ -1378,7 +1385,7 @@ bool GPUDevice::CompileGLSLShaderToVulkanSpv(GPUShaderStage stage, GPUShaderLang if (!dyn_libs::OpenShaderc(error)) return false; - shaderc_compile_options_t options = dyn_libs::shaderc_compile_options_initialize(); + const shaderc_compile_options_t options = dyn_libs::shaderc_compile_options_initialize(); AssertMsg(options, "shaderc_compile_options_initialize() failed"); dyn_libs::shaderc_compile_options_set_source_language(options, shaderc_source_language_glsl); @@ -1388,10 +1395,11 @@ bool GPUDevice::CompileGLSLShaderToVulkanSpv(GPUShaderStage stage, GPUShaderLang dyn_libs::shaderc_compile_options_set_optimization_level( options, optimization ? shaderc_optimization_level_performance : shaderc_optimization_level_zero); - shaderc_compilation_result_t result; - const shaderc_compilation_status status = dyn_libs::shaderc_compile_into_spv( - dyn_libs::s_shaderc_compiler, source.data(), source.length(), stage_kinds[static_cast(stage)], "source", - entry_point, options, &result); + const shaderc_compilation_result_t result = + dyn_libs::shaderc_compile_into_spv(dyn_libs::s_shaderc_compiler, source.data(), source.length(), + stage_kinds[static_cast(stage)], "source", entry_point, options); + const shaderc_compilation_status status = + result ? dyn_libs::shaderc_result_get_compilation_status(result) : shaderc_compilation_status_internal_error; if (status != shaderc_compilation_status_success) { const std::string_view errors(result ? dyn_libs::shaderc_result_get_error_message(result) : "null result object");