[Mesa-dev] [PATCH 00/56] anv: Add support for Vulkan 1.1
Jason Ekstrand
jason at jlekstrand.net
Wed Mar 7 23:08:51 UTC 2018
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/20180307/27995c5d/attachment-0001.html>
More information about the mesa-dev
mailing list