From 82fad3f25842a46a151fa10096e61305a7921a64 Mon Sep 17 00:00:00 2001 From: Ashish Chauhan Date: Fri, 27 Sep 2024 10:54:20 +0100 Subject: [PATCH] pvr: Enable PBE_FILTERABLE_F16 Signed-off-by: Ashish Chauhan Acked-by: Erik Faye-Lund Part-of: --- src/imagination/vulkan/pvr_formats.c | 6 ++++-- src/imagination/vulkan/pvr_formats.h | 3 ++- src/imagination/vulkan/pvr_pass.c | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/imagination/vulkan/pvr_formats.c b/src/imagination/vulkan/pvr_formats.c index 15995f86ed8..6d22fac23f8 100644 --- a/src/imagination/vulkan/pvr_formats.c +++ b/src/imagination/vulkan/pvr_formats.c @@ -1151,7 +1151,8 @@ unsupported: }; } -bool pvr_format_is_pbe_downscalable(VkFormat vk_format) +bool pvr_format_is_pbe_downscalable(const struct pvr_device_info *dev_info, + VkFormat vk_format) { if (vk_format_is_int(vk_format)) { /* PBE downscale behavior for integer formats does not match Vulkan @@ -1164,7 +1165,8 @@ bool pvr_format_is_pbe_downscalable(VkFormat vk_format) switch (pvr_get_pbe_packmode(vk_format)) { default: return true; - + case ROGUE_PBESTATE_PACKMODE_F16: + return PVR_HAS_FEATURE(dev_info, pbe_filterable_f16); case ROGUE_PBESTATE_PACKMODE_U16U16U16U16: case ROGUE_PBESTATE_PACKMODE_S16S16S16S16: case ROGUE_PBESTATE_PACKMODE_U32U32U32U32: diff --git a/src/imagination/vulkan/pvr_formats.h b/src/imagination/vulkan/pvr_formats.h index 1de6277dd88..079feb3567e 100644 --- a/src/imagination/vulkan/pvr_formats.h +++ b/src/imagination/vulkan/pvr_formats.h @@ -245,7 +245,8 @@ uint32_t pvr_get_tex_format_aspect(VkFormat vk_format, uint32_t pvr_get_pbe_packmode(VkFormat vk_format); uint32_t pvr_get_pbe_accum_format(VkFormat vk_format); uint32_t pvr_get_pbe_accum_format_size_in_bytes(VkFormat vk_format); -bool pvr_format_is_pbe_downscalable(VkFormat vk_format); +bool pvr_format_is_pbe_downscalable(const struct pvr_device_info *dev_info, + VkFormat vk_format); void pvr_get_hw_clear_color(VkFormat vk_format, VkClearColorValue value, diff --git a/src/imagination/vulkan/pvr_pass.c b/src/imagination/vulkan/pvr_pass.c index f329fc4d656..b69eede3908 100644 --- a/src/imagination/vulkan/pvr_pass.c +++ b/src/imagination/vulkan/pvr_pass.c @@ -493,7 +493,8 @@ VkResult pvr_CreateRenderPass2(VkDevice _device, attachment->sample_count = desc->samples; attachment->initial_layout = desc->initialLayout; attachment->is_pbe_downscalable = - pvr_format_is_pbe_downscalable(attachment->vk_format); + pvr_format_is_pbe_downscalable(&device->pdevice->dev_info, + attachment->vk_format); attachment->index = i; if (attachment->sample_count > pass->max_sample_count)