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 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev