/// <summary> /// Returns properties of available physical device extensions. /// </summary> public unsafe SharpVk.ExtensionProperties[] EnumerateDeviceExtensionProperties(string layerName) { try { SharpVk.ExtensionProperties[] result = default(SharpVk.ExtensionProperties[]); uint propertyCount = default(uint); SharpVk.Interop.ExtensionProperties *marshalledProperties = default(SharpVk.Interop.ExtensionProperties *); SharpVk.Interop.VkPhysicalDeviceEnumerateDeviceExtensionPropertiesDelegate commandDelegate = commandCache.GetCommandDelegate <SharpVk.Interop.VkPhysicalDeviceEnumerateDeviceExtensionPropertiesDelegate>("vkEnumerateDeviceExtensionProperties", ""); Result methodResult = commandDelegate(this.handle, Interop.HeapUtil.MarshalTo(layerName), &propertyCount, marshalledProperties); if (SharpVkException.IsError(methodResult)) { throw SharpVkException.Create(methodResult); } marshalledProperties = (SharpVk.Interop.ExtensionProperties *)(Interop.HeapUtil.Allocate <SharpVk.Interop.ExtensionProperties>((uint)(propertyCount))); commandDelegate(this.handle, Interop.HeapUtil.MarshalTo(layerName), &propertyCount, marshalledProperties); if (marshalledProperties != null) { var fieldPointer = new SharpVk.ExtensionProperties[(uint)(propertyCount)]; for (int index = 0; index < (uint)(propertyCount); index++) { fieldPointer[index] = SharpVk.ExtensionProperties.MarshalFrom(&marshalledProperties[index]); } result = fieldPointer; } else { result = null; } return(result); } finally { Interop.HeapUtil.FreeAll(); } }
/// <summary> /// Returns up to requested number of global extension properties. /// </summary> public static unsafe SharpVk.ExtensionProperties[] EnumerateExtensionProperties(string layerName) { try { SharpVk.ExtensionProperties[] result = default(SharpVk.ExtensionProperties[]); uint propertyCount = default(uint); SharpVk.Interop.ExtensionProperties *marshalledProperties = default(SharpVk.Interop.ExtensionProperties *); Result methodResult = Interop.Commands.vkEnumerateInstanceExtensionProperties(Interop.HeapUtil.MarshalTo(layerName), &propertyCount, marshalledProperties); if (SharpVkException.IsError(methodResult)) { throw SharpVkException.Create(methodResult); } marshalledProperties = (SharpVk.Interop.ExtensionProperties *)(Interop.HeapUtil.Allocate <SharpVk.Interop.ExtensionProperties>((uint)(propertyCount))); Interop.Commands.vkEnumerateInstanceExtensionProperties(Interop.HeapUtil.MarshalTo(layerName), &propertyCount, marshalledProperties); if (marshalledProperties != null) { var fieldPointer = new SharpVk.ExtensionProperties[(uint)(propertyCount)]; for (int index = 0; index < (uint)(propertyCount); index++) { fieldPointer[index] = SharpVk.ExtensionProperties.MarshalFrom(&marshalledProperties[index]); } result = fieldPointer; } else { result = null; } return(result); } finally { Interop.HeapUtil.FreeAll(); } }
/// <summary> /// /// </summary> internal static unsafe ExtensionProperties MarshalFrom(SharpVk.Interop.ExtensionProperties *pointer) { ExtensionProperties result = default(ExtensionProperties); result.ExtensionName = Interop.HeapUtil.MarshalStringFrom(pointer->ExtensionName, Constants.MaxExtensionNameSize, true); result.SpecVersion = (Version)(pointer->SpecVersion); return(result); }
public static extern SharpVk.Result vkEnumerateDeviceExtensionProperties(SharpVk.Interop.PhysicalDevice physicalDevice, byte *layerName, uint *propertyCount, SharpVk.Interop.ExtensionProperties *properties);
public static extern SharpVk.Result vkEnumerateInstanceExtensionProperties(byte *layerName, uint *propertyCount, SharpVk.Interop.ExtensionProperties *properties);