diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index e37c776f14e..6baf64f46e7 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -1708,7 +1708,7 @@ void anv_GetPhysicalDeviceFeatures2( case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: { VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *features = (void *)ext; features->shaderBufferFloat32Atomics = true; - features->shaderBufferFloat32AtomicAdd = false; + features->shaderBufferFloat32AtomicAdd = pdevice->info.has_lsc; features->shaderBufferFloat64Atomics = false; features->shaderBufferFloat64AtomicAdd = false; features->shaderSharedFloat32Atomics = true; diff --git a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c index efaf00a5df8..8c342235202 100644 --- a/src/intel/vulkan/anv_nir_apply_pipeline_layout.c +++ b/src/intel/vulkan/anv_nir_apply_pipeline_layout.c @@ -143,6 +143,7 @@ get_used_bindings(UNUSED nir_builder *_b, nir_instr *instr, void *_state) case nir_intrinsic_image_deref_atomic_xor: case nir_intrinsic_image_deref_atomic_exchange: case nir_intrinsic_image_deref_atomic_comp_swap: + case nir_intrinsic_image_deref_atomic_fadd: case nir_intrinsic_image_deref_size: case nir_intrinsic_image_deref_samples: case nir_intrinsic_image_deref_load_param_intel: @@ -819,6 +820,7 @@ lower_direct_buffer_instr(nir_builder *b, nir_instr *instr, void *_state) case nir_intrinsic_deref_atomic_xor: case nir_intrinsic_deref_atomic_exchange: case nir_intrinsic_deref_atomic_comp_swap: + case nir_intrinsic_deref_atomic_fadd: case nir_intrinsic_deref_atomic_fmin: case nir_intrinsic_deref_atomic_fmax: case nir_intrinsic_deref_atomic_fcomp_swap: @@ -1350,6 +1352,7 @@ apply_pipeline_layout(nir_builder *b, nir_instr *instr, void *_state) case nir_intrinsic_image_deref_atomic_xor: case nir_intrinsic_image_deref_atomic_exchange: case nir_intrinsic_image_deref_atomic_comp_swap: + case nir_intrinsic_image_deref_atomic_fadd: case nir_intrinsic_image_deref_size: case nir_intrinsic_image_deref_samples: case nir_intrinsic_image_deref_load_param_intel: diff --git a/src/intel/vulkan/anv_pipeline.c b/src/intel/vulkan/anv_pipeline.c index d56db49ba52..70eaa0eab37 100644 --- a/src/intel/vulkan/anv_pipeline.c +++ b/src/intel/vulkan/anv_pipeline.c @@ -112,6 +112,7 @@ anv_shader_compile_to_nir(struct anv_device *device, .device_group = true, .draw_parameters = true, .float16 = pdevice->info.ver >= 8, + .float32_atomic_add = pdevice->info.has_lsc, .float32_atomic_min_max = pdevice->info.ver >= 9, .float64 = pdevice->info.ver >= 8, .fragment_shader_sample_interlock = pdevice->info.ver >= 9,