<p dir="ltr">I don't really like this... Bit I believe it is correct.  The whole series (modulo validation) is</p>
<p dir="ltr">Reviewed-by: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>></p>
<p dir="ltr">Let's cc stable on the whole thing as well.</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Jul 27, 2016 6:03 AM, "Emil Velikov" <<a href="mailto:emil.l.velikov@gmail.com">emil.l.velikov@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">From: Emil Velikov <<a href="mailto:emil.velikov@collabora.com">emil.velikov@collabora.com</a>><br>
<br>
With version 1 of the Loader interface there is an internal/private symbol<br>
(vk_icdGetInstanceProcAddr) which is used to retrieve all the API from the<br>
Vulkan entrypoints from the ICD. Implying that exposing the Vulkan API is not<br>
recommended.<br>
<br>
Version 2 goes a step further explicitly forbiding the ICD from exposing Vulkan<br>
symbols (and adding a negotiation API)<br>
<br>
As a reference:<br>
 - Nvidia 367.35<br>
Missing negotiation API - version 1.<br>
Exposes only vk_icdGetInstanceProcAddr.<br>
<br>
 - AMD <a href="tel:16.30.3.306809" value="+16303306809">16.30.3.306809</a><br>
Have negotiation API - version 2,<br>
Exposes vk_icdGetInstanceProcAddr.<br>
Exposes a couple of Vulkan entry points - seems to be in violation with the spec.<br>
<br>
Cc: "12.0" <<a href="mailto:mesa-stable@lists.freedesktop.org">mesa-stable@lists.freedesktop.org</a>><br>
Cc: Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>><br>
Cc: Christian König <<a href="mailto:christian.koenig@amd.com">christian.koenig@amd.com</a>><br>
Signed-off-by: Emil Velikov <<a href="mailto:emil.velikov@collabora.com">emil.velikov@collabora.com</a>><br>
---<br>
<br>
Christian, can you ping/check with the relevant team if I'm missing something<br>
or the driver indeed goes against the spec ?<br>
<br>
Apart from the small reduction in binary size, we get rid of the ifuncs. The<br>
latter was never checked at configure time, so things could have gone very<br>
badly on platforms which lack support.<br>
---<br>
 src/intel/vulkan/anv_entrypoints_gen.py | 11 -----------<br>
 1 file changed, 11 deletions(-)<br>
<br>
diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/anv_entrypoints_gen.py<br>
index a4922c2..6904d37 100644<br>
--- a/src/intel/vulkan/anv_entrypoints_gen.py<br>
+++ b/src/intel/vulkan/anv_entrypoints_gen.py<br>
@@ -291,17 +291,6 @@ anv_resolve_entrypoint(uint32_t index)<br>
 }<br>
 """<br>
<br>
-# Now output ifuncs and their resolve helpers for all entry points. The<br>
-# resolve helper calls resolve_entrypoint() with the entry point index, which<br>
-# lets the resolver look it up in the table.<br>
-<br>
-for type, name, args, num, h in entrypoints:<br>
-    print_guard_start(name)<br>
-    print "static void *resolve_%s(void) { return anv_resolve_entrypoint(%d); }" % (name, num)<br>
-    print "%s vk%s%s\n   __attribute__ ((ifunc (\"resolve_%s\"), visibility (\"default\")));\n" % (type, name, args, name)<br>
-    print_guard_end(name)<br>
-<br>
-<br>
 # Now generate the hash table used for entry point look up.  This is a<br>
 # uint16_t table of entry point indices. We use 0xffff to indicate an entry<br>
 # in the hash table is empty.<br>
--<br>
2.9.0<br>
<br>
</blockquote></div></div>