/// <summary> /// Gets the highest API version supported by the current system. /// </summary> public static VkVersion GetApiVersion() { uint version = 0; InstanceFunctionTable.EnumerateInstanceVersion(&version).Throw("EnumerateInstanceVersion"); return(new VkVersion(version)); }
/// <summary> /// Gets the instance extensions supported by the current system. /// </summary> /// <param name="layerName">The optional layer name in which to look for extensions.</param> public static VkExtensionProperties[] GetExtensions(string?layerName) { uint count = 0; VkExtensionProperties[] props; if (layerName is not null) { using var nativeName = new NativeString(layerName); InstanceFunctionTable.EnumerateInstanceExtensionProperties(nativeName.Data, &count, null) .Throw("EnumerateInstanceExtensionProperties"); props = new VkExtensionProperties[count]; fixed(VkExtensionProperties *ptr = props) { InstanceFunctionTable.EnumerateInstanceExtensionProperties(nativeName.Data, &count, ptr) .Throw("EnumerateInstanceExtensionProperties"); } } else { InstanceFunctionTable.EnumerateInstanceExtensionProperties(null, &count, null) .Throw("EnumerateInstanceExtensionProperties"); props = new VkExtensionProperties[count]; fixed(VkExtensionProperties *ptr = props) { InstanceFunctionTable.EnumerateInstanceExtensionProperties(null, &count, ptr) .Throw("EnumerateInstanceExtensionProperties"); } } return(props); }
/// <summary> /// Gets the debug layers supported by the current system. /// </summary> public static VkLayerProperties[] GetLayers() { uint count = 0; InstanceFunctionTable.EnumerateInstanceLayerProperties(&count, null) .Throw("EnumerateInstanceExtensionProperties"); var props = new VkLayerProperties[count]; fixed(VkLayerProperties *ptr = props) { InstanceFunctionTable.EnumerateInstanceLayerProperties(&count, ptr) .Throw("EnumerateInstanceExtensionProperties"); } return(props); }