moltenvk/Demos/Cube/Cube.xcodeproj/project.pbxproj

567 lines
24 KiB
Plaintext
Raw Normal View History

2017-11-17 11:14:29 -05:00
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
Improve behavior of swapchain image presentation stalls caused by Metal regression. In a recent Metal regression, Metal sometimes does not trigger the [CAMetalDrawable addPresentedHandler:] callback on the final few (1-3) CAMetalDrawable presentations, and retains internal memory associated with these CAMetalDrawables. This does not occur for any CAMetalDrawable presentations prior to those final few. Most apps typically don't care much what happens after the last few CAMetalDrawables are presented, and typically end shortly after that. However, for some apps, such as Vulkan CTS WSI tests, which serially create potentially hundreds, or thousands, of CAMetalLayers and MTLDevices,these retained device memory allocations can pile up and cause the CTS WSI tests to stall, block, or crash. This issue has proven very difficult to debug, or replicate in incrementally controlled environments. It appears consistently in some scenarios, and never in other, almost identical scenarios. For example, the MoltenVK Cube demo consistently runs without encountering this issue, but CTS WSI test dEQP-VK.wsi.macos.swapchain.render.basic consistently triggers the issue. Both apps run almost identical Vulkan command paths, and identical swapchain image presentation paths, and result in GPU captures that have identical swapchain image presentations. We may ultimately have to wait for Apple to fix the core issue, but this update includes workarounds that helps in some cases. During vkQueueWaitIdle() and vkDeviceWaitIdle(), wait a short while for any in-flight swapchain image presentations to finish, and attempt to force completion by calling MVKPresentableSwapchainImage::forcePresentationCompletion(), which releases the current CAMetalDrawable, and attempts to retrieve a new one, to trigger the callback on the current CAMetalDrawable. In exploring possible work-arounds for this issue, this update adds significant structural improvements in the handling of swapchains, and quite a bit of new performance and logging functionality that is useful for debugging purposes. - Add several additional performance trackers, available via logging, or the mvk_private_api.h API. - Rename MVKPerformanceTracker members, and refactor performance result collection, to support tracking and logging memory use, or other measurements, in addition to just durations. - Redefine MVKQueuePerformance to add tracking separate performance metrics for MTLCommandBuffer retrieval, encoding, and execution, plus swapchain presentation. - Add MVKDevicePerformance as part of MVKPerformanceStatistics to track device information, including GPU device memory allocated, and update device memory results whenever performance content is requested. - Add MVKConfigActivityPerformanceLoggingStyle:: MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_DEVICE_LIFETIME_ACCUMULATE to accumulate performance and memory results across multiple serial invocations of VkDevices, during the lifetime of the app process. This is useful for accumulating performance results across multiple CTS tests. - Log destruction of VkDevice, VkPhysicalDevice, and VkInstance, to bookend the corresponding logs performed upon their creation. - Include consumed GPU memory in log when VkPhysicalDevice is destroyed. - Add mvkGetAvailableMTLDevicesArray() to support consistency when retrieving MTLDevices available on the system. - Add mvkVkCommandName() to generically map command use to a command name. - MVKDevice: - Support MTLPhysicalDevice.recommendedMaxWorkingSetSize on iOS & tvOS. - Include available and consumed GPU memory in log of GPU device at VkInstance creation time. - MVKQueue: - Add handleMTLCommandBufferError() to handle errors for all MTLCommandBuffer executions. - Track time to retrieve a MTLCommandBuffer. - If MTLCommandBuffer could not be retrieved during queue submission, report error, signal queue submission completion, and return VK_ERROR_OUT_OF_POOL_MEMORY. - waitIdle() simplify to use [MTLCommandBuffer waitUntilCompleted], plus also wait for in-flight presentations to complete, and attempt to force them to complete if they are stuck. - MVKPresentableSwapchainImage: - Don't track presenting MTLCommandBuffer. - Add limit on number of attempts to retrieve a drawable, and report VK_ERROR_OUT_OF_POOL_MEMORY if drawable cannot be retrieved. - Return VkResult from acquireAndSignalWhenAvailable() to notify upstream if MTLCommandBuffer could not be created. - Track presentation time. - Notify MVKQueue when presentation has completed. - Add forcePresentationCompletion(), which releases the current CAMetalDrawable, and attempts to retrieve a new one, to trigger the callback on the current CAMetalDrawable. Called when a swapchain is destroyed, or by queue if waiting for presentation to complete stalls, - If destroyed while in flight, stop tracking swapchain and don't notify when presentation completes. - MVKSwapchain: - Track active swapchain in MVKSurface to check oldSwapchain - Track MVKSurface to access layer and detect lost surface. - Don't track layer and layer observer, since MVKSurface handles these. - On destruction, wait until all in-flight presentable images have returned. - Remove empty and unused releaseUndisplayedSurfaces() function. - MVKSurface: - Consolidate constructors into initLayer() function. - Update logic to test for valid layer and to set up layer observer. - MVKSemaphoreImpl: - Add getReservationCount() - MVKBaseObject: - Add reportResult() and reportWarning() functions to support logging and reporting Vulkan results that are not actual errors. - Rename MVKCommandUse::kMVKCommandUseEndCommandBuffer to kMVKCommandUseBeginCommandBuffer, since that's where it is used. - Update MVK_CONFIGURATION_API_VERSION and MVK_PRIVATE_API_VERSION to 38. - Cube Demo support running a maximum number of frames.
2023-09-02 08:51:36 -04:00
objectVersion = 54;
2017-11-17 11:14:29 -05:00
objects = {
/* Begin PBXBuildFile section */
A93DBF3C24A2A4D500079F64 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B761C3AAE9800373FFD /* Icon.png */; };
A93DBF3E24A2A4D500079F64 /* Default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B751C3AAE9800373FFD /* Default~ipad.png */; };
A93DBF3F24A2A4D500079F64 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B741C3AAE9800373FFD /* Default-568h@2x.png */; };
A93DBF4124A2A4D500079F64 /* DemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6F1C3AAE9800373FFD /* DemoViewController.m */; };
A93DBF4224A2A4D500079F64 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */; };
A93DBF4324A2A4D500079F64 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B711C3AAE9800373FFD /* main.m */; };
A94D4CB724A2C9A3009C9139 /* MainTV.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A94D4CB624A2C9A3009C9139 /* MainTV.storyboard */; };
A991E27624FD543A00D968D4 /* MoltenVK.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A991E27524FD543A00D968D4 /* MoltenVK.xcframework */; };
A991E27724FD543A00D968D4 /* MoltenVK.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A991E27524FD543A00D968D4 /* MoltenVK.xcframework */; };
A991E27824FD543A00D968D4 /* MoltenVK.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = A991E27524FD543A00D968D4 /* MoltenVK.xcframework */; };
2017-11-17 11:14:29 -05:00
A9B53B151C3AC0BE00ABC6F6 /* macOS.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */; };
A9B53B161C3AC0BE00ABC6F6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B8A1C3AAEA200373FFD /* Main.storyboard */; };
A9B53B181C3AC0BE00ABC6F6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B831C3AAEA200373FFD /* AppDelegate.m */; };
A9B53B191C3AC0BE00ABC6F6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B871C3AAEA200373FFD /* main.m */; };
A9B53B1A1C3AC0BE00ABC6F6 /* DemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B851C3AAEA200373FFD /* DemoViewController.m */; };
A9B53B2F1C3AC15200ABC6F6 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B761C3AAE9800373FFD /* Icon.png */; };
A9B53B301C3AC15200ABC6F6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B771C3AAE9800373FFD /* Main.storyboard */; };
A9B53B311C3AC15200ABC6F6 /* Default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B751C3AAE9800373FFD /* Default~ipad.png */; };
A9B53B321C3AC15200ABC6F6 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B67B741C3AAE9800373FFD /* Default-568h@2x.png */; };
A9B53B341C3AC15200ABC6F6 /* DemoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6F1C3AAE9800373FFD /* DemoViewController.m */; };
A9B53B351C3AC15200ABC6F6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */; };
A9B53B361C3AC15200ABC6F6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B67B711C3AAE9800373FFD /* main.m */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
A904B5301C9A08C90008C013 /* cube.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cube.c; sourceTree = "<group>"; };
A904B5311C9A08C90008C013 /* cube.frag */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = cube.frag; sourceTree = "<group>"; };
A904B5331C9A08C90008C013 /* cube.vert */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = cube.vert; sourceTree = "<group>"; };
A93DBF4B24A2A4D500079F64 /* Cube.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Cube.app; sourceTree = BUILT_PRODUCTS_DIR; };
A94D4CB424A2A95E009C9139 /* InfoTV.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = InfoTV.plist; sourceTree = "<group>"; };
A94D4CB624A2C9A3009C9139 /* MainTV.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = MainTV.storyboard; sourceTree = "<group>"; };
A991E27524FD543A00D968D4 /* MoltenVK.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = MoltenVK.xcframework; path = ../../MoltenVK/MoltenVK.xcframework; sourceTree = "<group>"; };
2017-11-17 11:14:29 -05:00
A9B53B271C3AC0BE00ABC6F6 /* Cube.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Cube.app; sourceTree = BUILT_PRODUCTS_DIR; };
A9B53B431C3AC15200ABC6F6 /* Cube.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Cube.app; sourceTree = BUILT_PRODUCTS_DIR; };
A9B67B6B1C3AAE9800373FFD /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
A9B67B6E1C3AAE9800373FFD /* DemoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoViewController.h; sourceTree = "<group>"; };
A9B67B6F1C3AAE9800373FFD /* DemoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoViewController.m; sourceTree = "<group>"; };
A9B67B701C3AAE9800373FFD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
A9B67B711C3AAE9800373FFD /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
A9B67B721C3AAE9800373FFD /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = "<group>"; };
A9B67B741C3AAE9800373FFD /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = "<group>"; };
A9B67B751C3AAE9800373FFD /* Default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default~ipad.png"; sourceTree = "<group>"; };
A9B67B761C3AAE9800373FFD /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = "<group>"; };
A9B67B771C3AAE9800373FFD /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
A9B67B821C3AAEA200373FFD /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
A9B67B831C3AAEA200373FFD /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
A9B67B841C3AAEA200373FFD /* DemoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DemoViewController.h; sourceTree = "<group>"; };
A9B67B851C3AAEA200373FFD /* DemoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DemoViewController.m; sourceTree = "<group>"; };
A9B67B861C3AAEA200373FFD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
A9B67B871C3AAEA200373FFD /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
A9B67B881C3AAEA200373FFD /* Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Prefix.pch; sourceTree = "<group>"; };
A9B67B8A1C3AAEA200373FFD /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = "<group>"; };
A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = macOS.xcassets; sourceTree = "<group>"; };
A9B734FE2576E04000455E2A /* Cube.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Cube.entitlements; sourceTree = "<group>"; };
2017-11-17 11:14:29 -05:00
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
A93DBF4424A2A4D500079F64 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
A991E27724FD543A00D968D4 /* MoltenVK.xcframework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2017-11-17 11:14:29 -05:00
A9B53B1B1C3AC0BE00ABC6F6 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
A991E27824FD543A00D968D4 /* MoltenVK.xcframework in Frameworks */,
2017-11-17 11:14:29 -05:00
);
runOnlyForDeploymentPostprocessing = 0;
};
A9B53B371C3AC15200ABC6F6 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
A991E27624FD543A00D968D4 /* MoltenVK.xcframework in Frameworks */,
2017-11-17 11:14:29 -05:00
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
A9B53B271C3AC0BE00ABC6F6 /* Cube.app */,
A9B53B431C3AC15200ABC6F6 /* Cube.app */,
A93DBF4B24A2A4D500079F64 /* Cube.app */,
2017-11-17 11:14:29 -05:00
);
name = Products;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
A9B734FE2576E04000455E2A /* Cube.entitlements */,
A904B52C1C9A08C80008C013 /* cube */,
2017-11-17 11:14:29 -05:00
A9B67B6A1C3AAE9800373FFD /* iOS */,
A9B67B811C3AAEA200373FFD /* macOS */,
19C28FACFE9D520D11CA2CBB /* Products */,
A9C2ABA82185085B00DDBC03 /* Frameworks */,
2017-11-17 11:14:29 -05:00
);
name = CustomTemplate;
sourceTree = "<group>";
};
A904B52C1C9A08C80008C013 /* cube */ = {
2017-11-17 11:14:29 -05:00
isa = PBXGroup;
children = (
A904B5301C9A08C90008C013 /* cube.c */,
A904B5311C9A08C90008C013 /* cube.frag */,
A904B5331C9A08C90008C013 /* cube.vert */,
);
name = cube;
path = "../../External/Vulkan-Tools/cube";
2017-11-17 11:14:29 -05:00
sourceTree = "<group>";
};
A9B67B6A1C3AAE9800373FFD /* iOS */ = {
isa = PBXGroup;
children = (
A9B67B6B1C3AAE9800373FFD /* AppDelegate.h */,
A9B67B6C1C3AAE9800373FFD /* AppDelegate.m */,
A9B67B6E1C3AAE9800373FFD /* DemoViewController.h */,
A9B67B6F1C3AAE9800373FFD /* DemoViewController.m */,
A9B67B701C3AAE9800373FFD /* Info.plist */,
A94D4CB424A2A95E009C9139 /* InfoTV.plist */,
2017-11-17 11:14:29 -05:00
A9B67B711C3AAE9800373FFD /* main.m */,
A9B67B721C3AAE9800373FFD /* Prefix.pch */,
A9B67B731C3AAE9800373FFD /* Resources */,
);
path = iOS;
sourceTree = "<group>";
};
A9B67B731C3AAE9800373FFD /* Resources */ = {
isa = PBXGroup;
children = (
A9B67B741C3AAE9800373FFD /* Default-568h@2x.png */,
A9B67B751C3AAE9800373FFD /* Default~ipad.png */,
A9B67B761C3AAE9800373FFD /* Icon.png */,
A9B67B771C3AAE9800373FFD /* Main.storyboard */,
A94D4CB624A2C9A3009C9139 /* MainTV.storyboard */,
2017-11-17 11:14:29 -05:00
);
path = Resources;
sourceTree = "<group>";
};
A9B67B811C3AAEA200373FFD /* macOS */ = {
isa = PBXGroup;
children = (
A9B67B821C3AAEA200373FFD /* AppDelegate.h */,
A9B67B831C3AAEA200373FFD /* AppDelegate.m */,
A9B67B841C3AAEA200373FFD /* DemoViewController.h */,
A9B67B851C3AAEA200373FFD /* DemoViewController.m */,
A9B67B861C3AAEA200373FFD /* Info.plist */,
A9B67B871C3AAEA200373FFD /* main.m */,
A9B67B881C3AAEA200373FFD /* Prefix.pch */,
A9B67B891C3AAEA200373FFD /* Resources */,
);
path = macOS;
sourceTree = "<group>";
};
A9B67B891C3AAEA200373FFD /* Resources */ = {
isa = PBXGroup;
children = (
A9B67B8A1C3AAEA200373FFD /* Main.storyboard */,
A9B67B8B1C3AAEA200373FFD /* macOS.xcassets */,
);
path = Resources;
sourceTree = "<group>";
};
A9C2ABA82185085B00DDBC03 /* Frameworks */ = {
isa = PBXGroup;
children = (
A991E27524FD543A00D968D4 /* MoltenVK.xcframework */,
);
name = Frameworks;
sourceTree = "<group>";
};
2017-11-17 11:14:29 -05:00
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
A93DBF3A24A2A4D500079F64 /* Cube-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = A93DBF4824A2A4D500079F64 /* Build configuration list for PBXNativeTarget "Cube-tvOS" */;
buildPhases = (
A93DBF3B24A2A4D500079F64 /* Resources */,
A93DBF4024A2A4D500079F64 /* Sources */,
A93DBF4424A2A4D500079F64 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "Cube-tvOS";
productName = foo;
productReference = A93DBF4B24A2A4D500079F64 /* Cube.app */;
productType = "com.apple.product-type.application";
};
2017-11-17 11:14:29 -05:00
A9B53B0F1C3AC0BE00ABC6F6 /* Cube-macOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = A9B53B241C3AC0BE00ABC6F6 /* Build configuration list for PBXNativeTarget "Cube-macOS" */;
buildPhases = (
A9B53B141C3AC0BE00ABC6F6 /* Resources */,
A9B53B171C3AC0BE00ABC6F6 /* Sources */,
A9B53B1B1C3AC0BE00ABC6F6 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "Cube-macOS";
productName = foo;
productReference = A9B53B271C3AC0BE00ABC6F6 /* Cube.app */;
productType = "com.apple.product-type.application";
};
A9B53B291C3AC15200ABC6F6 /* Cube-iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = A9B53B401C3AC15200ABC6F6 /* Build configuration list for PBXNativeTarget "Cube-iOS" */;
buildPhases = (
A9B53B2E1C3AC15200ABC6F6 /* Resources */,
A9B53B331C3AC15200ABC6F6 /* Sources */,
A9B53B371C3AC15200ABC6F6 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "Cube-iOS";
productName = foo;
productReference = A9B53B431C3AC15200ABC6F6 /* Cube.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
attributes = {
2022-11-15 20:49:17 -05:00
LastUpgradeCheck = 1410;
2017-11-17 11:14:29 -05:00
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cube" */;
2017-11-17 11:14:29 -05:00
compatibilityVersion = "Xcode 8.0";
developmentRegion = en;
2017-11-17 11:14:29 -05:00
hasScannedForEncodings = 1;
knownRegions = (
ja,
fr,
de,
Base,
en,
2017-11-17 11:14:29 -05:00
);
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
projectDirPath = "";
projectRoot = "";
targets = (
A9B53B291C3AC15200ABC6F6 /* Cube-iOS */,
A93DBF3A24A2A4D500079F64 /* Cube-tvOS */,
2017-11-17 11:14:29 -05:00
A9B53B0F1C3AC0BE00ABC6F6 /* Cube-macOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
A93DBF3B24A2A4D500079F64 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A93DBF3C24A2A4D500079F64 /* Icon.png in Resources */,
A94D4CB724A2C9A3009C9139 /* MainTV.storyboard in Resources */,
A93DBF3E24A2A4D500079F64 /* Default~ipad.png in Resources */,
A93DBF3F24A2A4D500079F64 /* Default-568h@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2017-11-17 11:14:29 -05:00
A9B53B141C3AC0BE00ABC6F6 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A9B53B151C3AC0BE00ABC6F6 /* macOS.xcassets in Resources */,
A9B53B161C3AC0BE00ABC6F6 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A9B53B2E1C3AC15200ABC6F6 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A9B53B2F1C3AC15200ABC6F6 /* Icon.png in Resources */,
A9B53B301C3AC15200ABC6F6 /* Main.storyboard in Resources */,
A9B53B311C3AC15200ABC6F6 /* Default~ipad.png in Resources */,
A9B53B321C3AC15200ABC6F6 /* Default-568h@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
A93DBF4024A2A4D500079F64 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A93DBF4124A2A4D500079F64 /* DemoViewController.m in Sources */,
A93DBF4224A2A4D500079F64 /* AppDelegate.m in Sources */,
A93DBF4324A2A4D500079F64 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2017-11-17 11:14:29 -05:00
A9B53B171C3AC0BE00ABC6F6 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A9B53B181C3AC0BE00ABC6F6 /* AppDelegate.m in Sources */,
A9B53B191C3AC0BE00ABC6F6 /* main.m in Sources */,
A9B53B1A1C3AC0BE00ABC6F6 /* DemoViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A9B53B331C3AC15200ABC6F6 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A9B53B341C3AC15200ABC6F6 /* DemoViewController.m in Sources */,
A9B53B351C3AC15200ABC6F6 /* AppDelegate.m in Sources */,
A9B53B361C3AC15200ABC6F6 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
A93DBF4924A2A4D500079F64 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
MVK_SAMP_CUBE,
);
INFOPLIST_FILE = "$(SRCROOT)/iOS/InfoTV.plist";
MARKETING_VERSION = 1;
PRODUCT_NAME = Cube;
SDKROOT = appletvos;
TVOS_DEPLOYMENT_TARGET = 12.0;
};
name = Debug;
};
A93DBF4A24A2A4D500079F64 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
MVK_SAMP_CUBE,
);
INFOPLIST_FILE = "$(SRCROOT)/iOS/InfoTV.plist";
MARKETING_VERSION = 1;
PRODUCT_NAME = Cube;
SDKROOT = appletvos;
TVOS_DEPLOYMENT_TARGET = 12.0;
};
name = Release;
};
2017-11-17 11:14:29 -05:00
A9B53B251C3AC0BE00ABC6F6 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PREFIX_HEADER = "$(SRCROOT)/macOS/Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
MVK_SAMP_CUBE,
);
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.14;
2017-11-17 11:14:29 -05:00
PRODUCT_NAME = Cube;
SDKROOT = macosx;
};
name = Debug;
};
A9B53B261C3AC0BE00ABC6F6 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
GCC_PREFIX_HEADER = "$(SRCROOT)/macOS/Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
MVK_SAMP_CUBE,
);
INFOPLIST_FILE = "$(SRCROOT)/macOS/Info.plist";
MACOSX_DEPLOYMENT_TARGET = 10.14;
2017-11-17 11:14:29 -05:00
PRODUCT_NAME = Cube;
SDKROOT = macosx;
};
name = Release;
};
A9B53B411C3AC15200ABC6F6 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = Cube.entitlements;
2017-11-17 11:14:29 -05:00
CODE_SIGN_IDENTITY = "iPhone Developer";
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
2017-11-17 11:14:29 -05:00
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
MVK_SAMP_CUBE,
);
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
MARKETING_VERSION = 1;
2017-11-17 11:14:29 -05:00
PRODUCT_NAME = Cube;
SDKROOT = iphoneos;
SUPPORTS_MACCATALYST = YES;
TARGETED_DEVICE_FAMILY = "1,2,6";
2017-11-17 11:14:29 -05:00
};
name = Debug;
};
A9B53B421C3AC15200ABC6F6 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = Cube.entitlements;
2017-11-17 11:14:29 -05:00
CODE_SIGN_IDENTITY = "iPhone Developer";
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
2017-11-17 11:14:29 -05:00
GCC_PREFIX_HEADER = "$(SRCROOT)/iOS/Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
MVK_SAMP_CUBE,
);
INFOPLIST_FILE = "$(SRCROOT)/iOS/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
"IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2;
MARKETING_VERSION = 1;
2017-11-17 11:14:29 -05:00
PRODUCT_NAME = Cube;
SDKROOT = iphoneos;
SUPPORTS_MACCATALYST = YES;
TARGETED_DEVICE_FAMILY = "1,2,6";
2017-11-17 11:14:29 -05:00
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
2021-06-14 10:39:42 -04:00
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
2017-11-17 11:14:29 -05:00
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = NO;
COPY_PHASE_STRIP = NO;
ENABLE_BITCODE = NO;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
_DEBUG,
VK_NO_PROTOTYPES,
2017-11-17 11:14:29 -05:00
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
HEADER_SEARCH_PATHS = (
"\"$(SRCROOT)/include/cube\"",
"\"$(SRCROOT)/include/volk\"",
"\"$(SRCROOT)/../../MoltenVK/include\"",
2017-11-17 11:14:29 -05:00
);
OTHER_LDFLAGS = (
"-ObjC",
"-lstdc++",
);
2017-11-17 11:14:29 -05:00
PRODUCT_BUNDLE_IDENTIFIER = "com.moltenvk.${PRODUCT_NAME:identifier}";
};
name = Debug;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
2021-06-14 10:39:42 -04:00
CLANG_CXX_LANGUAGE_STANDARD = "c++17";
2017-11-17 11:14:29 -05:00
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = NO;
ENABLE_BITCODE = NO;
ENABLE_NS_ASSERTIONS = NO;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_OPTIMIZATION_LEVEL = 2;
2017-11-17 11:14:29 -05:00
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREPROCESSOR_DEFINITIONS = VK_NO_PROTOTYPES;
2017-11-17 11:14:29 -05:00
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
HEADER_SEARCH_PATHS = (
"\"$(SRCROOT)/include/cube\"",
"\"$(SRCROOT)/include/volk\"",
"\"$(SRCROOT)/../../MoltenVK/include\"",
2017-11-17 11:14:29 -05:00
);
OTHER_LDFLAGS = (
"-ObjC",
"-lstdc++",
);
2017-11-17 11:14:29 -05:00
PRODUCT_BUNDLE_IDENTIFIER = "com.moltenvk.${PRODUCT_NAME:identifier}";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
A93DBF4824A2A4D500079F64 /* Build configuration list for PBXNativeTarget "Cube-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A93DBF4924A2A4D500079F64 /* Debug */,
A93DBF4A24A2A4D500079F64 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
2017-11-17 11:14:29 -05:00
A9B53B241C3AC0BE00ABC6F6 /* Build configuration list for PBXNativeTarget "Cube-macOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A9B53B251C3AC0BE00ABC6F6 /* Debug */,
A9B53B261C3AC0BE00ABC6F6 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
A9B53B401C3AC15200ABC6F6 /* Build configuration list for PBXNativeTarget "Cube-iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
A9B53B411C3AC15200ABC6F6 /* Debug */,
A9B53B421C3AC15200ABC6F6 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cube" */ = {
2017-11-17 11:14:29 -05:00
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
C01FCF5008A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}