mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 13:30:12 +01:00
radv: advertise VK_EXT_shader_atomic_float
No hw support for float atomic add for buffer and (sparse) images. Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6000>
This commit is contained in:
parent
b8517e5ef9
commit
6c1108d25b
4 changed files with 23 additions and 1 deletions
|
|
@ -1340,6 +1340,24 @@ void radv_GetPhysicalDeviceFeatures2(
|
||||||
features->robustImageAccess = true;
|
features->robustImageAccess = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: {
|
||||||
|
VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *features =
|
||||||
|
(VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *)ext;
|
||||||
|
features->shaderBufferFloat32Atomics = true;
|
||||||
|
features->shaderBufferFloat32AtomicAdd = false;
|
||||||
|
features->shaderBufferFloat64Atomics = true;
|
||||||
|
features->shaderBufferFloat64AtomicAdd = false;
|
||||||
|
features->shaderSharedFloat32Atomics = true;
|
||||||
|
features->shaderSharedFloat32AtomicAdd = pdevice->rad_info.chip_class >= GFX8 &&
|
||||||
|
(!pdevice->use_llvm || LLVM_VERSION_MAJOR >= 10);
|
||||||
|
features->shaderSharedFloat64Atomics = true;
|
||||||
|
features->shaderSharedFloat64AtomicAdd = false;
|
||||||
|
features->shaderImageFloat32Atomics = true;
|
||||||
|
features->shaderImageFloat32AtomicAdd = false;
|
||||||
|
features->sparseImageFloat32Atomics = false;
|
||||||
|
features->sparseImageFloat32AtomicAdd = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -153,6 +153,7 @@ EXTENSIONS = [
|
||||||
Extension('VK_EXT_sample_locations', 1, 'device->rad_info.chip_class < GFX10'),
|
Extension('VK_EXT_sample_locations', 1, 'device->rad_info.chip_class < GFX10'),
|
||||||
Extension('VK_EXT_sampler_filter_minmax', 1, True),
|
Extension('VK_EXT_sampler_filter_minmax', 1, True),
|
||||||
Extension('VK_EXT_scalar_block_layout', 1, 'device->rad_info.chip_class >= GFX7'),
|
Extension('VK_EXT_scalar_block_layout', 1, 'device->rad_info.chip_class >= GFX7'),
|
||||||
|
Extension('VK_EXT_shader_atomic_float', 1, True),
|
||||||
Extension('VK_EXT_shader_demote_to_helper_invocation',1, 'LLVM_VERSION_MAJOR >= 9 || !device->use_llvm'),
|
Extension('VK_EXT_shader_demote_to_helper_invocation',1, 'LLVM_VERSION_MAJOR >= 9 || !device->use_llvm'),
|
||||||
Extension('VK_EXT_shader_viewport_index_layer', 1, True),
|
Extension('VK_EXT_shader_viewport_index_layer', 1, True),
|
||||||
Extension('VK_EXT_shader_stencil_export', 1, True),
|
Extension('VK_EXT_shader_stencil_export', 1, True),
|
||||||
|
|
|
||||||
|
|
@ -749,7 +749,9 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical
|
||||||
VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
|
VK_FORMAT_FEATURE_TRANSFER_DST_BIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (format == VK_FORMAT_R32_UINT || format == VK_FORMAT_R32_SINT) {
|
if (format == VK_FORMAT_R32_UINT ||
|
||||||
|
format == VK_FORMAT_R32_SINT ||
|
||||||
|
format == VK_FORMAT_R32_SFLOAT) {
|
||||||
buffer |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
|
buffer |= VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
|
||||||
linear |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
|
linear |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
|
||||||
tiled |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
|
tiled |= VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT;
|
||||||
|
|
|
||||||
|
|
@ -377,6 +377,7 @@ radv_shader_compile_to_nir(struct radv_device *device,
|
||||||
.draw_parameters = true,
|
.draw_parameters = true,
|
||||||
.float_controls = true,
|
.float_controls = true,
|
||||||
.float16 = device->physical_device->rad_info.has_packed_math_16bit,
|
.float16 = device->physical_device->rad_info.has_packed_math_16bit,
|
||||||
|
.float32_atomic_add = true,
|
||||||
.float64 = true,
|
.float64 = true,
|
||||||
.geometry_streams = true,
|
.geometry_streams = true,
|
||||||
.image_ms_array = true,
|
.image_ms_array = true,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue