[Mesa-dev] [PATCH 00/56] anv: Add support for Vulkan 1.1
Jason Ekstrand
jason at jlekstrand.net
Wed Mar 7 14:34:48 UTC 2018
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
More information about the mesa-dev
mailing list