Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 5b41b02

Browse files
authored
[Impeller] Use type safe masks for HardwareBufferUsage. (#52008)
These were added to //impeller/base/mask.h recently. No change in functionality. Removes a bunch of casts.
1 parent cee489a commit 5b41b02

File tree

2 files changed

+18
-16
lines changed

2 files changed

+18
-16
lines changed

impeller/toolkit/android/hardware_buffer.cc

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,13 @@ static AHardwareBuffer_Desc ToAHardwareBufferDesc(
2424
ahb_desc.height = desc.size.height;
2525
ahb_desc.format = ToAHardwareBufferFormat(desc.format);
2626
ahb_desc.layers = 1u;
27-
if (desc.usage & static_cast<HardwareBufferUsage>(
28-
HardwareBufferUsageFlags::kFrameBufferAttachment)) {
27+
if (desc.usage & HardwareBufferUsageFlags::kFrameBufferAttachment) {
2928
ahb_desc.usage |= AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER;
3029
}
31-
if (desc.usage & static_cast<HardwareBufferUsage>(
32-
HardwareBufferUsageFlags::kCompositorOverlay)) {
30+
if (desc.usage & HardwareBufferUsageFlags::kCompositorOverlay) {
3331
ahb_desc.usage |= AHARDWAREBUFFER_USAGE_COMPOSER_OVERLAY;
3432
}
35-
if (desc.usage & static_cast<HardwareBufferUsage>(
36-
HardwareBufferUsageFlags::kSampledImage)) {
33+
if (desc.usage & HardwareBufferUsageFlags::kSampledImage) {
3734
ahb_desc.usage |= AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE;
3835
}
3936
return ahb_desc;
@@ -80,12 +77,9 @@ HardwareBufferDescriptor HardwareBufferDescriptor::MakeForSwapchainImage(
8077
desc.format = HardwareBufferFormat::kR8G8B8A8UNormInt;
8178
// Zero sized hardware buffers cannot be allocated.
8279
desc.size = size.Max(ISize{1u, 1u});
83-
desc.usage =
84-
static_cast<HardwareBufferUsage>(
85-
HardwareBufferUsageFlags::kFrameBufferAttachment) |
86-
static_cast<HardwareBufferUsage>(
87-
HardwareBufferUsageFlags::kCompositorOverlay) |
88-
static_cast<HardwareBufferUsage>(HardwareBufferUsageFlags::kSampledImage);
80+
desc.usage = HardwareBufferUsageFlags::kFrameBufferAttachment |
81+
HardwareBufferUsageFlags::kCompositorOverlay |
82+
HardwareBufferUsageFlags::kSampledImage;
8983
return desc;
9084
}
9185

impeller/toolkit/android/hardware_buffer.h

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <optional>
99

1010
#include "flutter/fml/unique_object.h"
11+
#include "impeller/base/mask.h"
1112
#include "impeller/geometry/size.h"
1213
#include "impeller/toolkit/android/proc_table.h"
1314

@@ -26,21 +27,22 @@ enum class HardwareBufferFormat {
2627
kR8G8B8A8UNormInt,
2728
};
2829

29-
using HardwareBufferUsage = uint8_t;
30-
31-
enum class HardwareBufferUsageFlags : HardwareBufferUsage {
30+
enum class HardwareBufferUsageFlags {
31+
kNone = 0u,
3232
kFrameBufferAttachment = 1u << 0u,
3333
kCompositorOverlay = 1u << 1u,
3434
kSampledImage = 1u << 2u,
3535
};
3636

37+
using HardwareBufferUsage = Mask<HardwareBufferUsageFlags>;
38+
3739
//------------------------------------------------------------------------------
3840
/// @brief A descriptor use to specify hardware buffer allocations.
3941
///
4042
struct HardwareBufferDescriptor {
4143
HardwareBufferFormat format = HardwareBufferFormat::kR8G8B8A8UNormInt;
4244
ISize size;
43-
HardwareBufferUsage usage = 0u;
45+
HardwareBufferUsage usage = HardwareBufferUsageFlags::kNone;
4446

4547
//----------------------------------------------------------------------------
4648
/// @brief Create a descriptor of the given size that is suitable for use
@@ -146,4 +148,10 @@ class HardwareBuffer {
146148

147149
} // namespace impeller::android
148150

151+
namespace impeller {
152+
153+
IMPELLER_ENUM_IS_MASK(android::HardwareBufferUsageFlags);
154+
155+
} // namespace impeller
156+
149157
#endif // FLUTTER_IMPELLER_TOOLKIT_ANDROID_HARDWARE_BUFFER_H_

0 commit comments

Comments
 (0)