Update dependency libraries to match Vulkan SDK 1.2.148.

fetchDependencies support option to skip all library builds.
fetchDependencies avoid sync locks if not building in parallel.
fetchDependencies build glslang headers.
Update ExternalRevisions/README.md glslang build integration section.
Update What's New.
This commit is contained in:
Bill Hollings 2020-07-27 22:25:44 -04:00
parent 23ea3c9bf7
commit 834d391aec
9 changed files with 623 additions and 584 deletions

View File

@ -30,11 +30,22 @@ Released 2020/07/28
- **_MoltenVK_** Xcode schemes support building fat *Platform+Simulator* binaries.
- `Makefile` supports building fat *Platform+Simulator* binaries, plus *Debug* builds.
- `fetchDependencies` script supports platform build selection, plus parallel builds.
- `vkCmdBlitImage()` returns error if scaling or inverting to linear image on *macOS*.
- Support `VK_FORMAT_A2B10G10R10_UNORM_PACK32` as a surface format.
- Support `VkPipelineMultisampleStateCreateInfo::pSampleMask`.
- Support `VkPhysicalDeviceSubgroupProperties`.
- Fix memory layout of inline uniform blocks.
- Fix issue where mapped host-coherent device memory not updated from image contents on *macOS*.
- Fix image memory sizing and offsets.
- Fix small memory leak when setting swapchain color space.
- Fix new and unexpected App Store failure on newly deprecated color space values.
- Fix intermittent concurrent shader specialization race condition.
- Fix offsets when flushing buffer data to GPU.
- Ensure fragment shader inputs to have as many components as vertex shader outputs.
- Include vertex attribute size when testing whether attribute offset exceeds stride.
- Add support for `USCALED/SSCALED` vertex formats.
- Add host-coherent texel buffer caching just for buffer views.
- Include MoltenVK Git revision hash in `VkPhysicalDeviceProperties::pipelineCacheUUID`.
- Add `MVKPhysicalDeviceMetalFeatures::vertexStrideAlignment` to track Metal vertex binding stride alignment.
- Add `MVKPhysicalDeviceMetalFeatures::indirectTessellationDrawing` to track if indirect tessellation drawing is supported.
- Remove use of `@available()` directive as it was causing issues in some build environments.
@ -42,6 +53,7 @@ Released 2020/07/28
- Refactor **MoltenVK** *Xcode* build architectures.
- Demo `API-Samples generateSPIRVShaders` no longer builds `MoltenVKShaderController` tool.
- Update `VK_MVK_MOLTENVK_SPEC_VERSION` to `27`.
- Update dependency libraries to match *Vulkan SDK 1.2.148*.
- Update to latest SPIRV-Cross version:
- MSL: Add support for processing more than one patch per workgroup.
- MSL: Workaround broken scalar access chain behavior in MSL LLVM IR / AIR.

File diff suppressed because it is too large Load Diff

View File

@ -140,7 +140,8 @@ if you encounter any building errors, you may need to re-add the *SPIRV-Cross* l
spirv_parser.hpp
In the ***Choose options for adding these files*** dialog that opens, select the ***Create groups*** option,
add the files to *both* the `SPIRV-Cross-macOS` and `SPIRV-Cross-iOS` targets, and click the ***Finish*** button.
add the files to *all* of the `SPIRV-Cross-macOS`, `SPIRV-Cross-iOS`, and `SPIRV-Cross-tvOS` targets,
and click the ***Finish*** button.
### Regression Testing Your Changes to *SPIRV-Cross*
@ -197,8 +198,8 @@ the *SPIRV-Tools* library to the `ExternalDependencies` *Xcode* project as follo
4. Drag the `External/glslang/External/spirv-tools/source` file folder to the `External/SPIRV-Tools`
group in the *Project Navigator* panel. In the _**Choose options for adding these files**_ dialog
that opens, select the _**Create groups**_ option, add the files to *both* the `SPIRV-Tools-macOS`
and `SPIRV-Tools-iOS` targets, and click the ***Finish*** button.
that opens, select the _**Create groups**_ option, add the files to *all* of the `SPIRV-Tools-macOS`,
`SPIRV-Tools-iOS`, and `SPIRV-Tools-tvOS` targets, and click the ***Finish*** button.
5. Remove the *Group* named `fuzz` from under the *Group* named `External/SPIRV-Tools/source`.
@ -224,6 +225,7 @@ if you encounter any building errors, you may need to re-add the *glslang* libra
$(inherited)
"$(SRCROOT)/External/glslang"
"$(SRCROOT)/External/glslang/build/include"
2. Repeat *Step 1* for the `glslang-iOS` target within the `ExternalDependencies` *Xcode* project
@ -238,12 +240,14 @@ if you encounter any building errors, you may need to re-add the *glslang* libra
SPIRV
In the ***Choose options for adding these files*** dialog that opens, select the ***Create groups*** option,
add the files to *both* the `glslang-macOS` and `glslang-iOS` targets, and click the ***Finish*** button.
add the files to *all* of the `glslang-macOS`, `glslang-iOS`, and `glslang-tvOS` targets, and click the ***Finish*** button.
5. In the *Project Navigator* panel, remove the references to the following files and folders:
External/glslang/glslang/MachineIndependant/glslang.y
External/glslang/glslang/OSDependent/Windows
External/glslang/glslang/OSDependent/Web
External/glslang/glslang/HLSL

View File

@ -1 +1 @@
e5b2ff8935cbe779fbbaa02d3aa7659167eb7e35
3b36fdc64014844db78671fa0ca1c0ef184e5b0d

View File

@ -1 +1 @@
f938eb1daf5c2c9f895c70563760c35e074acc03
91721642252a38f9162ec888d48886efce536eb6

View File

@ -1 +1 @@
e00d27c6d65b7d3e72506a311d7f053da4051295
3ee5f2f1d3316e228916788b300d786bb574d337

View File

@ -16,13 +16,15 @@ TPLT_BLD_DIR="${TPLT_DIR}/build"
# Ensure the SPIRV-Tools library is fully built
cd ".."
./fetchDependencies --build-spirv-tools
./fetchDependencies --build-spirv-tools --no-parallel-build --none
cd - > /dev/null
echo Updating SPIRV-Tools template build directory
rm -rf "${TPLT_BLD_DIR}"
mkdir -p "${TPLT_BLD_DIR}"
cp -a "${SPV_TLS_BLD_DIR}/"*.h "${SPV_TLS_BLD_DIR}/"*.inc "${TPLT_BLD_DIR}"
echo Creating pregenerated SPIRV-Tools build.zip package
cd "${TPLT_DIR}"
rm -f build.zip
zip -qr build.zip build

Binary file not shown.

View File

@ -4,7 +4,7 @@
#
# fetchDependencies - Retrieves the correct versions of all dependencies
#
# macOS usage: ./fetchDependencies [--ios] [--iosfat] [--tvos] [--tvosfat] [--macos] [--all]
# macOS usage: ./fetchDependencies [--ios] [--iosfat] [--tvos] [--tvosfat] [--macos] [--all] [--none]
# [-v] [--debug] [--build-spirv-tools]
# [--v-headers-root path] [--spirv-cross-root path] [--glslang-root path]
#
@ -30,6 +30,9 @@
# binaries for each external library: one for the iOS and iOS Simulator platforms,
# one for the tvOS and tvOS Simulator platforms, and one for the macOS platform.
#
# --none
# Don't build the external libraries for any platform.
#
# Multiple platform options may be specified. At least one platform option must be specified.
#
# --debug
@ -69,6 +72,7 @@ set -e
# ----------------- Functions -------------------
BLD_NONE=""
BLD_IOS=""
BLD_IOS_SIM=""
BLD_TVOS=""
@ -121,6 +125,11 @@ while (( "$#" )); do
BLD_SPECIFIED="Y"
shift 1
;;
--none)
BLD_NONE="Y"
BLD_SPECIFIED="Y"
shift 1
;;
--debug)
XC_CONFIG="Debug"
shift 1
@ -154,26 +163,17 @@ while (( "$#" )); do
shift 2
;;
-*|--*=)
echo "Error: Unsupported flag $1" >&2
echo "Error: Unsupported option $1" >&2
exit 1
;;
esac
done
# if no platform was specified, print usage message and exit
if [ "$BLD_SPECIFIED" = "" ]; then
echo "ERROR: You did not specify a platform to build."
echo "Include one or more of the following platform options:"
echo " --ios --iosfat --tvos --tvosfat --macos --all"
echo "See the instructions in the fetchDependencies script for more info."
exit 1
fi
# Update a repository. If it exists, fetch it; if not, clone it.
# $1 repo name
# $2 repo url
# $3 repo revision (commit SHA)
update_repo() {
function update_repo() {
echo "$1 repo: $2"
echo "$1 revision: $3"
@ -193,7 +193,7 @@ update_repo() {
# Build a repository
# $1 repo name
build_repo() {
function build_repo() {
echo "Building $1"
mkdir -p $1/build
@ -314,6 +314,10 @@ else
cd ${REPO_NAME}
./update_glslang_sources.py
rm -rf build
./build_info.py . \
-i build_info.h.tmpl \
-o build/include/glslang/build_info.h
cd - > /dev/null
fi
@ -366,6 +370,16 @@ cd ..
# -------------- Build MoltenVK external library dependencies -----------------
# if no platform was specified, print usage message and exit
if [ "$BLD_SPECIFIED" = "" ]; then
echo "ERROR: You did not specify a platform to build."
echo "Include one or more of the following platform options:"
echo " --ios --iosfat --tvos --tvosfat --macos --all"
echo "See the instructions in the fetchDependencies script for more info."
exit 1
fi
echo
echo ========== Started building dependency libraries at `date +"%r"` ==========
echo Please be patient on first build
@ -432,8 +446,14 @@ XC_DD_PATH="${EXT_DIR}/build"
# Structure build tasks by platform so they can be built in parallel per platform.
# Content for each platform must be built in series to avoid
trap "exit" INT TERM ERR
trap "kill 0" EXIT
if [ "$XC_USE_BCKGND" != "" ]; then
trap "exit" INT TERM ERR
trap "kill 0" EXIT
fi
if [ "$BLD_NONE" != "" ]; then
echo Not building any platforms
fi
if [ "$BLD_MACOS" != "" ]; then
build "macOS" "macOS"
@ -456,7 +476,9 @@ if [ "$BLD_TVOS" != "" ]; then
fi
# Wait for any background process (if selected) to finish
wait
if [ "$XC_USE_BCKGND" != "" ]; then
wait
fi
# Update latest symlink and clean MoltenVK for rebuild
PROJECT_DIR="."
@ -464,3 +486,4 @@ CONFIGURATION=${XC_CONFIG}
. "./Scripts/package_ext_libs_finish.sh"
echo ========== Finished at `date +"%r"` ==========
exit 0