public Result EnumerateInstanceLayerProperties(out MgLayerProperties[] properties) { UInt32 pPropertyCount = 0; var first = Interops.vkEnumerateInstanceLayerProperties(ref pPropertyCount, null); if (first != Result.SUCCESS) { properties = null; return(first); } var layerProperties = new VkLayerProperties[pPropertyCount]; var last = Interops.vkEnumerateInstanceLayerProperties(ref pPropertyCount, layerProperties); properties = new MgLayerProperties[pPropertyCount]; for (uint i = 0; i < pPropertyCount; ++i) { properties[i] = new MgLayerProperties { LayerName = VkInteropsUtility.ByteArrayToTrimmedString(layerProperties[i].layerName), SpecVersion = layerProperties[i].specVersion, ImplementationVersion = layerProperties[i].implementationVersion, Description = VkInteropsUtility.ByteArrayToTrimmedString(layerProperties[i].description), }; } return(last); }
public Result EnumerateInstanceExtensionProperties(string layerName, out MgExtensionProperties[] pProperties) { var pLayerName = IntPtr.Zero; try { if (!string.IsNullOrWhiteSpace(layerName)) { pLayerName = VkInteropsUtility.NativeUtf8FromString(layerName); } UInt32 pPropertyCount = 0; var first = Interops.vkEnumerateInstanceExtensionProperties(pLayerName, ref pPropertyCount, null); if (first != Result.SUCCESS) { pProperties = null; return(first); } var extensionProperties = new VkExtensionProperties[pPropertyCount]; var last = Interops.vkEnumerateInstanceExtensionProperties(pLayerName, ref pPropertyCount, extensionProperties); pProperties = new MgExtensionProperties[pPropertyCount]; for (uint i = 0; i < pPropertyCount; ++i) { pProperties[i] = new MgExtensionProperties { ExtensionName = VkInteropsUtility.ByteArrayToTrimmedString(extensionProperties[i].extensionName), SpecVersion = extensionProperties[i].specVersion, }; } return(last); } finally { if (pLayerName != IntPtr.Zero) { } } }