Merge pull request #329 from cdavis5e/destroyed-resource-descset
Remove destroyed resources from descriptor sets.
diff --git a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/project.pbxproj b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/project.pbxproj
index 992d96c..f67db69 100644
--- a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/project.pbxproj
+++ b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/project.pbxproj
@@ -545,7 +545,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1000;
+ LastUpgradeCheck = 1010;
TargetAttributes = {
A977BCBD1B66BB010067E5BF = {
DevelopmentTeam = VU3TCKU48B;
diff --git a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-iOS.xcscheme b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-iOS.xcscheme
index 8e53cef..1887f1d 100644
--- a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-iOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-iOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-macOS.xcscheme b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-macOS.xcscheme
index 38b5668..14c3d3c 100644
--- a/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-macOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/API-Samples/API-Samples.xcodeproj/xcshareddata/xcschemes/API-Samples-macOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/project.pbxproj b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/project.pbxproj
index d3f84da..4c747e6 100644
--- a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/project.pbxproj
+++ b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/project.pbxproj
@@ -234,7 +234,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1000;
+ LastUpgradeCheck = 1010;
TargetAttributes = {
A9B53B0F1C3AC0BE00ABC6F6 = {
DevelopmentTeam = VU3TCKU48B;
diff --git a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme
index 8177308..ead24ce 100644
--- a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-macOS.xcscheme b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-macOS.xcscheme
index 8d847fa..e83df29 100644
--- a/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-macOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-macOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/project.pbxproj b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/project.pbxproj
index e1db4ad..1b654fc 100644
--- a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/project.pbxproj
+++ b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/project.pbxproj
@@ -283,7 +283,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1000;
+ LastUpgradeCheck = 1010;
TargetAttributes = {
A977BCBD1B66BB010067E5BF = {
DevelopmentTeam = VU3TCKU48B;
diff --git a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-iOS.xcscheme b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-iOS.xcscheme
index d5def97..d911a11 100644
--- a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-iOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-iOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-macOS.xcscheme b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-macOS.xcscheme
index 83e3055..62aa74b 100644
--- a/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-macOS.xcscheme
+++ b/Demos/LunarG-VulkanSamples/Hologram/Hologram.xcodeproj/xcshareddata/xcschemes/Hologram-macOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index 02af572..f729bf0 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -12,6 +12,22 @@
For best results, use a Markdown reader.*
+MoltenVK 1.0.26
+---------------
+
+Released 2018/11/06
+
+- Fix memoryTypes order to match Vulkan spec.
+- Allow linear images to use host-coherent memory.
+- Generate Bitcode in iOS libraries.
+- Allow all pipeline attachements to be unused.
+- Perform usage checks on 3D images.
+- Enhancements to dylib generation script.
+- Update to latest SPIRV-Cross version:
+ - MSL: Support 8 & 16 bit types.
+ - MSL: Updated spec constant support.
+
+
MoltenVK 1.0.25
---------------
diff --git a/ExternalRevisions/README.md b/ExternalRevisions/README.md
index 50439fb..4fb82ce 100644
--- a/ExternalRevisions/README.md
+++ b/ExternalRevisions/README.md
@@ -126,12 +126,16 @@
spirv_cfg.cpp
spirv_cfg.hpp
spirv_common.hpp
+ spirv_cross_parsed_ir.cpp
+ spirv_cross_parsed_ir.hpp
spirv_cross.cpp
spirv_cross.hpp
spirv_glsl.cpp
spirv_glsl.hpp
spirv_msl.cpp
spirv_msl.hpp
+ spirv_parser.cpp
+ 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 `MoltenVKSPIRVToMSLConverter-iOS`
diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision
index 6ab048f..5d4511b 100644
--- a/ExternalRevisions/SPIRV-Cross_repo_revision
+++ b/ExternalRevisions/SPIRV-Cross_repo_revision
@@ -1 +1 @@
-cc5c0204d8bcdadbb4add03e53346df98bf27fa4
+daaffc4717cad9fbeb8848867f38a732120c6317
diff --git a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj
index 474310a..d7ee478 100644
--- a/MoltenVK/MoltenVK.xcodeproj/project.pbxproj
+++ b/MoltenVK/MoltenVK.xcodeproj/project.pbxproj
@@ -752,7 +752,7 @@
A9F55D25198BE6A7004EC31B /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1000;
+ LastUpgradeCheck = 1010;
ORGANIZATIONNAME = "The Brenwill Workshop Ltd.";
TargetAttributes = {
A9B8EE091A98D796009C5A02 = {
@@ -875,7 +875,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "export MVK_OS=\"macosx\"\nexport MVK_ARCH=\"x86_64\"\nexport MVK_UX_FWK=\"AppKit\"\nexport MVK_MIN_OS_VERSION=${MACOSX_DEPLOYMENT_TARGET}\nexport MVK_IOSURFACE_FWK=\"-framework IOSurface\"\n\n\"${SRCROOT}/scripts/create_dylib.sh\"\n";
+ shellScript = "export MVK_OS=\"macosx\"\nexport MVK_UX_FWK=\"AppKit\"\nexport MVK_MIN_OS_VERSION=${MACOSX_DEPLOYMENT_TARGET}\nexport MVK_IOSURFACE_FWK=\"-framework IOSurface\"\n\n\"${SRCROOT}/scripts/create_dylib.sh\"\n";
};
A9731FAD1EDDAE39006B7298 /* Create Dynamic Library */ = {
isa = PBXShellScriptBuildPhase;
@@ -889,7 +889,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "export MVK_OS=\"ios\"\nexport MVK_ARCH=\"arm64\"\nexport MVK_UX_FWK=\"UIKit\"\nexport MVK_MIN_OS_VERSION=${IPHONEOS_DEPLOYMENT_TARGET}\nexport MVK_IOSURFACE_FWK=\"-framework IOSurface\"\n\n# Do not link to IOSurface if deploying to iOS versions below 11.0, doing so will\n# link IOSurface as a private framework, which will trigger App Store rejection.\nif [ $(echo \"${MVK_MIN_OS_VERSION} < 11.0\" | bc) -eq 1 ]; then\n MVK_IOSURFACE_FWK=\"\"\nfi\n\n\"${SRCROOT}/scripts/create_dylib.sh\"\n";
+ shellScript = "export MVK_OS=\"ios\"\nexport MVK_UX_FWK=\"UIKit\"\nexport MVK_MIN_OS_VERSION=${IPHONEOS_DEPLOYMENT_TARGET}\nexport MVK_IOSURFACE_FWK=\"-framework IOSurface\"\n\n# Do not link to IOSurface if deploying to iOS versions below 11.0, doing so will\n# link IOSurface as a private framework, which will trigger App Store rejection.\nif [ $(echo \"${MVK_MIN_OS_VERSION} < 11.0\" | bc) -eq 1 ]; then\n MVK_IOSURFACE_FWK=\"\"\nfi\n\n\"${SRCROOT}/scripts/create_dylib.sh\"\n";
};
/* End PBXShellScriptBuildPhase section */
@@ -1017,6 +1017,7 @@
A9B8EE1E1A98D796009C5A02 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ BITCODE_GENERATION_MODE = bitcode;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -1027,6 +1028,7 @@
A9B8EE1F1A98D796009C5A02 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ BITCODE_GENERATION_MODE = bitcode;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
diff --git a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme
index 678103b..4c6b225 100644
--- a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme
+++ b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-iOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme
index 9c9303c..64ec327 100644
--- a/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme
+++ b/MoltenVK/MoltenVK.xcodeproj/xcshareddata/xcschemes/MoltenVK-macOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/MoltenVK/MoltenVK/API/mvk_datatypes.h b/MoltenVK/MoltenVK/API/mvk_datatypes.h
index 8925dbc..ce40015 100644
--- a/MoltenVK/MoltenVK/API/mvk_datatypes.h
+++ b/MoltenVK/MoltenVK/API/mvk_datatypes.h
@@ -413,6 +413,9 @@
/** Macro indicating the Vulkan memory type bits corresponding to Metal shared memory (host visible and coherent). */
#define MVK_VK_MEMORY_TYPE_METAL_SHARED (VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT)
+/** Macro indicating the Vulkan memory type bits corresponding to Metal memoryless memory (not host visible and lazily allocated). */
+#define MVK_VK_MEMORY_TYPE_METAL_MEMORYLESS (VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)
+
/** Returns the Metal storage mode corresponding to the specified Vulkan memory flags. */
MTLStorageMode mvkMTLStorageModeFromVkMemoryPropertyFlags(VkMemoryPropertyFlags vkFlags);
diff --git a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
index 3af0826..4c725bb 100644
--- a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
+++ b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
@@ -48,7 +48,7 @@
*/
#define MVK_VERSION_MAJOR 1
#define MVK_VERSION_MINOR 0
-#define MVK_VERSION_PATCH 25
+#define MVK_VERSION_PATCH 26
#define MVK_MAKE_VERSION(major, minor, patch) (((major) * 10000) + ((minor) * 100) + (patch))
#define MVK_VERSION MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
index 3953637..35ebe11 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
@@ -233,7 +233,7 @@
setSubpass(contents, _renderSubpassIndex + 1);
}
-/** Sets the current render subpass to the subpass with the specified index. */
+// Sets the current render subpass to the subpass with the specified index.
void MVKCommandEncoder::setSubpass(VkSubpassContents subpassContents, uint32_t subpassIndex) {
_subpassContents = subpassContents;
_renderSubpassIndex = subpassIndex;
@@ -241,8 +241,7 @@
beginMetalRenderPass();
}
-// Called after the _mtlRenderEncoder is established.
-// Marks cached render state as dirty so it will be set into the _mtlRenderEncoder.
+// Creates _mtlRenderEncoder and marks cached render state as dirty so it will be set into the _mtlRenderEncoder.
void MVKCommandEncoder::beginMetalRenderPass() {
endCurrentMetalEncoding();
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
index 7a396d9..c346ba3 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
@@ -33,6 +33,10 @@
pMemoryRequirements->size = getByteCount();
pMemoryRequirements->alignment = _byteAlignment;
pMemoryRequirements->memoryTypeBits = _device->getPhysicalDevice()->getAllMemoryTypes();
+#if MVK_IOS
+ // Memoryless storage is not allowed for buffers
+ mvkDisableFlag(pMemoryRequirements->memoryTypeBits, _device->getPhysicalDevice()->getLazilyAllocatedMemoryTypes());
+#endif
return VK_SUCCESS;
}
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
index d91ede3..213c690 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
@@ -218,11 +218,23 @@
inline uint32_t getHostVisibleMemoryTypes() { return _hostVisibleMemoryTypes; }
/**
+ * Returns a bit mask of all memory type indices that are coherent between host and device.
+ * Each bit [0..31] in the returned bit mask indicates a distinct memory type.
+ */
+ inline uint32_t getHostCoherentMemoryTypes() { return _hostCoherentMemoryTypes; }
+
+ /**
* Returns a bit mask of all memory type indices that do NOT allow host visibility to the memory.
* Each bit [0..31] in the returned bit mask indicates a distinct memory type.
*/
inline uint32_t getPrivateMemoryTypes() { return _privateMemoryTypes; }
+ /**
+ * Returns a bit mask of all memory type indices that are lazily allocated.
+ * Each bit [0..31] in the returned bit mask indicates a distinct memory type.
+ */
+ inline uint32_t getLazilyAllocatedMemoryTypes() { return _lazilyAllocatedMemoryTypes; }
+
#pragma mark Metal
@@ -277,7 +289,9 @@
std::vector<MVKQueueFamily*> _queueFamilies;
uint32_t _allMemoryTypes;
uint32_t _hostVisibleMemoryTypes;
+ uint32_t _hostCoherentMemoryTypes;
uint32_t _privateMemoryTypes;
+ uint32_t _lazilyAllocatedMemoryTypes;
};
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
index d4ee513..4c22229 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
@@ -177,6 +177,10 @@
if (tiling == VK_IMAGE_TILING_LINEAR) {
return VK_ERROR_FORMAT_NOT_SUPPORTED;
}
+ // Metal does not allow compressed formats on 1D textures
+ if (mvkFormatTypeFromVkFormat(format) == kMVKFormatNone) {
+ return VK_ERROR_FORMAT_NOT_SUPPORTED;
+ }
maxExt.width = pLimits->maxImageDimension1D;
maxExt.height = 1;
maxExt.depth = 1;
@@ -207,6 +211,10 @@
// - They may not be multisampled.
sampleCounts = VK_SAMPLE_COUNT_1_BIT;
} else {
+ // Compressed multisampled textures aren't supported.
+ if (mvkFormatTypeFromVkFormat(format) == kMVKFormatNone) {
+ sampleCounts = VK_SAMPLE_COUNT_1_BIT;
+ }
maxLevels = mvkMipmapLevels3D(maxExt);
maxLayers = pLimits->maxImageArrayLayers;
}
@@ -216,6 +224,10 @@
if (tiling == VK_IMAGE_TILING_LINEAR) {
return VK_ERROR_FORMAT_NOT_SUPPORTED;
}
+ // Metal does not allow compressed formats on 3D textures
+ if (mvkFormatTypeFromVkFormat(format) == kMVKFormatNone) {
+ return VK_ERROR_FORMAT_NOT_SUPPORTED;
+ }
maxExt.width = pLimits->maxImageDimension3D;
maxExt.height = pLimits->maxImageDimension3D;
maxExt.depth = pLimits->maxImageDimension3D;
@@ -227,6 +239,10 @@
if (tiling == VK_IMAGE_TILING_LINEAR) {
return VK_ERROR_FORMAT_NOT_SUPPORTED;
}
+ // Metal does not allow compressed formats on anything but 2D textures
+ if (mvkFormatTypeFromVkFormat(format) == kMVKFormatNone) {
+ return VK_ERROR_FORMAT_NOT_SUPPORTED;
+ }
maxExt = { 1, 1, 1};
maxLayers = 1;
maxLevels = 1;
@@ -1061,6 +1077,13 @@
// - encoder synchronizeResource: followed by
// - cmdbuff waitUntilCompleted (or completion handler)
// - buffer/texture getBytes:
+ // Metal Memoryless:
+ // - applies only to textures used as transient render targets
+ // - only available with TBDR devices (i.e. on iOS)
+ // - no device memory is reserved at all
+ // - storage comes from tile memory
+ // - contents are undefined after rendering
+ // - use for temporary renderable textures
_memoryProperties = (VkPhysicalDeviceMemoryProperties){
.memoryHeapCount = 1,
@@ -1086,20 +1109,36 @@
.heapIndex = 0,
.propertyFlags = MVK_VK_MEMORY_TYPE_METAL_SHARED, // Shared storage
},
+#if MVK_IOS
+ {
+ .heapIndex = 0,
+ .propertyFlags = MVK_VK_MEMORY_TYPE_METAL_MEMORYLESS, // Memoryless storage
+ },
+#endif
},
};
#if MVK_MACOS
_memoryProperties.memoryTypeCount = 3;
- _privateMemoryTypes = 0x1; // Private only
- _hostVisibleMemoryTypes = 0x6; // Shared & managed
- _allMemoryTypes = 0x7; // Private, shared, & managed
+ _privateMemoryTypes = 0x1; // Private only
+ _lazilyAllocatedMemoryTypes = 0x0; // Not supported on macOS
+ _hostCoherentMemoryTypes = 0x4; // Shared only
+ _hostVisibleMemoryTypes = 0x6; // Shared & managed
+ _allMemoryTypes = 0x7; // Private, shared, & managed
#endif
#if MVK_IOS
_memoryProperties.memoryTypeCount = 2; // Managed storage not available on iOS
- _privateMemoryTypes = 0x1; // Private only
- _hostVisibleMemoryTypes = 0x2; // Shared only
- _allMemoryTypes = 0x3; // Private & shared
+ _privateMemoryTypes = 0x1; // Private only
+ _lazilyAllocatedMemoryTypes = 0x0; // Not supported on this version
+ _hostCoherentMemoryTypes = 0x2; // Shared only
+ _hostVisibleMemoryTypes = 0x2; // Shared only
+ _allMemoryTypes = 0x3; // Private & shared
+ if ([getMTLDevice() supportsFeatureSet: MTLFeatureSet_iOS_GPUFamily1_v3]) {
+ _memoryProperties.memoryTypeCount = 3; // Memoryless storage available
+ _privateMemoryTypes = 0x5; // Private & memoryless
+ _lazilyAllocatedMemoryTypes = 0x4; // Memoryless only
+ _allMemoryTypes = 0x7; // Private, shared & memoryless
+ }
#endif
}
@@ -1229,6 +1268,11 @@
vkMemFlags = MVK_VK_MEMORY_TYPE_METAL_MANAGED;
break;
#endif
+#if MVK_IOS
+ case MTLStorageModeMemoryless:
+ vkMemFlags = MVK_VK_MEMORY_TYPE_METAL_MEMORYLESS;
+ break;
+#endif
default:
vkMemFlags = MVK_VK_MEMORY_TYPE_METAL_SHARED;
break;
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h
index aaff4be..baeda6b 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h
@@ -35,7 +35,13 @@
public:
/** Returns whether the memory is accessible from the host. */
- inline bool isMemoryHostAccessible() { return (_mtlStorageMode != MTLStorageModePrivate); }
+ inline bool isMemoryHostAccessible() {
+#if MVK_IOS
+ if (_mtlStorageMode == MTLStorageModeMemoryless)
+ return false;
+#endif
+ return (_mtlStorageMode != MTLStorageModePrivate);
+ }
/** Returns whether the memory is automatically coherent between device and host. */
inline bool isMemoryHostCoherent() { return (_mtlStorageMode == MTLStorageModeShared); }
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
index e6af638..e6edb3d 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
@@ -149,6 +149,17 @@
pMemoryRequirements->memoryTypeBits = (_isDepthStencilAttachment
? _device->getPhysicalDevice()->getPrivateMemoryTypes()
: _device->getPhysicalDevice()->getAllMemoryTypes());
+#if MVK_MACOS
+ if (!_isLinear) { // XXX Linear images must support host-coherent memory
+ mvkDisableFlag(pMemoryRequirements->memoryTypeBits, _device->getPhysicalDevice()->getHostCoherentMemoryTypes());
+ }
+#endif
+#if MVK_IOS
+ // Only transient attachments may use memoryless storage
+ if (!mvkAreFlagsEnabled(_usage, VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT) ) {
+ mvkDisableFlag(pMemoryRequirements->memoryTypeBits, _device->getPhysicalDevice()->getLazilyAllocatedMemoryTypes());
+ }
+#endif
return VK_SUCCESS;
}
@@ -475,6 +486,10 @@
mvkNotifyErrorWithText(VK_ERROR_FEATURE_NOT_PRESENT, "vkCreateImage() : Metal may not allow uncompressed views of compressed images.");
}
+ if ( (pCreateInfo->imageType != VK_IMAGE_TYPE_2D) && (mvkFormatTypeFromVkFormat(pCreateInfo->format) == kMVKFormatNone) ) {
+ setConfigurationResult(mvkNotifyErrorWithText(VK_ERROR_FEATURE_NOT_PRESENT, "vkCreateImage() : Under Metal, compressed formats may only be used with 2D images."));
+ }
+
// Adjust the info components to be compatible with Metal, then use the modified versions
// to set other config info. Vulkan allows unused extent dimensions to be zero, but Metal
// requires minimum of one. Adjust samples and miplevels for the right texture type.
@@ -502,6 +517,10 @@
setConfigurationResult(mvkNotifyErrorWithText(VK_ERROR_FEATURE_NOT_PRESENT, "vkCreateImage() : Under Metal, multisampling can only be used with a 2D image type with an array length of 1. Setting sample count to 1."));
_samples = VK_SAMPLE_COUNT_1_BIT;
}
+ if ( (_samples > 1) && (mvkFormatTypeFromVkFormat(pCreateInfo->format) == kMVKFormatNone) ) {
+ setConfigurationResult(mvkNotifyErrorWithText(VK_ERROR_FEATURE_NOT_PRESENT, "vkCreateImage() : Under Metal, multisampling cannot be used with compressed images. Setting sample count to 1."));
+ _samples = VK_SAMPLE_COUNT_1_BIT;
+ }
_isDepthStencilAttachment = (mvkAreFlagsEnabled(pCreateInfo->usage, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) ||
mvkAreFlagsEnabled(mvkVkFormatProperties(pCreateInfo->format).optimalTilingFeatures, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT));
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm
index fb8f2d4..ef1f8ba 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm
@@ -399,8 +399,7 @@
if (vbDesc.stepFunction == MTLVertexStepFunctionPerInstance) {
if (pVKVB->divisor == 0)
vbDesc.stepFunction = MTLVertexStepFunctionConstant;
- else
- vbDesc.stepRate = pVKVB->divisor;
+ vbDesc.stepRate = pVKVB->divisor;
}
}
}
diff --git a/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.mm b/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.mm
index 93bebd6..71862c1 100644
--- a/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.mm
+++ b/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.mm
@@ -1129,6 +1129,12 @@
// If not visible to the host: Private
if ( !mvkAreFlagsEnabled(vkFlags, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) ) {
+#if MVK_IOS
+ // iOS: If lazily allocated, Memoryless
+ if (mvkAreFlagsEnabled(vkFlags, VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT)) {
+ return MTLStorageModeMemoryless;
+ }
+#endif
return MTLStorageModePrivate;
}
@@ -1177,6 +1183,11 @@
mvkEnableFlag(mtlFlags, MTLResourceStorageModeManaged);
break;
#endif
+#if MVK_IOS
+ case MTLStorageModeMemoryless:
+ mvkEnableFlag(mtlFlags, MTLResourceStorageModeMemoryless);
+ break;
+#endif
default: // Silence erroneous -Wswitch-enum warning on MTLResourceStorageModeManaged under iOS
break;
}
diff --git a/MoltenVK/scripts/create_dylib.sh b/MoltenVK/scripts/create_dylib.sh
index 8dc0129..b96e5db 100755
--- a/MoltenVK/scripts/create_dylib.sh
+++ b/MoltenVK/scripts/create_dylib.sh
@@ -6,21 +6,27 @@
export MVK_SYS_FWK_DIR="${SDK_DIR}/System/Library/Frameworks"
export MVK_USR_LIB_DIR="${SDK_DIR}/usr/lib"
+if test x"${ENABLE_BITCODE}" = xYES; then
+ MVK_EMBED_BITCODE="-fembed-bitcode"
+fi
+
if test x"${ENABLE_THREAD_SANITIZER}" = xYES; then
MVK_TSAN="-fsanitize=thread"
fi
-clang \
--dynamiclib ${MVK_TSAN} \
--arch ${MVK_ARCH} \
+clang++ \
+-stdlib=${CLANG_CXX_LIBRARY} \
+-dynamiclib \
+$(printf -- "-arch %s " ${ARCHS}) \
-m${MVK_OS}-version-min=${MVK_MIN_OS_VERSION} \
-compatibility_version 1.0.0 -current_version 1.0.0 \
-install_name "@rpath/${MVK_DYLIB_NAME}" \
-Wno-incompatible-sysroot \
+${MVK_EMBED_BITCODE} \
+${MVK_TSAN} \
-isysroot ${SDK_DIR} \
-iframework ${MVK_SYS_FWK_DIR} \
-framework Metal ${MVK_IOSURFACE_FWK} -framework ${MVK_UX_FWK} -framework QuartzCore -framework IOKit -framework Foundation \
--library-directory ${MVK_USR_LIB_DIR} \
--lSystem -lc++ \
-o "${BUILT_PRODUCTS_DIR}/${MVK_DYLIB_NAME}" \
-force_load "${BUILT_PRODUCTS_DIR}/lib${PRODUCT_NAME}.a"
diff --git a/MoltenVKPackaging.xcodeproj/project.pbxproj b/MoltenVKPackaging.xcodeproj/project.pbxproj
index 65e8fd6..bf7d955 100644
--- a/MoltenVKPackaging.xcodeproj/project.pbxproj
+++ b/MoltenVKPackaging.xcodeproj/project.pbxproj
@@ -287,7 +287,7 @@
A90B2B1D1A9B6170008EE819 /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1000;
+ LastUpgradeCheck = 1010;
TargetAttributes = {
A9FEADBC1F3517480010240E = {
DevelopmentTeam = VU3TCKU48B;
diff --git "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050Debug\051.xcscheme" "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050Debug\051.xcscheme"
index 5a51a8c..4c59e5a 100644
--- "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050Debug\051.xcscheme"
+++ "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050Debug\051.xcscheme"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050iOS only\051.xcscheme" "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050iOS only\051.xcscheme"
index 01bdede..3c4764f 100644
--- "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050iOS only\051.xcscheme"
+++ "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050iOS only\051.xcscheme"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050macOS only\051.xcscheme" "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050macOS only\051.xcscheme"
index d290881..15adf45 100644
--- "a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050macOS only\051.xcscheme"
+++ "b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package \050macOS only\051.xcscheme"
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package.xcscheme b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package.xcscheme
index 2e8c2d4..9fd98c0 100644
--- a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package.xcscheme
+++ b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MoltenVK Package.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.cpp b/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.cpp
index ad2c0f8..9460b2a 100644
--- a/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.cpp
+++ b/MoltenVKShaderConverter/MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.cpp
@@ -206,7 +206,6 @@
mslOpts.aux_buffer_index = context.options.auxBufferIndex;
mslOpts.enable_point_size_builtin = context.options.isRenderingPoints;
mslOpts.disable_rasterization = context.options.isRasterizationDisabled;
- mslOpts.resolve_specialized_array_lengths = true;
mslOpts.swizzle_texture_samples = true;
pMSLCompiler->set_msl_options(mslOpts);
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj
index 2ae73fc..0c7abb6 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj
@@ -199,6 +199,14 @@
A93E831F211F76F6001FEBD4 /* InitializeDll.h in Headers */ = {isa = PBXBuildFile; fileRef = A93E826C211F76F6001FEBD4 /* InitializeDll.h */; };
A93E8320211F76F6001FEBD4 /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93E826D211F76F6001FEBD4 /* InitializeDll.cpp */; };
A93E8321211F76F6001FEBD4 /* InitializeDll.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A93E826D211F76F6001FEBD4 /* InitializeDll.cpp */; };
+ A94E30CF219209C700394673 /* spirv_parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94E30CD219209C700394673 /* spirv_parser.cpp */; };
+ A94E30D0219209C700394673 /* spirv_parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94E30CD219209C700394673 /* spirv_parser.cpp */; };
+ A94E30D1219209C700394673 /* spirv_parser.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A94E30CE219209C700394673 /* spirv_parser.hpp */; };
+ A94E30D2219209C700394673 /* spirv_parser.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A94E30CE219209C700394673 /* spirv_parser.hpp */; };
+ A94E30D521920A8C00394673 /* spirv_cross_parsed_ir.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A94E30D321920A8C00394673 /* spirv_cross_parsed_ir.hpp */; };
+ A94E30D621920A8C00394673 /* spirv_cross_parsed_ir.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A94E30D321920A8C00394673 /* spirv_cross_parsed_ir.hpp */; };
+ A94E30D721920A8C00394673 /* spirv_cross_parsed_ir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94E30D421920A8C00394673 /* spirv_cross_parsed_ir.cpp */; };
+ A94E30D821920A8C00394673 /* spirv_cross_parsed_ir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A94E30D421920A8C00394673 /* spirv_cross_parsed_ir.cpp */; };
A95096BB2003D00300F10950 /* FileSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A925B70A1C7754B2006E7ECD /* FileSupport.mm */; };
A95096BC2003D00300F10950 /* FileSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A925B70A1C7754B2006E7ECD /* FileSupport.mm */; };
A95096BF2003D32400F10950 /* DirectorySupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A95096BD2003D32400F10950 /* DirectorySupport.mm */; };
@@ -953,6 +961,10 @@
A93E826B211F76F6001FEBD4 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
A93E826C211F76F6001FEBD4 /* InitializeDll.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InitializeDll.h; sourceTree = "<group>"; };
A93E826D211F76F6001FEBD4 /* InitializeDll.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitializeDll.cpp; sourceTree = "<group>"; };
+ A94E30CD219209C700394673 /* spirv_parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_parser.cpp; sourceTree = "<group>"; };
+ A94E30CE219209C700394673 /* spirv_parser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = spirv_parser.hpp; sourceTree = "<group>"; };
+ A94E30D321920A8C00394673 /* spirv_cross_parsed_ir.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = spirv_cross_parsed_ir.hpp; sourceTree = "<group>"; };
+ A94E30D421920A8C00394673 /* spirv_cross_parsed_ir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_cross_parsed_ir.cpp; sourceTree = "<group>"; };
A95096BD2003D32400F10950 /* DirectorySupport.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DirectorySupport.mm; sourceTree = "<group>"; };
A95096BE2003D32400F10950 /* DirectorySupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DirectorySupport.h; sourceTree = "<group>"; };
A95C5F3D1DEA9070000D17B6 /* spirv_cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_cfg.cpp; sourceTree = "<group>"; };
@@ -1328,12 +1340,16 @@
A95C5F3D1DEA9070000D17B6 /* spirv_cfg.cpp */,
A95C5F3E1DEA9070000D17B6 /* spirv_cfg.hpp */,
A9AB19901CB5B5A80001E7F9 /* spirv_common.hpp */,
+ A94E30D421920A8C00394673 /* spirv_cross_parsed_ir.cpp */,
+ A94E30D321920A8C00394673 /* spirv_cross_parsed_ir.hpp */,
A9AB19911CB5B5A80001E7F9 /* spirv_cross.cpp */,
A9AB19921CB5B5A80001E7F9 /* spirv_cross.hpp */,
A9AB19931CB5B5A80001E7F9 /* spirv_glsl.cpp */,
A9AB19941CB5B5A80001E7F9 /* spirv_glsl.hpp */,
A9AB19951CB5B5A80001E7F9 /* spirv_msl.cpp */,
A9AB19961CB5B5A80001E7F9 /* spirv_msl.hpp */,
+ A94E30CD219209C700394673 /* spirv_parser.cpp */,
+ A94E30CE219209C700394673 /* spirv_parser.hpp */,
);
name = "SPIRV-Cross";
path = "../SPIRV-Cross";
@@ -2058,6 +2074,7 @@
A96FE8BE215473A00060D1A3 /* spirv_optimizer_options.h in Headers */,
A96FE76E215473A00060D1A3 /* compact_ids_pass.h in Headers */,
A96FE712215473A00060D1A3 /* spirv_definition.h in Headers */,
+ A94E30D1219209C700394673 /* spirv_parser.hpp in Headers */,
A96FE8A8215473A00060D1A3 /* dominator_tree.h in Headers */,
A96FE7E0215473A00060D1A3 /* struct_cfg_analysis.h in Headers */,
A96FE766215473A00060D1A3 /* loop_fusion.h in Headers */,
@@ -2134,6 +2151,7 @@
A96FE8DC215473A00060D1A3 /* basic_block.h in Headers */,
A96FE834215473A00060D1A3 /* dead_variable_elimination.h in Headers */,
A96FE740215473A00060D1A3 /* text_handler.h in Headers */,
+ A94E30D521920A8C00394673 /* spirv_cross_parsed_ir.hpp in Headers */,
A9AB199B1CB5B5A80001E7F9 /* spirv_cross.hpp in Headers */,
A96FE7F8215473A00060D1A3 /* dead_insert_elim_pass.h in Headers */,
A96FE872215473A00060D1A3 /* local_ssa_elim_pass.h in Headers */,
@@ -2219,6 +2237,7 @@
A96FE8BF215473A00060D1A3 /* spirv_optimizer_options.h in Headers */,
A96FE76F215473A00060D1A3 /* compact_ids_pass.h in Headers */,
A96FE713215473A00060D1A3 /* spirv_definition.h in Headers */,
+ A94E30D2219209C700394673 /* spirv_parser.hpp in Headers */,
A96FE8A9215473A00060D1A3 /* dominator_tree.h in Headers */,
A96FE7E1215473A00060D1A3 /* struct_cfg_analysis.h in Headers */,
A96FE767215473A00060D1A3 /* loop_fusion.h in Headers */,
@@ -2295,6 +2314,7 @@
A96FE8DD215473A00060D1A3 /* basic_block.h in Headers */,
A96FE835215473A00060D1A3 /* dead_variable_elimination.h in Headers */,
A96FE741215473A00060D1A3 /* text_handler.h in Headers */,
+ A94E30D621920A8C00394673 /* spirv_cross_parsed_ir.hpp in Headers */,
A9AB199C1CB5B5A80001E7F9 /* spirv_cross.hpp in Headers */,
A96FE7F9215473A00060D1A3 /* dead_insert_elim_pass.h in Headers */,
A96FE873215473A00060D1A3 /* local_ssa_elim_pass.h in Headers */,
@@ -2464,7 +2484,7 @@
A9F55D25198BE6A7004EC31B /* Project object */ = {
isa = PBXProject;
attributes = {
- LastUpgradeCheck = 1000;
+ LastUpgradeCheck = 1010;
ORGANIZATIONNAME = "The Brenwill Workshop Ltd.";
TargetAttributes = {
A9092A8C1A81717B00051823 = {
@@ -2678,6 +2698,7 @@
A96FE73C215473A00060D1A3 /* markv_encoder.cpp in Sources */,
A96FE90C215473A00060D1A3 /* instruction.cpp in Sources */,
A96FE81A215473A00060D1A3 /* strength_reduction_pass.cpp in Sources */,
+ A94E30D721920A8C00394673 /* spirv_cross_parsed_ir.cpp in Sources */,
A96FE78A215473A00060D1A3 /* local_redundancy_elimination.cpp in Sources */,
A96FE826215473A00060D1A3 /* loop_fusion_pass.cpp in Sources */,
A96FE782215473A00060D1A3 /* local_single_block_elim_pass.cpp in Sources */,
@@ -2717,6 +2738,7 @@
A96FE7F2215473A00060D1A3 /* simplification_pass.cpp in Sources */,
A95096BB2003D00300F10950 /* FileSupport.mm in Sources */,
A96FE6F2215473A00060D1A3 /* string_utils.cpp in Sources */,
+ A94E30CF219209C700394673 /* spirv_parser.cpp in Sources */,
A909408A1C58013E0094110D /* SPIRVToMSLConverter.cpp in Sources */,
A96FE7C0215473A00060D1A3 /* loop_unswitch_pass.cpp in Sources */,
A96FE82E215473A00060D1A3 /* dead_insert_elim_pass.cpp in Sources */,
@@ -2845,6 +2867,7 @@
A96FE73D215473A00060D1A3 /* markv_encoder.cpp in Sources */,
A96FE90D215473A00060D1A3 /* instruction.cpp in Sources */,
A96FE81B215473A00060D1A3 /* strength_reduction_pass.cpp in Sources */,
+ A94E30D821920A8C00394673 /* spirv_cross_parsed_ir.cpp in Sources */,
A96FE78B215473A00060D1A3 /* local_redundancy_elimination.cpp in Sources */,
A96FE827215473A00060D1A3 /* loop_fusion_pass.cpp in Sources */,
A96FE783215473A00060D1A3 /* local_single_block_elim_pass.cpp in Sources */,
@@ -2884,6 +2907,7 @@
A96FE7F3215473A00060D1A3 /* simplification_pass.cpp in Sources */,
A95096BC2003D00300F10950 /* FileSupport.mm in Sources */,
A96FE6F3215473A00060D1A3 /* string_utils.cpp in Sources */,
+ A94E30D0219209C700394673 /* spirv_parser.cpp in Sources */,
A909408B1C58013E0094110D /* SPIRVToMSLConverter.cpp in Sources */,
A96FE7C1215473A00060D1A3 /* loop_unswitch_pass.cpp in Sources */,
A96FE82F215473A00060D1A3 /* dead_insert_elim_pass.cpp in Sources */,
@@ -2988,6 +3012,7 @@
A93747401A9A8B2900F29B34 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ BITCODE_GENERATION_MODE = bitcode;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
CODE_SIGN_IDENTITY = "iPhone Developer";
@@ -3007,6 +3032,7 @@
A93747411A9A8B2900F29B34 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ BITCODE_GENERATION_MODE = bitcode;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
CODE_SIGN_IDENTITY = "iPhone Developer";
@@ -3056,6 +3082,7 @@
A93903BD1C57E9D700FE90DC /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ BITCODE_GENERATION_MODE = bitcode;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
@@ -3078,6 +3105,7 @@
A93903BE1C57E9D700FE90DC /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ BITCODE_GENERATION_MODE = bitcode;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-iOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-iOS.xcscheme
index 7ad6164..7e9b364 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-iOS.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-iOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-macOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-macOS.xcscheme
index 4642b19..715ca93 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-macOS.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKGLSLToSPIRVConverter-macOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-iOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-iOS.xcscheme
index 6eeffb4..c76cb84 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-iOS.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-iOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-macOS.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-macOS.xcscheme
index 130fdc7..8d5c51b 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-macOS.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKSPIRVToMSLConverter-macOS.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme
index fd1fc60..f2c12eb 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
- LastUpgradeVersion = "1000"
+ LastUpgradeVersion = "1010"
version = "2.0">
<BuildAction
parallelizeBuildables = "YES"
diff --git a/fetchDependencies b/fetchDependencies
index 86dda2e..eadd1d3 100755
--- a/fetchDependencies
+++ b/fetchDependencies
@@ -101,8 +101,7 @@
EXT_REV_DIR=ExternalRevisions
echo
-echo Retrieving MoltenVK dependencies into ${EXT_DIR}.
-echo
+echo ========== Retrieving MoltenVK dependencies into ${EXT_DIR} ==========
mkdir -p ${EXT_DIR}
cd ${EXT_DIR}
@@ -110,6 +109,10 @@
# ----------------- Cereal -------------------
+echo
+echo ========== Cereal ==========
+echo
+
REPO_NAME=cereal
REPO_URL="https://github.com/USCiLab/${REPO_NAME}.git"
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
@@ -119,6 +122,10 @@
# ----------------- Vulkan-Headers -------------------
+echo
+echo ========== Vulkan-Headers ==========
+echo
+
# When MoltenVK is built by something that already has
# a copy of this repo, use it by creating a symlink.
if [ ! "$V_HEADERS_ROOT" = "" ]; then
@@ -136,6 +143,10 @@
# ----------------- SPIRV-Cross -------------------
+echo
+echo ========== SPIRV-Cross ==========
+echo
+
# When MoltenVK is built by something that already has
# a copy of this repo, use it by creating a symlink.
if [ ! "$SPIRV_CROSS_ROOT" = "" ]; then
@@ -153,6 +164,10 @@
# ----------------- glslang -------------------
+echo
+echo ========== glslang and SPIRV-Tools ==========
+echo
+
# When MoltenVK is built by something that already has
# a copy of this repo, use it by creating a symlink.
if [ ! "$GLSLANG_ROOT" = "" ]; then
@@ -176,6 +191,10 @@
# ----------------- Vulkan-Tools -------------------
+echo
+echo ========== Vulkan-Tools ==========
+echo
+
REPO_NAME=Vulkan-Tools
REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
@@ -185,6 +204,10 @@
# ----------------- VulkanSamples -------------------
+echo
+echo ========== VulkanSamples ==========
+echo
+
REPO_NAME=VulkanSamples
REPO_URL="https://github.com/LunarG/${REPO_NAME}.git"
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")