<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jan 10, 2017 at 7:17 PM, Chad Versace <span dir="ltr"><<a href="mailto:chadversary@chromium.org" target="_blank">chadversary@chromium.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Loader interface v2 differs from v1 in that the first ICD entrypoint<br>
called by the loader is vk_<wbr>icdNegotiateLoaderICDInterface<wbr>Version(), not<br>
vk_icdGetInstanceProcAddr(). The ICD must statically expose this<br>
entrypoint.<br>
---<br>
 src/intel/vulkan/anv_device.c | 43 ++++++++++++++++++++++++++++++<wbr>+++++++++++++<br>
 1 file changed, 43 insertions(+)<br>
<br>
diff --git a/src/intel/vulkan/anv_device.<wbr>c b/src/intel/vulkan/anv_device.<wbr>c<br>
index 219c611408..89e427f342 100644<br>
--- a/src/intel/vulkan/anv_device.<wbr>c<br>
+++ b/src/intel/vulkan/anv_device.<wbr>c<br>
@@ -2034,3 +2034,46 @@ void anv_DestroyFramebuffer(<br>
<br>
    vk_free2(&device->alloc, pAllocator, fb);<br>
 }<br>
+<br>
+/* Suppress warnings because vk_icd.h does not declare this function.<br>
+ * Clang supports this pragma too.<br>
+ */<br>
+#pragma GCC diagnostic push<br>
+#pragma GCC diagnostic ignored "-Wmissing-prototypes"<br>
+PUBLIC VKAPI_ATTR VkResult VKAPI_CALL<br>
+vk_<wbr>icdNegotiateLoaderICDInterface<wbr>Version(uint32_t* pSupportedVersion)<br>
+{<br>
+   /* For the full details on loader interface versioning, see<br>
+    * <<a href="https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/blob/master/loader/LoaderAndLayerInterface.md" rel="noreferrer" target="_blank">https://github.com/<wbr>KhronosGroup/Vulkan-<wbr>LoaderAndValidationLayers/<wbr>blob/master/loader/<wbr>LoaderAndLayerInterface.md</a>>.<br>
+    * What follows is a condensed summary, to help you navigate the large and<br>
+    * confusing official doc.<br>
+    *<br>
+    *   - Loader interface v0 is incompatible with later versions. We don't<br>
+    *     support it.<br>
+    *<br>
+    *   - In loader interface v1:<br>
+    *       - The first ICD entrypoint called by the loader is<br>
+    *         vk_icdGetInstanceProcAddr(). The ICD must statically expose this<br>
+    *         entrypoint.<br>
+    *       - The ICD must statically expose no other Vulkan symbol unless it is<br>
+    *         linked with -Bsymbolic.<br>
+    *       - Each dispatchable Vulkan handle created by the ICD must be<br>
+    *         a pointer to a struct whose first member is VK_LOADER_DATA. The<br>
+    *         ICD must initialize VK_LOADER_DATA.loadMagic to ICD_LOADER_MAGIC.<br>
+    *       - The loader implements vkCreate{PLATFORM}SurfaceKHR() and<br>
+    *         vkDestroySurfaceKHR(). The ICD must be capable of working with<br>
+    *         such loader-managed surfaces.<br>
+    *<br>
+    *    - Loader interface v2 differs from v1 in:<br>
+    *       - The first ICD entrypoint called by the loader is<br>
+    *         vk_<wbr>icdNegotiateLoaderICDInterface<wbr>Version(). The ICD must<br>
+    *         statically expose this entrypoint.<br>
+    *<br>
+    *    - Loader interface v3 differs from v2 in:<br>
+    *        - The ICD must implement vkCreate{PLATFORM}Surface() and<br>
+    *          vkDestroySurface() because the loader no longer does so.<br></blockquote><div><br></div><div>We've implemented these since the dawn of time.  I think we can claim v3.<br><br></div><div>--Jason<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+    */<br>
+   *pSupportedVersion = 2;<br>
+   return VK_SUCCESS;<br>
+}<br>
+#pragma GCC diagnostic pop<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.11.0<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>