If an ICD supports any of the following functions, they must be
queryable with vk_icdGetInstanceProcAddr:
vk_icdNegotiateLoaderICDInterfaceVersion
vk_icdGetPhysicalDeviceProcAddr
vk_icdEnumerateAdapterPhysicalDevices (Windows only)
In addition, these functions no longer need to be exported directly.
These changes allow drivers to no longer export the 'loader-icd interface'
functions which previously had to be exported. This change aids in future
extension work which aims to provide the ability to load drivers without
installing them to the system.
The new enum member introduced in 2a164e968 broke ABI with previous
versions of vk_icd.h, resulting in a segfault on latest mesa (which does
not yet have this commit in their vendored copy of vk_icd.h, thus
breaking the order of enum members).
Change allow us to refer to ANativeWindow from C code, fixes following
compilation error seen with clang 3.8.27580 (Android O prebuilts).
vk_icd.h:116:5: error: must use 'struct' tag to refer to type 'ANativeWindow'
Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
Add a check to determine if the API version being requested can be
handled by the loader. If it can't, then we return incompatible driver.
If we can, we continue along our merry way.
An addendum is that we also bumped the Loader/ICD interface version.
This was requested by Nvidia so that the ICDs know that we pay attention
to the version in the loader. If they don't see the new Loader/ICD
interface version, they will handle the failing on all non-1.0 API
requests.
Change-Id: Icb7dd45e754c9f6a6c8186198333bacc68077b93
Add new extensions for 1.0.39. Also, updated layers to include
minimal set of functionality for 1.0.39 extensions. Extensions include:
- VK_KHR_get_physical_device_properties2
- VK_KHR_shader_draw_parameters
- VK_EXT_direct_mode_display
- VK_EXT_display_surface_counter
- VK_EXT_display_control
Also, redo the LoaderAndLayerIf document.
Change-Id: I10412086da7a798afe832a3892e18f606259b5af
Need to keep VkIcdSurface private to the loader.
The definition may conflict with some redefinitions of
VK_DEFINE_NON_DISPATCHABLE_HANDLE and it's not necessary to make public
anyway.
Change-Id: I30e166f0ecce2fd3ea36c745dc073b705973d75f
Use the ICD to create and destroy VkSurfaceKHR objects instead
of just performing the work in the ICD. This only occurs if the ICD
exports the appropriate entry-points, and exposes version 3 of the
loader/icd interface.
Change-Id: I5e7bf9506318823c57ad75cf19d3f53fdfa6451e
Per Khronos Bugzilla Bug 15077, on Windows and Linux, VkSurfaceKHR is treated
as a pointer to platform-specific structs that contain the platform-specific
connection and surface/window info. The Vulkan loader vkCreate*SurfaceKHR()
functions will fill in the struct. ICDs and layers will cast VkSurfaceKHR to a
pointer to the appropriate VkIcdSurface* struct.