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.
--Jason On Fri, Jul 14, 2017 at 7:17 AM, Emil Velikov <[email protected]> wrote: > On 14 July 2017 at 07:14, Jason Ekstrand <[email protected]> wrote: > > As time goes on, extension advertising is going to get more complex. > > Today, we either implement an extension or we don't. However, in the > > future, whether or not we advertise an extension will depend on kernel > > or hardware features. This commit introduces a python codegen framework > > that generates the anv_EnumerateFooExtensionProperties functions as well > > as a pair of anv_foo_extension_supported functions for querying for the > > support of a given extension string. Each extension has an "enable" > > predicate that is any valid C expression. For device extensions, the > > physical device is available as "device" so the expression could be > > something such as "device->has_kernel_feature". For instance > > extensions, the only option is VK_USE_PLATFORM defines. > > > > This mechanism also means that we have a single one-line-per-entry table > > for all extension declarations instead of the two tables we had in > > anv_device.c and the one we had in anv_entrypoints_gen.py. The Python > > code is smart and uses the XML to determine whether an extension is an > > instance extension or device extension. > > --- > > src/intel/Android.vulkan.mk | 8 ++ > > src/intel/Makefile.sources | 3 +- > > src/intel/Makefile.vulkan.am | 5 ++ > > src/intel/vulkan/anv_device.c | 149 +----------------------------- > ------- > > src/intel/vulkan/anv_extensions.py | 118 +++++++++++++++++++++++++++++ > > src/intel/vulkan/anv_private.h | 4 + > > 6 files changed, 141 insertions(+), 146 deletions(-) > > > > diff --git a/src/intel/Android.vulkan.mk b/src/intel/Android.vulkan.mk > > index 398f2e7..f93d71f 100644 > > --- a/src/intel/Android.vulkan.mk > > +++ b/src/intel/Android.vulkan.mk > > @@ -25,6 +25,8 @@ include $(LOCAL_PATH)/Makefile.sources > > > > VK_ENTRYPOINTS_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/vulkan/anv_ > entrypoints_gen.py > > > > +VK_EXTENSIONS_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/vulkan/anv_ > extensions.py > > + > > VULKAN_COMMON_INCLUDES := \ > > $(MESA_TOP)/src/mapi \ > > $(MESA_TOP)/src/gallium/auxiliary \ > > @@ -213,6 +215,12 @@ $(intermediates)/vulkan/anv_entrypoints.c: > > --xml $(MESA_TOP)/src/vulkan/registry/vk.xml \ > > --outdir $(dir $@) > > > Add the following line otherwise the file won't be in the binary. > > LOCAL_GENERATED_SOURCES += $(intermediates)/vulkan/anv_extensions.c > > With the above nit > Reviewed-by: Emil Velikov <[email protected]> > > -Emil >
_______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
