From df55ea8c51d85bf6654b93a186c2cd1c6de00011 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Mon, 16 Jun 2025 14:45:54 -0700 Subject: [PATCH] freedreno/a6xx: Don't use 2d blit path for f16 This seems to canonicalize NaNs when the source format is a 16-bit floating point format, likely because it implicitly converts to 32b. Fixes OpenCL-CTS: ./test_basic imagearraycopy ./test_basic imagearraycopy3d Signed-off-by: Rob Clark Part-of: --- src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc index 85c22c0dec3..3e0fc36070b 100644 --- a/src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc +++ b/src/gallium/drivers/freedreno/a6xx/fd6_blitter.cc @@ -186,6 +186,13 @@ can_do_blit(const struct pipe_blit_info *info) fail_if(!ok_format(info->src.format)); fail_if(!ok_format(info->dst.format)); + /* using the 2d path seems to canonicalize NaNs when the source format + * is a 16-bit floating point format, likely because it implicitly + * converts to 32 bits. + */ + fail_if(util_format_is_float16(info->src.format) && + util_format_is_float16(info->dst.format)); + assert(!util_format_is_compressed(info->src.format)); assert(!util_format_is_compressed(info->dst.format));