mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-04 08:20:44 +02:00
panvk: Advertise VK_EXT_shader_atomic_float
Expose float32 atomic exchange support for buffer, shared, and image operations on all architectures. The existing axchg instruction is type-agnostic, so no compiler changes are needed. Image atomics are already lowered to global atomics via nir_lower_image_atomics_to_global. Also add R32_FLOAT to the STORAGE_IMAGE_ATOMIC format feature flag so image atomic operations are accepted for r32f images. Signed-off-by: Christian Gmeiner <cgmeiner@igalia.com> Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40506>
This commit is contained in:
parent
245d54397d
commit
32ca98a26e
4 changed files with 19 additions and 2 deletions
|
|
@ -672,7 +672,7 @@ Khronos extensions that are not part of any Vulkan version:
|
|||
VK_EXT_rasterization_order_attachment_access DONE (lvp, tu, vn)
|
||||
VK_EXT_robustness2 DONE (anv, hasvk, hk, lvp, nvk, panvk/v10+, pvr, radv, tu, v3dv, vn)
|
||||
VK_EXT_sample_locations DONE (anv, hasvk, hk, nvk, radv, tu/a650+, vn, lavapipe)
|
||||
VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, radv, tu, vn)
|
||||
VK_EXT_shader_atomic_float DONE (anv, hasvk, lvp, panvk, radv, tu, vn)
|
||||
VK_EXT_shader_atomic_float2 DONE (anv, lvp, radv, vn)
|
||||
VK_EXT_shader_float8 DONE (radv/gfx12+, vn)
|
||||
VK_EXT_shader_image_atomic_int64 DONE (anv, lvp, nvk, radv, vn)
|
||||
|
|
|
|||
|
|
@ -36,3 +36,4 @@ VK_EXT_shader_stencil_export on panvk
|
|||
VK_EXT_map_memory_placed on panvk
|
||||
VK_EXT_conditional_rendering on panvk
|
||||
VK_{KHR,EXT}_{surface,swapchain}_maintenance1 on panvk
|
||||
VK_EXT_shader_atomic_float on panvk
|
||||
|
|
|
|||
|
|
@ -798,7 +798,8 @@ get_image_plane_format_features(struct panvk_physical_device *physical_device,
|
|||
features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT |
|
||||
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT |
|
||||
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT;
|
||||
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
|
||||
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT ||
|
||||
pfmt == PIPE_FORMAT_R32_FLOAT)
|
||||
features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -188,6 +188,7 @@ panvk_per_arch(get_physical_device_extensions)(
|
|||
.EXT_sampler_filter_minmax = PAN_ARCH >= 10,
|
||||
.EXT_scalar_block_layout = true,
|
||||
.EXT_separate_stencil_usage = true,
|
||||
.EXT_shader_atomic_float = true,
|
||||
.EXT_shader_demote_to_helper_invocation = true,
|
||||
.EXT_shader_module_identifier = true,
|
||||
.EXT_shader_replicated_composites = true,
|
||||
|
|
@ -561,6 +562,20 @@ panvk_per_arch(get_physical_device_features)(
|
|||
/* VK_EXT_shader_replicated_composites */
|
||||
.shaderReplicatedComposites = true,
|
||||
|
||||
/* VK_EXT_shader_atomic_float */
|
||||
.shaderBufferFloat32Atomics = true,
|
||||
.shaderBufferFloat32AtomicAdd = false,
|
||||
.shaderBufferFloat64Atomics = false,
|
||||
.shaderBufferFloat64AtomicAdd = false,
|
||||
.shaderSharedFloat32Atomics = true,
|
||||
.shaderSharedFloat32AtomicAdd = false,
|
||||
.shaderSharedFloat64Atomics = false,
|
||||
.shaderSharedFloat64AtomicAdd = false,
|
||||
.shaderImageFloat32Atomics = true,
|
||||
.shaderImageFloat32AtomicAdd = false,
|
||||
.sparseImageFloat32Atomics = has_sparse,
|
||||
.sparseImageFloat32AtomicAdd = false,
|
||||
|
||||
/* VK_EXT_texel_buffer_alignment */
|
||||
.texelBufferAlignment = true,
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue