Merge branch 'xcode11' into xcode11-backport-xtro

This commit is contained in:
Sebastien Pouliot 2019-06-12 00:49:18 -04:00
Родитель 2e295036db 1558efaec2
Коммит fb72e516e8
22 изменённых файлов: 639 добавлений и 102 удалений

2
external/macios-binaries поставляемый

@ -1 +1 @@
Subproject commit ff1d19c3e4562c3750f457a183c11046ad810040 Subproject commit 43d082327cbb8583a5c85bbcb242b9445fc18340

2
external/mono поставляемый

@ -1 +1 @@
Subproject commit dfd4224fdd40dfa8bfdad092c7d75d235ca37a8d Subproject commit c6edaa62f94b37bd34ddf99514c904dbc86caf12

Просмотреть файл

@ -1,6 +1,6 @@
ifdef ENABLE_XAMARIN ifdef ENABLE_XAMARIN
NEEDED_MACCORE_VERSION := 62a239f3f89573dd68c120993cd1dfeb166f8c9c NEEDED_MACCORE_VERSION := 54d98e168c0493e05f26c0171540b2e7475b7b41
NEEDED_MACCORE_BRANCH := d16-2 NEEDED_MACCORE_BRANCH := xcode11
MACCORE_DIRECTORY := maccore MACCORE_DIRECTORY := maccore
MACCORE_MODULE := git@github.com:xamarin/maccore.git MACCORE_MODULE := git@github.com:xamarin/maccore.git

Просмотреть файл

@ -146,6 +146,28 @@ namespace Metal {
fixed (void * handle = positions) fixed (void * handle = positions)
GetDefaultSamplePositions (This, (IntPtr)handle, count); GetDefaultSamplePositions (This, (IntPtr)handle, count);
} }
#if !XAMCORE_4_0
[return: Release]
[BindingImpl (BindingImplOptions.GeneratedCode | BindingImplOptions.Optimizable)]
public static IMTLLibrary CreateLibrary (this IMTLDevice This, global::CoreFoundation.DispatchData data, out NSError error)
{
if (data == null)
throw new ArgumentNullException ("data");
IntPtr errorValue = IntPtr.Zero;
IMTLLibrary ret;
ret = Runtime.GetINativeObject<IMTLLibrary> (global::ObjCRuntime.Messaging.IntPtr_objc_msgSend_IntPtr_ref_IntPtr (This.Handle, Selector.GetHandle ("newLibraryWithData:error:"), data.Handle, ref errorValue), true);
error = Runtime.GetNSObject<NSError> (errorValue);
return ret;
}
public static IMTLLibrary CreateDefaultLibrary (this IMTLDevice This, NSBundle bundle, out NSError error)
{
return MTLDevice_Extensions.CreateLibrary (This, bundle, out error);
}
#endif
} }
} }
#endif #endif

Просмотреть файл

@ -4449,14 +4449,31 @@ public partial class Generator : IMemberGatherer {
} }
if (minfo.is_return_release) { if (minfo.is_return_release) {
if (!needsPtrZeroCheck)
print ("{0}.void_objc_msgSend (ret.Handle, Selector.GetHandle (Selector.Release));", ns.Messaging); // Make sure we generate the required signature in Messaging only if needed
else { // bool_objc_msgSendSuper_IntPtr: for respondsToSelector:
if (!send_methods.ContainsKey ("void_objc_msgSend")) {
print (m, "[DllImport (LIBOBJC_DYLIB, EntryPoint=\"objc_msgSendSuper\")]");
print (m, "public extern static void void_objc_msgSend (IntPtr receiever, IntPtr selector);");
RegisterMethodName ("void_objc_msgSend");
}
if (!needsPtrZeroCheck) {
print ("if (ret != null)");
indent++;
print ("global::{0}.void_objc_msgSend (ret.Handle, Selector.GetHandle (\"release\"));", ns.Messaging);
indent--;
} else {
// We must create the managed wrapper before calling Release on it // We must create the managed wrapper before calling Release on it
// FIXME: https://trello.com/c/1ukS9TbL/43-introduce-common-object-type-for-all-unmanaged-types-which-will-correctly-implement-idisposable-and-inativeobject // FIXME: https://trello.com/c/1ukS9TbL/43-introduce-common-object-type-for-all-unmanaged-types-which-will-correctly-implement-idisposable-and-inativeobject
// We should consider using return INativeObject<T> (ptr, bool); here at some point // We should consider using return INativeObject<T> (ptr, bool); here at some point
print ("global::{0} relObj = ret == IntPtr.Zero ? null : new global::{0} (ret);", mi.ReturnType.FullName); print ("global::{0} relObj = null;", mi.ReturnType.FullName);
print ("if (relObj != null) global::{0}.void_objc_msgSend (relObj.Handle, Selector.GetHandle (Selector.Release));", ns.Messaging); print ("if (ret != IntPtr.Zero) {");
indent++;
print ("relObj = new global::{0} (ret);", mi.ReturnType.FullName);
print ("global::{0}.void_objc_msgSend (ret, Selector.GetHandle (\"release\"));", ns.Messaging);
indent--;
print ("}");
} }
} }
@ -5211,13 +5228,7 @@ public partial class Generator : IMemberGatherer {
void PrintMethodAttributes (MemberInformation minfo) void PrintMethodAttributes (MemberInformation minfo)
{ {
MethodInfo mi = minfo.method; MethodInfo mi = minfo.method;
var editor_browsable_attribute = false;
foreach (var oa in AttributeManager.GetCustomAttributes<ObsoleteAttribute> (mi)) {
print ("[Obsolete (\"{0}\", {1})]",
oa.Message, oa.IsError ? "true" : "false");
print ("[EditorBrowsable (EditorBrowsableState.Never)]");
}
foreach (var sa in AttributeManager.GetCustomAttributes<ThreadSafeAttribute> (mi)) foreach (var sa in AttributeManager.GetCustomAttributes<ThreadSafeAttribute> (mi))
print (sa.Safe ? "[ThreadSafe]" : "[ThreadSafe (false)]"); print (sa.Safe ? "[ThreadSafe]" : "[ThreadSafe (false)]");
@ -5228,6 +5239,13 @@ public partial class Generator : IMemberGatherer {
} else { } else {
print ("[EditorBrowsable (EditorBrowsableState.{0})]", ea.State); print ("[EditorBrowsable (EditorBrowsableState.{0})]", ea.State);
} }
editor_browsable_attribute = true;
}
foreach (var oa in AttributeManager.GetCustomAttributes<ObsoleteAttribute> (mi)) {
print ("[Obsolete (\"{0}\", {1})]", oa.Message, oa.IsError ? "true" : "false");
if (!editor_browsable_attribute)
print ("[EditorBrowsable (EditorBrowsableState.Never)]");
} }
if (minfo.is_return_release) if (minfo.is_return_release)

Просмотреть файл

@ -164,6 +164,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[Export ("newTextureWithDescriptor:offset:bytesPerRow:")] [Export ("newTextureWithDescriptor:offset:bytesPerRow:")]
[return: Release]
IMTLTexture CreateTexture (MTLTextureDescriptor descriptor, nuint offset, nuint bytesPerRow); IMTLTexture CreateTexture (MTLTextureDescriptor descriptor, nuint offset, nuint bytesPerRow);
[iOS (10,0), TV (10,0), NoWatch, Mac (10,12)] [iOS (10,0), TV (10,0), NoWatch, Mac (10,12)]
@ -791,34 +792,42 @@ namespace Metal {
#endif #endif
[Export ("newHeapWithDescriptor:")] [Export ("newHeapWithDescriptor:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLHeap CreateHeap (MTLHeapDescriptor descriptor); IMTLHeap CreateHeap (MTLHeapDescriptor descriptor);
[Abstract, Export ("newCommandQueue")] [Abstract, Export ("newCommandQueue")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLCommandQueue CreateCommandQueue (); IMTLCommandQueue CreateCommandQueue ();
[Abstract, Export ("newCommandQueueWithMaxCommandBufferCount:")] [Abstract, Export ("newCommandQueueWithMaxCommandBufferCount:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLCommandQueue CreateCommandQueue (nuint maxCommandBufferCount); IMTLCommandQueue CreateCommandQueue (nuint maxCommandBufferCount);
[Abstract, Export ("newBufferWithLength:options:")] [Abstract, Export ("newBufferWithLength:options:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLBuffer CreateBuffer (nuint length, MTLResourceOptions options); IMTLBuffer CreateBuffer (nuint length, MTLResourceOptions options);
[Abstract, Export ("newBufferWithBytes:length:options:")] [Abstract, Export ("newBufferWithBytes:length:options:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLBuffer CreateBuffer (IntPtr pointer, nuint length, MTLResourceOptions options); IMTLBuffer CreateBuffer (IntPtr pointer, nuint length, MTLResourceOptions options);
[Abstract, Export ("newBufferWithBytesNoCopy:length:options:deallocator:")] [Abstract, Export ("newBufferWithBytesNoCopy:length:options:deallocator:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLBuffer CreateBufferNoCopy (IntPtr pointer, nuint length, MTLResourceOptions options, MTLDeallocator deallocator); IMTLBuffer CreateBufferNoCopy (IntPtr pointer, nuint length, MTLResourceOptions options, MTLDeallocator deallocator);
[Abstract, Export ("newDepthStencilStateWithDescriptor:")] [Abstract, Export ("newDepthStencilStateWithDescriptor:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLDepthStencilState CreateDepthStencilState (MTLDepthStencilDescriptor descriptor); IMTLDepthStencilState CreateDepthStencilState (MTLDepthStencilDescriptor descriptor);
[Abstract, Export ("newTextureWithDescriptor:")] [Abstract, Export ("newTextureWithDescriptor:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLTexture CreateTexture (MTLTextureDescriptor descriptor); IMTLTexture CreateTexture (MTLTextureDescriptor descriptor);
#if XAMCORE_4_0 #if XAMCORE_4_0
@ -826,6 +835,7 @@ namespace Metal {
#endif #endif
[iOS (11,0), TV (11,0), NoWatch, Mac (10,11)] [iOS (11,0), TV (11,0), NoWatch, Mac (10,11)]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
[Export ("newTextureWithDescriptor:iosurface:plane:")] [Export ("newTextureWithDescriptor:iosurface:plane:")]
IMTLTexture CreateTexture (MTLTextureDescriptor descriptor, IOSurface.IOSurface iosurface, nuint plane); IMTLTexture CreateTexture (MTLTextureDescriptor descriptor, IOSurface.IOSurface iosurface, nuint plane);
@ -835,6 +845,7 @@ namespace Metal {
#endif #endif
[Export ("newSharedTextureWithDescriptor:")] [Export ("newSharedTextureWithDescriptor:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLTexture CreateSharedTexture (MTLTextureDescriptor descriptor); IMTLTexture CreateSharedTexture (MTLTextureDescriptor descriptor);
[NoiOS, NoTV, Mac (10,14, onlyOn64: true)] [NoiOS, NoTV, Mac (10,14, onlyOn64: true)]
@ -843,36 +854,57 @@ namespace Metal {
#endif #endif
[Export ("newSharedTextureWithHandle:")] [Export ("newSharedTextureWithHandle:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLTexture CreateSharedTexture (MTLSharedTextureHandle sharedHandle); IMTLTexture CreateSharedTexture (MTLSharedTextureHandle sharedHandle);
[Abstract, Export ("newSamplerStateWithDescriptor:")] [Abstract, Export ("newSamplerStateWithDescriptor:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLSamplerState CreateSamplerState (MTLSamplerDescriptor descriptor); IMTLSamplerState CreateSamplerState (MTLSamplerDescriptor descriptor);
[Abstract, Export ("newDefaultLibrary")] [Abstract, Export ("newDefaultLibrary")]
[return: Release]
IMTLLibrary CreateDefaultLibrary (); IMTLLibrary CreateDefaultLibrary ();
[Abstract, Export ("newLibraryWithFile:error:")] [Abstract, Export ("newLibraryWithFile:error:")]
[return: Release]
IMTLLibrary CreateLibrary (string filepath, out NSError error); IMTLLibrary CreateLibrary (string filepath, out NSError error);
#if !XAMCORE_4_0
[Abstract, Export ("newLibraryWithData:error:")] [Abstract, Export ("newLibraryWithData:error:")]
[return: Release]
[Obsolete ("Use the overload that take a 'DispatchData' instead.")]
IMTLLibrary CreateLibrary (NSObject data, out NSError error); IMTLLibrary CreateLibrary (NSObject data, out NSError error);
#endif
#if XAMCORE_4_0
[Abstract]
[Export ("newLibraryWithData:error:")]
[return: Release]
IMTLLibrary CreateLibrary (DispatchData data, out NSError error);
#endif
[Abstract, Export ("newLibraryWithSource:options:error:")] [Abstract, Export ("newLibraryWithSource:options:error:")]
[return: Release]
IMTLLibrary CreateLibrary (string source, MTLCompileOptions options, out NSError error); IMTLLibrary CreateLibrary (string source, MTLCompileOptions options, out NSError error);
[Abstract, Export ("newLibraryWithSource:options:completionHandler:")] [Abstract, Export ("newLibraryWithSource:options:completionHandler:")]
[Async]
void CreateLibrary (string source, MTLCompileOptions options, Action<IMTLLibrary, NSError> completionHandler); void CreateLibrary (string source, MTLCompileOptions options, Action<IMTLLibrary, NSError> completionHandler);
[iOS (10,0), TV (10,0), NoWatch, Mac (10,12)] [iOS (10,0), TV (10,0), NoWatch, Mac (10,12)]
#if XAMCORE_4_0
[Abstract]
#endif
[Export ("newDefaultLibraryWithBundle:error:")] [Export ("newDefaultLibraryWithBundle:error:")]
[return: Release]
[return: NullAllowed] [return: NullAllowed]
#if XAMCORE_4_0
IMTLLibrary CreateDefaultLibrary (NSBundle bundle, out NSError error);
#else
[Obsolete ("Use 'CreateDefaultLibrary' instead.")]
IMTLLibrary CreateLibrary (NSBundle bundle, out NSError error); IMTLLibrary CreateLibrary (NSBundle bundle, out NSError error);
#endif
[Abstract, Export ("newRenderPipelineStateWithDescriptor:error:")] [Abstract, Export ("newRenderPipelineStateWithDescriptor:error:")]
[return: Release]
IMTLRenderPipelineState CreateRenderPipelineState (MTLRenderPipelineDescriptor descriptor, out NSError error); IMTLRenderPipelineState CreateRenderPipelineState (MTLRenderPipelineDescriptor descriptor, out NSError error);
[Abstract, Export ("newRenderPipelineStateWithDescriptor:completionHandler:")] [Abstract, Export ("newRenderPipelineStateWithDescriptor:completionHandler:")]
@ -882,6 +914,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[Export ("newRenderPipelineStateWithDescriptor:options:reflection:error:")] [Export ("newRenderPipelineStateWithDescriptor:options:reflection:error:")]
[return: Release]
IMTLRenderPipelineState CreateRenderPipelineState (MTLRenderPipelineDescriptor descriptor, MTLPipelineOption options, out MTLRenderPipelineReflection reflection, out NSError error); IMTLRenderPipelineState CreateRenderPipelineState (MTLRenderPipelineDescriptor descriptor, MTLPipelineOption options, out MTLRenderPipelineReflection reflection, out NSError error);
#if XAMCORE_2_0 #if XAMCORE_2_0
@ -894,6 +927,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[Export ("newComputePipelineStateWithFunction:options:reflection:error:")] [Export ("newComputePipelineStateWithFunction:options:reflection:error:")]
[return: Release]
IMTLComputePipelineState CreateComputePipelineState (IMTLFunction computeFunction, MTLPipelineOption options, out MTLComputePipelineReflection reflection, out NSError error); IMTLComputePipelineState CreateComputePipelineState (IMTLFunction computeFunction, MTLPipelineOption options, out MTLComputePipelineReflection reflection, out NSError error);
#if XAMCORE_2_0 #if XAMCORE_2_0
@ -903,6 +937,7 @@ namespace Metal {
void CreateComputePipelineState (IMTLFunction computeFunction, Action<IMTLComputePipelineState, NSError> completionHandler); void CreateComputePipelineState (IMTLFunction computeFunction, Action<IMTLComputePipelineState, NSError> completionHandler);
[Abstract, Export ("newComputePipelineStateWithFunction:error:")] [Abstract, Export ("newComputePipelineStateWithFunction:error:")]
[return: Release]
IMTLComputePipelineState CreateComputePipelineState (IMTLFunction computeFunction, out NSError error); IMTLComputePipelineState CreateComputePipelineState (IMTLFunction computeFunction, out NSError error);
[Abstract, Export ("newComputePipelineStateWithFunction:options:completionHandler:")] [Abstract, Export ("newComputePipelineStateWithFunction:options:completionHandler:")]
@ -914,6 +949,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[Export ("newComputePipelineStateWithDescriptor:options:reflection:error:")] [Export ("newComputePipelineStateWithDescriptor:options:reflection:error:")]
[return: Release]
IMTLComputePipelineState CreateComputePipelineState (MTLComputePipelineDescriptor descriptor, MTLPipelineOption options, out MTLComputePipelineReflection reflection, out NSError error); IMTLComputePipelineState CreateComputePipelineState (MTLComputePipelineDescriptor descriptor, MTLPipelineOption options, out MTLComputePipelineReflection reflection, out NSError error);
[iOS (9,0)] [iOS (9,0)]
@ -929,6 +965,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[Export ("newFence")] [Export ("newFence")]
[return: Release]
IMTLFence CreateFence (); IMTLFence CreateFence ();
[Abstract, Export ("supportsFeatureSet:")] [Abstract, Export ("supportsFeatureSet:")]
@ -976,6 +1013,7 @@ namespace Metal {
#endif #endif
[Export ("newLibraryWithURL:error:")] [Export ("newLibraryWithURL:error:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLLibrary CreateLibrary (NSUrl url, [NullAllowed] out NSError error); IMTLLibrary CreateLibrary (NSUrl url, [NullAllowed] out NSError error);
[Mac (10,13), iOS (11,0), TV (11,0), NoWatch] [Mac (10,13), iOS (11,0), TV (11,0), NoWatch]
@ -1026,6 +1064,7 @@ namespace Metal {
#endif #endif
[Export ("newArgumentEncoderWithArguments:")] [Export ("newArgumentEncoderWithArguments:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLArgumentEncoder CreateArgumentEncoder (MTLArgumentDescriptor[] arguments); IMTLArgumentEncoder CreateArgumentEncoder (MTLArgumentDescriptor[] arguments);
[Mac (10,14, onlyOn64: true), iOS (12,0), TV (12,0)] [Mac (10,14, onlyOn64: true), iOS (12,0), TV (12,0)]
@ -1034,6 +1073,7 @@ namespace Metal {
#endif #endif
[Export ("newIndirectCommandBufferWithDescriptor:maxCommandCount:options:")] [Export ("newIndirectCommandBufferWithDescriptor:maxCommandCount:options:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLIndirectCommandBuffer CreateIndirectCommandBuffer (MTLIndirectCommandBufferDescriptor descriptor, nuint maxCount, MTLResourceOptions options); IMTLIndirectCommandBuffer CreateIndirectCommandBuffer (MTLIndirectCommandBufferDescriptor descriptor, nuint maxCount, MTLResourceOptions options);
[Mac (10, 14, onlyOn64: true), iOS (12, 0), TV (12,0)] [Mac (10, 14, onlyOn64: true), iOS (12, 0), TV (12,0)]
@ -1041,6 +1081,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[return: NullAllowed] [return: NullAllowed]
[return: Release]
[Export ("newEvent")] [Export ("newEvent")]
IMTLEvent CreateEvent (); IMTLEvent CreateEvent ();
@ -1049,6 +1090,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[return: NullAllowed] [return: NullAllowed]
[return: Release]
[Export ("newSharedEvent")] [Export ("newSharedEvent")]
IMTLSharedEvent CreateSharedEvent (); IMTLSharedEvent CreateSharedEvent ();
@ -1058,6 +1100,7 @@ namespace Metal {
#endif #endif
[Export ("newSharedEventWithHandle:")] [Export ("newSharedEventWithHandle:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLSharedEvent CreateSharedEvent (MTLSharedEventHandle sharedEventHandle); IMTLSharedEvent CreateSharedEvent (MTLSharedEventHandle sharedEventHandle);
[Mac (10,14, onlyOn64: true), iOS (12,0), TV (12,0)] [Mac (10,14, onlyOn64: true), iOS (12,0), TV (12,0)]
@ -1104,6 +1147,7 @@ namespace Metal {
#endif #endif
[Export ("newRenderPipelineStateWithTileDescriptor:options:reflection:error:")] [Export ("newRenderPipelineStateWithTileDescriptor:options:reflection:error:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLRenderPipelineState CreateRenderPipelineState (MTLTileRenderPipelineDescriptor descriptor, MTLPipelineOption options, [NullAllowed] out MTLRenderPipelineReflection reflection, [NullAllowed] out NSError error); IMTLRenderPipelineState CreateRenderPipelineState (MTLTileRenderPipelineDescriptor descriptor, MTLPipelineOption options, [NullAllowed] out MTLRenderPipelineReflection reflection, [NullAllowed] out NSError error);
[iOS (11,0), NoTV, NoMac, NoWatch] [iOS (11,0), NoTV, NoMac, NoWatch]
@ -1245,6 +1289,7 @@ namespace Metal {
[Abstract, Export ("newTextureViewWithPixelFormat:")] [Abstract, Export ("newTextureViewWithPixelFormat:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLTexture CreateTextureView (MTLPixelFormat pixelFormat); IMTLTexture CreateTextureView (MTLPixelFormat pixelFormat);
#if XAMCORE_4_0 #if XAMCORE_4_0
@ -1258,6 +1303,7 @@ namespace Metal {
#endif #endif
[Export ("newTextureViewWithPixelFormat:textureType:levels:slices:")] [Export ("newTextureViewWithPixelFormat:textureType:levels:slices:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLTexture CreateTextureView (MTLPixelFormat pixelFormat, MTLTextureType textureType, NSRange levelRange, NSRange sliceRange); IMTLTexture CreateTextureView (MTLPixelFormat pixelFormat, MTLTextureType textureType, NSRange levelRange, NSRange sliceRange);
#if XAMCORE_2_0 #if XAMCORE_2_0
@ -1310,6 +1356,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[return: NullAllowed] [return: NullAllowed]
[return: Release]
[Export ("newSharedTextureHandle")] [Export ("newSharedTextureHandle")]
MTLSharedTextureHandle CreateSharedTextureHandle (); MTLSharedTextureHandle CreateSharedTextureHandle ();
} }
@ -1739,6 +1786,10 @@ namespace Metal {
[DisableDefaultCtor] [DisableDefaultCtor]
interface MTLFunctionConstantValues : NSCopying interface MTLFunctionConstantValues : NSCopying
{ {
[iOS (11,0), TV (11,0), Mac (10,13)]
[Export ("init")]
IntPtr Constructor ();
[Export ("setConstantValue:type:atIndex:")] [Export ("setConstantValue:type:atIndex:")]
void SetConstantValue (IntPtr value, MTLDataType type, nuint index); void SetConstantValue (IntPtr value, MTLDataType type, nuint index);
@ -1826,6 +1877,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[Export ("newArgumentEncoderWithBufferIndex:")] [Export ("newArgumentEncoderWithBufferIndex:")]
[return: Release]
IMTLArgumentEncoder CreateArgumentEncoder (nuint bufferIndex); IMTLArgumentEncoder CreateArgumentEncoder (nuint bufferIndex);
[Mac (10,13), iOS (11,0), TV (11,0), NoWatch] [Mac (10,13), iOS (11,0), TV (11,0), NoWatch]
@ -1833,6 +1885,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[Export ("newArgumentEncoderWithBufferIndex:reflection:")] [Export ("newArgumentEncoderWithBufferIndex:reflection:")]
[return: Release]
IMTLArgumentEncoder CreateArgumentEncoder (nuint bufferIndex, [NullAllowed] out MTLArgument reflection); IMTLArgumentEncoder CreateArgumentEncoder (nuint bufferIndex, [NullAllowed] out MTLArgument reflection);
} }
@ -1852,6 +1905,7 @@ namespace Metal {
string [] FunctionNames { get; } string [] FunctionNames { get; }
[Abstract, Export ("newFunctionWithName:")] [Abstract, Export ("newFunctionWithName:")]
[return: Release]
IMTLFunction CreateFunction (string functionName); IMTLFunction CreateFunction (string functionName);
[iOS (10,0), TV (10,0), NoWatch, Mac (10,12)] [iOS (10,0), TV (10,0), NoWatch, Mac (10,12)]
@ -1860,6 +1914,7 @@ namespace Metal {
#endif #endif
[Export ("newFunctionWithName:constantValues:error:")] [Export ("newFunctionWithName:constantValues:error:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLFunction CreateFunction (string name, MTLFunctionConstantValues constantValues, out NSError error); IMTLFunction CreateFunction (string name, MTLFunctionConstantValues constantValues, out NSError error);
[iOS (10,0), TV (10,0), NoWatch, Mac (10,12)] [iOS (10,0), TV (10,0), NoWatch, Mac (10,12)]
@ -1867,6 +1922,7 @@ namespace Metal {
[Abstract] [Abstract]
#endif #endif
[Export ("newFunctionWithName:constantValues:completionHandler:")] [Export ("newFunctionWithName:constantValues:completionHandler:")]
[Async]
void CreateFunction (string name, MTLFunctionConstantValues constantValues, Action<IMTLFunction, NSError> completionHandler); void CreateFunction (string name, MTLFunctionConstantValues constantValues, Action<IMTLFunction, NSError> completionHandler);
[Field ("MTLLibraryErrorDomain")] [Field ("MTLLibraryErrorDomain")]
@ -1879,7 +1935,11 @@ namespace Metal {
[NullAllowed] // by default this property is null [NullAllowed] // by default this property is null
[Export ("preprocessorMacros", ArgumentSemantic.Copy)] [Export ("preprocessorMacros", ArgumentSemantic.Copy)]
#if XAMCORE_4_0
NSDictionary<NSString, NSObject> PreprocessorMacros { get; set; }
#else
NSDictionary PreprocessorMacros { get; set; } NSDictionary PreprocessorMacros { get; set; }
#endif
[Export ("fastMathEnabled")] [Export ("fastMathEnabled")]
bool FastMathEnabled { get; set; } bool FastMathEnabled { get; set; }
@ -2756,11 +2816,13 @@ namespace Metal {
[Abstract] [Abstract]
[Export ("newBufferWithLength:options:")] [Export ("newBufferWithLength:options:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLBuffer CreateBuffer (nuint length, MTLResourceOptions options); IMTLBuffer CreateBuffer (nuint length, MTLResourceOptions options);
[Abstract] [Abstract]
[Export ("newTextureWithDescriptor:")] [Export ("newTextureWithDescriptor:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLTexture CreateTexture (MTLTextureDescriptor desc); IMTLTexture CreateTexture (MTLTextureDescriptor desc);
[Abstract] [Abstract]
@ -2976,9 +3038,11 @@ namespace Metal {
MTLCaptureManager Shared { get; } MTLCaptureManager Shared { get; }
[Export ("newCaptureScopeWithDevice:")] [Export ("newCaptureScopeWithDevice:")]
[return: Release]
IMTLCaptureScope CreateNewCaptureScope (IMTLDevice device); IMTLCaptureScope CreateNewCaptureScope (IMTLDevice device);
[Export ("newCaptureScopeWithCommandQueue:")] [Export ("newCaptureScopeWithCommandQueue:")]
[return: Release]
IMTLCaptureScope CreateNewCaptureScope (IMTLCommandQueue commandQueue); IMTLCaptureScope CreateNewCaptureScope (IMTLCommandQueue commandQueue);
[Export ("startCaptureWithDevice:")] [Export ("startCaptureWithDevice:")]
@ -3141,6 +3205,7 @@ namespace Metal {
#endif #endif
[Export ("newArgumentEncoderForBufferAtIndex:")] [Export ("newArgumentEncoderForBufferAtIndex:")]
[return: NullAllowed] [return: NullAllowed]
[return: Release]
IMTLArgumentEncoder CreateArgumentEncoder (nuint index); IMTLArgumentEncoder CreateArgumentEncoder (nuint index);
} }
@ -3231,6 +3296,7 @@ namespace Metal {
[Abstract] [Abstract]
[Export ("newSharedEventHandle")] [Export ("newSharedEventHandle")]
[return: Release]
MTLSharedEventHandle CreateSharedEventHandle (); MTLSharedEventHandle CreateSharedEventHandle ();
[Abstract] [Abstract]

Просмотреть файл

@ -588,10 +588,16 @@ namespace GeneratorTests
[Test] [Test]
public void GHIssue5692 () => BuildFile (Profile.iOS, "ghissue5692.cs"); public void GHIssue5692 () => BuildFile (Profile.iOS, "ghissue5692.cs");
[Test]
public void RefOutParameters () public void RefOutParameters ()
{ {
BuildFile (Profile.macOSMobile, true, "tests/ref-out-parameters.cs"); BuildFile (Profile.macOSMobile, true, "tests/ref-out-parameters.cs");
}
[Test]
public void ReturnRelease ()
{
BuildFile (Profile.iOS, "tests/return-release.cs");
} }
BGenTool BuildFile (Profile profile, params string [] filenames) BGenTool BuildFile (Profile profile, params string [] filenames)

Просмотреть файл

@ -71,6 +71,7 @@
<None Include="tests\is-direct-binding.cs" /> <None Include="tests\is-direct-binding.cs" />
<None Include="packages.config" /> <None Include="packages.config" />
<None Include="tests\ref-out-parameters.cs" /> <None Include="tests\ref-out-parameters.cs" />
<None Include="tests\return-release.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="tests\" /> <Folder Include="tests\" />

Просмотреть файл

@ -0,0 +1,18 @@
using System;
using Foundation;
namespace NS
{
[Protocol]
interface ProtocolWithReturnRelease
{
[Abstract, Export ("newRequiredObject")]
[return: Release]
NSObject CreateRequiredObject ();
[Export ("newOptionalObject")]
[return: Release]
NSObject CreateOptionalObject ();
}
}

3
tests/monotouch-test/.gitignore поставляемый Normal file
Просмотреть файл

@ -0,0 +1,3 @@
*.air
*.metallib

Просмотреть файл

@ -1,7 +1,12 @@
#if MONOMAC #if MONOMAC || __IOS__
using System; using System;
using System.IO;
using System.Runtime.InteropServices;
using CoreFoundation;
using Foundation; using Foundation;
using ObjCRuntime;
#if XAMCORE_2_0 #if XAMCORE_2_0
using Metal; using Metal;
@ -12,6 +17,7 @@ using MonoTouch.Metal;
using NUnit.Framework; using NUnit.Framework;
namespace MonoTouchFixtures.Metal { namespace MonoTouchFixtures.Metal {
[Preserve (AllMembers = true)]
public class MTLDeviceTests { public class MTLDeviceTests {
[SetUp] [SetUp]
public void Setup () public void Setup ()
@ -19,24 +25,380 @@ namespace MonoTouchFixtures.Metal {
TestRuntime.AssertXcodeVersion (9, 0); TestRuntime.AssertXcodeVersion (9, 0);
} }
#if __MACOS__
[Test] [Test]
public void GetAllDevicesTest () public void GetAllDevicesTest ()
{ {
NSObject refObj = new NSObject(); NSObject refObj = new NSObject();
var devices = MTLDevice.GetAllDevices(ref refObj, (IMTLDevice device, NSString notifyName) => { }); var devices = MTLDevice.GetAllDevices(ref refObj, (IMTLDevice device, NSString notifyName) => { });
#if __MACOS__
// It's possible to run on a system that does not support metal, // It's possible to run on a system that does not support metal,
// in which case we'll get an empty array of devices. // in which case we'll get an empty array of devices.
Assert.IsNotNull (devices, "MTLDevices.GetAllDevices not null"); Assert.IsNotNull (devices, "MTLDevices.GetAllDevices not null");
#else
Assert.That (devices, Is.Not.Empty, "MTLDevice.GetAllDevices");
#endif
Assert.DoesNotThrow (() => { Assert.DoesNotThrow (() => {
MTLDevice.RemoveObserver (refObj); MTLDevice.RemoveObserver (refObj);
}); });
} }
#endif
[Test]
public void SystemDefault ()
{
Assert.DoesNotThrow (() => { var obj = MTLDevice.SystemDefault; }, "No exception");
}
[DllImport (Constants.libcLibrary)]
static extern int getpagesize ();
[DllImport (Constants.libcLibrary)]
static extern IntPtr mmap (IntPtr start, nint length, int prot, int flags, int fd, nint offset);
static IntPtr AllocPageAligned (int pages, out int length)
{
length = pages * getpagesize ();
var rv = mmap (IntPtr.Zero, length, 0x1 /* PROT_READ */ | 0x2 /* */, 0x0002 /* MAP_PRIVATE */ | 0x1000 /* MAP_ANONYMOUS */, 0, 0);
return rv;
}
[DllImport (Constants.libcLibrary)]
static extern int munmap (IntPtr addr, nint size);
static void FreePageAligned (IntPtr ptr, int length)
{
munmap (ptr, length);
}
[Test]
public void ReturnReleaseTest ()
{
// This test tries to exercise all the Metal API that has a
// ReturnRelease attribute. To test that the attribute does the
// right thing: run the test app using instruments, run the test
// several times by tapping on it, and do a heap mark between each
// test. Then verify that there's at least one heap shot with 0
// memory increase, which means that nothing is leaking.
var device = MTLDevice.SystemDefault;
IntPtr buffer_mem;
int buffer_length;
bool freed;
byte [] buffer_bytes;
#if __MACOS__
string metal_code = File.ReadAllText (Path.Combine (NSBundle.MainBundle.ResourcePath, "metal-sample.metal"));
string metallib_path = Path.Combine (NSBundle.MainBundle.ResourcePath, "default.metallib");
string fragmentshader_path = Path.Combine (NSBundle.MainBundle.ResourcePath, "fragmentShader.metallib");
#else
string metal_code = File.ReadAllText (Path.Combine (NSBundle.MainBundle.BundlePath, "metal-sample.metal"));
string metallib_path = Path.Combine (NSBundle.MainBundle.BundlePath, "default.metallib");
string fragmentshader_path = Path.Combine (NSBundle.MainBundle.BundlePath, "fragmentShader.metallib");
if (Runtime.Arch == Arch.SIMULATOR)
Assert.Ignore ("Metal isn't available in the simulator");
#endif
using (var hd = new MTLHeapDescriptor ()) {
hd.CpuCacheMode = MTLCpuCacheMode.DefaultCache;
hd.StorageMode = MTLStorageMode.Private;
using (var txt = MTLTextureDescriptor.CreateTexture2DDescriptor (MTLPixelFormat.RGBA8Unorm, 40, 40, false)) {
var sa = device.GetHeapTextureSizeAndAlign (txt);
hd.Size = sa.Size;
using (var heap = device.CreateHeap (hd)) {
Assert.IsNotNull (heap, $"NonNullHeap");
}
}
}
using (var queue = device.CreateCommandQueue ()) {
Assert.IsNotNull (queue, "Queue: NonNull 1");
}
#if __MACOS__
using (var descriptor = MTLTextureDescriptor.CreateTexture2DDescriptor (MTLPixelFormat.RGBA8Unorm, 64, 64, false)) {
descriptor.StorageMode = MTLStorageMode.Private;
using (var texture = device.CreateSharedTexture (descriptor)) {
Assert.IsNotNull (texture, "CreateSharedTexture (MTLTextureDescriptor): NonNull");
using (var handle = texture.CreateSharedTextureHandle ())
using (var shared = device.CreateSharedTexture (handle))
Assert.IsNotNull (texture, "CreateSharedTexture (MTLSharedTextureHandle): NonNull");
}
}
#endif
using (var queue = device.CreateCommandQueue (10)) {
Assert.IsNotNull (queue, "Queue: NonNull 2");
}
using (var buffer = device.CreateBuffer (1024, MTLResourceOptions.CpuCacheModeDefault)) {
Assert.IsNotNull (buffer, "CreateBuffer: NonNull 1");
}
buffer_mem = AllocPageAligned (1, out buffer_length);
using (var buffer = device.CreateBuffer (buffer_mem, (nuint)buffer_length, MTLResourceOptions.CpuCacheModeDefault)) {
Assert.IsNotNull (buffer, "CreateBuffer: NonNull 2");
}
FreePageAligned (buffer_mem, buffer_length);
buffer_bytes = new byte [getpagesize ()];
using (var buffer = device.CreateBuffer (buffer_bytes, MTLResourceOptions.CpuCacheModeDefault)) {
Assert.IsNotNull (buffer, "CreateBuffer: NonNull 3");
}
buffer_mem = AllocPageAligned (1, out buffer_length);
freed = false;
#if __MACOS__
var resourceOptions7 = MTLResourceOptions.StorageModeManaged;
#else
var resourceOptions7 = MTLResourceOptions.CpuCacheModeDefault;
#endif
using (var buffer = device.CreateBufferNoCopy (buffer_mem, (nuint)buffer_length, resourceOptions7, (pointer, length) => { FreePageAligned (pointer, (int)length); freed = true; })) {
Assert.IsNotNull (buffer, "CreateBufferNoCopy: NonNull 1");
}
Assert.IsTrue (freed, "CreateBufferNoCopy: Freed 1");
using (var descriptor = new MTLDepthStencilDescriptor ())
using (var dss = device.CreateDepthStencilState (descriptor)) {
Assert.IsNotNull (dss, "CreateDepthStencilState: NonNull 1");
}
using (var descriptor = MTLTextureDescriptor.CreateTexture2DDescriptor (MTLPixelFormat.RGBA8Unorm, 64, 64, false)) {
using (var texture = device.CreateTexture (descriptor))
Assert.NotNull (texture, "CreateTexture: NonNull 1");
using (var surface = new IOSurface.IOSurface (new IOSurface.IOSurfaceOptions {
Width = 64,
Height = 64,
BytesPerElement = 4,
})) {
using (var texture = device.CreateTexture (descriptor, surface, 0))
Assert.NotNull (texture, "CreateTexture: NonNull 2");
}
}
using (var descriptor = new MTLSamplerDescriptor ())
using (var sampler = device.CreateSamplerState (descriptor))
Assert.IsNotNull (sampler, "CreateSamplerState: NonNull 1");
using (var library = device.CreateDefaultLibrary ())
Assert.IsNotNull (library, "CreateDefaultLibrary: NonNull 1");
using (var library = device.CreateLibrary (metallib_path, out var error)) {
Assert.IsNotNull (library, "CreateLibrary: NonNull 1");
Assert.IsNull (error, "CreateLibrary: NonNull error 1");
}
using (var data = DispatchData.FromByteBuffer (File.ReadAllBytes (metallib_path)))
using (var library = device.CreateLibrary (data, out var error)) {
Assert.IsNotNull (library, "CreateLibrary: NonNull 2");
Assert.IsNull (error, "CreateLibrary: NonNull error 2");
}
using (var compile_options = new MTLCompileOptions ())
using (var library = device.CreateLibrary (metal_code, compile_options, out var error)) {
Assert.IsNotNull (library, "CreateLibrary: NonNull 3");
Assert.IsNull (error, "CreateLibrary: NonNull error 3");
}
using (var compile_options = new MTLCompileOptions ()) {
device.CreateLibrary (metal_code, compile_options, (library, error) => {
Assert.IsNotNull (library, "CreateLibrary: NonNull 4");
Assert.IsNull (error, "CreateLibrary: NonNull error 4");
});
}
using (var library = device.CreateDefaultLibrary (NSBundle.MainBundle, out var error)) {
Assert.IsNotNull (library, "CreateDefaultLibrary: NonNull 2");
Assert.IsNull (error, "CreateDefaultLibrary: NonNull error 2");
}
using (var descriptor = new MTLRenderPipelineDescriptor ())
using (var library = device.CreateDefaultLibrary ())
using (var func = library.CreateFunction ("vertexShader")) {
descriptor.VertexFunction = func;
descriptor.ColorAttachments [0].PixelFormat = MTLPixelFormat.BGRA8Unorm_sRGB;
using (var rps = device.CreateRenderPipelineState (descriptor, out var error)) {
Assert.IsNotNull (rps, "CreateRenderPipelineState: NonNull 1");
Assert.IsNull (error, "CreateRenderPipelineState: NonNull error 1");
}
}
using (var descriptor = new MTLRenderPipelineDescriptor ())
using (var library = device.CreateDefaultLibrary ())
using (var func = library.CreateFunction ("vertexShader")) {
descriptor.VertexFunction = func;
descriptor.ColorAttachments [0].PixelFormat = MTLPixelFormat.BGRA8Unorm_sRGB;
using (var rps = device.CreateRenderPipelineState (descriptor, MTLPipelineOption.BufferTypeInfo, out var reflection, out var error)) {
Assert.IsNotNull (rps, "CreateRenderPipelineState: NonNull 2");
Assert.IsNull (error, "CreateRenderPipelineState: NonNull error 2");
Assert.IsNotNull (reflection, "CreateRenderPipelineState: NonNull reflection 2");
}
}
using (var library = device.CreateDefaultLibrary ())
using (var func = library.CreateFunction ("grayscaleKernel"))
using (var cps = device.CreateComputePipelineState (func, MTLPipelineOption.ArgumentInfo, out var reflection, out var error)) {
Assert.IsNotNull (cps, "CreateComputePipelineState: NonNull 1");
Assert.IsNull (error, "CreateComputePipelineState: NonNull error 1");
Assert.IsNotNull (reflection, "CreateComputePipelineState: NonNull reflection 1");
}
using (var library = device.CreateDefaultLibrary ())
using (var func = library.CreateFunction ("grayscaleKernel"))
using (var cps = device.CreateComputePipelineState (func, out var error)) {
Assert.IsNotNull (cps, "CreateComputePipelineState: NonNull 2");
Assert.IsNull (error, "CreateComputePipelineState: NonNull error 2");
}
using (var descriptor = new MTLComputePipelineDescriptor ())
using (var library = device.CreateDefaultLibrary ())
using (var func = library.CreateFunction ("grayscaleKernel")) {
descriptor.ComputeFunction = func;
using (var cps = device.CreateComputePipelineState (descriptor, MTLPipelineOption.BufferTypeInfo, out var reflection, out var error)) {
Assert.IsNotNull (cps, "CreateComputePipelineState: NonNull 3");
Assert.IsNull (error, "CreateComputePipelineState: NonNull error 3");
Assert.IsNotNull (reflection, "CreateComputePipelineState: NonNull reflection 3");
}
}
using (var fence = device.CreateFence ()) {
Assert.IsNotNull (fence, "CreateFence 1: NonNull");
}
var url = "file://" + metallib_path;
url = url.Replace (" ", "%20"); // url encode!
using (var library = device.CreateLibrary (new NSUrl (url), out var error)) {
// Looks like creating a library with a url always fails: https://forums.developer.apple.com/thread/110416
Assert.IsNull (library, "CreateLibrary (NSUrl, NSError): Null");
Assert.IsNotNull (error, "CreateLibrary (NSUrl, NSError): NonNull error");
}
using (var library = device.CreateArgumentEncoder (new MTLArgumentDescriptor [] { new MTLArgumentDescriptor () { DataType = MTLDataType.Int } })) {
Assert.IsNotNull (library, "CreateArgumentEncoder (MTLArgumentDescriptor[]): NonNull");
}
TestRuntime.AssertXcodeVersion (10, 0);
using (var descriptor = new MTLIndirectCommandBufferDescriptor ()) {
using (var library = device.CreateIndirectCommandBuffer (descriptor, 1, MTLResourceOptions.CpuCacheModeDefault)) {
Assert.IsNotNull (library, "CreateIndirectCommandBuffer: NonNull");
}
}
TestRuntime.AssertXcodeVersion (10, 0);
using (var evt = device.CreateEvent ()) {
Assert.IsNotNull (evt, "CreateEvent: NonNull");
}
TestRuntime.AssertXcodeVersion (10, 0);
using (var evt = device.CreateSharedEvent ()) {
Assert.IsNotNull (evt, "CreateSharedEvent: NonNull");
}
TestRuntime.AssertXcodeVersion (10, 0);
using (var evt1 = device.CreateSharedEvent ())
using (var evt_handle = evt1.CreateSharedEventHandle ())
using (var evt = device.CreateSharedEvent (evt_handle)) {
Assert.IsNotNull (evt, "CreateSharedEvent (MTLSharedEventHandle): NonNull");
}
using (var descriptor = new MTLRenderPipelineDescriptor ())
using (var library = device.CreateDefaultLibrary ())
using (var func = library.CreateFunction ("vertexShader")) {
descriptor.VertexFunction = func;
descriptor.ColorAttachments [0].PixelFormat = MTLPixelFormat.BGRA8Unorm_sRGB;
using (var rps = device.CreateRenderPipelineState (descriptor, MTLPipelineOption.ArgumentInfo, out var reflection, out var error)) {
Assert.IsNotNull (rps, "CreateRenderPipelineState (MTLTileRenderPipelineDescriptor, MTLPipelineOption, MTLRenderPipelineReflection, NSError): NonNull");
Assert.IsNull (error, "CreateRenderPipelineState (MTLTileRenderPipelineDescriptor, MTLPipelineOption, MTLRenderPipelineReflection, NSError: NonNull error");
Assert.IsNotNull (reflection, "CreateRenderPipelineState (MTLTileRenderPipelineDescriptor, MTLPipelineOption, MTLRenderPipelineReflection, NSError): NonNull reflection");
}
}
using (var buffer = device.CreateBuffer (1024, MTLResourceOptions.CpuCacheModeDefault))
using (var descriptor = new MTLTextureDescriptor ())
using (var texture = buffer.CreateTexture (descriptor, 0, 256)) {
Assert.IsNotNull (buffer, "MTLBuffer.CreateTexture (MTLTextureDescriptor, nuint, nuint): NonNull");
}
using (var descriptor = MTLTextureDescriptor.CreateTexture2DDescriptor (MTLPixelFormat.RGBA8Unorm, 64, 64, false))
using (var texture = device.CreateTexture (descriptor)) {
using (var view = texture.CreateTextureView (MTLPixelFormat.RGBA8Unorm)) {
Assert.IsNotNull (view, "MTLTexture.CreateTextureView (MTLPixelFormat): nonnull");
}
using (var view = texture.CreateTextureView (MTLPixelFormat.RGBA8Unorm, MTLTextureType.k2D, new NSRange (0, 1), new NSRange (0, 1))) {
Assert.IsNotNull (view, "MTLTexture.CreateTextureView (MTLPixelFormat, MTLTextureType, NSRange, NSRange): nonnull");
}
}
using (var library = device.CreateLibrary (fragmentshader_path, out var error))
using (var func = library.CreateFunction ("fragmentShader2")) {
using (var enc = func.CreateArgumentEncoder (0)) {
Assert.IsNotNull (enc, "MTLFunction.CreateArgumentEncoder (nuint): NonNull");
}
using (var enc = func.CreateArgumentEncoder (0, out var reflection)) {
Assert.IsNotNull (enc, "MTLFunction.CreateArgumentEncoder (nuint, MTLArgument): NonNull");
Assert.IsNotNull (reflection, "MTLFunction.CreateArgumentEncoder (nuint, MTLArgument): NonNull reflection");
}
}
using (var library = device.CreateDefaultLibrary ()) {
using (var func = library.CreateFunction ("grayscaleKernel")) {
Assert.IsNotNull (func, "CreateFunction (string): nonnull");
}
if (TestRuntime.CheckXcodeVersion (9, 0)) { // MTLFunctionConstantValues didn't have a default ctor until Xcode 9.
using (var constants = new MTLFunctionConstantValues ())
using (var func = library.CreateFunction ("grayscaleKernel", constants, out var error)) {
Assert.IsNotNull (func, "CreateFunction (string, MTLFunctionConstantValues, NSError): nonnull");
Assert.IsNull (error, "CreateFunction (string, MTLFunctionConstantValues, NSError): null error");
}
}
}
using (var hd = new MTLHeapDescriptor ()) {
hd.CpuCacheMode = MTLCpuCacheMode.DefaultCache;
hd.StorageMode = MTLStorageMode.Private;
using (var txt = MTLTextureDescriptor.CreateTexture2DDescriptor (MTLPixelFormat.RGBA8Unorm, 40, 40, false)) {
var sa = device.GetHeapTextureSizeAndAlign (txt);
hd.Size = sa.Size;
using (var heap = device.CreateHeap (hd))
using (var buffer = heap.CreateBuffer (1024, MTLResourceOptions.StorageModePrivate)) {
Assert.IsNotNull (buffer, "MTLHeap.CreateBuffer (nuint, MTLResourceOptions): nonnull");
}
}
}
using (var hd = new MTLHeapDescriptor ()) {
hd.CpuCacheMode = MTLCpuCacheMode.DefaultCache;
#if __MACOS__
hd.StorageMode = MTLStorageMode.Private;
#else
hd.StorageMode = MTLStorageMode.Shared;
#endif
using (var txt = MTLTextureDescriptor.CreateTexture2DDescriptor (MTLPixelFormat.RGBA8Unorm, 40, 40, false)) {
var sa = device.GetHeapTextureSizeAndAlign (txt);
hd.Size = sa.Size;
using (var heap = device.CreateHeap (hd)) {
#if __MACOS__
txt.StorageMode = MTLStorageMode.Private;
#endif
using (var texture = heap.CreateTexture (txt)) {
Assert.IsNotNull (texture, "MTLHeap.CreateTexture (MTLTextureDescriptor): nonnull");
}
}
}
}
using (var scope = MTLCaptureManager.Shared.CreateNewCaptureScope (device)) {
Assert.IsNotNull (scope, "MTLCaptureManager.CreateNewCaptureScope (MTLDevice): nonnull");
}
using (var queue = device.CreateCommandQueue ())
using (var scope = MTLCaptureManager.Shared.CreateNewCaptureScope (queue)) {
Assert.IsNotNull (scope, "MTLCaptureManager.CreateNewCaptureScope (MTLCommandQueue): nonnull");
}
TestRuntime.AssertXcodeVersion (10, 0);
using (var evt = device.CreateSharedEvent ())
using (var shared = evt.CreateSharedEventHandle ()) {
Assert.IsNotNull (shared, "MTLSharedEvent.CreateSharedEvent: NonNull");
}
}
} }
} }
#endif #endif

Просмотреть файл

@ -0,0 +1,29 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
/* structs */
struct SomeData2
{
float4 position [[ position ]];
float2 texcoord;
};
struct SomeInputs {
texture2d<float> texture;
texture2d<float> anotherTexture;
sampler textureSampler;
float time;
};
// The following function needs min iOS version 10.0+, so means we can't just include it in monotouch-test and have our build compile this file.
// Instead we pre-compile this file manually, with a specific iOS version, and we embed that in the app instead.
fragment float4
fragmentShader2 (SomeData2 in [[stage_in]],
constant SomeInputs &inputs [[buffer(0)]])
{
float4 color = { 0, 0, 0, 0 };
return color;
}

Просмотреть файл

@ -0,0 +1,36 @@
#include <metal_stdlib>
#include <simd/simd.h>
using namespace metal;
/* structs */
struct SomeData
{
float4 anArray [[position]];
float4 aValue;
};
struct SomeVertex
{
vector_float2 position;
vector_float2 textureCoordinate;
};
/* functions */
kernel void
grayscaleKernel(texture2d<half, access::read> inTexture [[texture(0)]],
texture2d<half, access::write> outTexture [[texture(1)]],
uint2 gid [[thread_position_in_grid]])
{
}
vertex SomeData
vertexShader (uint vertexID [[ vertex_id ]],
constant SomeVertex *vertexArray [[buffer(0)]],
constant vector_uint2 *viewportSizePointer [[buffer(1)]])
{
SomeData out;
return out;
}

Просмотреть файл

@ -169,6 +169,11 @@ namespace MonoTests.System.Net.Http
TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 10, 9, throwIfOtherPlatform: false); TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 10, 9, throwIfOtherPlatform: false);
TestRuntime.AssertSystemVersion (PlatformName.iOS, 7, 0, throwIfOtherPlatform: false); TestRuntime.AssertSystemVersion (PlatformName.iOS, 7, 0, throwIfOtherPlatform: false);
#if __MACOS__
if (handlerType == typeof (NSUrlSessionHandler) && TestRuntime.CheckSystemVersion (PlatformName.MacOSX, 10, 10, 0) && !TestRuntime.CheckSystemVersion (PlatformName.MacOSX, 10, 11, 0))
Assert.Ignore ("Fails on macOS 10.10: https://github.com/xamarin/maccore/issues/1645");
#endif
bool servicePointManagerCbWasExcuted = false; bool servicePointManagerCbWasExcuted = false;
bool done = false; bool done = false;
Exception ex = null; Exception ex = null;

Просмотреть файл

@ -314,12 +314,17 @@
<BundleResource Include="xamvideotest.mp4" /> <BundleResource Include="xamvideotest.mp4" />
<BundleResource Include="CoreImage\xamarinmonkey.heic" /> <BundleResource Include="CoreImage\xamarinmonkey.heic" />
<BundleResource Include="Resources\Base.lproj\Localizable.strings" /> <BundleResource Include="Resources\Base.lproj\Localizable.strings" />
<BundleResource Include="Resources\metal-sample.metal" />
<BundleResource Include="Resources\fragmentShader.metal" />
<BundleResource Include="uncompressed.txt" /> <BundleResource Include="uncompressed.txt" />
<BundleResource Include="compressed_lze" /> <BundleResource Include="compressed_lze" />
<BundleResource Include="compressed_lz4" /> <BundleResource Include="compressed_lz4" />
<BundleResource Include="compressed_lzma" /> <BundleResource Include="compressed_lzma" />
<BundleResource Include="compressed_zip" /> <BundleResource Include="compressed_zip" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Metal Include="Resources\metal-sample.metal" Condition="'$(Platform)' != 'iPhoneSimulator' " />
</ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Security\openssl_crt.der"> <EmbeddedResource Include="Security\openssl_crt.der">
<LogicalName>monotouchtest.Security.openssl_crt.der</LogicalName> <LogicalName>monotouchtest.Security.openssl_crt.der</LogicalName>
@ -347,8 +352,20 @@
<GeneratedTestInput Include="..\..\tests\test-libraries\Makefile" /> <GeneratedTestInput Include="..\..\tests\test-libraries\Makefile" />
<GeneratedTestOutput Include="..\..\tests\test-libraries\TrampolineTest.generated.cs" /> <GeneratedTestOutput Include="..\..\tests\test-libraries\TrampolineTest.generated.cs" />
<GeneratedTestOutput Include="..\..\tests\test-libraries\RegistrarTest.generated.cs" /> <GeneratedTestOutput Include="..\..\tests\test-libraries\RegistrarTest.generated.cs" />
<CustomMetalSmeltingInput Include="Resources\fragmentShader.metal" />
</ItemGroup> </ItemGroup>
<Target Name="BeforeBuild" Inputs="@(GeneratedTestInput)" Outputs="@(GeneratedTestOutput)"> <Target Name="CustomMetalSmelting" Inputs="@(CustomMetalSmeltingInput)" Outputs="$(_AppBundlePath)\fragmentShader.metallib" Condition="'$(Platform)' != 'iPhoneSimulator' And '$(TargetFrameworkIdentifier)' != 'Xamarin.WatchOS'" DependsOnTargets="_GenerateBundleName">
<PropertyGroup>
<_SmeltingSdk Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.iOS'">iphoneos</_SmeltingSdk>
<_SmeltingSdk Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.TVOS'">appletvos</_SmeltingSdk>
<_SmeltingMinOS Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.iOS'">-mios-version-min=11.0</_SmeltingMinOS>
<_SmeltingMinOS Condition="'$(TargetFrameworkIdentifier)' == 'Xamarin.TVOS'">-mtvos-version-min=11.0</_SmeltingMinOS>
</PropertyGroup>
<MakeDir Directories="$(IntermediateOutputPath);$(AppBundleDir)" />
<Exec Command="xcrun -sdk $(_SmeltingSdk) metal -c @(CustomMetalSmeltingInput) -o $(IntermediateOutputPath)\fragmentShader.air $(_SmeltingMinOS)" />
<Exec Command="xcrun -sdk $(_SmeltingSdk) metallib $(IntermediateOutputPath)\fragmentShader.air -o $(AppBundleDir)\fragmentShader.metallib" />
</Target>
<Target Name="BeforeBuild" Inputs="@(GeneratedTestInput)" Outputs="@(GeneratedTestOutput)" DependsOnTargets="CustomMetalSmelting" >
<Exec Command="make -j8 -C $(TestLibrariesDirectory)" /> <Exec Command="make -j8 -C $(TestLibrariesDirectory)" />
</Target> </Target>
</Project> </Project>

Просмотреть файл

@ -144,6 +144,12 @@
<Content Include="..\monotouch-test\AudioToolbox\1.caf"> <Content Include="..\monotouch-test\AudioToolbox\1.caf">
<Link>AudioToolbox\1.caf</Link> <Link>AudioToolbox\1.caf</Link>
</Content> </Content>
<Content Include="..\monotouch-test\Resources\metal-sample.metal">
<Link>Resources\metal-sample.metal</Link>
</Content>
<Content Include="..\monotouch-test\Resources\fragmentShader.metal">
<Link>Resources\fragmentShader.metal</Link>
</Content>
<Content Include="..\monotouch-test\uncompressed.txt"> <Content Include="..\monotouch-test\uncompressed.txt">
<Link>uncompressed.txt</Link> <Link>uncompressed.txt</Link>
</Content> </Content>
@ -160,6 +166,11 @@
<Link>compressed_zip</Link> <Link>compressed_zip</Link>
</Content> </Content>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Metal Include="..\monotouch-test\Resources\metal-sample.metal">
<Link>Resources\metal-sample.metal</Link>
</Metal>
</ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="..\monotouch-test\Security\openssl_crt.der"> <EmbeddedResource Include="..\monotouch-test\Security\openssl_crt.der">
<Link>Security\openssl_crt.der</Link> <Link>Security\openssl_crt.der</Link>
@ -210,8 +221,14 @@
<GeneratedTestInput Include="..\..\tests\test-libraries\Makefile" /> <GeneratedTestInput Include="..\..\tests\test-libraries\Makefile" />
<GeneratedTestOutput Include="..\..\tests\test-libraries\TrampolineTest.generated.cs" /> <GeneratedTestOutput Include="..\..\tests\test-libraries\TrampolineTest.generated.cs" />
<GeneratedTestOutput Include="..\..\tests\test-libraries\RegistrarTest.generated.cs" /> <GeneratedTestOutput Include="..\..\tests\test-libraries\RegistrarTest.generated.cs" />
<CustomMetalSmeltingInput Include="..\monotouch-test\Resources\fragmentShader.metal" />
</ItemGroup> </ItemGroup>
<Target Name="BeforeBuild" Inputs="@(GeneratedTestInput)" Outputs="@(GeneratedTestOutput)"> <Target Name="CustomMetalSmelting" Inputs="@(CustomMetalSmeltingInput)" Outputs="$(_AppBundlePath)\Contents\Resources\fragmentShader.metallib" DependsOnTargets="_GenerateBundleName">
<MakeDir Directories="$(IntermediateOutputPath)\Contents\Resources;$(AppBundleDir)\Contents\Resources" />
<Exec Command="xcrun -sdk macosx metal -c @(CustomMetalSmeltingInput) -o $(IntermediateOutputPath)\Contents\Resources\fragmentShader.air -mmacos-version-min=10.13" />
<Exec Command="xcrun -sdk macosx metallib $(IntermediateOutputPath)\Contents\Resources\fragmentShader.air -o $(AppBundleDir)\Contents\Resources\fragmentShader.metallib" />
</Target>
<Target Name="BeforeBuild" Inputs="@(GeneratedTestInput)" Outputs="@(GeneratedTestOutput)" DependsOnTargets="CustomMetalSmelting">
<Exec Command="make -j8 -C $(TestLibrariesDirectory)" /> <Exec Command="make -j8 -C $(TestLibrariesDirectory)" />
</Target> </Target>
</Project> </Project>

Просмотреть файл

@ -1721,7 +1721,10 @@ namespace xharness
markdown_summary.Write ($"# Test run in progress: "); markdown_summary.Write ($"# Test run in progress: ");
markdown_summary.Write (string.Join (", ", list)); markdown_summary.Write (string.Join (", ", list));
} else if (failedTests.Any ()) { } else if (failedTests.Any ()) {
markdown_summary.Write ($"{failedTests.Count ()} tests failed, {deviceNotFound.Count ()} tests' device not found, {passedTests.Count ()} tests passed."); markdown_summary.Write ($"{failedTests.Count ()} tests failed, ");
if (deviceNotFound.Any ())
markdown_summary.Write ($"{deviceNotFound.Count ()} tests' device not found, ");
markdown_summary.Write ($"{passedTests.Count ()} tests passed.");
} else if (deviceNotFound.Any ()) { } else if (deviceNotFound.Any ()) {
markdown_summary.Write ($"{deviceNotFound.Count ()} tests' device not found, {passedTests.Count ()} tests passed."); markdown_summary.Write ($"{deviceNotFound.Count ()} tests' device not found, {passedTests.Count ()} tests passed.");
} else if (passedTests.Any ()) { } else if (passedTests.Any ()) {
@ -1805,7 +1808,10 @@ namespace xharness
writer.Write (string.Join (", ", list)); writer.Write (string.Join (", ", list));
writer.Write (")"); writer.Write (")");
} else if (failedTests.Any ()) { } else if (failedTests.Any ()) {
writer.Write ($"{failedTests.Count ()} tests failed, {deviceNotFound.Count ()} tests' device not found, {passedTests.Count ()} tests passed"); writer.Write ($"{failedTests.Count ()} tests failed, ");
if (deviceNotFound.Any ())
writer.Write ($"{deviceNotFound.Count ()} tests' device not found, ");
writer.Write ($"{passedTests.Count ()} tests passed");
} else if (deviceNotFound.Any ()) { } else if (deviceNotFound.Any ()) {
writer.Write ($"{deviceNotFound.Count ()} tests' device not found, {passedTests.Count ()} tests passed"); writer.Write ($"{deviceNotFound.Count ()} tests' device not found, {passedTests.Count ()} tests passed");
} else if (passedTests.Any ()) { } else if (passedTests.Any ()) {

Просмотреть файл

@ -861,6 +861,8 @@ namespace xharness
new string [] { "FilesToCopyResources", "Include" }, new string [] { "FilesToCopyResources", "Include" },
new string [] { "FilesToCopyXMLFiles", "Include" }, new string [] { "FilesToCopyXMLFiles", "Include" },
new string [] { "FilesToCopyChannels", "Include" }, new string [] { "FilesToCopyChannels", "Include" },
new string [] { "CustomMetalSmeltingInput", "Include" },
new string [] { "Metal", "Include" },
}; };
var nodes_with_variables = new string [] var nodes_with_variables = new string []
{ {

Просмотреть файл

@ -81,49 +81,25 @@
!missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexAttributeDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexAttributeDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexBufferLayoutDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexBufferLayoutDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLDevice::CreateBuffer(System.IntPtr,System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithBytes:length:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLDevice::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLDevice::CreateBufferNoCopy(System.IntPtr,System.nuint,Metal.MTLResourceOptions,Metal.MTLDeallocator)'s selector's ('newBufferWithBytesNoCopy:length:options:deallocator:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLHeap::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.IntPtr,System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithBytes:length:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.IntPtr,System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithBytes:length:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBufferNoCopy(System.IntPtr,System.nuint,Metal.MTLResourceOptions,Metal.MTLDeallocator)'s selector's ('newBufferWithBytesNoCopy:length:options:deallocator:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBufferNoCopy(System.IntPtr,System.nuint,Metal.MTLResourceOptions,Metal.MTLDeallocator)'s selector's ('newBufferWithBytesNoCopy:length:options:deallocator:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLHeapWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLHeapWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCaptureScope Metal.MTLCaptureManager::CreateNewCaptureScope(Metal.IMTLCommandQueue)'s selector's ('newCaptureScopeWithCommandQueue:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCaptureScope Metal.MTLCaptureManager::CreateNewCaptureScope(Metal.IMTLDevice)'s selector's ('newCaptureScopeWithDevice:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.IMTLDevice::CreateCommandQueue()'s selector's ('newCommandQueue') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.IMTLDevice::CreateCommandQueue(System.nuint)'s selector's ('newCommandQueueWithMaxCommandBufferCount:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue()'s selector's ('newCommandQueue') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue()'s selector's ('newCommandQueue') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue(System.nuint)'s selector's ('newCommandQueueWithMaxCommandBufferCount:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue(System.nuint)'s selector's ('newCommandQueueWithMaxCommandBufferCount:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.IMTLDevice::CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.IMTLDevice::CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection&,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection&,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection&,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLDepthStencilState Metal.IMTLDevice::CreateDepthStencilState(Metal.MTLDepthStencilDescriptor)'s selector's ('newDepthStencilStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLDepthStencilState Metal.MTLDeviceWrapper::CreateDepthStencilState(Metal.MTLDepthStencilDescriptor)'s selector's ('newDepthStencilStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLDepthStencilState Metal.MTLDeviceWrapper::CreateDepthStencilState(Metal.MTLDepthStencilDescriptor)'s selector's ('newDepthStencilStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLFunction Metal.IMTLLibrary::CreateFunction(System.String)'s selector's ('newFunctionWithName:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLFunction Metal.MTLLibraryWrapper::CreateFunction(System.String)'s selector's ('newFunctionWithName:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLFunction Metal.MTLLibraryWrapper::CreateFunction(System.String)'s selector's ('newFunctionWithName:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateDefaultLibrary()'s selector's ('newDefaultLibrary') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateLibrary(Foundation.NSObject,Foundation.NSError&)'s selector's ('newLibraryWithData:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateLibrary(System.String,Foundation.NSError&)'s selector's ('newLibraryWithFile:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateLibrary(System.String,Metal.MTLCompileOptions,Foundation.NSError&)'s selector's ('newLibraryWithSource:options:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateDefaultLibrary()'s selector's ('newDefaultLibrary') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateDefaultLibrary()'s selector's ('newDefaultLibrary') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(Foundation.NSObject,Foundation.NSError&)'s selector's ('newLibraryWithData:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(Foundation.NSObject,Foundation.NSError&)'s selector's ('newLibraryWithData:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Foundation.NSError&)'s selector's ('newLibraryWithFile:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Foundation.NSError&)'s selector's ('newLibraryWithFile:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Metal.MTLCompileOptions,Foundation.NSError&)'s selector's ('newLibraryWithSource:options:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Metal.MTLCompileOptions,Foundation.NSError&)'s selector's ('newLibraryWithSource:options:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.IMTLDevice::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.IMTLDevice::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection&,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection&,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection&,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLSamplerState Metal.IMTLDevice::CreateSamplerState(Metal.MTLSamplerDescriptor)'s selector's ('newSamplerStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLSamplerState Metal.MTLDeviceWrapper::CreateSamplerState(Metal.MTLSamplerDescriptor)'s selector's ('newSamplerStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLSamplerState Metal.MTLDeviceWrapper::CreateSamplerState(Metal.MTLSamplerDescriptor)'s selector's ('newSamplerStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLBuffer::CreateTexture(Metal.MTLTextureDescriptor,System.nuint,System.nuint)'s selector's ('newTextureWithDescriptor:offset:bytesPerRow:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLDevice::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLHeap::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLTexture::CreateTextureView(Metal.MTLPixelFormat)'s selector's ('newTextureViewWithPixelFormat:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLBufferWrapper::CreateTexture(Metal.MTLTextureDescriptor,System.nuint,System.nuint)'s selector's ('newTextureWithDescriptor:offset:bytesPerRow:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLBufferWrapper::CreateTexture(Metal.MTLTextureDescriptor,System.nuint,System.nuint)'s selector's ('newTextureWithDescriptor:offset:bytesPerRow:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLDeviceWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLDeviceWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLHeapWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLHeapWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLTextureWrapper::CreateTextureView(Metal.MTLPixelFormat)'s selector's ('newTextureViewWithPixelFormat:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLTextureWrapper::CreateTextureView(Metal.MTLPixelFormat)'s selector's ('newTextureViewWithPixelFormat:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.MTLSharedEventHandle Metal.IMTLSharedEvent::CreateSharedEventHandle()'s selector's ('newSharedEventHandle') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.MTLSharedEventHandle Metal.MTLSharedEventWrapper::CreateSharedEventHandle()'s selector's ('newSharedEventHandle') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.MTLSharedEventHandle Metal.MTLSharedEventWrapper::CreateSharedEventHandle()'s selector's ('newSharedEventHandle') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.

Просмотреть файл

@ -79,49 +79,25 @@
!missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexAttributeDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexAttributeDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexBufferLayoutDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexBufferLayoutDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLArgumentEncoder Metal.IMTLArgumentEncoder::CreateArgumentEncoder(System.nuint)'s selector's ('newArgumentEncoderForBufferAtIndex:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLArgumentEncoder Metal.MTLArgumentEncoderWrapper::CreateArgumentEncoder(System.nuint)'s selector's ('newArgumentEncoderForBufferAtIndex:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLArgumentEncoder Metal.MTLArgumentEncoderWrapper::CreateArgumentEncoder(System.nuint)'s selector's ('newArgumentEncoderForBufferAtIndex:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLDevice::CreateBuffer(System.IntPtr,System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithBytes:length:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLDevice::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLDevice::CreateBufferNoCopy(System.IntPtr,System.nuint,Metal.MTLResourceOptions,Metal.MTLDeallocator)'s selector's ('newBufferWithBytesNoCopy:length:options:deallocator:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLHeap::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.IntPtr,System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithBytes:length:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.IntPtr,System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithBytes:length:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBufferNoCopy(System.IntPtr,System.nuint,Metal.MTLResourceOptions,Metal.MTLDeallocator)'s selector's ('newBufferWithBytesNoCopy:length:options:deallocator:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBufferNoCopy(System.IntPtr,System.nuint,Metal.MTLResourceOptions,Metal.MTLDeallocator)'s selector's ('newBufferWithBytesNoCopy:length:options:deallocator:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLHeapWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLHeapWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCaptureScope Metal.MTLCaptureManager::CreateNewCaptureScope(Metal.IMTLCommandQueue)'s selector's ('newCaptureScopeWithCommandQueue:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCaptureScope Metal.MTLCaptureManager::CreateNewCaptureScope(Metal.IMTLDevice)'s selector's ('newCaptureScopeWithDevice:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.IMTLDevice::CreateCommandQueue()'s selector's ('newCommandQueue') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.IMTLDevice::CreateCommandQueue(System.nuint)'s selector's ('newCommandQueueWithMaxCommandBufferCount:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue()'s selector's ('newCommandQueue') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue()'s selector's ('newCommandQueue') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue(System.nuint)'s selector's ('newCommandQueueWithMaxCommandBufferCount:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue(System.nuint)'s selector's ('newCommandQueueWithMaxCommandBufferCount:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.IMTLDevice::CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.IMTLDevice::CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection&,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection&,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection&,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLDepthStencilState Metal.IMTLDevice::CreateDepthStencilState(Metal.MTLDepthStencilDescriptor)'s selector's ('newDepthStencilStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLDepthStencilState Metal.MTLDeviceWrapper::CreateDepthStencilState(Metal.MTLDepthStencilDescriptor)'s selector's ('newDepthStencilStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLDepthStencilState Metal.MTLDeviceWrapper::CreateDepthStencilState(Metal.MTLDepthStencilDescriptor)'s selector's ('newDepthStencilStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLFunction Metal.IMTLLibrary::CreateFunction(System.String)'s selector's ('newFunctionWithName:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLFunction Metal.MTLLibraryWrapper::CreateFunction(System.String)'s selector's ('newFunctionWithName:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLFunction Metal.MTLLibraryWrapper::CreateFunction(System.String)'s selector's ('newFunctionWithName:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateDefaultLibrary()'s selector's ('newDefaultLibrary') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateLibrary(Foundation.NSObject,Foundation.NSError&)'s selector's ('newLibraryWithData:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateLibrary(System.String,Foundation.NSError&)'s selector's ('newLibraryWithFile:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateLibrary(System.String,Metal.MTLCompileOptions,Foundation.NSError&)'s selector's ('newLibraryWithSource:options:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateDefaultLibrary()'s selector's ('newDefaultLibrary') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateDefaultLibrary()'s selector's ('newDefaultLibrary') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(Foundation.NSObject,Foundation.NSError&)'s selector's ('newLibraryWithData:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(Foundation.NSObject,Foundation.NSError&)'s selector's ('newLibraryWithData:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Foundation.NSError&)'s selector's ('newLibraryWithFile:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Foundation.NSError&)'s selector's ('newLibraryWithFile:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Metal.MTLCompileOptions,Foundation.NSError&)'s selector's ('newLibraryWithSource:options:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Metal.MTLCompileOptions,Foundation.NSError&)'s selector's ('newLibraryWithSource:options:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.IMTLDevice::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.IMTLDevice::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection&,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection&,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection&,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLSamplerState Metal.IMTLDevice::CreateSamplerState(Metal.MTLSamplerDescriptor)'s selector's ('newSamplerStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLSamplerState Metal.MTLDeviceWrapper::CreateSamplerState(Metal.MTLSamplerDescriptor)'s selector's ('newSamplerStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLSamplerState Metal.MTLDeviceWrapper::CreateSamplerState(Metal.MTLSamplerDescriptor)'s selector's ('newSamplerStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLDevice::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLHeap::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLTexture::CreateTextureView(Metal.MTLPixelFormat)'s selector's ('newTextureViewWithPixelFormat:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLDeviceWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLDeviceWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLHeapWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLHeapWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLTextureWrapper::CreateTextureView(Metal.MTLPixelFormat)'s selector's ('newTextureViewWithPixelFormat:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLTextureWrapper::CreateTextureView(Metal.MTLPixelFormat)'s selector's ('newTextureViewWithPixelFormat:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.MTLSharedEventHandle Metal.IMTLSharedEvent::CreateSharedEventHandle()'s selector's ('newSharedEventHandle') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.MTLSharedEventHandle Metal.MTLSharedEventWrapper::CreateSharedEventHandle()'s selector's ('newSharedEventHandle') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.MTLSharedEventHandle Metal.MTLSharedEventWrapper::CreateSharedEventHandle()'s selector's ('newSharedEventHandle') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.

Просмотреть файл

@ -51,49 +51,25 @@
!missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexAttributeDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexAttributeDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexBufferLayoutDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexBufferLayoutDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Foundation.NSObject Metal.MTLVertexDescriptor::Copy(Foundation.NSZone)'s selector's ('copyWithZone:') Objective-C method family ('copy') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLDevice::CreateBuffer(System.IntPtr,System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithBytes:length:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLDevice::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLDevice::CreateBufferNoCopy(System.IntPtr,System.nuint,Metal.MTLResourceOptions,Metal.MTLDeallocator)'s selector's ('newBufferWithBytesNoCopy:length:options:deallocator:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.IMTLHeap::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.IntPtr,System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithBytes:length:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.IntPtr,System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithBytes:length:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBufferNoCopy(System.IntPtr,System.nuint,Metal.MTLResourceOptions,Metal.MTLDeallocator)'s selector's ('newBufferWithBytesNoCopy:length:options:deallocator:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLDeviceWrapper::CreateBufferNoCopy(System.IntPtr,System.nuint,Metal.MTLResourceOptions,Metal.MTLDeallocator)'s selector's ('newBufferWithBytesNoCopy:length:options:deallocator:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLHeapWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLBuffer Metal.MTLHeapWrapper::CreateBuffer(System.nuint,Metal.MTLResourceOptions)'s selector's ('newBufferWithLength:options:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCaptureScope Metal.MTLCaptureManager::CreateNewCaptureScope(Metal.IMTLCommandQueue)'s selector's ('newCaptureScopeWithCommandQueue:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCaptureScope Metal.MTLCaptureManager::CreateNewCaptureScope(Metal.IMTLDevice)'s selector's ('newCaptureScopeWithDevice:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.IMTLDevice::CreateCommandQueue()'s selector's ('newCommandQueue') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.IMTLDevice::CreateCommandQueue(System.nuint)'s selector's ('newCommandQueueWithMaxCommandBufferCount:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue()'s selector's ('newCommandQueue') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue()'s selector's ('newCommandQueue') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue(System.nuint)'s selector's ('newCommandQueueWithMaxCommandBufferCount:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLCommandQueue Metal.MTLDeviceWrapper::CreateCommandQueue(System.nuint)'s selector's ('newCommandQueueWithMaxCommandBufferCount:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.IMTLDevice::CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.IMTLDevice::CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection&,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection&,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLComputePipelineState Metal.MTLDeviceWrapper::CreateComputePipelineState(Metal.IMTLFunction,Metal.MTLPipelineOption,Metal.MTLComputePipelineReflection&,Foundation.NSError&)'s selector's ('newComputePipelineStateWithFunction:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLDepthStencilState Metal.IMTLDevice::CreateDepthStencilState(Metal.MTLDepthStencilDescriptor)'s selector's ('newDepthStencilStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLDepthStencilState Metal.MTLDeviceWrapper::CreateDepthStencilState(Metal.MTLDepthStencilDescriptor)'s selector's ('newDepthStencilStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLDepthStencilState Metal.MTLDeviceWrapper::CreateDepthStencilState(Metal.MTLDepthStencilDescriptor)'s selector's ('newDepthStencilStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLFunction Metal.IMTLLibrary::CreateFunction(System.String)'s selector's ('newFunctionWithName:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLFunction Metal.MTLLibraryWrapper::CreateFunction(System.String)'s selector's ('newFunctionWithName:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLFunction Metal.MTLLibraryWrapper::CreateFunction(System.String)'s selector's ('newFunctionWithName:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateDefaultLibrary()'s selector's ('newDefaultLibrary') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateLibrary(Foundation.NSObject,Foundation.NSError&)'s selector's ('newLibraryWithData:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateLibrary(System.String,Foundation.NSError&)'s selector's ('newLibraryWithFile:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.IMTLDevice::CreateLibrary(System.String,Metal.MTLCompileOptions,Foundation.NSError&)'s selector's ('newLibraryWithSource:options:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateDefaultLibrary()'s selector's ('newDefaultLibrary') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateDefaultLibrary()'s selector's ('newDefaultLibrary') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(Foundation.NSObject,Foundation.NSError&)'s selector's ('newLibraryWithData:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(Foundation.NSObject,Foundation.NSError&)'s selector's ('newLibraryWithData:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Foundation.NSError&)'s selector's ('newLibraryWithFile:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Foundation.NSError&)'s selector's ('newLibraryWithFile:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Metal.MTLCompileOptions,Foundation.NSError&)'s selector's ('newLibraryWithSource:options:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLLibrary Metal.MTLDeviceWrapper::CreateLibrary(System.String,Metal.MTLCompileOptions,Foundation.NSError&)'s selector's ('newLibraryWithSource:options:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.IMTLDevice::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.IMTLDevice::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection&,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection&,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLRenderPipelineState Metal.MTLDeviceWrapper::CreateRenderPipelineState(Metal.MTLRenderPipelineDescriptor,Metal.MTLPipelineOption,Metal.MTLRenderPipelineReflection&,Foundation.NSError&)'s selector's ('newRenderPipelineStateWithDescriptor:options:reflection:error:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLSamplerState Metal.IMTLDevice::CreateSamplerState(Metal.MTLSamplerDescriptor)'s selector's ('newSamplerStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLSamplerState Metal.MTLDeviceWrapper::CreateSamplerState(Metal.MTLSamplerDescriptor)'s selector's ('newSamplerStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLSamplerState Metal.MTLDeviceWrapper::CreateSamplerState(Metal.MTLSamplerDescriptor)'s selector's ('newSamplerStateWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLBuffer::CreateTexture(Metal.MTLTextureDescriptor,System.nuint,System.nuint)'s selector's ('newTextureWithDescriptor:offset:bytesPerRow:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLDevice::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLHeap::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.IMTLTexture::CreateTextureView(Metal.MTLPixelFormat)'s selector's ('newTextureViewWithPixelFormat:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLBufferWrapper::CreateTexture(Metal.MTLTextureDescriptor,System.nuint,System.nuint)'s selector's ('newTextureWithDescriptor:offset:bytesPerRow:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLBufferWrapper::CreateTexture(Metal.MTLTextureDescriptor,System.nuint,System.nuint)'s selector's ('newTextureWithDescriptor:offset:bytesPerRow:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLDeviceWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLDeviceWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLHeapWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLHeapWrapper::CreateTexture(Metal.MTLTextureDescriptor)'s selector's ('newTextureWithDescriptor:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLTextureWrapper::CreateTextureView(Metal.MTLPixelFormat)'s selector's ('newTextureViewWithPixelFormat:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.IMTLTexture Metal.MTLTextureWrapper::CreateTextureView(Metal.MTLPixelFormat)'s selector's ('newTextureViewWithPixelFormat:') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.MTLSharedEventHandle Metal.IMTLSharedEvent::CreateSharedEventHandle()'s selector's ('newSharedEventHandle') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.
!missing-release-attribute-on-return-value! Metal.MTLSharedEventHandle Metal.MTLSharedEventWrapper::CreateSharedEventHandle()'s selector's ('newSharedEventHandle') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required. !missing-release-attribute-on-return-value! Metal.MTLSharedEventHandle Metal.MTLSharedEventWrapper::CreateSharedEventHandle()'s selector's ('newSharedEventHandle') Objective-C method family ('new') indicates that the native method returns a retained object, and as such a '[return: Release]' attribute is required.

Просмотреть файл

@ -207,7 +207,7 @@ namespace xibuild {
SetToolsetProperty ("MSBuildExtensionsPath64", MSBuildExtensionsPath); SetToolsetProperty ("MSBuildExtensionsPath64", MSBuildExtensionsPath);
SetToolsetProperty ("RoslynTargetsPath", Path.Combine (MSBuildBin, "Roslyn")); SetToolsetProperty ("RoslynTargetsPath", Path.Combine (MSBuildBin, "Roslyn"));
SetToolsetProperty ("TargetFrameworkRootPath", FrameworksDirectory + Path.DirectorySeparatorChar); //NOTE: Must include trailing \ SetToolsetProperty ("TargetFrameworkRootPath", FrameworksDirectory + Path.DirectorySeparatorChar); //NOTE: Must include trailing \
SetToolsetProperty ("MSBuildSdksPath", MSBuildSdksPath); SetToolsetProperty ("MSBuildSDKsPath", MSBuildSdksPath);
dstXml.Save (targetConfigFile); dstXml.Save (targetConfigFile);
return; return;
@ -229,7 +229,8 @@ namespace xibuild {
if (string.IsNullOrEmpty (value)) if (string.IsNullOrEmpty (value))
return; return;
var valueAttribute = toolsets.SelectSingleNode ($"property[@name='{name}']/@value"); // MSBuild property names are case insensitive
var valueAttribute = toolsets.SelectSingleNode ($"property[translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')='{name.ToLowerInvariant()}']/@value");
if (valueAttribute != null) { if (valueAttribute != null) {
valueAttribute.Value = value; valueAttribute.Value = value;
} else { } else {