Module: Mesa Branch: staging/22.1 Commit: fdb6bb31af52aca34d5515186b6ff5618ab1b9cc URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=fdb6bb31af52aca34d5515186b6ff5618ab1b9cc
Author: Autumn on Tape <[email protected]> Date: Fri Apr 1 13:03:20 2022 -0700 lavapipe: enable subgroup shuffle operations Bits flipped in VkPhysicalDeviceSubgroupProperties.supportedOperations: * SUBGROUP_FEATURE_SHUFFLE_BIT * SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT Signed-off-by: Autumn on Tape <[email protected]> Reviewed-by: Dave Airlie <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13671> --- src/gallium/frontends/lavapipe/lvp_device.c | 4 ++++ src/gallium/frontends/lavapipe/lvp_pipeline.c | 3 +++ src/gallium/frontends/lavapipe/lvp_private.h | 2 ++ src/gallium/frontends/lavapipe/meson.build | 2 +- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gallium/frontends/lavapipe/lvp_device.c b/src/gallium/frontends/lavapipe/lvp_device.c index 1bc9a936c89..88b0daff7d5 100644 --- a/src/gallium/frontends/lavapipe/lvp_device.c +++ b/src/gallium/frontends/lavapipe/lvp_device.c @@ -1007,6 +1007,10 @@ lvp_get_physical_device_properties_1_1(struct lvp_physical_device *pdevice, p->subgroupSupportedOperations = VK_SUBGROUP_FEATURE_BASIC_BIT | VK_SUBGROUP_FEATURE_VOTE_BIT | VK_SUBGROUP_FEATURE_ARITHMETIC_BIT | VK_SUBGROUP_FEATURE_BALLOT_BIT; p->subgroupQuadOperationsInAllStages = false; +#if LLVM_VERSION_MAJOR >= 10 + p->subgroupSupportedOperations |= VK_SUBGROUP_FEATURE_SHUFFLE_BIT | VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT; +#endif + p->pointClippingBehavior = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES; p->maxMultiviewViewCount = 6; p->maxMultiviewInstanceIndex = INT_MAX; diff --git a/src/gallium/frontends/lavapipe/lvp_pipeline.c b/src/gallium/frontends/lavapipe/lvp_pipeline.c index 247a898714a..81d5a9c32a9 100644 --- a/src/gallium/frontends/lavapipe/lvp_pipeline.c +++ b/src/gallium/frontends/lavapipe/lvp_pipeline.c @@ -849,6 +849,9 @@ lvp_shader_compile_to_ir(struct lvp_pipeline *pipeline, .subgroup_basic = true, .subgroup_ballot = true, .subgroup_quad = true, +#if LLVM_VERSION_MAJOR >= 10 + .subgroup_shuffle = true, +#endif .subgroup_vote = true, .vk_memory_model = true, .vk_memory_model_device_scope = true, diff --git a/src/gallium/frontends/lavapipe/lvp_private.h b/src/gallium/frontends/lavapipe/lvp_private.h index 51957c1a55a..0965bdf2c6c 100644 --- a/src/gallium/frontends/lavapipe/lvp_private.h +++ b/src/gallium/frontends/lavapipe/lvp_private.h @@ -29,6 +29,8 @@ #include <assert.h> #include <stdint.h> +#include <llvm/Config/llvm-config.h> + #include "util/macros.h" #include "util/list.h" #include "util/u_dynarray.h" diff --git a/src/gallium/frontends/lavapipe/meson.build b/src/gallium/frontends/lavapipe/meson.build index 3eba9701606..a63f3220c31 100644 --- a/src/gallium/frontends/lavapipe/meson.build +++ b/src/gallium/frontends/lavapipe/meson.build @@ -44,6 +44,6 @@ liblavapipe_st = static_library( c_args : [ c_msvc_compat_args, lvp_flags ], gnu_symbol_visibility : 'hidden', include_directories : [ inc_include, inc_src, inc_util, inc_gallium, inc_compiler, inc_gallium_aux ], - dependencies : [ idep_nir, idep_mesautil, idep_vulkan_util, idep_vulkan_wsi, + dependencies : [ dep_llvm, idep_nir, idep_mesautil, idep_vulkan_util, idep_vulkan_wsi, idep_vulkan_runtime, lvp_deps ] )
