radv: implement VK_KHR_shader_float_controls
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 14 Oct 2019 09:27:32 +0000 (11:27 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 18 Oct 2019 14:55:58 +0000 (16:55 +0200)
commit7c50214aab0b590059fea15e4b7550cfa99855c2
treefabebac160fea7a5b9daf582a47490a5aa972318
parent2c2aaf275c1edba38c552ac74de4d46bb2ebfbe8
radv: implement VK_KHR_shader_float_controls

This exposes what's required for DX and this is what we already
configure. The driver flushes denorms for FP32 and preserves them
for FP16/FP64. Note that we can't allow both preserving and
flushing denorms because this won't work for merged shaders. This
will require LLVM to update the float mode register to make it work.

Only enabled on GFX8+ with the LLVM path because it's untested on
previous chips and ACO doesn't support it.

This extension is required for SPIRV 1.4.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
docs/relnotes/new_features.txt
src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_extensions.py
src/amd/vulkan/radv_nir_to_llvm.c
src/amd/vulkan/radv_shader.c
src/amd/vulkan/radv_shader.h
src/amd/vulkan/radv_shader_info.c