From f0ea812e86793a4d600b28bb6d9ec0143044a33d Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Tue, 9 Apr 2024 15:35:36 -0700 Subject: [PATCH] [Impeller] Use type safe masks for HardwareBufferUsage. These were added to //impeller/base/mask.h recently. No change in functionality. Removes a bunch of casts. --- impeller/toolkit/android/hardware_buffer.cc | 18 ++++++------------ impeller/toolkit/android/hardware_buffer.h | 16 ++++++++++++---- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/impeller/toolkit/android/hardware_buffer.cc b/impeller/toolkit/android/hardware_buffer.cc index a9ec935e95900..689974ab56350 100644 --- a/impeller/toolkit/android/hardware_buffer.cc +++ b/impeller/toolkit/android/hardware_buffer.cc @@ -24,16 +24,13 @@ static AHardwareBuffer_Desc ToAHardwareBufferDesc( ahb_desc.height = desc.size.height; ahb_desc.format = ToAHardwareBufferFormat(desc.format); ahb_desc.layers = 1u; - if (desc.usage & static_cast( - HardwareBufferUsageFlags::kFrameBufferAttachment)) { + if (desc.usage & HardwareBufferUsageFlags::kFrameBufferAttachment) { ahb_desc.usage |= AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER; } - if (desc.usage & static_cast( - HardwareBufferUsageFlags::kCompositorOverlay)) { + if (desc.usage & HardwareBufferUsageFlags::kCompositorOverlay) { ahb_desc.usage |= AHARDWAREBUFFER_USAGE_COMPOSER_OVERLAY; } - if (desc.usage & static_cast( - HardwareBufferUsageFlags::kSampledImage)) { + if (desc.usage & HardwareBufferUsageFlags::kSampledImage) { ahb_desc.usage |= AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE; } return ahb_desc; @@ -80,12 +77,9 @@ HardwareBufferDescriptor HardwareBufferDescriptor::MakeForSwapchainImage( desc.format = HardwareBufferFormat::kR8G8B8A8UNormInt; // Zero sized hardware buffers cannot be allocated. desc.size = size.Max(ISize{1u, 1u}); - desc.usage = - static_cast( - HardwareBufferUsageFlags::kFrameBufferAttachment) | - static_cast( - HardwareBufferUsageFlags::kCompositorOverlay) | - static_cast(HardwareBufferUsageFlags::kSampledImage); + desc.usage = HardwareBufferUsageFlags::kFrameBufferAttachment | + HardwareBufferUsageFlags::kCompositorOverlay | + HardwareBufferUsageFlags::kSampledImage; return desc; } diff --git a/impeller/toolkit/android/hardware_buffer.h b/impeller/toolkit/android/hardware_buffer.h index 02b99b1013674..4fe1a0089beb2 100644 --- a/impeller/toolkit/android/hardware_buffer.h +++ b/impeller/toolkit/android/hardware_buffer.h @@ -8,6 +8,7 @@ #include #include "flutter/fml/unique_object.h" +#include "impeller/base/mask.h" #include "impeller/geometry/size.h" #include "impeller/toolkit/android/proc_table.h" @@ -26,21 +27,22 @@ enum class HardwareBufferFormat { kR8G8B8A8UNormInt, }; -using HardwareBufferUsage = uint8_t; - -enum class HardwareBufferUsageFlags : HardwareBufferUsage { +enum class HardwareBufferUsageFlags { + kNone = 0u, kFrameBufferAttachment = 1u << 0u, kCompositorOverlay = 1u << 1u, kSampledImage = 1u << 2u, }; +using HardwareBufferUsage = Mask; + //------------------------------------------------------------------------------ /// @brief A descriptor use to specify hardware buffer allocations. /// struct HardwareBufferDescriptor { HardwareBufferFormat format = HardwareBufferFormat::kR8G8B8A8UNormInt; ISize size; - HardwareBufferUsage usage = 0u; + HardwareBufferUsage usage = HardwareBufferUsageFlags::kNone; //---------------------------------------------------------------------------- /// @brief Create a descriptor of the given size that is suitable for use @@ -146,4 +148,10 @@ class HardwareBuffer { } // namespace impeller::android +namespace impeller { + +IMPELLER_ENUM_IS_MASK(android::HardwareBufferUsageFlags); + +} // namespace impeller + #endif // FLUTTER_IMPELLER_TOOLKIT_ANDROID_HARDWARE_BUFFER_H_