Merge pull request #912 from tmm1/tvos

tvOS support
This commit is contained in:
Bill Hollings 2020-06-19 09:39:29 -04:00 committed by GitHub
commit 2dd34de8ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 2961 additions and 21 deletions

View File

@ -42,9 +42,27 @@ extern "C" {
# endif // DEBUG
#endif // MVK_DEBUG
/** Building for tvOS. Use ifdef instead of defined() operator to allow MVK_TVOS to be used in expansions */
#ifndef MVK_TVOS
# ifdef __TV_OS_VERSION_MAX_ALLOWED
# define MVK_TVOS 1
# else
# define MVK_TVOS 0
# endif
#endif
/** Building for iOS or tvOS. Use ifdef instead of defined() operator to allow MVK_IOS_OR_TVOS to be used in expansions */
#ifndef MVK_IOS_OR_TVOS
# if __IPHONE_OS_VERSION_MAX_ALLOWED
# define MVK_IOS_OR_TVOS 1
# else
# define MVK_IOS_OR_TVOS 0
# endif
#endif
/** Building for iOS. Use ifdef instead of defined() operator to allow MVK_IOS to be used in expansions */
#ifndef MVK_IOS
# ifdef __IPHONE_OS_VERSION_MAX_ALLOWED
# if MVK_IOS_OR_TVOS && !MVK_TVOS
# define MVK_IOS 1
# else
# define MVK_IOS 0

View File

@ -56,7 +56,7 @@ inline bool mvkOSVersionIsAtLeast(MVKOSVersion macOSMinVer, MVKOSVersion iOSMinV
#if MVK_MACOS
return mvkOSVersionIsAtLeast(macOSMinVer);
#endif
#if MVK_IOS
#if MVK_IOS_OR_TVOS
return mvkOSVersionIsAtLeast(iOSMinVer);
#endif
}

View File

@ -97,16 +97,21 @@ bool mvkGetEnvVarBool(std::string varName, bool* pWasFound) {
#pragma mark System memory
uint64_t mvkGetSystemMemorySize() {
#if MVK_MACOS || MVK_IOS
mach_msg_type_number_t host_size = HOST_BASIC_INFO_COUNT;
host_basic_info_data_t info;
if (host_info(mach_host_self(), HOST_BASIC_INFO, (host_info_t)&info, &host_size) == KERN_SUCCESS) {
return info.max_mem;
}
return 0;
#endif
#if MVK_TVOS
return 0;
#endif
}
uint64_t mvkGetAvailableMemorySize() {
#if MVK_IOS
#if MVK_IOS_OR_TVOS
if (mvkOSVersionIsAtLeast(13.0)) { return os_proc_available_memory(); }
#endif
mach_port_t host_port;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1150"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0ADD2490320500EEF3AD"
BuildableName = "ExternalDependencies-tvOS"
BlueprintName = "ExternalDependencies-tvOS"
ReferencedContainer = "container:ExternalDependencies.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0ADD2490320500EEF3AD"
BuildableName = "ExternalDependencies-tvOS"
BlueprintName = "ExternalDependencies-tvOS"
ReferencedContainer = "container:ExternalDependencies.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1150"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0CD92490322B00EEF3AD"
BuildableName = "libSPIRVCross.a"
BlueprintName = "SPIRV-Cross-tvOS"
ReferencedContainer = "container:ExternalDependencies.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0CD92490322B00EEF3AD"
BuildableName = "libSPIRVCross.a"
BlueprintName = "SPIRV-Cross-tvOS"
ReferencedContainer = "container:ExternalDependencies.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1150"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0B4B2490322100EEF3AD"
BuildableName = "libSPIRVTools.a"
BlueprintName = "SPIRV-Tools-tvOS"
ReferencedContainer = "container:ExternalDependencies.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0B4B2490322100EEF3AD"
BuildableName = "libSPIRVTools.a"
BlueprintName = "SPIRV-Tools-tvOS"
ReferencedContainer = "container:ExternalDependencies.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1150"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0AE82490321700EEF3AD"
BuildableName = "libglslang.a"
BlueprintName = "glslang-tvOS"
ReferencedContainer = "container:ExternalDependencies.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0AE82490321700EEF3AD"
BuildableName = "libglslang.a"
BlueprintName = "glslang-tvOS"
ReferencedContainer = "container:ExternalDependencies.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -13,6 +13,10 @@ macos:
ios:
xcodebuild -quiet -project "$(XCODE_PROJ)" -scheme "$(XCODE_SCHEME_BASE) (iOS only)" build
.PHONY: tvos
tvos:
xcodebuild -quiet -project "$(XCODE_PROJ)" -scheme "$(XCODE_SCHEME_BASE) (tvOS only)" build
.PHONY: clean
clean:
xcodebuild -quiet -project "$(XCODE_PROJ)" -scheme "$(XCODE_SCHEME_BASE)" clean

View File

@ -7,6 +7,121 @@
objects = {
/* Begin PBXBuildFile section */
2FEA0A4124902F9F00EEF3AD /* MVKExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A909F65A213B190600FCD6BE /* MVKExtensions.h */; };
2FEA0A4224902F9F00EEF3AD /* vk_mvk_moltenvk.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7691C7DFB4800632CA3 /* vk_mvk_moltenvk.h */; };
2FEA0A4324902F9F00EEF3AD /* mvk_datatypes.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7671C7DFB4800632CA3 /* mvk_datatypes.h */; };
2FEA0A4424902F9F00EEF3AD /* mvk_vulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A948BB7E1E51642700DE59F2 /* mvk_vulkan.h */; };
2FEA0A4524902F9F00EEF3AD /* MVKEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149431FB6A3F7005F00B4 /* MVKEnvironment.h */; };
2FEA0A4624902F9F00EEF3AD /* MVKSurface.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7991C7DFB4800632CA3 /* MVKSurface.h */; };
2FEA0A4724902F9F00EEF3AD /* MTLRenderPipelineDescriptor+MoltenVK.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E53DFE21064F84002781DD /* MTLRenderPipelineDescriptor+MoltenVK.h */; };
2FEA0A4824902F9F00EEF3AD /* MVKInstance.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB78B1C7DFB4800632CA3 /* MVKInstance.h */; };
2FEA0A4924902F9F00EEF3AD /* MVKCommandResourceFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = A95870F61C90D29F009EB096 /* MVKCommandResourceFactory.h */; };
2FEA0A4A24902F9F00EEF3AD /* MVKQueryPool.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB78F1C7DFB4800632CA3 /* MVKQueryPool.h */; };
2FEA0A4B24902F9F00EEF3AD /* MVKCommandEncoderState.h in Headers */ = {isa = PBXBuildFile; fileRef = A95B7D671D3EE486003183D3 /* MVKCommandEncoderState.h */; };
2FEA0A4C24902F9F00EEF3AD /* MVKCommandPipelineStateFactoryShaderSource.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB77C1C7DFB4800632CA3 /* MVKCommandPipelineStateFactoryShaderSource.h */; };
2FEA0A4D24902F9F00EEF3AD /* MVKDescriptorSet.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7811C7DFB4800632CA3 /* MVKDescriptorSet.h */; };
2FEA0A4E24902F9F00EEF3AD /* NSString+MoltenVK.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E53DD22100B197002781DD /* NSString+MoltenVK.h */; };
2FEA0A4F24902F9F00EEF3AD /* CAMetalLayer+MoltenVK.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E53DD12100B197002781DD /* CAMetalLayer+MoltenVK.h */; };
2FEA0A5024902F9F00EEF3AD /* MVKCodec.h in Headers */ = {isa = PBXBuildFile; fileRef = 45557A5121C9EFF3008868BD /* MVKCodec.h */; };
2FEA0A5124902F9F00EEF3AD /* MVKRenderPass.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7931C7DFB4800632CA3 /* MVKRenderPass.h */; };
2FEA0A5224902F9F00EEF3AD /* MVKLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F0429E1FB4CF82009FCCB8 /* MVKLogging.h */; };
2FEA0A5324902F9F00EEF3AD /* MVKQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7911C7DFB4800632CA3 /* MVKQueue.h */; };
2FEA0A5424902F9F00EEF3AD /* MVKFramebuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7871C7DFB4800632CA3 /* MVKFramebuffer.h */; };
2FEA0A5524902F9F00EEF3AD /* MVKVectorAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = 83A4AD2921BD75570006C935 /* MVKVectorAllocator.h */; };
2FEA0A5624902F9F00EEF3AD /* MVKWatermarkShaderSource.h in Headers */ = {isa = PBXBuildFile; fileRef = A981494B1FB6A3F7005F00B4 /* MVKWatermarkShaderSource.h */; };
2FEA0A5724902F9F00EEF3AD /* MTLSamplerDescriptor+MoltenVK.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E53DD32100B197002781DD /* MTLSamplerDescriptor+MoltenVK.h */; };
2FEA0A5824902F9F00EEF3AD /* MVKSync.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB79D1C7DFB4800632CA3 /* MVKSync.h */; };
2FEA0A5924902F9F00EEF3AD /* MVKDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7831C7DFB4800632CA3 /* MVKDevice.h */; };
2FEA0A5A24902F9F00EEF3AD /* MVKSmallVector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F3D9DB24732A4D00745190 /* MVKSmallVector.h */; };
2FEA0A5B24902F9F00EEF3AD /* MVKVector.h in Headers */ = {isa = PBXBuildFile; fileRef = 83A4AD2521BD75570006C935 /* MVKVector.h */; };
2FEA0A5C24902F9F00EEF3AD /* MVKCommandPool.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB77A1C7DFB4800632CA3 /* MVKCommandPool.h */; };
2FEA0A5D24902F9F00EEF3AD /* MVKShaderModule.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7971C7DFB4800632CA3 /* MVKShaderModule.h */; };
2FEA0A5E24902F9F00EEF3AD /* MVKVulkanAPIObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A99C91012295FAC500A061DA /* MVKVulkanAPIObject.h */; };
2FEA0A5F24902F9F00EEF3AD /* MVKCmdQueries.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7701C7DFB4800632CA3 /* MVKCmdQueries.h */; };
2FEA0A6024902F9F00EEF3AD /* MVKCommand.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7761C7DFB4800632CA3 /* MVKCommand.h */; };
2FEA0A6124902F9F00EEF3AD /* MVKBaseObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149421FB6A3F7005F00B4 /* MVKBaseObject.h */; };
2FEA0A6224902F9F00EEF3AD /* MVKMTLBufferAllocation.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C96DCE1DDC20C20053187F /* MVKMTLBufferAllocation.h */; };
2FEA0A6324902F9F00EEF3AD /* MVKObjectPool.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149461FB6A3F7005F00B4 /* MVKObjectPool.h */; };
2FEA0A6424902F9F00EEF3AD /* MVKSwapchain.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB79B1C7DFB4800632CA3 /* MVKSwapchain.h */; };
2FEA0A6524902F9F00EEF3AD /* MVKGPUCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = A93E832E2121C5D3001FEBD4 /* MVKGPUCapture.h */; };
2FEA0A6624902F9F00EEF3AD /* MVKBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB77F1C7DFB4800632CA3 /* MVKBuffer.h */; };
2FEA0A6724902F9F00EEF3AD /* MVKCommonEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F0429D1FB4CF82009FCCB8 /* MVKCommonEnvironment.h */; };
2FEA0A6824902F9F00EEF3AD /* MVKWatermark.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149491FB6A3F7005F00B4 /* MVKWatermark.h */; };
2FEA0A6924902F9F00EEF3AD /* MVKOSExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A9B51BD6225E986A00AC74D2 /* MVKOSExtensions.h */; };
2FEA0A6A24902F9F00EEF3AD /* MVKCmdRenderPass.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7721C7DFB4800632CA3 /* MVKCmdRenderPass.h */; };
2FEA0A6B24902F9F00EEF3AD /* MVKCmdPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB76E1C7DFB4800632CA3 /* MVKCmdPipeline.h */; };
2FEA0A6C24902F9F00EEF3AD /* MVKSmallVectorAllocator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F3D9D924732A4C00745190 /* MVKSmallVectorAllocator.h */; };
2FEA0A6D24902F9F00EEF3AD /* MVKPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB78D1C7DFB4800632CA3 /* MVKPipeline.h */; };
2FEA0A6E24902F9F00EEF3AD /* MVKImage.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7891C7DFB4800632CA3 /* MVKImage.h */; };
2FEA0A6F24902F9F00EEF3AD /* MVKBlockObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4553AEFA2251617100E8EBCD /* MVKBlockObserver.h */; };
2FEA0A7024902F9F00EEF3AD /* MVKCmdTransfer.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB76C1C7DFB4800632CA3 /* MVKCmdTransfer.h */; };
2FEA0A7124902F9F00EEF3AD /* MVKDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A966A5DC23C535D000BBF9B4 /* MVKDescriptor.h */; };
2FEA0A7224902F9F00EEF3AD /* MVKCmdDraw.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7741C7DFB4800632CA3 /* MVKCmdDraw.h */; };
2FEA0A7324902F9F00EEF3AD /* MVKCommandBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7781C7DFB4800632CA3 /* MVKCommandBuffer.h */; };
2FEA0A7424902F9F00EEF3AD /* MTLRenderPassDescriptor+MoltenVK.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E53DEE2100B302002781DD /* MTLRenderPassDescriptor+MoltenVK.h */; };
2FEA0A7524902F9F00EEF3AD /* MVKCmdDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = A99C90EC229455B200A061DA /* MVKCmdDebug.h */; };
2FEA0A7624902F9F00EEF3AD /* MVKWatermarkTextureContent.h in Headers */ = {isa = PBXBuildFile; fileRef = A981494C1FB6A3F7005F00B4 /* MVKWatermarkTextureContent.h */; };
2FEA0A7724902F9F00EEF3AD /* MVKFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149441FB6A3F7005F00B4 /* MVKFoundation.h */; };
2FEA0A7824902F9F00EEF3AD /* MVKDeviceMemory.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7851C7DFB4800632CA3 /* MVKDeviceMemory.h */; };
2FEA0A7924902F9F00EEF3AD /* MVKMTLResourceBindings.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E4B7881E1D8AF10046A4CE /* MVKMTLResourceBindings.h */; };
2FEA0A7A24902F9F00EEF3AD /* MVKExtensions.def in Headers */ = {isa = PBXBuildFile; fileRef = 45003E6F214AD4C900E989CB /* MVKExtensions.def */; };
2FEA0A7B24902F9F00EEF3AD /* mvk_datatypes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9CEAAD1227378D400FAF779 /* mvk_datatypes.hpp */; };
2FEA0A7C24902F9F00EEF3AD /* MVKCommandEncodingPool.h in Headers */ = {isa = PBXBuildFile; fileRef = A90C8DE81F45354D009CB32C /* MVKCommandEncodingPool.h */; };
2FEA0A7D24902F9F00EEF3AD /* MVKResource.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7951C7DFB4800632CA3 /* MVKResource.h */; };
2FEA0A7E24902F9F00EEF3AD /* MTLTextureDescriptor+MoltenVK.h in Headers */ = {isa = PBXBuildFile; fileRef = A9E53DD02100B197002781DD /* MTLTextureDescriptor+MoltenVK.h */; };
2FEA0A7F24902F9F00EEF3AD /* MVKPixelFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = A9653FB724129C84005999D7 /* MVKPixelFormats.h */; };
2FEA0A8024902F9F00EEF3AD /* MVKStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = A981496A1FB6A998005F00B4 /* MVKStrings.h */; };
2FEA0A8124902F9F00EEF3AD /* MVKLayers.h in Headers */ = {isa = PBXBuildFile; fileRef = A94FB7A01C7DFB4800632CA3 /* MVKLayers.h */; };
2FEA0A8324902F9F00EEF3AD /* MVKBlockObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 4553AEF62251617100E8EBCD /* MVKBlockObserver.m */; };
2FEA0A8424902F9F00EEF3AD /* MTLRenderPipelineDescriptor+MoltenVK.m in Sources */ = {isa = PBXBuildFile; fileRef = A9E53DFA21064F84002781DD /* MTLRenderPipelineDescriptor+MoltenVK.m */; };
2FEA0A8524902F9F00EEF3AD /* MVKResource.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7961C7DFB4800632CA3 /* MVKResource.mm */; };
2FEA0A8624902F9F00EEF3AD /* MVKDescriptorSet.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7821C7DFB4800632CA3 /* MVKDescriptorSet.mm */; };
2FEA0A8724902F9F00EEF3AD /* MVKVulkanAPIObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = A99C91002295FAC500A061DA /* MVKVulkanAPIObject.mm */; };
2FEA0A8824902F9F00EEF3AD /* MTLTextureDescriptor+MoltenVK.m in Sources */ = {isa = PBXBuildFile; fileRef = A9E53DD52100B197002781DD /* MTLTextureDescriptor+MoltenVK.m */; };
2FEA0A8924902F9F00EEF3AD /* MVKCommandResourceFactory.mm in Sources */ = {isa = PBXBuildFile; fileRef = A95870F71C90D29F009EB096 /* MVKCommandResourceFactory.mm */; };
2FEA0A8A24902F9F00EEF3AD /* MVKCommandEncodingPool.mm in Sources */ = {isa = PBXBuildFile; fileRef = A90C8DE91F45354D009CB32C /* MVKCommandEncodingPool.mm */; };
2FEA0A8B24902F9F00EEF3AD /* MVKWatermark.mm in Sources */ = {isa = PBXBuildFile; fileRef = A981494A1FB6A3F7005F00B4 /* MVKWatermark.mm */; };
2FEA0A8C24902F9F00EEF3AD /* MVKBaseObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = A98149411FB6A3F7005F00B4 /* MVKBaseObject.mm */; };
2FEA0A8D24902F9F00EEF3AD /* NSString+MoltenVK.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9E53DD42100B197002781DD /* NSString+MoltenVK.mm */; };
2FEA0A8E24902F9F00EEF3AD /* vulkan.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7AD1C7DFB4800632CA3 /* vulkan.mm */; };
2FEA0A8F24902F9F00EEF3AD /* MVKSurface.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB79A1C7DFB4800632CA3 /* MVKSurface.mm */; };
2FEA0A9024902F9F00EEF3AD /* MVKQueryPool.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7901C7DFB4800632CA3 /* MVKQueryPool.mm */; };
2FEA0A9124902F9F00EEF3AD /* MVKInstance.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB78C1C7DFB4800632CA3 /* MVKInstance.mm */; };
2FEA0A9224902F9F00EEF3AD /* MVKDeviceMemory.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7861C7DFB4800632CA3 /* MVKDeviceMemory.mm */; };
2FEA0A9324902F9F00EEF3AD /* MVKImage.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB78A1C7DFB4800632CA3 /* MVKImage.mm */; };
2FEA0A9424902F9F00EEF3AD /* MVKCommandPool.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB77B1C7DFB4800632CA3 /* MVKCommandPool.mm */; };
2FEA0A9524902F9F00EEF3AD /* MVKCmdDraw.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7751C7DFB4800632CA3 /* MVKCmdDraw.mm */; };
2FEA0A9624902F9F00EEF3AD /* MVKCommandBuffer.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7791C7DFB4800632CA3 /* MVKCommandBuffer.mm */; };
2FEA0A9724902F9F00EEF3AD /* MVKCmdRenderPass.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7731C7DFB4800632CA3 /* MVKCmdRenderPass.mm */; };
2FEA0A9824902F9F00EEF3AD /* MVKBuffer.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7801C7DFB4800632CA3 /* MVKBuffer.mm */; };
2FEA0A9924902F9F00EEF3AD /* mvk_datatypes.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7A91C7DFB4800632CA3 /* mvk_datatypes.mm */; };
2FEA0A9A24902F9F00EEF3AD /* MVKExtensions.mm in Sources */ = {isa = PBXBuildFile; fileRef = A909F65E213B190700FCD6BE /* MVKExtensions.mm */; };
2FEA0A9B24902F9F00EEF3AD /* MVKFoundation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A98149451FB6A3F7005F00B4 /* MVKFoundation.cpp */; };
2FEA0A9C24902F9F00EEF3AD /* MVKPixelFormats.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9653FB924129C84005999D7 /* MVKPixelFormats.mm */; };
2FEA0A9D24902F9F00EEF3AD /* MVKDevice.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7841C7DFB4800632CA3 /* MVKDevice.mm */; };
2FEA0A9E24902F9F00EEF3AD /* MTLRenderPassDescriptor+MoltenVK.m in Sources */ = {isa = PBXBuildFile; fileRef = A9E53DF22100B302002781DD /* MTLRenderPassDescriptor+MoltenVK.m */; };
2FEA0A9F24902F9F00EEF3AD /* MVKDescriptor.mm in Sources */ = {isa = PBXBuildFile; fileRef = A966A5DE23C535D000BBF9B4 /* MVKDescriptor.mm */; };
2FEA0AA024902F9F00EEF3AD /* MVKPipeline.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB78E1C7DFB4800632CA3 /* MVKPipeline.mm */; };
2FEA0AA124902F9F00EEF3AD /* MVKQueue.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7921C7DFB4800632CA3 /* MVKQueue.mm */; };
2FEA0AA224902F9F00EEF3AD /* MTLSamplerDescriptor+MoltenVK.m in Sources */ = {isa = PBXBuildFile; fileRef = A9E53DCD2100B197002781DD /* MTLSamplerDescriptor+MoltenVK.m */; };
2FEA0AA324902F9F00EEF3AD /* MVKRenderPass.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7941C7DFB4800632CA3 /* MVKRenderPass.mm */; };
2FEA0AA424902F9F00EEF3AD /* MVKCmdTransfer.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB76D1C7DFB4800632CA3 /* MVKCmdTransfer.mm */; };
2FEA0AA524902F9F00EEF3AD /* MVKCmdQueries.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7711C7DFB4800632CA3 /* MVKCmdQueries.mm */; };
2FEA0AA624902F9F00EEF3AD /* vk_mvk_moltenvk.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7AC1C7DFB4800632CA3 /* vk_mvk_moltenvk.mm */; };
2FEA0AA724902F9F00EEF3AD /* MVKSwapchain.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB79C1C7DFB4800632CA3 /* MVKSwapchain.mm */; };
2FEA0AA824902F9F00EEF3AD /* MVKCommandEncoderState.mm in Sources */ = {isa = PBXBuildFile; fileRef = A95B7D681D3EE486003183D3 /* MVKCommandEncoderState.mm */; };
2FEA0AA924902F9F00EEF3AD /* MVKGPUCapture.mm in Sources */ = {isa = PBXBuildFile; fileRef = A93E83342121F0C8001FEBD4 /* MVKGPUCapture.mm */; };
2FEA0AAA24902F9F00EEF3AD /* MVKOSExtensions.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9B51BD2225E986A00AC74D2 /* MVKOSExtensions.mm */; };
2FEA0AAB24902F9F00EEF3AD /* MVKShaderModule.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7981C7DFB4800632CA3 /* MVKShaderModule.mm */; };
2FEA0AAC24902F9F00EEF3AD /* MVKSync.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB79E1C7DFB4800632CA3 /* MVKSync.mm */; };
2FEA0AAD24902F9F00EEF3AD /* MVKCodec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45557A4D21C9EFF3008868BD /* MVKCodec.cpp */; };
2FEA0AAE24902F9F00EEF3AD /* MVKCmdPipeline.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB76F1C7DFB4800632CA3 /* MVKCmdPipeline.mm */; };
2FEA0AAF24902F9F00EEF3AD /* MVKLayers.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7A11C7DFB4800632CA3 /* MVKLayers.mm */; };
2FEA0AB024902F9F00EEF3AD /* MVKFramebuffer.mm in Sources */ = {isa = PBXBuildFile; fileRef = A94FB7881C7DFB4800632CA3 /* MVKFramebuffer.mm */; };
2FEA0AB124902F9F00EEF3AD /* MVKMTLBufferAllocation.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9C96DCF1DDC20C20053187F /* MVKMTLBufferAllocation.mm */; };
2FEA0AB224902F9F00EEF3AD /* CAMetalLayer+MoltenVK.m in Sources */ = {isa = PBXBuildFile; fileRef = A9E53DD62100B197002781DD /* CAMetalLayer+MoltenVK.m */; };
2FEA0AB324902F9F00EEF3AD /* MVKCmdDispatch.mm in Sources */ = {isa = PBXBuildFile; fileRef = A9096E5D1F81E16300DFBEA6 /* MVKCmdDispatch.mm */; };
2FEA0AB424902F9F00EEF3AD /* MVKCmdDebug.mm in Sources */ = {isa = PBXBuildFile; fileRef = A99C90ED229455B300A061DA /* MVKCmdDebug.mm */; };
45003E73214AD4E500E989CB /* MVKExtensions.def in Headers */ = {isa = PBXBuildFile; fileRef = 45003E6F214AD4C900E989CB /* MVKExtensions.def */; };
45003E74214AD4E600E989CB /* MVKExtensions.def in Headers */ = {isa = PBXBuildFile; fileRef = 45003E6F214AD4C900E989CB /* MVKExtensions.def */; };
4553AEFB2251617100E8EBCD /* MVKBlockObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 4553AEF62251617100E8EBCD /* MVKBlockObserver.m */; };
@ -240,6 +355,34 @@
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
2F21D82C24983488009BEA5F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 2FEA0AC42490305800EEF3AD;
remoteInfo = "MoltenVKGLSLToSPIRVConverter-tvOS";
};
2F21D82E24983488009BEA5F /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 2FEA0CFF2490381A00EEF3AD;
remoteInfo = "MoltenVKSPIRVToMSLConverter-tvOS";
};
2FEA0D19249040CA00EEF3AD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 2FEA0AD72490305800EEF3AD;
remoteInfo = "MoltenVKGLSLToSPIRVConverter-tvOS";
};
2FEA0D1B249040CA00EEF3AD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 2FEA0D142490381A00EEF3AD;
remoteInfo = "MoltenVKSPIRVToMSLConverter-tvOS";
};
A96B8156227BF6FD008A772B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A9C86CB61C55B8350096CAF2 /* MoltenVKShaderConverter.xcodeproj */;
@ -306,6 +449,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
2FEA0ABA24902F9F00EEF3AD /* libMoltenVK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMoltenVK.a; sourceTree = BUILT_PRODUCTS_DIR; };
45003E6F214AD4C900E989CB /* MVKExtensions.def */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = MVKExtensions.def; sourceTree = "<group>"; };
4553AEF62251617100E8EBCD /* MVKBlockObserver.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MVKBlockObserver.m; sourceTree = "<group>"; };
4553AEFA2251617100E8EBCD /* MVKBlockObserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MVKBlockObserver.h; sourceTree = "<group>"; };
@ -593,8 +737,10 @@
children = (
A981497C1FB6B566005F00B4 /* MoltenVKShaderConverter */,
A981497E1FB6B566005F00B4 /* libMoltenVKGLSLToSPIRVConverter.a */,
2FEA0D1A249040CA00EEF3AD /* libMoltenVKGLSLToSPIRVConverter.a */,
A98149801FB6B566005F00B4 /* libMoltenVKGLSLToSPIRVConverter.a */,
A98149821FB6B566005F00B4 /* libMoltenVKSPIRVToMSLConverter.a */,
2FEA0D1C249040CA00EEF3AD /* libMoltenVKSPIRVToMSLConverter.a */,
A98149841FB6B566005F00B4 /* libMoltenVKSPIRVToMSLConverter.a */,
);
name = Products;
@ -660,6 +806,7 @@
children = (
A9B8EE0A1A98D796009C5A02 /* libMoltenVK.a */,
A9CBEE011B6299D800E45FDC /* libMoltenVK.a */,
2FEA0ABA24902F9F00EEF3AD /* libMoltenVK.a */,
);
name = Products;
sourceTree = "<group>";
@ -667,6 +814,78 @@
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
2FEA0A4024902F9F00EEF3AD /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
2FEA0A4124902F9F00EEF3AD /* MVKExtensions.h in Headers */,
2FEA0A4224902F9F00EEF3AD /* vk_mvk_moltenvk.h in Headers */,
2FEA0A4324902F9F00EEF3AD /* mvk_datatypes.h in Headers */,
2FEA0A4424902F9F00EEF3AD /* mvk_vulkan.h in Headers */,
2FEA0A4524902F9F00EEF3AD /* MVKEnvironment.h in Headers */,
2FEA0A4624902F9F00EEF3AD /* MVKSurface.h in Headers */,
2FEA0A4724902F9F00EEF3AD /* MTLRenderPipelineDescriptor+MoltenVK.h in Headers */,
2FEA0A4824902F9F00EEF3AD /* MVKInstance.h in Headers */,
2FEA0A4924902F9F00EEF3AD /* MVKCommandResourceFactory.h in Headers */,
2FEA0A4A24902F9F00EEF3AD /* MVKQueryPool.h in Headers */,
2FEA0A4B24902F9F00EEF3AD /* MVKCommandEncoderState.h in Headers */,
2FEA0A4C24902F9F00EEF3AD /* MVKCommandPipelineStateFactoryShaderSource.h in Headers */,
2FEA0A4D24902F9F00EEF3AD /* MVKDescriptorSet.h in Headers */,
2FEA0A4E24902F9F00EEF3AD /* NSString+MoltenVK.h in Headers */,
2FEA0A4F24902F9F00EEF3AD /* CAMetalLayer+MoltenVK.h in Headers */,
2FEA0A5024902F9F00EEF3AD /* MVKCodec.h in Headers */,
2FEA0A5124902F9F00EEF3AD /* MVKRenderPass.h in Headers */,
2FEA0A5224902F9F00EEF3AD /* MVKLogging.h in Headers */,
2FEA0A5324902F9F00EEF3AD /* MVKQueue.h in Headers */,
2FEA0A5424902F9F00EEF3AD /* MVKFramebuffer.h in Headers */,
2FEA0A5524902F9F00EEF3AD /* MVKVectorAllocator.h in Headers */,
2FEA0A5624902F9F00EEF3AD /* MVKWatermarkShaderSource.h in Headers */,
2FEA0A5724902F9F00EEF3AD /* MTLSamplerDescriptor+MoltenVK.h in Headers */,
2FEA0A5824902F9F00EEF3AD /* MVKSync.h in Headers */,
2FEA0A5924902F9F00EEF3AD /* MVKDevice.h in Headers */,
2FEA0A5A24902F9F00EEF3AD /* MVKSmallVector.h in Headers */,
2FEA0A5B24902F9F00EEF3AD /* MVKVector.h in Headers */,
2FEA0A5C24902F9F00EEF3AD /* MVKCommandPool.h in Headers */,
2FEA0A5D24902F9F00EEF3AD /* MVKShaderModule.h in Headers */,
2FEA0A5E24902F9F00EEF3AD /* MVKVulkanAPIObject.h in Headers */,
2FEA0A5F24902F9F00EEF3AD /* MVKCmdQueries.h in Headers */,
2FEA0A6024902F9F00EEF3AD /* MVKCommand.h in Headers */,
2FEA0A6124902F9F00EEF3AD /* MVKBaseObject.h in Headers */,
2FEA0A6224902F9F00EEF3AD /* MVKMTLBufferAllocation.h in Headers */,
2FEA0A6324902F9F00EEF3AD /* MVKObjectPool.h in Headers */,
2FEA0A6424902F9F00EEF3AD /* MVKSwapchain.h in Headers */,
2FEA0A6524902F9F00EEF3AD /* MVKGPUCapture.h in Headers */,
2FEA0A6624902F9F00EEF3AD /* MVKBuffer.h in Headers */,
2FEA0A6724902F9F00EEF3AD /* MVKCommonEnvironment.h in Headers */,
2FEA0A6824902F9F00EEF3AD /* MVKWatermark.h in Headers */,
2FEA0A6924902F9F00EEF3AD /* MVKOSExtensions.h in Headers */,
2FEA0A6A24902F9F00EEF3AD /* MVKCmdRenderPass.h in Headers */,
2FEA0A6B24902F9F00EEF3AD /* MVKCmdPipeline.h in Headers */,
2FEA0A6C24902F9F00EEF3AD /* MVKSmallVectorAllocator.h in Headers */,
2FEA0A6D24902F9F00EEF3AD /* MVKPipeline.h in Headers */,
2FEA0A6E24902F9F00EEF3AD /* MVKImage.h in Headers */,
2FEA0A6F24902F9F00EEF3AD /* MVKBlockObserver.h in Headers */,
2FEA0A7024902F9F00EEF3AD /* MVKCmdTransfer.h in Headers */,
2FEA0A7124902F9F00EEF3AD /* MVKDescriptor.h in Headers */,
2FEA0A7224902F9F00EEF3AD /* MVKCmdDraw.h in Headers */,
2FEA0A7324902F9F00EEF3AD /* MVKCommandBuffer.h in Headers */,
2FEA0A7424902F9F00EEF3AD /* MTLRenderPassDescriptor+MoltenVK.h in Headers */,
2FEA0A7524902F9F00EEF3AD /* MVKCmdDebug.h in Headers */,
2FEA0A7624902F9F00EEF3AD /* MVKWatermarkTextureContent.h in Headers */,
2FEA0A7724902F9F00EEF3AD /* MVKFoundation.h in Headers */,
2FEA0A7824902F9F00EEF3AD /* MVKDeviceMemory.h in Headers */,
2FEA0A7924902F9F00EEF3AD /* MVKMTLResourceBindings.h in Headers */,
2FEA0A7A24902F9F00EEF3AD /* MVKExtensions.def in Headers */,
2FEA0A7B24902F9F00EEF3AD /* mvk_datatypes.hpp in Headers */,
2FEA0A7C24902F9F00EEF3AD /* MVKCommandEncodingPool.h in Headers */,
2FEA0A7D24902F9F00EEF3AD /* MVKResource.h in Headers */,
2FEA0A7E24902F9F00EEF3AD /* MTLTextureDescriptor+MoltenVK.h in Headers */,
2FEA0A7F24902F9F00EEF3AD /* MVKPixelFormats.h in Headers */,
2FEA0A8024902F9F00EEF3AD /* MVKStrings.h in Headers */,
2FEA0A8124902F9F00EEF3AD /* MVKLayers.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A9B8EE071A98D796009C5A02 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@ -814,6 +1033,26 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
2FEA0A3B24902F9F00EEF3AD /* MoltenVK-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2FEA0AB724902F9F00EEF3AD /* Build configuration list for PBXNativeTarget "MoltenVK-tvOS" */;
buildPhases = (
2FEA0A4024902F9F00EEF3AD /* Headers */,
2FEA0A8224902F9F00EEF3AD /* Sources */,
2FEA0AB524902F9F00EEF3AD /* Create Dynamic Library */,
2FEA0AB624902F9F00EEF3AD /* Create Framework */,
);
buildRules = (
);
dependencies = (
2F21D82D24983488009BEA5F /* PBXTargetDependency */,
2F21D82F24983488009BEA5F /* PBXTargetDependency */,
);
name = "MoltenVK-tvOS";
productName = MoltenVK;
productReference = 2FEA0ABA24902F9F00EEF3AD /* libMoltenVK.a */;
productType = "com.apple.product-type.library.static";
};
A9B8EE091A98D796009C5A02 /* MoltenVK-iOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = A9B8EE1D1A98D796009C5A02 /* Build configuration list for PBXNativeTarget "MoltenVK-iOS" */;
@ -892,12 +1131,27 @@
projectRoot = "";
targets = (
A9B8EE091A98D796009C5A02 /* MoltenVK-iOS */,
2FEA0A3B24902F9F00EEF3AD /* MoltenVK-tvOS */,
A9CBED861B6299D800E45FDC /* MoltenVK-macOS */,
);
};
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
2FEA0D1A249040CA00EEF3AD /* libMoltenVKGLSLToSPIRVConverter.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libMoltenVKGLSLToSPIRVConverter.a;
remoteRef = 2FEA0D19249040CA00EEF3AD /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
2FEA0D1C249040CA00EEF3AD /* libMoltenVKSPIRVToMSLConverter.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = libMoltenVKSPIRVToMSLConverter.a;
remoteRef = 2FEA0D1B249040CA00EEF3AD /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
A981497C1FB6B566005F00B4 /* MoltenVKShaderConverter */ = {
isa = PBXReferenceProxy;
fileType = "compiled.mach-o.executable";
@ -936,6 +1190,38 @@
/* End PBXReferenceProxy section */
/* Begin PBXShellScriptBuildPhase section */
2FEA0AB524902F9F00EEF3AD /* Create Dynamic Library */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Create Dynamic Library";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = ". \"${SRCROOT}/../Scripts/create_dylib_tvos.sh\"\n";
};
2FEA0AB624902F9F00EEF3AD /* Create Framework */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Create Framework";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = ". \"${SRCROOT}/../Scripts/create_framework_tvos.sh\"\n";
};
A92EF78D21852B2400C8B91B /* Create Framework */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -1003,6 +1289,63 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
2FEA0A8224902F9F00EEF3AD /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2FEA0A8324902F9F00EEF3AD /* MVKBlockObserver.m in Sources */,
2FEA0A8424902F9F00EEF3AD /* MTLRenderPipelineDescriptor+MoltenVK.m in Sources */,
2FEA0A8524902F9F00EEF3AD /* MVKResource.mm in Sources */,
2FEA0A8624902F9F00EEF3AD /* MVKDescriptorSet.mm in Sources */,
2FEA0A8724902F9F00EEF3AD /* MVKVulkanAPIObject.mm in Sources */,
2FEA0A8824902F9F00EEF3AD /* MTLTextureDescriptor+MoltenVK.m in Sources */,
2FEA0A8924902F9F00EEF3AD /* MVKCommandResourceFactory.mm in Sources */,
2FEA0A8A24902F9F00EEF3AD /* MVKCommandEncodingPool.mm in Sources */,
2FEA0A8B24902F9F00EEF3AD /* MVKWatermark.mm in Sources */,
2FEA0A8C24902F9F00EEF3AD /* MVKBaseObject.mm in Sources */,
2FEA0A8D24902F9F00EEF3AD /* NSString+MoltenVK.mm in Sources */,
2FEA0A8E24902F9F00EEF3AD /* vulkan.mm in Sources */,
2FEA0A8F24902F9F00EEF3AD /* MVKSurface.mm in Sources */,
2FEA0A9024902F9F00EEF3AD /* MVKQueryPool.mm in Sources */,
2FEA0A9124902F9F00EEF3AD /* MVKInstance.mm in Sources */,
2FEA0A9224902F9F00EEF3AD /* MVKDeviceMemory.mm in Sources */,
2FEA0A9324902F9F00EEF3AD /* MVKImage.mm in Sources */,
2FEA0A9424902F9F00EEF3AD /* MVKCommandPool.mm in Sources */,
2FEA0A9524902F9F00EEF3AD /* MVKCmdDraw.mm in Sources */,
2FEA0A9624902F9F00EEF3AD /* MVKCommandBuffer.mm in Sources */,
2FEA0A9724902F9F00EEF3AD /* MVKCmdRenderPass.mm in Sources */,
2FEA0A9824902F9F00EEF3AD /* MVKBuffer.mm in Sources */,
2FEA0A9924902F9F00EEF3AD /* mvk_datatypes.mm in Sources */,
2FEA0A9A24902F9F00EEF3AD /* MVKExtensions.mm in Sources */,
2FEA0A9B24902F9F00EEF3AD /* MVKFoundation.cpp in Sources */,
2FEA0A9C24902F9F00EEF3AD /* MVKPixelFormats.mm in Sources */,
2FEA0A9D24902F9F00EEF3AD /* MVKDevice.mm in Sources */,
2FEA0A9E24902F9F00EEF3AD /* MTLRenderPassDescriptor+MoltenVK.m in Sources */,
2FEA0A9F24902F9F00EEF3AD /* MVKDescriptor.mm in Sources */,
2FEA0AA024902F9F00EEF3AD /* MVKPipeline.mm in Sources */,
2FEA0AA124902F9F00EEF3AD /* MVKQueue.mm in Sources */,
2FEA0AA224902F9F00EEF3AD /* MTLSamplerDescriptor+MoltenVK.m in Sources */,
2FEA0AA324902F9F00EEF3AD /* MVKRenderPass.mm in Sources */,
2FEA0AA424902F9F00EEF3AD /* MVKCmdTransfer.mm in Sources */,
2FEA0AA524902F9F00EEF3AD /* MVKCmdQueries.mm in Sources */,
2FEA0AA624902F9F00EEF3AD /* vk_mvk_moltenvk.mm in Sources */,
2FEA0AA724902F9F00EEF3AD /* MVKSwapchain.mm in Sources */,
2FEA0AA824902F9F00EEF3AD /* MVKCommandEncoderState.mm in Sources */,
2FEA0AA924902F9F00EEF3AD /* MVKGPUCapture.mm in Sources */,
2FEA0AAA24902F9F00EEF3AD /* MVKOSExtensions.mm in Sources */,
2FEA0AAB24902F9F00EEF3AD /* MVKShaderModule.mm in Sources */,
2FEA0AAC24902F9F00EEF3AD /* MVKSync.mm in Sources */,
2FEA0AAD24902F9F00EEF3AD /* MVKCodec.cpp in Sources */,
2FEA0AAE24902F9F00EEF3AD /* MVKCmdPipeline.mm in Sources */,
2FEA0AAF24902F9F00EEF3AD /* MVKLayers.mm in Sources */,
2FEA0AB024902F9F00EEF3AD /* MVKFramebuffer.mm in Sources */,
2FEA0AB124902F9F00EEF3AD /* MVKMTLBufferAllocation.mm in Sources */,
2FEA0AB224902F9F00EEF3AD /* CAMetalLayer+MoltenVK.m in Sources */,
2FEA0AB324902F9F00EEF3AD /* MVKCmdDispatch.mm in Sources */,
2FEA0AB424902F9F00EEF3AD /* MVKCmdDebug.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A9B8EE051A98D796009C5A02 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@ -1120,6 +1463,16 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
2F21D82D24983488009BEA5F /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = "MoltenVKGLSLToSPIRVConverter-tvOS";
targetProxy = 2F21D82C24983488009BEA5F /* PBXContainerItemProxy */;
};
2F21D82F24983488009BEA5F /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = "MoltenVKSPIRVToMSLConverter-tvOS";
targetProxy = 2F21D82E24983488009BEA5F /* PBXContainerItemProxy */;
};
A96B8157227BF6FD008A772B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = "MoltenVKGLSLToSPIRVConverter-iOS";
@ -1143,6 +1496,32 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
2FEA0AB824902F9F00EEF3AD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
BITCODE_GENERATION_MODE = bitcode;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
PRODUCT_NAME = MoltenVK;
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 11.0;
};
name = Debug;
};
2FEA0AB924902F9F00EEF3AD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD)";
BITCODE_GENERATION_MODE = bitcode;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
PRODUCT_NAME = MoltenVK;
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 11.0;
};
name = Release;
};
A9B8EE1E1A98D796009C5A02 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -1300,6 +1679,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
2FEA0AB724902F9F00EEF3AD /* Build configuration list for PBXNativeTarget "MoltenVK-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2FEA0AB824902F9F00EEF3AD /* Debug */,
2FEA0AB924902F9F00EEF3AD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
A9B8EE1D1A98D796009C5A02 /* Build configuration list for PBXNativeTarget "MoltenVK-iOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1150"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0A3B24902F9F00EEF3AD"
BuildableName = "libMoltenVK.a"
BlueprintName = "MoltenVK-tvOS"
ReferencedContainer = "container:MoltenVK.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0A3B24902F9F00EEF3AD"
BuildableName = "libMoltenVK.a"
BlueprintName = "MoltenVK-tvOS"
ReferencedContainer = "container:MoltenVK.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0A3B24902F9F00EEF3AD"
BuildableName = "libMoltenVK.a"
BlueprintName = "MoltenVK-tvOS"
ReferencedContainer = "container:MoltenVK.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -131,7 +131,7 @@ bool MVKBuffer::needsHostReadSync(VkPipelineStageFlags srcStageMask,
mvkIsAnyFlagEnabled(barrier.dstAccessMask, (VK_ACCESS_HOST_READ_BIT)) &&
isMemoryHostAccessible() && (!isMemoryHostCoherent() || _isHostCoherentTexelBuffer));
#endif
#if MVK_IOS
#if MVK_IOS_OR_TVOS
return false;
#endif
}

View File

@ -916,6 +916,49 @@ void MVKPhysicalDevice::initMetalFeatures() {
_metalFeatures.minSwapchainImageCount = kMVKMinSwapchainImageCount;
_metalFeatures.maxSwapchainImageCount = kMVKMaxSwapchainImageCount;
#if MVK_TVOS
_metalFeatures.mslVersionEnum = MTLLanguageVersion1_1;
_metalFeatures.maxPerStageTextureCount = 31;
_metalFeatures.mtlBufferAlignment = 64;
_metalFeatures.mtlCopyBufferAlignment = 1;
_metalFeatures.texelBuffers = true;
_metalFeatures.maxTextureDimension = (8 * KIBI);
if (supportsMTLFeatureSet(tvOS_GPUFamily1_v2)) {
_metalFeatures.mslVersionEnum = MTLLanguageVersion1_2;
_metalFeatures.shaderSpecialization = true;
_metalFeatures.stencilViews = true;
_metalFeatures.fences = true;
}
if (supportsMTLFeatureSet(tvOS_GPUFamily1_v3)) {
_metalFeatures.mslVersionEnum = MTLLanguageVersion2_0;
}
if (supportsMTLFeatureSet(tvOS_GPUFamily1_v4)) {
_metalFeatures.mslVersionEnum = MTLLanguageVersion2_1;
}
if (supportsMTLFeatureSet(tvOS_GPUFamily2_v1)) {
_metalFeatures.indirectDrawing = true;
_metalFeatures.baseVertexInstanceDrawing = true;
_metalFeatures.combinedStoreResolveAction = true;
_metalFeatures.mtlBufferAlignment = 16; // Min float4 alignment for typical vertex buffers. MTLBuffer may go down to 4 bytes for other data.
_metalFeatures.maxTextureDimension = (16 * KIBI);
_metalFeatures.depthSampleCompare = true;
_metalFeatures.arrayOfTextures = true;
_metalFeatures.arrayOfSamplers = true;
}
if ( mvkOSVersionIsAtLeast(13.0) ) {
_metalFeatures.mslVersionEnum = MTLLanguageVersion2_2;
_metalFeatures.placementHeaps = useMTLHeaps;
if (supportsMTLGPUFamily(Apple4)) {
_metalFeatures.nativeTextureSwizzle = true;
}
}
#endif
#if MVK_IOS
_metalFeatures.mslVersionEnum = MTLLanguageVersion1_0;
_metalFeatures.maxPerStageTextureCount = 31;
@ -1116,6 +1159,23 @@ void MVKPhysicalDevice::initFeatures() {
_features.drawIndirectFirstInstance = true;
}
#if MVK_TVOS
_features.textureCompressionETC2 = true;
_features.textureCompressionASTC_LDR = true;
if (supportsMTLFeatureSet(tvOS_GPUFamily1_v3)) {
_features.dualSrcBlend = true;
}
if (supportsMTLFeatureSet(tvOS_GPUFamily2_v1)) {
_features.occlusionQueryPrecise = true;
}
if (supportsMTLFeatureSet(tvOS_GPUFamily2_v1)) {
_features.tessellationShader = true;
}
#endif
#if MVK_IOS
_features.textureCompressionETC2 = true;
@ -1247,6 +1307,9 @@ void MVKPhysicalDevice::initProperties() {
initPipelineCacheUUID();
// Limits
#if MVK_TVOS
_properties.limits.maxColorAttachments = kMVKCachedColorAttachmentCount;
#endif
#if MVK_IOS
if (supportsMTLFeatureSet(iOS_GPUFamily2_v1)) {
_properties.limits.maxColorAttachments = kMVKCachedColorAttachmentCount;
@ -1396,6 +1459,9 @@ void MVKPhysicalDevice::initProperties() {
_texelBuffAlignProperties.uniformTexelBufferOffsetSingleTexelAlignment = singleTexelUniform;
_properties.limits.minTexelBufferOffsetAlignment = max(maxStorage, maxUniform);
} else {
#if MVK_TVOS
_properties.limits.minTexelBufferOffsetAlignment = 64;
#endif
#if MVK_IOS
if (supportsMTLFeatureSet(iOS_GPUFamily3_v1)) {
_properties.limits.minTexelBufferOffsetAlignment = 16;
@ -1649,6 +1715,22 @@ void MVKPhysicalDevice::initGPUInfoProperties() {
}
#endif //MVK_IOS
#if MVK_TVOS
// For tvOS devices, the Device ID is the SoC model (A8, A10X...), in the hex form 0xaMMX, where
//"a" is the Apple brand, MM is the SoC model number (8, 10...) and X is 1 for X version, 0 for other.
void MVKPhysicalDevice::initGPUInfoProperties() {
uint32_t devID = 0xa080;
if (supportsMTLFeatureSet(tvOS_GPUFamily2_v1)) {
devID = 0xa101;
}
_properties.vendorID = 0x0000106b; // Apple's PCI ID
_properties.deviceID = devID;
_properties.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU;
strlcpy(_properties.deviceName, _mtlDevice.name.UTF8String, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE);
}
#endif
#pragma mark VkPhysicalDeviceLimits - List of feature limits available on the device
@ -1826,6 +1908,11 @@ uint32_t MVKPhysicalDevice::getHighestMTLFeatureSet() {
uint32_t minFS = (uint32_t)MTLFeatureSet_iOS_GPUFamily1_v1;
#endif
#if MVK_TVOS
uint32_t maxFS = (uint32_t)MTLFeatureSet_tvOS_GPUFamily2_v2;
uint32_t minFS = (uint32_t)MTLFeatureSet_tvOS_GPUFamily1_v1;
#endif
#if MVK_MACOS
uint32_t maxFS = (uint32_t)MTLFeatureSet_macOS_GPUFamily2_v1;
uint32_t minFS = (uint32_t)MTLFeatureSet_macOS_GPUFamily1_v1;
@ -1963,7 +2050,7 @@ void MVKPhysicalDevice::initMemoryProperties() {
}
bool MVKPhysicalDevice::getHasUnifiedMemory() {
#if MVK_IOS
#if MVK_IOS_OR_TVOS
return true;
#endif
#if MVK_MACOS
@ -2001,7 +2088,7 @@ uint64_t MVKPhysicalDevice::getCurrentAllocatedSize() {
if ( [_mtlDevice respondsToSelector: @selector(currentAllocatedSize)] ) {
return _mtlDevice.currentAllocatedSize;
}
#if MVK_IOS
#if MVK_IOS_OR_TVOS
// We can use the current memory used by this process as a reasonable approximation.
return mvkGetUsedMemorySize();
#endif
@ -2110,6 +2197,16 @@ void MVKPhysicalDevice::logGPUInfo() {
if (supportsMTLFeatureSet(iOS_GPUFamily1_v1)) { logMsg += "\n\t\tiOS GPU Family 1 v1"; }
#endif
#if MVK_TVOS
if (supportsMTLFeatureSet(tvOS_GPUFamily2_v2)) { logMsg += "\n\t\ttvOS GPU Family 2 v2"; }
if (supportsMTLFeatureSet(tvOS_GPUFamily2_v1)) { logMsg += "\n\t\ttvOS GPU Family 2 v1"; }
if (supportsMTLFeatureSet(tvOS_GPUFamily1_v4)) { logMsg += "\n\t\ttvOS GPU Family 1 v4"; }
if (supportsMTLFeatureSet(tvOS_GPUFamily1_v3)) { logMsg += "\n\t\ttvOS GPU Family 1 v3"; }
if (supportsMTLFeatureSet(tvOS_GPUFamily1_v2)) { logMsg += "\n\t\ttvOS GPU Family 1 v2"; }
if (supportsMTLFeatureSet(tvOS_GPUFamily1_v1)) { logMsg += "\n\t\ttvOS GPU Family 1 v1"; }
#endif
#if MVK_MACOS
if (supportsMTLFeatureSet(macOS_GPUFamily2_v1)) { logMsg += "\n\t\tmacOS GPU Family 2 v1"; }

View File

@ -429,7 +429,7 @@ bool MVKImageMemoryBinding::needsHostReadSync(VkPipelineStageFlags srcStageMask,
mvkIsAnyFlagEnabled(barrier.dstAccessMask, (VK_ACCESS_HOST_READ_BIT | VK_ACCESS_MEMORY_READ_BIT)) &&
isMemoryHostAccessible());
#endif
#if MVK_IOS
#if MVK_IOS_OR_TVOS
return false;
#endif
}

View File

@ -324,10 +324,10 @@ static NSArray<id<MTLDevice>>* availableMTLDevicesArray() {
}
#endif // MVK_MACOS
#if MVK_IOS
#if MVK_IOS_OR_TVOS
id<MTLDevice> md = [MTLCreateSystemDefaultDevice() autorelease];
if (md) { [mtlDevs addObject: md]; }
#endif // MVK_IOS
#endif // MVK_IOS_OR_TVOS
return mtlDevs; // retained
}

View File

@ -90,7 +90,7 @@ using namespace std;
# define MTLPixelFormatBGR10_XR_sRGB MTLPixelFormatInvalid
#endif
#if MVK_IOS
#if MVK_IOS_OR_TVOS
# define MTLPixelFormatDepth16Unorm MTLPixelFormatInvalid
# define MTLPixelFormatDepth24Unorm_Stencil8 MTLPixelFormatInvalid
# define MTLPixelFormatX24_Stencil8 MTLPixelFormatInvalid
@ -1192,6 +1192,97 @@ void MVKPixelFormats::modifyMTLFormatCapabilities(id<MTLDevice> mtlDevice) {
addMTLVertexFormatCapabilities( macOS_GPUFamily1_v3, UChar4Normalized_BGRA, Vertex );
}
#endif
#if MVK_TVOS
void MVKPixelFormats::modifyMTLFormatCapabilities(id<MTLDevice> mtlDevice) {
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v2, R8Unorm_sRGB, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, R8Unorm_sRGB, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v2, R8Snorm, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v2, RG8Unorm_sRGB, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, RG8Unorm_sRGB, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, RG8Snorm, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, RGBA8Snorm, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, R32Uint, RWC );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, R32Uint, Atomic );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, R32Sint, RWC );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, R32Sint, Atomic );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, R32Float, RWCMB );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v2, RGBA8Unorm_sRGB, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, RGBA8Unorm_sRGB, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, RGBA8Snorm, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v2, BGRA8Unorm_sRGB, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, BGRA8Unorm_sRGB, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, RGB10A2Unorm, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, RGB10A2Uint, RWCM );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, RG11B10Float, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, RGB9E5Float, All );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, RG32Uint, RWC );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, RG32Sint, RWC );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, RG32Float, RWCB );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, RGBA32Uint, RWC );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, RGBA32Sint, RWC );
addMTLPixelFormatCapabilities( tvOS_GPUFamily1_v1, RGBA32Float, RWC );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_4x4_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_4x4_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_5x4_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_5x4_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_5x5_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_5x5_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_6x5_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_6x5_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_6x6_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_6x6_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_8x5_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_8x5_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_8x6_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_8x6_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_8x8_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_8x8_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_10x5_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_10x5_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_10x6_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_10x6_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_10x8_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_10x8_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_10x10_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_10x10_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_12x10_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_12x10_sRGB, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_12x12_LDR, RF );
addMTLPixelFormatCapabilities(tvOS_GPUFamily1_v1, ASTC_12x12_sRGB, RF );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, Depth32Float, DRMR );
addMTLPixelFormatCapabilities( tvOS_GPUFamily2_v1, Depth32Float_Stencil8, DRMR );
addMTLPixelFormatCapabilities(tvOS_GPUFamily2_v1, BGRA10_XR, All );
addMTLPixelFormatCapabilities(tvOS_GPUFamily2_v1, BGRA10_XR_sRGB, All );
addMTLPixelFormatCapabilities(tvOS_GPUFamily2_v1, BGR10_XR, All );
addMTLPixelFormatCapabilities(tvOS_GPUFamily2_v1, BGR10_XR_sRGB, All );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, UCharNormalized, Vertex );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, CharNormalized, Vertex );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, UChar, Vertex );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, Char, Vertex );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, UShortNormalized, Vertex );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, ShortNormalized, Vertex );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, UShort, Vertex );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, Short, Vertex );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, Half, Vertex );
addMTLVertexFormatCapabilities( tvOS_GPUFamily1_v3, UChar4Normalized_BGRA, Vertex );
}
#endif
#if MVK_IOS
void MVKPixelFormats::modifyMTLFormatCapabilities(id<MTLDevice> mtlDevice) {
addMTLPixelFormatCapabilities( iOS_GPUFamily2_v3, R8Unorm_sRGB, All );

View File

@ -30,7 +30,7 @@
#import "CAMetalLayer+MoltenVK.h"
#import "MVKBlockObserver.h"
#if MVK_IOS
#if MVK_IOS_OR_TVOS
# include <UIKit/UIScreen.h>
#endif
@ -384,8 +384,7 @@ void MVKSwapchain::initSurfaceImages(const VkSwapchainCreateInfoKHR* pCreateInfo
VkResult MVKSwapchain::getRefreshCycleDuration(VkRefreshCycleDurationGOOGLE *pRefreshCycleDuration) {
NSInteger framesPerSecond = 60;
#if MVK_IOS
#if MVK_IOS_OR_TVOS
UIScreen* screen = [UIScreen mainScreen];
if ([screen respondsToSelector: @selector(maximumFramesPerSecond)]) {
framesPerSecond = screen.maximumFramesPerSecond;

View File

@ -27,6 +27,9 @@
#if MVK_MACOS
return self.renderTargetArrayLength;
#endif
#if MVK_TVOS
return 0;
#endif
#if MVK_IOS
if ( [self respondsToSelector: @selector(renderTargetArrayLength)] ) {
return self.renderTargetArrayLength;
@ -51,7 +54,7 @@
-(NSUInteger) renderTargetWidthMVK {
#if MVK_MACOS
#if MVK_MACOS || MVK_TVOS
return 0;
#endif
#if MVK_IOS
@ -73,7 +76,7 @@
-(NSUInteger) renderTargetHeightMVK {
#if MVK_MACOS
#if MVK_MACOS || MVK_TVOS
return 0;
#endif
#if MVK_IOS

View File

@ -23,12 +23,12 @@
@implementation MTLRenderPipelineDescriptor (MoltenVK)
-(MTLPrimitiveTopologyClass) inputPrimitiveTopologyMVK {
if ( [self respondsToSelector: @selector(inputPrimitiveTopology)] ) { return self.inputPrimitiveTopology; }
if ( [self respondsToSelector: @selector(inputPrimitiveTopology)] ) { return [self inputPrimitiveTopology]; }
return MTLPrimitiveTopologyClassUnspecified;
}
-(void) setInputPrimitiveTopologyMVK: (MTLPrimitiveTopologyClass) topology {
if ([self respondsToSelector: @selector(setInputPrimitiveTopology:)]) { self.inputPrimitiveTopology = topology; }
if ([self respondsToSelector: @selector(setInputPrimitiveTopology:)]) { [self setInputPrimitiveTopology:topology]; }
}
@end

View File

@ -28,7 +28,7 @@
#if MVK_MACOS
static MVKOSVersion kMinOSVersionMTLCaptureScope = 10.13;
#endif
#if MVK_IOS
#if MVK_IOS_OR_TVOS
static MVKOSVersion kMinOSVersionMTLCaptureScope = 11.0;
#endif

View File

@ -68,7 +68,7 @@
#if MVK_MACOS
# define MVK_MTLEVENT_MIN_OS 10.14
#endif
#if MVK_IOS
#if MVK_IOS_OR_TVOS
# define MVK_MTLEVENT_MIN_OS 12.0
#endif
#ifndef MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS
@ -214,3 +214,7 @@
#if MVK_IOS
# define MVK_SUPPORT_IOSURFACE_BOOL (__IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_11_0)
#endif
#if MVK_TVOS
# define MVK_SUPPORT_IOSURFACE_BOOL (__TV_OS_VERSION_MIN_REQUIRED >= __TVOS_11_0)
#endif

View File

@ -448,7 +448,7 @@ void mvkRemoveAllOccurances(C& container, T val) {
/** Selects and returns one of the values, based on the platform OS. */
template<typename T>
const T& mvkSelectPlatformValue(const T& macOSVal, const T& iOSVal) {
#if MVK_IOS
#if MVK_IOS_OR_TVOS
return iOSVal;
#endif
#if MVK_MACOS

1
MoltenVK/tvOS Symbolic link
View File

@ -0,0 +1 @@
../Package/Latest/MoltenVK/tvOS

View File

@ -7,6 +7,19 @@
objects = {
/* Begin PBXAggregateTarget section */
2FEA0A2F24902F5E00EEF3AD /* MoltenVK-tvOS */ = {
isa = PBXAggregateTarget;
buildConfigurationList = 2FEA0A3524902F5E00EEF3AD /* Build configuration list for PBXAggregateTarget "MoltenVK-tvOS" */;
buildPhases = (
2FEA0A3424902F5E00EEF3AD /* Package MoltenVK */,
);
dependencies = (
2FEA0AC32490303F00EEF3AD /* PBXTargetDependency */,
2FEA0AD92490308E00EEF3AD /* PBXTargetDependency */,
);
name = "MoltenVK-tvOS";
productName = Package;
};
A975D5782140585200D4834F /* MoltenVK-iOS */ = {
isa = PBXAggregateTarget;
buildConfigurationList = A975D5882140585200D4834F /* Build configuration list for PBXAggregateTarget "MoltenVK-iOS" */;
@ -60,6 +73,34 @@
/* End PBXAggregateTarget section */
/* Begin PBXContainerItemProxy section */
2FEA0ABD2490302F00EEF3AD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 2FEA0ABA24902F9F00EEF3AD;
remoteInfo = "MoltenVK-tvOS";
};
2FEA0AC22490303F00EEF3AD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 2FEA0A3B24902F9F00EEF3AD;
remoteInfo = "MoltenVK-tvOS";
};
2FEA0AD82490308E00EEF3AD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A92DB40E1CE0F89600FBC835 /* MoltenVKShaderConverter.xcodeproj */;
proxyType = 1;
remoteGlobalIDString = 2FEA0AC42490305800EEF3AD;
remoteInfo = "MoltenVKGLSLToSPIRVConverter-tvOS";
};
2FEA0ADB2490308E00EEF3AD /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A92DB40E1CE0F89600FBC835 /* MoltenVKShaderConverter.xcodeproj */;
proxyType = 2;
remoteGlobalIDString = 2FEA0AD72490305800EEF3AD;
remoteInfo = "MoltenVKGLSLToSPIRVConverter-tvOS";
};
A92DB3F41CE0F72500FBC835 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */;
@ -213,6 +254,7 @@
isa = PBXGroup;
children = (
A92DB3F51CE0F72500FBC835 /* libMoltenVK.a */,
2FEA0ABE2490302F00EEF3AD /* libMoltenVK-tvOS.a */,
A92DB3F71CE0F72500FBC835 /* libMoltenVK.a */,
);
name = Products;
@ -245,6 +287,7 @@
children = (
A981498B1FB6B566005F00B4 /* MoltenVKShaderConverter */,
A981498D1FB6B566005F00B4 /* libMoltenVKGLSLToSPIRVConverter.a */,
2FEA0ADC2490308E00EEF3AD /* libMoltenVKGLSLToSPIRVConverter-tvOS.a */,
A981498F1FB6B566005F00B4 /* libMoltenVKGLSLToSPIRVConverter.a */,
A98149911FB6B566005F00B4 /* libMoltenVKSPIRVToMSLConverter.a */,
A98149931FB6B566005F00B4 /* libMoltenVKSPIRVToMSLConverter.a */,
@ -298,6 +341,7 @@
targets = (
A9FEADBC1F3517480010240E /* MoltenVK */,
A975D5782140585200D4834F /* MoltenVK-iOS */,
2FEA0A2F24902F5E00EEF3AD /* MoltenVK-tvOS */,
A975D58B2140586700D4834F /* MoltenVK-macOS */,
A9AD700D2440ED3B00B9E254 /* MVKShaderConverterTool */,
);
@ -305,6 +349,20 @@
/* End PBXProject section */
/* Begin PBXReferenceProxy section */
2FEA0ABE2490302F00EEF3AD /* libMoltenVK-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libMoltenVK-tvOS.a";
remoteRef = 2FEA0ABD2490302F00EEF3AD /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
2FEA0ADC2490308E00EEF3AD /* libMoltenVKGLSLToSPIRVConverter-tvOS.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
path = "libMoltenVKGLSLToSPIRVConverter-tvOS.a";
remoteRef = 2FEA0ADB2490308E00EEF3AD /* PBXContainerItemProxy */;
sourceTree = BUILT_PRODUCTS_DIR;
};
A92DB3F51CE0F72500FBC835 /* libMoltenVK.a */ = {
isa = PBXReferenceProxy;
fileType = archive.ar;
@ -357,6 +415,20 @@
/* End PBXReferenceProxy section */
/* Begin PBXShellScriptBuildPhase section */
2FEA0A3424902F5E00EEF3AD /* Package MoltenVK */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Package MoltenVK";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${SRCROOT}/Scripts/package_tvos.sh\"\n";
};
A975D5872140585200D4834F /* Package MoltenVK */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -402,6 +474,16 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXTargetDependency section */
2FEA0AC32490303F00EEF3AD /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = "MoltenVK-tvOS";
targetProxy = 2FEA0AC22490303F00EEF3AD /* PBXContainerItemProxy */;
};
2FEA0AD92490308E00EEF3AD /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = "MoltenVKGLSLToSPIRVConverter-tvOS";
targetProxy = 2FEA0AD82490308E00EEF3AD /* PBXContainerItemProxy */;
};
A975D5792140585200D4834F /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
name = "MoltenVK-iOS";
@ -440,6 +522,20 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
2FEA0A3624902F5E00EEF3AD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
2FEA0A3724902F5E00EEF3AD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
A90B2B211A9B6170008EE819 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -511,6 +607,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
2FEA0A3524902F5E00EEF3AD /* Build configuration list for PBXAggregateTarget "MoltenVK-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2FEA0A3624902F5E00EEF3AD /* Debug */,
2FEA0A3724902F5E00EEF3AD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
A90B2B201A9B6170008EE819 /* Build configuration list for PBXProject "MoltenVKPackaging" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@ -0,0 +1 @@
../../Package/Latest/MoltenVKShaderConverter/MoltenVKGLSLToSPIRVConverter/tvOS

View File

@ -99,6 +99,9 @@ MVK_PUBLIC_SYMBOL SPIRVToMSLConversionOptions::SPIRVToMSLConversionOptions() {
#if MVK_IOS
mslOptions.platform = CompilerMSL::Options::iOS;
#endif
#if MVK_TVOS
mslOptions.platform = CompilerMSL::Options::iOS;
#endif
}
MVK_PUBLIC_SYMBOL bool MSLVertexAttribute::matches(const MSLVertexAttribute& other) const {

View File

@ -0,0 +1 @@
../../Package/Latest/MoltenVKShaderConverter/MoltenVKGLSLToSPIRVConverter/tvOS

View File

@ -7,6 +7,28 @@
objects = {
/* Begin PBXBuildFile section */
2FEA0AC62490305800EEF3AD /* SPIRVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C70F5D221B321600FBA31A /* SPIRVSupport.h */; };
2FEA0AC72490305800EEF3AD /* GLSLConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A90941A21C581F840094110D /* GLSLConversion.h */; };
2FEA0AC82490305800EEF3AD /* GLSLToSPIRVConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A90940A41C5808BB0094110D /* GLSLToSPIRVConverter.h */; };
2FEA0AC92490305800EEF3AD /* MVKCommonEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */; };
2FEA0ACA2490305800EEF3AD /* MVKStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149651FB6A98A005F00B4 /* MVKStrings.h */; };
2FEA0ACC2490305800EEF3AD /* GLSLConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A90941A11C581F840094110D /* GLSLConversion.mm */; };
2FEA0ACD2490305800EEF3AD /* SPIRVSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C70F5E221B321700FBA31A /* SPIRVSupport.cpp */; };
2FEA0ACE2490305800EEF3AD /* GLSLToSPIRVConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A90940A31C5808BB0094110D /* GLSLToSPIRVConverter.cpp */; };
2FEA0CFC249037E300EEF3AD /* libglslang.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FEA0CFB249037DA00EEF3AD /* libglslang.a */; };
2FEA0CFE2490380B00EEF3AD /* libSPIRVTools.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FEA0CF9249037DA00EEF3AD /* libSPIRVTools.a */; };
2FEA0D012490381A00EEF3AD /* SPIRVReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = 450A4F5E220CB180007203D7 /* SPIRVReflection.h */; };
2FEA0D022490381A00EEF3AD /* MVKStrings.h in Headers */ = {isa = PBXBuildFile; fileRef = A98149651FB6A98A005F00B4 /* MVKStrings.h */; };
2FEA0D032490381A00EEF3AD /* SPIRVSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C70F5D221B321600FBA31A /* SPIRVSupport.h */; };
2FEA0D042490381A00EEF3AD /* SPIRVConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A928C9171D0488DC00071B88 /* SPIRVConversion.h */; };
2FEA0D052490381A00EEF3AD /* SPIRVToMSLConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = A9093F5B1C58013E0094110D /* SPIRVToMSLConverter.h */; };
2FEA0D062490381A00EEF3AD /* MVKCommonEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F042AA1FB4D060009FCCB8 /* MVKCommonEnvironment.h */; };
2FEA0D082490381A00EEF3AD /* FileSupport.mm in Sources */ = {isa = PBXBuildFile; fileRef = A925B70A1C7754B2006E7ECD /* FileSupport.mm */; };
2FEA0D092490381A00EEF3AD /* SPIRVToMSLConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9093F5A1C58013E0094110D /* SPIRVToMSLConverter.cpp */; };
2FEA0D0A2490381A00EEF3AD /* SPIRVSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C70F5E221B321700FBA31A /* SPIRVSupport.cpp */; };
2FEA0D0B2490381A00EEF3AD /* SPIRVConversion.mm in Sources */ = {isa = PBXBuildFile; fileRef = A928C9181D0488DC00071B88 /* SPIRVConversion.mm */; };
2FEA0D15249038E000EEF3AD /* libSPIRVCross.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FEA0CFA249037DA00EEF3AD /* libSPIRVCross.a */; };
2FEA0D16249038E600EEF3AD /* libSPIRVTools.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FEA0CF9249037DA00EEF3AD /* libSPIRVTools.a */; };
450A4F61220CB180007203D7 /* SPIRVReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = 450A4F5E220CB180007203D7 /* SPIRVReflection.h */; };
450A4F62220CB180007203D7 /* SPIRVReflection.h in Headers */ = {isa = PBXBuildFile; fileRef = 450A4F5E220CB180007203D7 /* SPIRVReflection.h */; };
A909408A1C58013E0094110D /* SPIRVToMSLConverter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9093F5A1C58013E0094110D /* SPIRVToMSLConverter.cpp */; };
@ -79,6 +101,11 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
2FEA0AD72490305800EEF3AD /* libMoltenVKGLSLToSPIRVConverter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMoltenVKGLSLToSPIRVConverter.a; sourceTree = BUILT_PRODUCTS_DIR; };
2FEA0CF9249037DA00EEF3AD /* libSPIRVTools.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libSPIRVTools.a; path = ../Release/tvOS/libSPIRVTools.a; sourceTree = "<group>"; };
2FEA0CFA249037DA00EEF3AD /* libSPIRVCross.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libSPIRVCross.a; path = ../Release/tvOS/libSPIRVCross.a; sourceTree = "<group>"; };
2FEA0CFB249037DA00EEF3AD /* libglslang.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libglslang.a; path = ../Release/tvOS/libglslang.a; sourceTree = "<group>"; };
2FEA0D142490381A00EEF3AD /* libMoltenVKSPIRVToMSLConverter.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libMoltenVKSPIRVToMSLConverter.a; sourceTree = BUILT_PRODUCTS_DIR; };
450A4F5E220CB180007203D7 /* SPIRVReflection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPIRVReflection.h; sourceTree = "<group>"; };
A9093F5A1C58013E0094110D /* SPIRVToMSLConverter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SPIRVToMSLConverter.cpp; sourceTree = "<group>"; };
A9093F5B1C58013E0094110D /* SPIRVToMSLConverter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPIRVToMSLConverter.h; sourceTree = "<group>"; };
@ -116,6 +143,24 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
2FEA0ACF2490305800EEF3AD /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2FEA0CFE2490380B00EEF3AD /* libSPIRVTools.a in Frameworks */,
2FEA0CFC249037E300EEF3AD /* libglslang.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2FEA0D0C2490381A00EEF3AD /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
2FEA0D16249038E600EEF3AD /* libSPIRVTools.a in Frameworks */,
2FEA0D15249038E000EEF3AD /* libSPIRVCross.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A9092A8A1A81717B00051823 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@ -206,6 +251,9 @@
isa = PBXGroup;
children = (
A9A14E322244388700C080F3 /* Metal.framework */,
2FEA0CF9249037DA00EEF3AD /* libSPIRVTools.a */,
2FEA0CFA249037DA00EEF3AD /* libSPIRVCross.a */,
2FEA0CFB249037DA00EEF3AD /* libglslang.a */,
A972AD2A21CEE6A90013AB25 /* libglslang.a */,
A972AD3821CEE7480013AB25 /* libglslang.a */,
A972AD2F21CEE7040013AB25 /* libSPIRVCross.a */,
@ -251,6 +299,8 @@
A97CC73C1C7527F3004A5C7E /* MoltenVKShaderConverterTool */,
A9F042A81FB4D060009FCCB8 /* Common */,
A964B28D1C57EBC400D930D8 /* Products */,
2FEA0AD72490305800EEF3AD /* libMoltenVKGLSLToSPIRVConverter.a */,
2FEA0D142490381A00EEF3AD /* libMoltenVKSPIRVToMSLConverter.a */,
A972AD2921CEE6A80013AB25 /* Frameworks */,
);
sourceTree = "<group>";
@ -258,6 +308,31 @@
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
2FEA0AC52490305800EEF3AD /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
2FEA0AC62490305800EEF3AD /* SPIRVSupport.h in Headers */,
2FEA0AC72490305800EEF3AD /* GLSLConversion.h in Headers */,
2FEA0AC82490305800EEF3AD /* GLSLToSPIRVConverter.h in Headers */,
2FEA0AC92490305800EEF3AD /* MVKCommonEnvironment.h in Headers */,
2FEA0ACA2490305800EEF3AD /* MVKStrings.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2FEA0D002490381A00EEF3AD /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
2FEA0D012490381A00EEF3AD /* SPIRVReflection.h in Headers */,
2FEA0D022490381A00EEF3AD /* MVKStrings.h in Headers */,
2FEA0D032490381A00EEF3AD /* SPIRVSupport.h in Headers */,
2FEA0D042490381A00EEF3AD /* SPIRVConversion.h in Headers */,
2FEA0D052490381A00EEF3AD /* SPIRVToMSLConverter.h in Headers */,
2FEA0D062490381A00EEF3AD /* MVKCommonEnvironment.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A93747291A9A8B2900F29B34 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
@ -311,6 +386,44 @@
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
2FEA0AC42490305800EEF3AD /* MoltenVKGLSLToSPIRVConverter-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2FEA0AD42490305800EEF3AD /* Build configuration list for PBXNativeTarget "MoltenVKGLSLToSPIRVConverter-tvOS" */;
buildPhases = (
2FEA0AC52490305800EEF3AD /* Headers */,
2FEA0ACB2490305800EEF3AD /* Sources */,
2FEA0ACF2490305800EEF3AD /* Frameworks */,
2FEA0AD22490305800EEF3AD /* Create Dynamic Library */,
2FEA0AD32490305800EEF3AD /* Create Framework */,
);
buildRules = (
);
dependencies = (
);
name = "MoltenVKGLSLToSPIRVConverter-tvOS";
productName = "MetalGLShaderConverter-iOS";
productReference = 2FEA0AD72490305800EEF3AD /* libMoltenVKGLSLToSPIRVConverter.a */;
productType = "com.apple.product-type.library.static";
};
2FEA0CFF2490381A00EEF3AD /* MoltenVKSPIRVToMSLConverter-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 2FEA0D112490381A00EEF3AD /* Build configuration list for PBXNativeTarget "MoltenVKSPIRVToMSLConverter-tvOS" */;
buildPhases = (
2FEA0D002490381A00EEF3AD /* Headers */,
2FEA0D072490381A00EEF3AD /* Sources */,
2FEA0D0C2490381A00EEF3AD /* Frameworks */,
2FEA0D0F2490381A00EEF3AD /* Create Dynamic Library */,
2FEA0D102490381A00EEF3AD /* Create Framework */,
);
buildRules = (
);
dependencies = (
);
name = "MoltenVKSPIRVToMSLConverter-tvOS";
productName = "MetalGLShaderConverter-iOS";
productReference = 2FEA0D142490381A00EEF3AD /* libMoltenVKSPIRVToMSLConverter.a */;
productType = "com.apple.product-type.library.static";
};
A9092A8C1A81717B00051823 /* MoltenVKShaderConverter */ = {
isa = PBXNativeTarget;
buildConfigurationList = A9092A931A81717C00051823 /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter" */;
@ -449,14 +562,88 @@
targets = (
A9092A8C1A81717B00051823 /* MoltenVKShaderConverter */,
A937472B1A9A8B2900F29B34 /* MoltenVKGLSLToSPIRVConverter-iOS */,
2FEA0AC42490305800EEF3AD /* MoltenVKGLSLToSPIRVConverter-tvOS */,
A93747701A9A98D000F29B34 /* MoltenVKGLSLToSPIRVConverter-macOS */,
A93903B81C57E9D700FE90DC /* MoltenVKSPIRVToMSLConverter-iOS */,
2FEA0CFF2490381A00EEF3AD /* MoltenVKSPIRVToMSLConverter-tvOS */,
A93903C01C57E9ED00FE90DC /* MoltenVKSPIRVToMSLConverter-macOS */,
);
};
/* End PBXProject section */
/* Begin PBXShellScriptBuildPhase section */
2FEA0AD22490305800EEF3AD /* Create Dynamic Library */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Create Dynamic Library";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = ". \"${SRCROOT}/../Scripts/create_dylib_tvos.sh\"\n";
};
2FEA0AD32490305800EEF3AD /* Create Framework */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Create Framework";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = ". \"${SRCROOT}/../Scripts/create_framework_tvos.sh\"\n";
};
2FEA0D0F2490381A00EEF3AD /* Create Dynamic Library */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Create Dynamic Library";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = ". \"${SRCROOT}/../Scripts/create_dylib_tvos.sh\"\n";
};
2FEA0D102490381A00EEF3AD /* Create Framework */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = "Create Framework";
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = ". \"${SRCROOT}/../Scripts/create_framework_tvos.sh\"\n";
};
A941E2A7221AC9C300890C56 /* Create Framework */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -604,6 +791,27 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
2FEA0ACB2490305800EEF3AD /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2FEA0ACC2490305800EEF3AD /* GLSLConversion.mm in Sources */,
2FEA0ACD2490305800EEF3AD /* SPIRVSupport.cpp in Sources */,
2FEA0ACE2490305800EEF3AD /* GLSLToSPIRVConverter.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
2FEA0D072490381A00EEF3AD /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2FEA0D082490381A00EEF3AD /* FileSupport.mm in Sources */,
2FEA0D092490381A00EEF3AD /* SPIRVToMSLConverter.cpp in Sources */,
2FEA0D0A2490381A00EEF3AD /* SPIRVSupport.cpp in Sources */,
2FEA0D0B2490381A00EEF3AD /* SPIRVConversion.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
A9092A891A81717B00051823 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@ -674,6 +882,82 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
2FEA0AD52490305800EEF3AD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = arm64;
BITCODE_GENERATION_MODE = bitcode;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/tvOS\"";
PRODUCT_NAME = MoltenVKGLSLToSPIRVConverter;
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 11.0;
VALID_ARCHS = arm64;
};
name = Debug;
};
2FEA0AD62490305800EEF3AD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = arm64;
BITCODE_GENERATION_MODE = bitcode;
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = NO;
CLANG_WARN_UNREACHABLE_CODE = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/tvOS\"";
PRODUCT_NAME = MoltenVKGLSLToSPIRVConverter;
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 11.0;
VALID_ARCHS = arm64;
};
name = Release;
};
2FEA0D122490381A00EEF3AD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = arm64;
BITCODE_GENERATION_MODE = bitcode;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross",
);
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/tvOS\"";
PRODUCT_NAME = MoltenVKSPIRVToMSLConverter;
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 11.0;
VALID_ARCHS = arm64;
};
name = Debug;
};
2FEA0D132490381A00EEF3AD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = arm64;
BITCODE_GENERATION_MODE = bitcode;
GCC_PREPROCESSOR_DEFINITIONS = (
"$(inherited)",
"SPIRV_CROSS_NAMESPACE_OVERRIDE=MVK_spirv_cross",
);
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/tvOS\"";
PRODUCT_NAME = MoltenVKSPIRVToMSLConverter;
SDKROOT = appletvos;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 11.0;
VALID_ARCHS = arm64;
};
name = Release;
};
A9092A911A81717C00051823 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -931,6 +1215,24 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
2FEA0AD42490305800EEF3AD /* Build configuration list for PBXNativeTarget "MoltenVKGLSLToSPIRVConverter-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2FEA0AD52490305800EEF3AD /* Debug */,
2FEA0AD62490305800EEF3AD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
2FEA0D112490381A00EEF3AD /* Build configuration list for PBXNativeTarget "MoltenVKSPIRVToMSLConverter-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
2FEA0D122490381A00EEF3AD /* Debug */,
2FEA0D132490381A00EEF3AD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
A9092A931A81717C00051823 /* Build configuration list for PBXNativeTarget "MoltenVKShaderConverter" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1150"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0AC42490305800EEF3AD"
BuildableName = "libMoltenVKGLSLToSPIRVConverter.a"
BlueprintName = "MoltenVKGLSLToSPIRVConverter-tvOS"
ReferencedContainer = "container:MoltenVKShaderConverter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0AC42490305800EEF3AD"
BuildableName = "libMoltenVKGLSLToSPIRVConverter.a"
BlueprintName = "MoltenVKGLSLToSPIRVConverter-tvOS"
ReferencedContainer = "container:MoltenVKShaderConverter.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -0,0 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1150"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0CFF2490381A00EEF3AD"
BuildableName = "libMoltenVKSPIRVToMSLConverter.a"
BlueprintName = "MoltenVKSPIRVToMSLConverter-tvOS"
ReferencedContainer = "container:MoltenVKShaderConverter.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "2FEA0CFF2490381A00EEF3AD"
BuildableName = "libMoltenVKSPIRVToMSLConverter.a"
BlueprintName = "MoltenVKSPIRVToMSLConverter-tvOS"
ReferencedContainer = "container:MoltenVKShaderConverter.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -35,7 +35,7 @@ ${MVK_SAN} \
${MVK_LINK_WARN} \
-isysroot ${SDK_DIR} \
-iframework ${MVK_SYS_FWK_DIR} \
-framework Metal ${MVK_IOSURFACE_FWK} -framework ${MVK_UX_FWK} -framework QuartzCore -framework CoreGraphics -framework IOKit -framework Foundation \
-framework Metal ${MVK_IOSURFACE_FWK} -framework ${MVK_UX_FWK} -framework QuartzCore -framework CoreGraphics ${MVK_IOKIT_FWK} -framework Foundation \
--library-directory ${MVK_USR_LIB_DIR} \
-o "${BUILT_PRODUCTS_DIR}/dynamic/${MVK_DYLIB_NAME}" \
-force_load "${BUILT_PRODUCTS_DIR}/lib${PRODUCT_NAME}.a"

View File

@ -6,6 +6,7 @@ export MVK_OS="ios"
export MVK_UX_FWK="UIKit"
export MVK_MIN_OS_VERSION=${IPHONEOS_DEPLOYMENT_TARGET}
export MVK_IOSURFACE_FWK="-framework IOSurface"
export MVK_IOKIT_FWK="-framework IOKit"
# Do not link to IOSurface if deploying to iOS versions below 11.0, doing so will
# link IOSurface as a private framework, which will trigger App Store rejection.

View File

@ -6,5 +6,6 @@ export MVK_OS="macosx"
export MVK_UX_FWK="AppKit"
export MVK_MIN_OS_VERSION=${MACOSX_DEPLOYMENT_TARGET}
export MVK_IOSURFACE_FWK="-framework IOSurface"
export MVK_IOKIT_FWK="-framework IOKit"
. "${SRCROOT}/../Scripts/create_dylib.sh"

11
Scripts/create_dylib_tvos.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
set -e
export MVK_OS="tvos"
export MVK_UX_FWK="UIKit"
export MVK_MIN_OS_VERSION=${TVOS_DEPLOYMENT_TARGET}
export MVK_IOSURFACE_FWK="-framework IOSurface"
export MVK_IOKIT_FWK=""
. "${SRCROOT}/../Scripts/create_dylib.sh"

View File

@ -0,0 +1,8 @@
#!/bin/bash
set -e
export MVK_OS="tvOS"
export MVK_FRWK_SUBPATH=""
. "${SRCROOT}/../Scripts/create_framework.sh"

View File

@ -0,0 +1,7 @@
#!/bin/bash
export MVK_OS="tvOS"
export MVK_BUILT_PROD_PATH="${BUILT_PRODUCTS_DIR}-appletvos"
"${SRCROOT}/Scripts/package_ext_libs.sh"

10
Scripts/package_tvos.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash
export MVK_OS="tvOS"
export MVK_BUILT_PROD_PATH="${BUILT_PRODUCTS_DIR}-appletvos"
. "${SRCROOT}/Scripts/package_moltenvk.sh"
. "${SRCROOT}/Scripts/package_shader_converter.sh"
. "${SRCROOT}/Scripts/package_docs.sh"
. "${SRCROOT}/Scripts/package_update_latest.sh"

1
Templates/framework/tvOS Symbolic link
View File

@ -0,0 +1 @@
iOS