This three-patch series includes a draft of a new Vulkan extension along with the trivial implementation in anv. The extension allows a driver to advertise that derivative groups are just quads. In other words, that it's safe to mix non-uniform control flow and derivatives as long as the control-flow is quad-uniform.
Having this added assumption is particularly important for implementing D3D derivatives in Vulkan as it allows you to implement a "jumping" derivative while still fulfilling the D3D semantics. See patch 1 for a more detailed analysis. Please note that the extension is not yet shipping in the Vulkan spec and there may be some changes made to the extension text or the structures and enums it defines between now and when it ships. No one should ship code that implements or depends on this extension until it is released through Khronos in it's final form. The first patch of this series applies against the public master branch of the Vulkan spec and contains no NDA'd material. Unfortunately, due to the way the Khronos NDA and process works, I will not be able to provide updates between now and when the final version ships. --Jason Jason Ekstrand (3): vulkan: Add an extension to specify that derivative groups are quads vulkan: Import the XML and headers bits for VK_EXT_derivative_group_quad anv: Add support for VK_EXT_derivative_group_quad include/vulkan/vulkan_core.h | 13 +++++++++++++ src/intel/vulkan/anv_device.c | 8 ++++++++ src/intel/vulkan/anv_extensions.py | 1 + src/vulkan/registry/vk.xml | 13 ++++++++++--- 4 files changed, 32 insertions(+), 3 deletions(-) -- 2.19.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev