Using a symlink to locate an externally-built glslang
doesn't work if the parent directory of the externally-built
glslang isn't the same as the parent here (External).
This fixes a portability warning when building from V-LVL
because the parent there was "external" vs "External".
Copy is still a win because it is better than fetching and
building.
Changes to fetchDependencies script:
- remove -sdk option
- Add --v-lvl-root and --glslang-root options (with an arg)
that allow caller to pass in the root dir of these two repos
if the caller already has them. The script then symlinks to
these instead of fetching and building.
Fixes: #79#84
fetchDependencies script now in top directory to avoid Travis caching of
External directory. fetchDependencies is now smart about fetching vs cloning
and building only what is necessary.
via vkGetPipelineCacheData(), vkCreatePipelineCache() & vkMergePipelineCaches().
Add the cereal serialization framework as a dependency.
Update documentation. Update project settings to Xcode 9.3.
Remove duplicate build of SPIRV-Tools in fetchDependencies.
Remove folder symlinks from Externals and MoltenVKShaderCompiler folders.
Update header search paths to reference External folders directly.
Update External/README.md documentation.
Update MoltenVK version to 1.0.1 to reflect new build instructions.
Minor update to performance logging.
Add MVKPhysicalDeviceMetalFeatures::mtlCopyBufferAlignment.
Set MTLComputeCommandEncoder label based on Vulkan command type.
Add MVKCommandUse::kMVKCommandUseDispatch.
* Vulkan allows any valid copy regions to be used in this function.
However, Metal's blit command encoder only allows copy offsets and
sizes which are multiples of 4 bytes.
* Before this change, attempting to copy such a region would cause
Metal validation errors to trigger.
* This adds logic to detect such copy regions and uses a special compute
shader to perform a byte-by-byte copy from the source buffer to
the destination buffer with the appropriate offsets.
* This new code path is only needed on macOS, because iOS does not share
the same copy region restrictions.
Load external library versions using script instead of Git submodules.
SPIRV-Cross, Vulkan-LoaderAndValidationLayers & VulkanSamples versions recorded in files.
glslang version determined by Vulkan-LoaderAndValidationLayers.
SPIRV-Tools & SPIRV-Headers versions loaded by glslang.
When MoltenVK is built as part of the LunarG SDK, use external libraries
sourced from parent Vulkan-LoaderAndValidationLayers.
Use Vulkan headers from Vulkan-LoaderAndValidationLayers.
No longer generate Vulkan specification.
Update documentation.
In order to determine the instance version, the 1.1 loader takes
advantage of the fact that a 1.0 ICD will return NULL for
vkGetInstanceProcAddr(NULL, "vkEnumerateInstanceVersion")
SPIRV-Cross supports the macro SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS
for builds with exceptions disabled. MoltenVK can support those
builds with just a couple #if statements. When exceptions are
disabled, the program will just abort, not throw.