Skip to content
  • Niklas Haas's avatar
    radv: add device->instance extension dependencies · 804cc44d
    Niklas Haas authored and Bas Nieuwenhuizen's avatar Bas Nieuwenhuizen committed
    
    
    From the vulkan spec 33.3 "Extension Dependencies":
    
    "Any device extension that has an instance extension dependency that is
    not enabled by vkCreateInstance is considered to be unsupported, hence
    it must not be returned by vkEnumerateDeviceExtensionProperties for any
    VkPhysicalDevice child of the instance."
    
    Therefore we need to check whether the instance-level extensions are
    actually enabled when deciding to support a device-level extension or
    not.
    
    Furthermore, we need to do this for all instance-level extensions of any
    (transitive) device-level extension dependency, due to the following
    paragraph:
    
    "If an extension is supported (as queried by
    vkEnumerateInstanceExtensionProperties or
    vkEnumerateDeviceExtensionProperties), then required extensions of that
    extension must also be supported for the same instance or physical
    device."
    
    Finally, because some of these vulkan extensions may be implicitly
    promoted to future vulkan core API versions, we can also satisfy the
    dependency if the vulkan API version is high enough.
    
    Reviewed-by: default avatarBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
    804cc44d