From a758e95077ae48b4a72758c4b861cf6d3f283956 Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Tue, 5 Dec 2023 19:09:55 +0100 Subject: [PATCH] panfrost: Don't pass a panfrost_device to panfrost_format_supports_afbc() Pass the arch instead. While at it, make this helper a static inline function defined in pan_texture.h. Signed-off-by: Boris Brezillon Reviewed-by: Constantine Shablya Reviewed-by: Erik Faye-Lund Part-of: --- src/gallium/drivers/panfrost/pan_resource.c | 2 +- src/gallium/drivers/panfrost/pan_screen.c | 3 ++- src/panfrost/lib/pan_afbc.c | 9 --------- src/panfrost/lib/pan_texture.h | 11 ++++++++--- src/panfrost/vulkan/panvk_image.c | 2 +- 5 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_resource.c b/src/gallium/drivers/panfrost/pan_resource.c index 38f43cadf10..30f3ed26011 100644 --- a/src/gallium/drivers/panfrost/pan_resource.c +++ b/src/gallium/drivers/panfrost/pan_resource.c @@ -334,7 +334,7 @@ panfrost_should_afbc(struct panfrost_device *dev, return false; /* Only a small selection of formats are AFBC'able */ - if (!panfrost_format_supports_afbc(dev, fmt)) + if (!panfrost_format_supports_afbc(dev->arch, fmt)) return false; /* AFBC does not support layered (GLES3 style) multisampling. Use diff --git a/src/gallium/drivers/panfrost/pan_screen.c b/src/gallium/drivers/panfrost/pan_screen.c index 1a3497b1b88..200e7287d8f 100644 --- a/src/gallium/drivers/panfrost/pan_screen.c +++ b/src/gallium/drivers/panfrost/pan_screen.c @@ -616,7 +616,8 @@ panfrost_walk_dmabuf_modifiers(struct pipe_screen *screen, { /* Query AFBC status */ struct panfrost_device *dev = pan_device(screen); - bool afbc = dev->has_afbc && panfrost_format_supports_afbc(dev, format); + bool afbc = + dev->has_afbc && panfrost_format_supports_afbc(dev->arch, format); bool ytr = panfrost_afbc_can_ytr(format); bool tiled_afbc = panfrost_afbc_can_tile(dev); diff --git a/src/panfrost/lib/pan_afbc.c b/src/panfrost/lib/pan_afbc.c index f2b6f1482ea..9f56dbf88ac 100644 --- a/src/panfrost/lib/pan_afbc.c +++ b/src/panfrost/lib/pan_afbc.c @@ -163,15 +163,6 @@ panfrost_afbc_format(unsigned arch, enum pipe_format format) /* clang-format on */ } -/* A format may be compressed as AFBC if it has an AFBC internal format */ - -bool -panfrost_format_supports_afbc(const struct panfrost_device *dev, - enum pipe_format format) -{ - return panfrost_afbc_format(dev->arch, format) != PAN_AFBC_MODE_INVALID; -} - /* The lossless colour transform (AFBC_FORMAT_MOD_YTR) requires RGB. */ bool diff --git a/src/panfrost/lib/pan_texture.h b/src/panfrost/lib/pan_texture.h index 81a49748af0..6998d368ba4 100644 --- a/src/panfrost/lib/pan_texture.h +++ b/src/panfrost/lib/pan_texture.h @@ -224,11 +224,16 @@ enum pan_afbc_mode { PAN_AFBC_MODE_INVALID }; -bool panfrost_format_supports_afbc(const struct panfrost_device *dev, - enum pipe_format format); - enum pan_afbc_mode panfrost_afbc_format(unsigned arch, enum pipe_format format); +/* A format may be compressed as AFBC if it has an AFBC internal format */ + +static inline bool +panfrost_format_supports_afbc(unsigned arch, enum pipe_format format) +{ + return panfrost_afbc_format(arch, format) != PAN_AFBC_MODE_INVALID; +} + #define AFBC_HEADER_BYTES_PER_TILE 16 bool panfrost_afbc_can_ytr(enum pipe_format format); diff --git a/src/panfrost/vulkan/panvk_image.c b/src/panfrost/vulkan/panvk_image.c index 938eadf8918..9fc5d56863b 100644 --- a/src/panfrost/vulkan/panvk_image.c +++ b/src/panfrost/vulkan/panvk_image.c @@ -166,7 +166,7 @@ panvk_image_select_mod(VkDevice _device, const VkImageCreateInfo *pCreateInfo, return DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED; /* Only a small selection of formats are AFBC'able */ - if (!panfrost_format_supports_afbc(pdev, fmt)) + if (!panfrost_format_supports_afbc(pdev->arch, fmt)) return DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED; /* 3D AFBC is only supported on Bifrost v7+. It's supposed to