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

Iago Toral itoral at igalia.com
Thu Mar 8 08:44:48 UTC 2018


Thanks for the kind words Jason, this is a superb achievement and we
are very proud to had the chance to work on this with you!
Iago
On Wed, 2018-03-07 at 15:08 -0800, Jason Ekstrand wrote:
> 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>
> 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/20180308/6807a1fa/attachment-0001.html>


More information about the mesa-dev mailing list