Apple's iOS App Store does not permit an app to link to naked dylibs. Instead, these must be placed in frameworks, which are embedded in a dynamic version of MoltenVK.xcframework. - Use Xcode to directly generate a MoltenVK.framework for each platform, and remove create_dylib*.sh scripts. - Move static XCFramework, containing libMoltenVK.a static libraries, to Package/Latest/MoltenVK/static/MoltenVK.xcframework. - Generate dynamic XCFramework, containing MoltenVK.framework dynamic libraries, in Package/Latest/MoltenVK/dynamic/MoltenVK.xcframework. - Add macro MVK_VERSION_STRING to create version string at compile time, use it to validate the CURRENT_PROJECT_VERSION build setting at compile time, and use it at runtime instead of mvkGetMoltenVKVersionString() function. - Add -w to OTHER_LDFLAGS to dynamic framework builds to suppress spurious linker warnings of the type "ld: warning: no platform load command found in '...', assuming: iOS" issued from the new linker introduced in Xcode 15. - Add MoltenVK-MacCat Xcode target and MoltenVK Package (MacCat only) Xcode scheme to avoid building dynamic MoltenVK.framework for the Mac Catalyst platform, because Xcode does not support doing so. - Always run MoltenVK build scripts, to ensure all components are added to the XCFrameworks, and MoltenVK/Package is always refreshed, even if code compilation is not required. - Cube demo link to dynamic MoltenVK.framework through dynamic/MoltenVK.xcframework, instead of to naked libMoltenVK.dylib. - Update the version of Volk used by the Cube demo, to support loading MoltenVK from dynamic frameworks inside Volk. - Update README.md and MoltenVK_Runtime_UserGuide.md documents. - Update MVK_PRIVATE_API_VERSION to 40. - Fix make install to install /usr/local/lib/libMoltenVK.dylib on macOS (unrelated). - Remove unused MTLAttributeStrideStatic declaration prior to Xcode 15 (unrelated).

#MoltenVK Demo Projects
Copyright (c) 2015-2024 The Brenwill Workshop Ltd.
Table of Contents
Cube
The basic canonical Cube sample app from the Vulkan-Tools repository is included in this MoltenVK package.
This demo renders a basic textured cube that spins in place.
The demo can be found in the Cube
folder, and in the Cube
group in the
Xcode Project Navigator in the Demos.xcworkspace
Xcode workspace.
To run this demo, run the Cube-macOS
, Cube-iOS
, or Cube-tvOS
Scheme from within Xcode.
In addition to devices, this demo will also run on an iOS Simulator
destination.
This demo is not supported on a tvOS Simulator
destination.
The Cube
demo is a simple example of installing MoltenVK as a libMoltenVK.dylib
library that
is dynamically linked to the application, and the Vulkan calls all use Volk to dynamically access
function pointers, retrieved from MoltenVK using vkGetInstanceProcAddr()
and vkGetDeviceProcAddr()
.
It supports all platforms, including Mac Catalyst, iOSSimulator and tvOS Simulator.
Khronos Vulkan Samples
Khronos Group provides a repository containing a full suite of standard Vulkan samples that run on MoltenVK on macOS.