[Mesa-dev] [PATCH 2/2] anv: Autogenerate extension query and lookup

Jason Ekstrand jason at jlekstrand.net
Tue Aug 1 15:45:46 UTC 2017


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 <emil.l.velikov at gmail.com>
wrote:

> On 14 July 2017 at 07:14, Jason Ekstrand <jason at jlekstrand.net> 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 <emil.velikov at collabora.com>
>
> -Emil
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170801/38e10691/attachment-0001.html>


More information about the mesa-dev mailing list