[Mesa-dev] [PATCH 00/56] anv: Add support for Vulkan 1.1

Matheson, Annie J annie.j.matheson at intel.com
Wed Mar 7 23:43:22 UTC 2018


Excellent work and congratulations to everyone! This IS an awesome community and I’m very proud of you.

Annie Matheson

From: Jason Ekstrand [mailto:jason at jlekstrand.net]
Sent: Wednesday, March 7, 2018 3:09 PM
To: ML mesa-dev <mesa-dev at lists.freedesktop.org>
Cc: Ekstrand, Jason <jason.ekstrand at intel.com>; Chema Casanova <jmcasanova at igalia.com>; Iago Toral <itoral at igalia.com>; Samuel Iglesias Gonsálvez <siglesias at igalia.com>; Alejandro Piñeiro <apinheiro at igalia.com>; Juan A. Suarez Romero <jasuarez at igalia.com>; Lionel Landwerlin <llandwerlin at gmail.com>; Eduardo Lima Mitev <elima at igalia.com>; Kenneth Graunke <kenneth at whitecape.org>; Connor Abbott <cwabbott0 at gmail.com>; Dave Airlie <airlied at redhat.com>; Chris Wilson <chris at chris-wilson.co.uk>; Christian König <christian.koenig at amd.com>; Francisco Jerez <currojerez at riseup.net>; Jordan Justen <jljusten at gmail.com>; Matt Turner <mattst88 at gmail.com>; Dylan Baker <dylan at pnwbakers.com>; Mark Janes <markjanes at fastmail.fm>; Chery, Nanley G <nanley.g.chery at intel.com>; Matheson, Annie J <annie.j.matheson at intel.com>
Subject: Re: [PATCH 00/56] anv: Add support for Vulkan 1.1

Hi all,
I just wanted to give a shout out and a huge "Thank You!" to all of the people who made this release possible.  There were a large number of features packed into the 1.1 release and implementing it all was a hugely collaborative effort.

I want to specially thank our friends at Igalia.  They implemented the VK_KHR_16bit_storage extension which was initially 45 patches which ended up going through multiple review cycles and getting expanded a bit.  Less visibly, however, they've also been hard at work on the CTS.  They've implemented quite a few tests for things such as VK_KHR_16bit_storage, VK_KHR_image_format_list, and others I've forgotten about.  They also kept on top of the CTS as new tests were being developed and did most of the triage and bug fixing work in anv.  I seriously don't know what we would have done without them.  I think it's fair to say that, while we may have managed a skeleton 1.1 implementation, we wouldn't have been able to ship a full-featured 1.1 without them!  Also, I probably would have gone insane.
I also want to thank Lionel Landwerlin on my team.  He implemented a bunch of the smaller features as well as VK_KHR_sampler_ycbcr_conversion.  He also did a large amount of code review.
Finally, I want to thank everyone else who was involved in helping with the 1.1 effort in any way.  We in Linux graphics have an awesome community and I don't know what we'd do without you all.  I tried to include everyone I can think of who helped with the 1.1 effort in the Cc.  I'm sorry if I missed anyone.

Thanks for all your help and hard work,
--Jason Ekstrand


On Wed, Mar 7, 2018 at 6:34 AM, Jason Ekstrand <jason at jlekstrand.net<mailto:jason at jlekstrand.net>> wrote:
This patch series adds full support for Vulkan 1.1 to the Intel Linux
Vulkan driver.  As with the initial Vulkan 1.0 drop two years ago, this
driver is 100% Vulkan 1.1 conformant on all shipping Intel hardware gen8
and above.  Unlike our initial Vulkan 1.0 drop two years ago which was
missing piles of features, the Vulkan 1.1 implementation is nearly feature-
complete.  With the exception of 16-bit shader I/O (we have patches but
they are awaiting better testing), every optional feature which was added
to core in Vulkan 1.1 and which can reasonably be reasonably supported by
shipping hardware has been implemented.

The only significant feature implemented by this series is subgroups.  It
is part of Vulkan 1.1 core but there is no corresponding Vulkan extension.
All of the other significant features in Vulkan 1.1 have already been
ratified and released as extension and we have already landed support for
them.

In order to actually advertise support for Vulkan 1.1, we must be able to
advertise VK_KHR_external_fence which requires the SYNCOBJ_WAIT ioctl which
landed in Linux 4.14.  Users may need to update their kernel before they
will get full 1.1 support.

There are also quite a few patches in here to the entrypoints generator
and some of the other generators to handle various things required for
reporting a Vulkan version higher than 1.0.  In particular, we need to
handle name aliasing for entrypoints and enums.

All of the patches in this series have already been reviewed by people at
Intel or Igalia.  Unless there are any complaints, I plan to land the
patches this afternoon.  Dave and Bas also have some 1.1 patches and we're
going to have to work together to land them so that neither driver breaks
when we land the 1.1 XML.


Iago Toral Quiroga (2):
  anv/device: GetDeviceQueue2 should only return queues with matching
    flags
  anv/device: fail to initialize device if we have queues with
    unsupported flags

Jason Ekstrand (54):
  spirv: Add a vtn_constant_value helper
  spirv: Rework barriers
  vulkan: Rename multiview from KHX to KHR
  anv/entrypoints: Generalize the string map a bit
  anv/entrypoints_gen: A bit of refactoring
  anv/entrypoints_gen: Allow the string map to grow
  anv/entrypoints: Add an is_device_entrypoint helper
  anv/entrypoints: Allow an entrypoint to require multiple extensions
  anv/entrypoints_gen: Add support for aliases in the XML
  anv/extensions: Add support for multiple API versions
  anv/entrypoints: Generate #ifdef guards from platform attributes
  vulkan/enum_to_str: Add a add_value_from_xml helper to VkEnum
  vulkan/enum_to_str: Add support for aliases and new Vulkan versions
  vulkan: Update the XML and headers to 1.1.70
  spirv: Update the SPIR-V headers and json to 1.3.1
  anv: Add version 1.1.0 but leave it disabled
  Get rid of a bunch of KHR suffixes
  anv/entrypoints: Drop support for protect attributes
  anv: Support VkPhysicalDeviceShaderDrawParameterFeatures
  anv: Implement VK_KHR_maintenance3
  nir/spirv: Add support for device groups
  anv: Implement vkCmdDispatchBase
  anv: Trivially implement VK_KHR_device_group
  anv: Implement GetDeviceQueue2
  anv: Support querying for protected memory
  anv: Implement vkEnumerateInstanceVersion
  anv: Stop returning VK_ERROR_INCOMPATIBLE_DRIVER
  spirv: Handle the new OpModuleProcessed instruction
  nir: Add new SPIR-V ballot ALU intrinsics and lowering
  compiler: Add two new system values for subgroups
  nir: Add new SPIR-V ballot intrinsics and lowering
  spirv: Add initial subgroup support
  i965/fs: Implement basic SPIR-V subgroup intrinsics
  spirv: Add subgroup ballot support
  nir: Generalize nir_intrinsic_vote_eq
  spirv: Add subgroup vote support
  nir/lower_subgroups: Add scalarizing for vote_eq
  i965/fs: Support nir_intrinsic_vote_feq
  nir: Add subgroup shuffle intrinsics and lowering
  spirv: Add subgroup shuffle support
  i965/fs: Add support for nir_intrinsic_shuffle
  nir: Add quad operations and lowering
  spirv: Add subgroup quad support
  nir: Add subgroup arithmetic reduction intrinsics
  nir: Add a helper for getting binop identities
  spirv: Add support for subgroup arithmetic
  intel/fs: Add a couple of simple helper opcodes
  intel/fs: Add a helper for emitting scan operations
  intel/fs: Implement reduce and scan opeprations
  intel/fs: Add support for subgroup quad operations
  anv: Add support for SPIR-V 1.3 subgroup operations
  anv: Enable Vulkan 1.1
  vulkan/util: Add a helper to get a version override
  anv: Support version overrides

 docs/envvars.html                                 |   10 +
 include/vulkan/vk_platform.h                      |   28 -
 include/vulkan/vulkan.h                           | 7029 +-------------------
 include/vulkan/vulkan_android.h                   |   60 +
 include/vulkan/vulkan_core.h                      | 7293 +++++++++++++++++++++
 include/vulkan/vulkan_ios.h                       |   58 +
 include/vulkan/vulkan_macos.h                     |   58 +
 include/vulkan/vulkan_mir.h                       |   65 +
 include/vulkan/vulkan_vi.h                        |   58 +
 include/vulkan/vulkan_wayland.h                   |   65 +
 include/vulkan/vulkan_win32.h                     |  276 +
 include/vulkan/vulkan_xcb.h                       |   66 +
 include/vulkan/vulkan_xlib.h                      |   66 +
 include/vulkan/vulkan_xlib_randr.h                |   54 +
 include/vulkan/vulkan_xlib_xrandr.h               |   54 +
 src/compiler/Makefile.sources                     |    1 +
 src/compiler/glsl/glsl_to_nir.cpp                 |    5 +-
 src/compiler/nir/meson.build                      |    1 +
 src/compiler/nir/nir.c                            |   76 +
 src/compiler/nir/nir.h                            |   18 +
 src/compiler/nir/nir_intrinsics.h                 |   62 +-
 src/compiler/nir/nir_lower_subgroups.c            |  203 +-
 src/compiler/nir/nir_lower_system_values.c        |    5 +
 src/compiler/nir/nir_opt_intrinsics.c             |    3 +-
 src/compiler/nir/nir_print.c                      |    5 +
 src/compiler/shader_enums.c                       |    3 +
 src/compiler/shader_enums.h                       |   11 +
 src/compiler/shader_info.h                        |    7 +
 src/compiler/spirv/spirv.core.grammar.json        |  885 ++-
 src/compiler/spirv/spirv.h                        |   60 +-
 src/compiler/spirv/spirv_to_nir.c                 |  199 +-
 src/compiler/spirv/vtn_private.h                  |    9 +
 src/compiler/spirv/vtn_subgroup.c                 |  379 ++
 src/compiler/spirv/vtn_variables.c                |   40 +
 src/intel/Makefile.sources                        |    1 +
 src/intel/compiler/brw_compiler.c                 |    1 +
 src/intel/compiler/brw_compiler.h                 |   11 +
 src/intel/compiler/brw_eu_defines.h               |   27 +
 src/intel/compiler/brw_fs.cpp                     |   35 +
 src/intel/compiler/brw_fs.h                       |    5 +
 src/intel/compiler/brw_fs_builder.h               |  141 +
 src/intel/compiler/brw_fs_generator.cpp           |  171 +
 src/intel/compiler/brw_fs_nir.cpp                 |  272 +-
 src/intel/compiler/brw_ir_fs.h                    |    7 +
 src/intel/compiler/brw_nir.c                      |    4 +-
 src/intel/compiler/brw_nir_lower_cs_intrinsics.c  |   18 +
 src/intel/compiler/brw_reg.h                      |    8 +
 src/intel/compiler/brw_shader.cpp                 |    9 +
 src/intel/vulkan/anv_batch_chain.c                |    2 +-
 src/intel/vulkan/anv_cmd_buffer.c                 |   19 +-
 src/intel/vulkan/anv_descriptor_set.c             |   63 +-
 src/intel/vulkan/anv_device.c                     |  303 +-
 src/intel/vulkan/anv_entrypoints_gen.py           |  302 +-
 src/intel/vulkan/anv_extensions.py                |   46 +-
 src/intel/vulkan/anv_extensions_gen.py            |   26 +-
 src/intel/vulkan/anv_formats.c                    |  174 +-
 src/intel/vulkan/anv_image.c                      |   52 +-
 src/intel/vulkan/anv_nir.h                        |    3 +
 src/intel/vulkan/anv_nir_add_base_work_group_id.c |   93 +
 src/intel/vulkan/anv_nir_lower_ycbcr_textures.c   |   20 +-
 src/intel/vulkan/anv_pass.c                       |    4 +-
 src/intel/vulkan/anv_pipeline.c                   |    9 +
 src/intel/vulkan/anv_private.h                    |   58 +-
 src/intel/vulkan/anv_queue.c                      |   78 +-
 src/intel/vulkan/anv_wsi.c                        |   22 +
 src/intel/vulkan/genX_cmd_buffer.c                |   59 +-
 src/intel/vulkan/genX_pipeline.c                  |    2 +-
 src/intel/vulkan/genX_state.c                     |    6 +-
 src/intel/vulkan/meson.build                      |    1 +
 src/intel/vulkan/vk_format_info.h                 |   50 +-
 src/vulkan/registry/vk.xml                        | 3400 ++++++----
 src/vulkan/util/gen_enum_to_str.py                |   49 +-
 src/vulkan/util/vk_util.c                         |   20 +
 src/vulkan/util/vk_util.h                         |    2 +
 74 files changed, 13667 insertions(+), 9118 deletions(-)
 create mode 100644 include/vulkan/vulkan_android.h
 create mode 100644 include/vulkan/vulkan_core.h
 create mode 100644 include/vulkan/vulkan_ios.h
 create mode 100644 include/vulkan/vulkan_macos.h
 create mode 100644 include/vulkan/vulkan_mir.h
 create mode 100644 include/vulkan/vulkan_vi.h
 create mode 100644 include/vulkan/vulkan_wayland.h
 create mode 100644 include/vulkan/vulkan_win32.h
 create mode 100644 include/vulkan/vulkan_xcb.h
 create mode 100644 include/vulkan/vulkan_xlib.h
 create mode 100644 include/vulkan/vulkan_xlib_randr.h
 create mode 100644 include/vulkan/vulkan_xlib_xrandr.h
 create mode 100644 src/compiler/spirv/vtn_subgroup.c
 create mode 100644 src/intel/vulkan/anv_nir_add_base_work_group_id.c

--
2.5.0.400.gff86faf

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180307/80ef7a99/attachment-0001.html>


More information about the mesa-dev mailing list