MoltenVK
MoltenVK is a Vulkan Portability implementation. It layers a subset of the high-performance, industry-standard Vulkan graphics and compute API over Apple's Metal graphics framework, enabling Vulkan applications to run on macOS, iOS and tvOS.
File Explorer
- CI.yml
- MoltenVK_CPM_Cache.cmake
- MoltenVK_Filter_Flags.cmake
- cereal.cmake
- CPM.cmake
- SPIRV-Cross.cmake
- SPIRV-Headers.cmake
- SPIRV-Tools.cmake
- Volk.cmake
- Vulkan-Headers.cmake
- Vulkan-Tools.cmake
- CMakeLists.txt
- MVKCommonEnvironment.h
- MVKOSExtensions.h
- MVKOSExtensions.mm
- MVKStrings.h
- Cube-iOS.xcscheme
- Cube-macOS.xcscheme
- Cube-tvOS.xcscheme
- Cube-VisionOS.xcscheme
- project.pbxproj
- cube
- volk
- [email protected]
- Default~ipad.png
- Icon.png
- Main.storyboard
- MainTV.storyboard
- AppDelegate.h
- AppDelegate.m
- DemoViewController.h
- DemoViewController.m
- Info.plist
- InfoTV.plist
- main.m
- Prefix.pch
- Contents.json
- Icon-128.png
- Icon-16.png
- Icon-256.png
- Icon-32.png
- Icon-512.png
- Contents.json
- Main.storyboard
- AppDelegate.h
- AppDelegate.m
- DemoViewController.h
- DemoViewController.m
- Info.plist
- main.m
- Prefix.pch
- ContentView.swift
- Cube-VisionOS-Bridging-Header.h
- cube_runner.c
- Info.plist
- VisionOSApp.swift
- Cube.entitlements
- IDEWorkspaceChecks.plist
- WorkspaceSettings.xcsettings
- contents.xcworkspacedata
- README.md
- MoltenVK-Logo-Banner.png
- MoltenVK_Configuration_Parameters.md
- MoltenVK_Runtime_UserGuide.md
- Whats_New.md
- ExternalDependencies (Debug).xcscheme
- ExternalDependencies-iOS.xcscheme
- ExternalDependencies-macOS.xcscheme
- ExternalDependencies-tvOS.xcscheme
- ExternalDependencies-xrOS.xcscheme
- ExternalDependencies.xcscheme
- SPIRV-Cross-iOS.xcscheme
- SPIRV-Cross-macOS.xcscheme
- SPIRV-Cross-tvOS.xcscheme
- SPIRV-Cross-xrOS.xcscheme
- SPIRV-Tools-iOS.xcscheme
- SPIRV-Tools-macOS.xcscheme
- SPIRV-Tools-tvOS.xcscheme
- SPIRV-Tools-xrOS.xcscheme
- project.pbxproj
- cereal_repo_revision
- README.md
- SPIRV-Cross_repo_revision
- SPIRV-Headers_repo_revision
- SPIRV-Tools_repo_revision
- Volk_repo_revision
- Vulkan-Headers_repo_revision
- Vulkan-Tools_repo_revision
- MoltenVK_icd.json
- MoltenVK
- vk_video
- vulkan
- mvk_config.h
- mvk_datatypes.h
- mvk_deprecated_api.h
- mvk_private_api.h
- mvk_vulkan.h
- vk_mvk_moltenvk.h
- MVKCmdDebug.h
- MVKCmdDebug.mm
- MVKCmdDispatch.h
- MVKCmdDispatch.mm
- MVKCmdDraw.h
- MVKCmdDraw.mm
- MVKCmdPipeline.h
- MVKCmdPipeline.mm
- MVKCmdQueries.h
- MVKCmdQueries.mm
- MVKCmdRendering.h
- MVKCmdRendering.mm
- MVKCmdTransfer.h
- MVKCmdTransfer.mm
- MVKCommand.h
- MVKCommandBuffer.h
- MVKCommandBuffer.mm
- MVKCommandEncoderState.h
- MVKCommandEncoderState.mm
- MVKCommandEncodingPool.h
- MVKCommandEncodingPool.mm
- MVKCommandPipelineStateFactoryShaderSource.h
- MVKCommandPool.h
- MVKCommandPool.mm
- MVKCommandResourceFactory.h
- MVKCommandResourceFactory.mm
- MVKCommandTypePools.def
- MVKMTLBufferAllocation.h
- MVKMTLBufferAllocation.mm
- MVKMTLResourceBindings.h
- MVKBuffer.h
- MVKBuffer.mm
- MVKDescriptorSet.h
- MVKDescriptorSet.mm
- MVKDevice.h
- MVKDevice.mm
- MVKDeviceFeatureStructs.def
- MVKDeviceMemory.h
- MVKDeviceMemory.mm
- MVKFramebuffer.h
- MVKFramebuffer.mm
- MVKImage.h
- MVKImage.mm
- MVKInstance.h
- MVKInstance.mm
- MVKPipeline.h
- MVKPipeline.mm
- MVKPixelFormats.h
- MVKPixelFormats.mm
- MVKQueryPool.h
- MVKQueryPool.mm
- MVKQueue.h
- MVKQueue.mm
- MVKRenderPass.h
- MVKRenderPass.mm
- MVKResource.h
- MVKResource.mm
- MVKShaderModule.h
- MVKShaderModule.mm
- MVKSurface.h
- MVKSurface.mm
- MVKSwapchain.h
- MVKSwapchain.mm
- MVKSync.h
- MVKSync.mm
- MVKVulkanAPIObject.h
- MVKVulkanAPIObject.mm
- MVKExtensions.def
- MVKExtensions.h
- MVKExtensions.mm
- MVKLayers.h
- MVKLayers.mm
- CAMetalLayer+MoltenVK.h
- CAMetalLayer+MoltenVK.mm
- MTLRenderPipelineDescriptor+MoltenVK.h
- MTLRenderPipelineDescriptor+MoltenVK.m
- MTLSamplerDescriptor+MoltenVK.h
- MTLSamplerDescriptor+MoltenVK.m
- MVKGPUCapture.h
- MVKGPUCapture.mm
- NSString+MoltenVK.h
- NSString+MoltenVK.mm
- MVKBaseObject.h
- MVKBaseObject.mm
- MVKBitArray.h
- MVKBlockObserver.h
- MVKBlockObserver.m
- MVKCodec.h
- MVKCodec.mm
- MVKConfigMembers.def
- MVKDXTnCodec.def
- MVKEnvironment.cpp
- MVKEnvironment.h
- MVKFoundation.cpp
- MVKFoundation.h
- MVKInflectionMap.h
- MVKInlineArray.h
- MVKInlineObjectConstructor.h
- MVKLogging.h
- MVKObjectPool.h
- MVKSmallVector.h
- MVKSmallVectorAllocator.h
- MVKStateTracking.h
- MVKWatermark.h
- MVKWatermark.mm
- MVKWatermarkShaderSource.h
- MVKWatermarkTextureContent.h
- mvk_api.mm
- mvk_datatypes.hpp
- mvk_datatypes.mm
- vulkan.mm
- project.pbxproj
- CMakeLists.txt
- MoltenVK Package (iOS only).xcscheme
- MoltenVK Package (MacCat only).xcscheme
- MoltenVK Package (macOS only).xcscheme
- MoltenVK Package (tvOS only).xcscheme
- MoltenVK Package (visionOS only).xcscheme
- MoltenVK Package.xcscheme
- project.pbxproj
- SPIRVConversion.h
- SPIRVToMSLConverter.h
- CMakeLists.txt
- FileSupport.h
- FileSupport.mm
- SPIRVConversion.h
- SPIRVConversion.mm
- SPIRVReflection.h
- SPIRVSupport.cpp
- SPIRVSupport.h
- SPIRVToMSLConverter.cpp
- SPIRVToMSLConverter.h
- MoltenVKShaderConverter.xcscheme
- project.pbxproj
- CMakeLists.txt
- main.cpp
- MoltenVKShaderConverterTool.cpp
- MoltenVKShaderConverterTool.h
- OSSupport.h
- OSSupport.mm
- SPIRV-Cross
- SPIRV-Tools
- Tools
- clean_dynamic.sh
- copy_ext_lib_to_staging.sh
- copy_lib_to_staging.sh
- copy_to_staging.sh
- create_dylib_xros.sh
- create_ext_lib_xcframeworks.sh
- create_xcframework_func.sh
- gen_moltenvk_rev_hdr.sh
- get_failing_cts_tests.py
- package_all.sh
- package_docs.sh
- package_dylibs.sh
- package_ext_libs_finish.sh
- package_headers.sh
- package_moltenvk_xcframework.sh
- package_shader_converter_tool.sh
- package_shader_converter_xcframework.sh
- package_update_latest.sh
- packagePregenSpirvToolsHeaders
- runcts
- MoltenVK.pc.in
- MoltenVK_icd.json.in
- MoltenVKOptions.cmake.sample
- mvkGitRevDerived.h.in
- build.zip
- .gitignore
- CMakeLists.txt
- CODE_OF_CONDUCT.md
- fetchDependencies
- LICENSE
- Makefile
- README.md
# Installation Guide
cmakeSetup Steps
brew install cmake python3 ninja
Install required build tools.
git clone https://github.com/KhronosGroup/MoltenVK.git
Clone the MoltenVK repository.
./fetchDependencies --all
Fetch and build external dependency libraries.
Key Commands
./fetchDependencies --all
Fetch and build external open-source dependencies for specified platforms.
# Use via CDN
jsDelivrjsDelivr serves any public GitHub repository as a CDN with zero setup. Pick a version and a file to get a ready-to-paste link and snippet.
Command Glossary
Commands referenced in this DOCs, explained below.
brew install
View Details ▼
brew install
Install a Homebrew formula or cask.
brew install {{formula|cask}}
Install a formula/cask:
brew install {{[-s|--build-from-source]}} {{formula}}
Build and install a formula from source (dependencies will still be installed from bottles):
brew install {{[-n|--dry-run]}} {{formula|cask}}
Download the manifest, print what would be installed but don't actually install anything:
clang-format
View Details ▼
clang-format
Auto-format C/C++/Java/JavaScript/Objective-C/Protobuf/C# code.
clang-format {{path/to/file}}
Format a file and print the result to `stdout`:
clang-format -i {{path/to/file}}
Format a file in-place:
clang-format --style {{LLVM|GNU|Google|Chromium|Microsoft|Mozilla|WebKit}} {{path/to/file}}
Format a file using a predefined coding style:
cmake
View Details ▼
cmake
Cross-platform build automation system, that generates recipes for native build systems.
cmake {{path/to/project_directory}}
Generate a build recipe in the current directory with `CMakeLists.txt` from a project directory:
cmake --build {{path/to/build_directory}}
Use a generated recipe in a given directory to build artifacts:
cmake --install {{path/to/build_directory}} --strip
Install the build artifacts into `/usr/local/` and strip debugging symbols:
git clone
View Details ▼
git clone
Clone an existing repository.
git clone {{remote_repository_location}} {{path/to/directory}}
Clone an existing repository into a new directory (the default directory is the repository name):
git clone --recursive {{remote_repository_location}}
Clone an existing repository and its submodules:
git clone {{[-n|--no-checkout]}} {{remote_repository_location}}
Clone only the `.git` directory of an existing repository:
ninja
View Details ▼
ninja
A Build system designed to be fast.
ninja
Build in the current directory:
ninja -j {{4}}
Build in the current directory, executing 4 [j]obs at a time in parallel:
ninja -C {{path/to/directory}}
Build a program in a given directory:
python3
View Details ▼
python3
This command is an alias of `python`.
tldr python
View documentation for the original command:
