radv: add VK_NV_compute_shader_derivates support

Only computeDerivativeGroupLinear is supported for now.

All crucible tests pass.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Samuel Pitoiset 2019-04-19 12:40:37 +02:00
parent a6ccc4c0c8
commit b3e3440c87
3 changed files with 9 additions and 0 deletions

View file

@ -927,6 +927,13 @@ void radv_GetPhysicalDeviceFeatures2(
features->descriptorBindingInlineUniformBlockUpdateAfterBind = true;
break;
}
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV: {
VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *features =
(VkPhysicalDeviceComputeShaderDerivativesFeaturesNV *)ext;
features->computeDerivativeGroupQuads = false;
features->computeDerivativeGroupLinear = true;
break;
}
default:
break;
}

View file

@ -133,6 +133,7 @@ EXTENSIONS = [
Extension('VK_AMD_shader_trinary_minmax', 1, True),
Extension('VK_GOOGLE_decorate_string', 1, True),
Extension('VK_GOOGLE_hlsl_functionality1', 1, True),
Extension('VK_NV_compute_shader_derivatives', 1, 'device->rad_info.chip_class >= VI'),
]
class VkVersion:

View file

@ -223,6 +223,7 @@ radv_shader_compile_to_nir(struct radv_device *device,
const struct spirv_to_nir_options spirv_options = {
.lower_ubo_ssbo_access_to_offsets = true,
.caps = {
.derivative_group = true,
.descriptor_array_dynamic_indexing = true,
.device_group = true,
.draw_parameters = true,