From 426cb025e7fd09d94713c84bc02ef7b9aaad3fa8 Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Tue, 3 Jan 2023 14:17:48 -0800 Subject: [PATCH] zink: Only expose PIPE_CAP_IMAGE_ATOMIC_FLOAT_ADD if we can actually add. Drivers may expose the ext without the add capability, if they can load/store/exchange. Fixes: c32f046ab669 ("zink: export PIPE_CAP_IMAGE_ATOMIC_FLOAT_ADD") Part-of: --- src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt | 2 -- src/gallium/drivers/zink/ci/zink-radv-fails.txt | 3 --- src/gallium/drivers/zink/zink_screen.c | 4 +++- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt b/src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt index 36107f0c073..76901167290 100644 --- a/src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-anv-tgl-fails.txt @@ -896,8 +896,6 @@ spec@khr_texture_compression_astc@sliced-3d-miptree-gles srgb-fp,Fail spec@khr_texture_compression_astc@sliced-3d-miptree-gles srgb-fp@sRGB decode full precision,Fail # https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20506 -spec@nv_shader_atomic_float@execution@shared-atomicadd-float,Crash -spec@nv_shader_atomic_float@execution@ssbo-atomicadd-float,Crash spec@nv_shader_atomic_int64@execution@shared-atomicadd-int,Fail spec@nv_shader_atomic_int64@execution@shared-atomicand-int,Fail spec@nv_shader_atomic_int64@execution@shared-atomicand-uint,Fail diff --git a/src/gallium/drivers/zink/ci/zink-radv-fails.txt b/src/gallium/drivers/zink/ci/zink-radv-fails.txt index 909db7ef170..d1e7becb1d3 100644 --- a/src/gallium/drivers/zink/ci/zink-radv-fails.txt +++ b/src/gallium/drivers/zink/ci/zink-radv-fails.txt @@ -473,9 +473,6 @@ spec@!opengl 1.1@read-front samples=6,Fail spec@!opengl 1.1@read-front samples=8,Fail spec@ext_framebuffer_blit@fbo-blit-check-limits,Fail -# Zink bug (RADV doesn't support shaderBufferFloat64AtomicAdd) -spec@nv_shader_atomic_float@execution@ssbo-atomicadd-float,Crash - # ACO bugs (pass with LLVM) spec@nv_shader_atomic_int64@execution@shared-atomicmax-int,Crash spec@nv_shader_atomic_int64@execution@shared-atomicmax-uint,Crash diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 8b3643ff457..48489a1fbff 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -595,7 +595,9 @@ zink_get_param(struct pipe_screen *pscreen, enum pipe_cap param) return screen->info.feats.features.multiDrawIndirect; case PIPE_CAP_IMAGE_ATOMIC_FLOAT_ADD: - return screen->info.have_EXT_shader_atomic_float; + return (screen->info.have_EXT_shader_atomic_float && + screen->info.atomic_float_feats.shaderSharedFloat32AtomicAdd && + screen->info.atomic_float_feats.shaderBufferFloat32AtomicAdd); case PIPE_CAP_SHADER_ATOMIC_INT64: return screen->info.have_KHR_shader_atomic_int64;