From 1d43bb2954b86c16d48b959a8ec7be60f0799d1e Mon Sep 17 00:00:00 2001 From: Alexey Orlov Date: Wed, 5 Aug 2026 08:04:05 +0200 Subject: [PATCH] [macos] updated plugin for arm64 Updated xcode project to build both arm64 and x64, updated code to use didModifyRange only for managed buffers --- .../RenderingPlugin.xcodeproj/project.pbxproj | 33 ++++++++++-------- PluginSource/source/PlatformBase.h | 4 +-- PluginSource/source/RenderAPI_Metal.mm | 10 +++--- .../RenderingPlugin.bundle/Contents.meta | 8 ----- .../Contents/Info.plist | 18 ++++++---- .../Contents/Info.plist.meta | 7 ---- .../Contents/MacOS.meta | 8 ----- .../Contents/MacOS/RenderingPlugin | Bin 30156 -> 91040 bytes .../Contents/MacOS/RenderingPlugin.meta | 7 ---- 9 files changed, 37 insertions(+), 58 deletions(-) delete mode 100644 UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents.meta delete mode 100644 UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist.meta delete mode 100644 UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS.meta delete mode 100644 UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin.meta diff --git a/PluginSource/projects/Xcode/RenderingPlugin.xcodeproj/project.pbxproj b/PluginSource/projects/Xcode/RenderingPlugin.xcodeproj/project.pbxproj index 08f683df..c2d47c42 100644 --- a/PluginSource/projects/Xcode/RenderingPlugin.xcodeproj/project.pbxproj +++ b/PluginSource/projects/Xcode/RenderingPlugin.xcodeproj/project.pbxproj @@ -7,12 +7,11 @@ objects = { /* Begin PBXBuildFile section */ - 2B6899B81CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B6899B01CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp */; }; 2B6899B91CF8396700C4BA4F /* RenderAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B6899B11CF8396700C4BA4F /* RenderAPI.cpp */; }; 2B6899BA1CF8396700C4BA4F /* RenderingPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2B6899B31CF8396700C4BA4F /* RenderingPlugin.cpp */; }; 2B6899C91CF83DB000C4BA4F /* RenderingPlugin.bundle in Copy Bundle into Unity project */ = {isa = PBXBuildFile; fileRef = 8D576316048677EA00EA77CD /* RenderingPlugin.bundle */; }; 2B6899CB1CF8409A00C4BA4F /* RenderAPI_Metal.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2B6899CA1CF8409A00C4BA4F /* RenderAPI_Metal.mm */; }; - 2BC2A8D5144C433D00D5EF79 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2BC2A8D4144C433D00D5EF79 /* OpenGL.framework */; }; + 8A0E9E8B3022106C005CEB36 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A0E9E8A3022106C005CEB36 /* Metal.framework */; }; 8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */; }; /* End PBXBuildFile section */ @@ -33,9 +32,6 @@ /* Begin PBXFileReference section */ 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = ""; }; 2B6899AB1CF8396700C4BA4F /* PlatformBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformBase.h; path = ../../source/PlatformBase.h; sourceTree = ""; }; - 2B6899AD1CF8396700C4BA4F /* RenderAPI_D3D11.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderAPI_D3D11.cpp; path = ../../source/RenderAPI_D3D11.cpp; sourceTree = ""; }; - 2B6899AE1CF8396700C4BA4F /* RenderAPI_D3D12.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderAPI_D3D12.cpp; path = ../../source/RenderAPI_D3D12.cpp; sourceTree = ""; }; - 2B6899B01CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderAPI_OpenGLCoreES.cpp; path = ../../source/RenderAPI_OpenGLCoreES.cpp; sourceTree = ""; }; 2B6899B11CF8396700C4BA4F /* RenderAPI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderAPI.cpp; path = ../../source/RenderAPI.cpp; sourceTree = ""; }; 2B6899B21CF8396700C4BA4F /* RenderAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderAPI.h; path = ../../source/RenderAPI.h; sourceTree = ""; }; 2B6899B31CF8396700C4BA4F /* RenderingPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderingPlugin.cpp; path = ../../source/RenderingPlugin.cpp; sourceTree = ""; }; @@ -46,7 +42,7 @@ 2B6899C61CF839A600C4BA4F /* IUnityGraphicsMetal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IUnityGraphicsMetal.h; path = ../../source/Unity/IUnityGraphicsMetal.h; sourceTree = ""; }; 2B6899C71CF839A600C4BA4F /* IUnityInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IUnityInterface.h; path = ../../source/Unity/IUnityInterface.h; sourceTree = ""; }; 2B6899CA1CF8409A00C4BA4F /* RenderAPI_Metal.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RenderAPI_Metal.mm; path = ../../source/RenderAPI_Metal.mm; sourceTree = ""; }; - 2BC2A8D4144C433D00D5EF79 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; + 8A0E9E8A3022106C005CEB36 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; }; 8D576316048677EA00EA77CD /* RenderingPlugin.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RenderingPlugin.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 8D576317048677EA00EA77CD /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; /* End PBXFileReference section */ @@ -56,8 +52,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 8A0E9E8B3022106C005CEB36 /* Metal.framework in Frameworks */, 8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */, - 2BC2A8D5144C433D00D5EF79 /* OpenGL.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -71,6 +67,7 @@ 089C167CFE841241C02AAC07 /* Resources */, 089C1671FE841209C02AAC07 /* External Frameworks and Libraries */, 19C28FB6FE9D52B211CA2CBB /* Products */, + 8A0E9E893022106C005CEB36 /* Frameworks */, ); name = RenderingPlugin; sourceTree = ""; @@ -79,7 +76,6 @@ isa = PBXGroup; children = ( 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */, - 2BC2A8D4144C433D00D5EF79 /* OpenGL.framework */, ); name = "External Frameworks and Libraries"; sourceTree = ""; @@ -97,10 +93,7 @@ children = ( 2B6899BC1CF8398200C4BA4F /* Unity */, 2B6899AB1CF8396700C4BA4F /* PlatformBase.h */, - 2B6899AD1CF8396700C4BA4F /* RenderAPI_D3D11.cpp */, - 2B6899AE1CF8396700C4BA4F /* RenderAPI_D3D12.cpp */, 2B6899CA1CF8409A00C4BA4F /* RenderAPI_Metal.mm */, - 2B6899B01CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp */, 2B6899B11CF8396700C4BA4F /* RenderAPI.cpp */, 2B6899B21CF8396700C4BA4F /* RenderAPI.h */, 2B6899B31CF8396700C4BA4F /* RenderingPlugin.cpp */, @@ -129,6 +122,14 @@ name = Unity; sourceTree = ""; }; + 8A0E9E893022106C005CEB36 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8A0E9E8A3022106C005CEB36 /* Metal.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -194,7 +195,6 @@ buildActionMask = 2147483647; files = ( 2B6899BA1CF8396700C4BA4F /* RenderingPlugin.cpp in Sources */, - 2B6899B81CF8396700C4BA4F /* RenderAPI_OpenGLCoreES.cpp in Sources */, 2B6899B91CF8396700C4BA4F /* RenderAPI.cpp in Sources */, 2B6899CB1CF8409A00C4BA4F /* RenderAPI_Metal.mm in Sources */, ); @@ -214,9 +214,10 @@ HEADER_SEARCH_PATHS = ../; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + MACOSX_DEPLOYMENT_TARGET = 13.0; + ONLY_ACTIVE_ARCH = NO; PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:rfc1034Identifier}"; PRODUCT_NAME = RenderingPlugin; - VALID_ARCHS = x86_64; WRAPPER_EXTENSION = bundle; }; name = Debug; @@ -231,9 +232,10 @@ HEADER_SEARCH_PATHS = ../; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Library/Bundles"; + MACOSX_DEPLOYMENT_TARGET = 13.0; + ONLY_ACTIVE_ARCH = NO; PRODUCT_BUNDLE_IDENTIFIER = "com.yourcompany.${PRODUCT_NAME:rfc1034Identifier}"; PRODUCT_NAME = RenderingPlugin; - VALID_ARCHS = x86_64; WRAPPER_EXTENSION = bundle; }; name = Release; @@ -245,7 +247,7 @@ ENABLE_TESTABILITY = YES; GCC_OPTIMIZATION_LEVEL = 0; MACOSX_DEPLOYMENT_TARGET = 10.11; - ONLY_ACTIVE_ARCH = YES; + ONLY_ACTIVE_ARCH = NO; SDKROOT = macosx; SYMROOT = ../../build; }; @@ -258,6 +260,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.11; SDKROOT = macosx; SYMROOT = ../../build; + ONLY_ACTIVE_ARCH = NO; }; name = Release; }; diff --git a/PluginSource/source/PlatformBase.h b/PluginSource/source/PlatformBase.h index f24cd366..c9d4e8b3 100644 --- a/PluginSource/source/PlatformBase.h +++ b/PluginSource/source/PlatformBase.h @@ -51,7 +51,7 @@ #define SUPPORT_OPENGL_UNIFIED 1 #define SUPPORT_OPENGL_CORE 1 #define SUPPORT_VULKAN 0 // Requires Vulkan SDK to be installed -#elif UNITY_IOS || UNITY_TVOS || UNITY_ANDROID || UNITY_WEBGL +#elif UNITY_ANDROID || UNITY_WEBGL #ifndef SUPPORT_OPENGL_ES #define SUPPORT_OPENGL_ES 1 #endif @@ -59,7 +59,7 @@ #ifndef SUPPORT_VULKAN #define SUPPORT_VULKAN 0 #endif -#elif UNITY_OSX || UNITY_LINUX +#elif UNITY_LINUX #define SUPPORT_OPENGL_UNIFIED 1 #define SUPPORT_OPENGL_CORE 1 #elif UNITY_EMBEDDED_LINUX diff --git a/PluginSource/source/RenderAPI_Metal.mm b/PluginSource/source/RenderAPI_Metal.mm index f7abf0f7..dd1cc9c5 100644 --- a/PluginSource/source/RenderAPI_Metal.mm +++ b/PluginSource/source/RenderAPI_Metal.mm @@ -142,7 +142,6 @@ pipeDesc.depthAttachmentPixelFormat = MTLPixelFormatDepth32Float_Stencil8; pipeDesc.stencilAttachmentPixelFormat = MTLPixelFormatDepth32Float_Stencil8; - pipeDesc.sampleCount = 1; pipeDesc.colorAttachments[0].blendingEnabled = NO; pipeDesc.vertexFunction = vertexFunction; @@ -199,8 +198,10 @@ ::memcpy(m_ConstantBuffer.contents, worldMatrix, cbSize); #if UNITY_OSX - [m_VertexBuffer didModifyRange:NSMakeRange(0, vbSize)]; - [m_ConstantBuffer didModifyRange:NSMakeRange(0, cbSize)]; + if (m_VertexBuffer.storageMode == MTLStorageModeManaged) + [m_VertexBuffer didModifyRange:NSMakeRange(0, vbSize)]; + if (m_ConstantBuffer.storageMode == MTLStorageModeManaged) + [m_ConstantBuffer didModifyRange:NSMakeRange(0, cbSize)]; #endif id cmd = (id)m_MetalGraphics->CurrentCommandEncoder(); @@ -250,7 +251,8 @@ { # if UNITY_OSX id buf = (__bridge id)bufferHandle; - [buf didModifyRange:NSMakeRange(0, buf.length)]; + if (buf.storageMode == MTLStorageModeManaged) + [buf didModifyRange:NSMakeRange(0, buf.length)]; # endif // if UNITY_OSX } diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents.meta b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents.meta deleted file mode 100644 index 74ed6185..00000000 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f755e08657c4d45a2964c48ee8fe540d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist index 8eed89a2..905d9e17 100644 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist +++ b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 18G87 + 25F84 CFBundleDevelopmentRegion English CFBundleExecutable @@ -47,16 +47,20 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 10G8 + 25F70 + DTPlatformName + macosx DTPlatformVersion - GM + 26.5 DTSDKBuild - 18G74 + 25F70 DTSDKName - macosx10.14 + macosx26.5 DTXcode - 1030 + 2660 DTXcodeBuild - 10G8 + 17F113 + LSMinimumSystemVersion + 13.0 diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist.meta b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist.meta deleted file mode 100644 index 0476b6af..00000000 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/Info.plist.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 8aa00d77c9d59498d8afc6cc966ccedf -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS.meta b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS.meta deleted file mode 100644 index 4d9bf1d4..00000000 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: ea416e3a931c44c7dab7be3ff85af5da -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin index ffed025ad209719a88131ffac4bc7ee4b61c9430..590c51c5ac544b498feea6af448258b0519f4509 100755 GIT binary patch literal 91040 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 OFZrUs3=~RqM*Tmt+P^&j diff --git a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin.meta b/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin.meta deleted file mode 100644 index 488164d4..00000000 --- a/UnityProject/Assets/Plugins/RenderingPlugin.bundle/Contents/MacOS/RenderingPlugin.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f0b092cc71f8b465cbb5a657186a3267 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: