From: Connor Abbott <cwabbo...@gmail.com> --- src/amd/vulkan/radv_device.c | 15 +++++++++++++++ src/amd/vulkan/radv_pipeline.c | 4 ++++ 2 files changed, 19 insertions(+)
diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 21f2437..2255ff8 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -188,6 +188,12 @@ static const VkExtensionProperties ext_sema_device_extensions[] = { }, }; +static const VkExtensionProperties amd_shader_ballot_extension = { + .extensionName = VK_AMD_SHADER_BALLOT_EXTENSION_NAME, + .specVersion = 1, +}; + + static VkResult radv_extensions_register(struct radv_instance *instance, struct radv_extensions *extensions, @@ -346,6 +352,15 @@ radv_physical_device_init(struct radv_physical_device *device, goto fail; } + if (device->rad_info.chip_class >= VI && HAVE_LLVM >= 0x600) { + result = radv_extensions_register(instance, + &device->extensions, + &amd_shader_ballot_extension, + 1); + if (result != VK_SUCCESS) + goto fail; + } + fprintf(stderr, "WARNING: radv is not a conformant vulkan implementation, testing use only.\n"); device->name = get_chip_name(device->rad_info.family); diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c index 4aecb81..1b9a2b9 100644 --- a/src/amd/vulkan/radv_pipeline.c +++ b/src/amd/vulkan/radv_pipeline.c @@ -237,6 +237,10 @@ radv_shader_compile_to_nir(struct radv_device *device, .variable_pointers = true, .shader_ballot = true, .shader_group_vote = true, +#if HAVE_LLVM >= 0x600 + .amd_shader_ballot = true, + .groups = true, +#endif }; entry_point = spirv_to_nir(spirv, module->size / 4, spec_entries, num_spec_entries, -- 2.9.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev