<div dir="ltr"><div>Nanley or Lionel, could I get a second set of eyes on this?  I don't want to push with just Emil's review as this is a significant change to how we do extensions.<br><br></div>--Jason<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 14, 2017 at 7:17 AM, Emil Velikov <span dir="ltr"><<a href="mailto:emil.l.velikov@gmail.com" target="_blank">emil.l.velikov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 14 July 2017 at 07:14, Jason Ekstrand <<a href="mailto:jason@jlekstrand.net">jason@jlekstrand.net</a>> wrote:<br>
> As time goes on, extension advertising is going to get more complex.<br>
> Today, we either implement an extension or we don't.  However, in the<br>
> future, whether or not we advertise an extension will depend on kernel<br>
> or hardware features.  This commit introduces a python codegen framework<br>
> that generates the anv_<wbr>EnumerateFooExtensionPropertie<wbr>s functions as well<br>
> as a pair of anv_foo_extension_supported functions for querying for the<br>
> support of a given extension string.  Each extension has an "enable"<br>
> predicate that is any valid C expression.  For device extensions, the<br>
> physical device is available as "device" so the expression could be<br>
> something such as "device->has_kernel_feature".  For instance<br>
> extensions, the only option is VK_USE_PLATFORM defines.<br>
><br>
> This mechanism also means that we have a single one-line-per-entry table<br>
> for all extension declarations instead of the two tables we had in<br>
> anv_device.c and the one we had in anv_entrypoints_gen.py.  The Python<br>
> code is smart and uses the XML to determine whether an extension is an<br>
> instance extension or device extension.<br>
> ---<br>
>  src/intel/<a href="http://Android.vulkan.mk" rel="noreferrer" target="_blank">Android.vulkan.mk</a>        |   8 ++<br>
>  src/intel/Makefile.sources         |   3 +-<br>
>  src/intel/<a href="http://Makefile.vulkan.am" rel="noreferrer" target="_blank">Makefile.vulkan.am</a>       |   5 ++<br>
>  src/intel/vulkan/anv_device.c      | 149 +-----------------------------<wbr>-------<br>
>  src/intel/vulkan/anv_<wbr>extensions.py | 118 +++++++++++++++++++++++++++++<br>
>  src/intel/vulkan/anv_private.h     |   4 +<br>
>  6 files changed, 141 insertions(+), 146 deletions(-)<br>
><br>
> diff --git a/src/intel/<a href="http://Android.vulkan.mk" rel="noreferrer" target="_blank">Android.vulkan.mk</a> b/src/intel/<a href="http://Android.vulkan.mk" rel="noreferrer" target="_blank">Android.vulkan.mk</a><br>
> index 398f2e7..f93d71f 100644<br>
> --- a/src/intel/<a href="http://Android.vulkan.mk" rel="noreferrer" target="_blank">Android.vulkan.mk</a><br>
> +++ b/src/intel/<a href="http://Android.vulkan.mk" rel="noreferrer" target="_blank">Android.vulkan.mk</a><br>
> @@ -25,6 +25,8 @@ include $(LOCAL_PATH)/Makefile.sources<br>
><br>
>  VK_ENTRYPOINTS_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/vulkan/anv_<wbr>entrypoints_gen.py<br>
><br>
> +VK_EXTENSIONS_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/vulkan/anv_<wbr>extensions.py<br>
> +<br>
>  VULKAN_COMMON_INCLUDES := \<br>
>         $(MESA_TOP)/src/mapi \<br>
>         $(MESA_TOP)/src/gallium/<wbr>auxiliary \<br>
> @@ -213,6 +215,12 @@ $(intermediates)/vulkan/anv_<wbr>entrypoints.c:<br>
>                 --xml $(MESA_TOP)/src/vulkan/<wbr>registry/vk.xml \<br>
>                 --outdir $(dir $@)<br>
><br>
</div></div>Add the following line otherwise the file won't be in the binary.<br>
<br>
LOCAL_GENERATED_SOURCES += $(intermediates)/vulkan/anv_<wbr>extensions.c<br>
<br>
With the above nit<br>
Reviewed-by: Emil Velikov <<a href="mailto:emil.velikov@collabora.com">emil.velikov@collabora.com</a>><br>
<span class="HOEnZb"><font color="#888888"><br>
-Emil<br>
</font></span></blockquote></div><br></div>