[Mesa-dev] [PATCH 00/56] anv: Add support for Vulkan 1.1
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Thu Mar 8 11:45:18 UTC 2018
Thanks a lot Jason! As Iago said, we are pleased to had the opportunity
to work with you on this :-D
Sam
On 08/03/18 00:08, 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
> <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/20180308/1e68944c/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180308/1e68944c/attachment-0001.sig>
More information about the mesa-dev
mailing list