radv: implement VK_EXT_subgroup_size_control
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 31 Oct 2019 09:55:37 +0000 (10:55 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 6 Nov 2019 08:20:39 +0000 (09:20 +0100)
commitfb07fd4e6cb9feb8c9a812dd5f859f165f213465
tree672a5e05aa411a9b992af8d9a3c901e211828ea8
parentda6c30f9f606541e37dbee11d048732ae2335e6a
radv: implement VK_EXT_subgroup_size_control

This extension allows to control the subgroup size by allowing a
varying subgroup size and also specifying a required subgroup size.

This implementation only allows to specify a required subgroup
size for compute shaders because there is some caveats with
other shader stages (eg. NGG with geometry shader). This
basically allows apps to use Wave32 for compute shaders.

This extension is enabled for all chips but only GFX10 supports
Wave32. ACO doesn't support it.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_extensions.py
src/amd/vulkan/radv_pipeline.c
src/amd/vulkan/radv_private.h
src/amd/vulkan/radv_shader.h