[Mesa-dev] [PATCH 00/21] anv: Follow the rules for vkGet*ProcAddr

Jason Ekstrand jason at jlekstrand.net
Mon Jan 22 09:06:53 UTC 2018


I don't think they're blocked by mailman decided to give up over the
week-end so it may have gotten lost.  Here's a branch:

https://cgit.freedesktop.org/~jekstrand/mesa/log/?h=wip/anv-proc-addr

On Mon, Jan 22, 2018 at 1:03 AM, Samuel Iglesias Gonsálvez <
siglesias at igalia.com> wrote:

> I don't see patches 4, 8, 9 and 18 in the mailing list. Are they blocked?
>
> Sam
>
>
> On 20/01/18 20:11, Jason Ekstrand wrote:
> > Our previous scheme for Get*ProcAddr was to just return what we could and
> > not care about the details.  This meant that GetInstanceProcAddr returned
> > all anv_ entrypoints and GetDeviceProcAddr would return the per-gen
> > entrypoint and fall back to anv_.  We figured that this was a perfectly
> > reasonable and Vulkan thing to do and that the loader could sort out the
> > nasty details.  We were wrong.
> >
> > The Vulkan spec has some very specific rules about what vkGet*ProcAddr is
> > supposed to do in various cases.  In particular, you're supposed to
> return
> > NULL for any extension entrypoints which have not explicitly been
> enabled.
> > Also, vkGetInstanceProcAddr is supposed to return entrypoints for device
> > functionality even if they have to be trampoline entrypoints.  In 99% of
> > case, the loader takes care of all these details for us.  However, what I
> > hear from the loader people is that they can't do it all and that the
> > drivers should also follow the rules.
> >
> > On the upside, this means that our driver, short of exposing a few
> symbols,
> > is now a completely stand-alone Vulkan implementation and doesn't
> require a
> > loader.
> >
> > Cc: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
> >
> > Jason Ekstrand (21):
> >   anv/meson: Make anv_entrypoints_gen.py depend on anv_extensions.py
> >   anv: Split anv_extensions.py into two files
> >   anv/meson: Simplify some dependency and flag tracking
> >   anv/extensions: Generate a header file with extension tables
> >   anv: Use tables for instance extension wrangling
> >   anv: Add a per-instance table of enabled extensions
> >   anv: Use tables for device extension wrangling
> >   anv: Add a per-device table of enabled extensions
> >   anv/entrypoints: Add an Entrypoint class
> >   anv/entrypoints: Add a LAYERS helper variable
> >   anv/entrypoints: Split entrypoint index lookup into its own function
> >   anv/entrypoints: Expose the different dispatch tables
> >   anv/entrypoints: Parse entrypoints before extensions/features
> >   anv/extensions: Fix VkVersion::c_vk_version for patch == None
> >   anv: Properly NULL for GetInstanceProcAddr with a null instance
> >   anv: Add a per-instance dispatch table
> >   anv: Add a per-device dispatch table
> >   anv: Only advertise enabled entrypoints
> >   anv/entrypoints: Use an named tuple for params
> >   anv: Return trampoline entrypoints from GetInstanceProcAddr
> >   HACK: Return instance entrypoints from GetDeviceProcAddr
> >
> >  src/intel/Makefile.sources              |   3 +-
> >  src/intel/Makefile.vulkan.am            |  15 +-
> >  src/intel/vulkan/anv_device.c           | 174 ++++++++++++++++++-
> >  src/intel/vulkan/anv_entrypoints_gen.py | 297
> +++++++++++++++++++++++---------
> >  src/intel/vulkan/anv_extensions.py      | 157 +----------------
> >  src/intel/vulkan/anv_extensions_gen.py  | 202 ++++++++++++++++++++++
> >  src/intel/vulkan/anv_private.h          |  16 +-
> >  src/intel/vulkan/meson.build            |  50 ++++--
> >  8 files changed, 653 insertions(+), 261 deletions(-)
> >  create mode 100644 src/intel/vulkan/anv_extensions_gen.py
> >
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180122/cfe9ecad/attachment.html>


More information about the mesa-dev mailing list