Acked-by: Jason Ekstrand <ja...@jlekstrand.net> On Thu, May 17, 2018 at 10:05 PM, Tapani Pälli <tapani.pa...@intel.com> wrote:
> Import from commit eb0c1fd on branch 'master' > of https://github.com/KhronosGroup/Vulkan-Headers.git. > > Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> > --- > include/vulkan/vk_icd.h | 67 ++++++++++++++++++++++++++++++ > ++++++++----------- > 1 file changed, 53 insertions(+), 14 deletions(-) > > diff --git a/include/vulkan/vk_icd.h b/include/vulkan/vk_icd.h > index 7b54fb5774..b935fa1786 100644 > --- a/include/vulkan/vk_icd.h > +++ b/include/vulkan/vk_icd.h > @@ -24,13 +24,34 @@ > #define VKICD_H > > #include "vulkan.h" > - > -/* > - * Loader-ICD version negotiation API > - */ > -#define CURRENT_LOADER_ICD_INTERFACE_VERSION 3 > +#include <stdbool.h> > + > +// Loader-ICD version negotiation API. Versions add the following > features: > +// Version 0 - Initial. Doesn't support vk_icdGetInstanceProcAddr > +// or vk_icdNegotiateLoaderICDInterfaceVersion. > +// Version 1 - Add support for vk_icdGetInstanceProcAddr. > +// Version 2 - Add Loader/ICD Interface version negotiation > +// via vk_icdNegotiateLoaderICDInterfaceVersion. > +// Version 3 - Add ICD creation/destruction of KHR_surface objects. > +// Version 4 - Add unknown physical device extension qyering via > +// vk_icdGetPhysicalDeviceProcAddr. > +// Version 5 - Tells ICDs that the loader is now paying attention to the > +// application version of Vulkan passed into the > ApplicationInfo > +// structure during vkCreateInstance. This will tell the > ICD > +// that if the loader is older, it should automatically > fail a > +// call for any API version > 1.0. Otherwise, the loader > will > +// manually determine if it can support the expected > version. > +#define CURRENT_LOADER_ICD_INTERFACE_VERSION 5 > #define MIN_SUPPORTED_LOADER_ICD_INTERFACE_VERSION 0 > -typedef VkResult (VKAPI_PTR > *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t > *pVersion); > +#define MIN_PHYS_DEV_EXTENSION_ICD_INTERFACE_VERSION 4 > +typedef VkResult(VKAPI_PTR > *PFN_vkNegotiateLoaderICDInterfaceVersion)(uint32_t > *pVersion); > + > +// This is defined in vk_layer.h which will be found by the loader, but > if an ICD is building against this > +// file directly, it won't be found. > +#ifndef PFN_GetPhysicalDeviceProcAddr > +typedef PFN_vkVoidFunction(VKAPI_PTR > *PFN_GetPhysicalDeviceProcAddr)(VkInstance > instance, const char *pName); > +#endif > + > /* > * The ICD must reserve space for a pointer for the loader's dispatch > * table, at the start of <each object>. > @@ -64,6 +85,9 @@ typedef enum { > VK_ICD_WSI_PLATFORM_WIN32, > VK_ICD_WSI_PLATFORM_XCB, > VK_ICD_WSI_PLATFORM_XLIB, > + VK_ICD_WSI_PLATFORM_ANDROID, > + VK_ICD_WSI_PLATFORM_MACOS, > + VK_ICD_WSI_PLATFORM_IOS, > VK_ICD_WSI_PLATFORM_DISPLAY > } VkIcdWsiPlatform; > > @@ -77,7 +101,7 @@ typedef struct { > MirConnection *connection; > MirSurface *mirSurface; > } VkIcdSurfaceMir; > -#endif // VK_USE_PLATFORM_MIR_KHR > +#endif // VK_USE_PLATFORM_MIR_KHR > > #ifdef VK_USE_PLATFORM_WAYLAND_KHR > typedef struct { > @@ -85,7 +109,7 @@ typedef struct { > struct wl_display *display; > struct wl_surface *surface; > } VkIcdSurfaceWayland; > -#endif // VK_USE_PLATFORM_WAYLAND_KHR > +#endif // VK_USE_PLATFORM_WAYLAND_KHR > > #ifdef VK_USE_PLATFORM_WIN32_KHR > typedef struct { > @@ -93,7 +117,7 @@ typedef struct { > HINSTANCE hinstance; > HWND hwnd; > } VkIcdSurfaceWin32; > -#endif // VK_USE_PLATFORM_WIN32_KHR > +#endif // VK_USE_PLATFORM_WIN32_KHR > > #ifdef VK_USE_PLATFORM_XCB_KHR > typedef struct { > @@ -101,7 +125,7 @@ typedef struct { > xcb_connection_t *connection; > xcb_window_t window; > } VkIcdSurfaceXcb; > -#endif // VK_USE_PLATFORM_XCB_KHR > +#endif // VK_USE_PLATFORM_XCB_KHR > > #ifdef VK_USE_PLATFORM_XLIB_KHR > typedef struct { > @@ -109,13 +133,28 @@ typedef struct { > Display *dpy; > Window window; > } VkIcdSurfaceXlib; > -#endif // VK_USE_PLATFORM_XLIB_KHR > +#endif // VK_USE_PLATFORM_XLIB_KHR > > #ifdef VK_USE_PLATFORM_ANDROID_KHR > typedef struct { > - ANativeWindow* window; > + VkIcdSurfaceBase base; > + struct ANativeWindow *window; > } VkIcdSurfaceAndroid; > -#endif //VK_USE_PLATFORM_ANDROID_KHR > +#endif // VK_USE_PLATFORM_ANDROID_KHR > + > +#ifdef VK_USE_PLATFORM_MACOS_MVK > +typedef struct { > + VkIcdSurfaceBase base; > + const void *pView; > +} VkIcdSurfaceMacOS; > +#endif // VK_USE_PLATFORM_MACOS_MVK > + > +#ifdef VK_USE_PLATFORM_IOS_MVK > +typedef struct { > + VkIcdSurfaceBase base; > + const void *pView; > +} VkIcdSurfaceIOS; > +#endif // VK_USE_PLATFORM_IOS_MVK > > typedef struct { > VkIcdSurfaceBase base; > @@ -128,4 +167,4 @@ typedef struct { > VkExtent2D imageExtent; > } VkIcdSurfaceDisplay; > > -#endif // VKICD_H > +#endif // VKICD_H > -- > 2.14.3 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev