Flutter Impeller
impeller::android::HardwareBufferDescriptor Struct Reference

A descriptor use to specify hardware buffer allocations. More...

#include <hardware_buffer.h>

Public Member Functions

bool IsAllocatable () const
 If hardware buffers can be created using this descriptor. Allocatable descriptors may still cause failing allocations in case of resource exhaustion. More...
 
constexpr bool operator== (const HardwareBufferDescriptor &o) const
 
constexpr bool operator!= (const HardwareBufferDescriptor &o) const
 

Static Public Member Functions

static HardwareBufferDescriptor MakeForSwapchainImage (const ISize &size)
 Create a descriptor of the given size that is suitable for use as a swapchain image. More...
 

Public Attributes

HardwareBufferFormat format = HardwareBufferFormat::kR8G8B8A8UNormInt
 
ISize size
 
HardwareBufferUsage usage = HardwareBufferUsageFlags::kNone
 

Detailed Description

A descriptor use to specify hardware buffer allocations.

Definition at line 47 of file hardware_buffer.h.

Member Function Documentation

◆ IsAllocatable()

bool impeller::android::HardwareBufferDescriptor::IsAllocatable ( ) const

If hardware buffers can be created using this descriptor. Allocatable descriptors may still cause failing allocations in case of resource exhaustion.

Returns
true if allocatable (unless resource exhaustion).

Definition at line 52 of file hardware_buffer.cc.

52  {
53  const auto desc = ToAHardwareBufferDesc(*this);
54  return GetProcTable().AHardwareBuffer_isSupported(&desc) != 0u;
55 }

References impeller::android::GetProcTable(), and impeller::android::ToAHardwareBufferDesc().

Referenced by impeller::AHBTexturePoolVK::AHBTexturePoolVK(), and impeller::android::HardwareBuffer::HardwareBuffer().

◆ MakeForSwapchainImage()

HardwareBufferDescriptor impeller::android::HardwareBufferDescriptor::MakeForSwapchainImage ( const ISize size)
static

Create a descriptor of the given size that is suitable for use as a swapchain image.

Warning
Descriptors of zero size are not allocatable. The next best valid size is picked. So make sure to check the actual size of the descriptor after this call is made to determine the size of the allocated hardware buffer.
Parameters
[in]sizeThe size. See the restrictions about valid sizes above.
Returns
The hardware buffer descriptor.

Definition at line 87 of file hardware_buffer.cc.

88  {
89  HardwareBufferDescriptor desc;
91  // Zero sized hardware buffers cannot be allocated.
92  desc.size = size.Max(ISize{1u, 1u});
96  return desc;
97 }

References format, impeller::android::kCompositorOverlay, impeller::android::kFrameBufferAttachment, impeller::android::kR8G8B8A8UNormInt, impeller::android::kSampledImage, impeller::TSize< T >::Max(), size, and usage.

Referenced by impeller::android::testing::TEST().

◆ operator!=()

constexpr bool impeller::android::HardwareBufferDescriptor::operator!= ( const HardwareBufferDescriptor o) const
inlineconstexpr

Definition at line 80 of file hardware_buffer.h.

80  {
81  return !(*this == o);
82  }

◆ operator==()

constexpr bool impeller::android::HardwareBufferDescriptor::operator== ( const HardwareBufferDescriptor o) const
inlineconstexpr

Definition at line 76 of file hardware_buffer.h.

76  {
77  return format == o.format && size == o.size && usage == o.usage;
78  }

References format, size, and usage.

Member Data Documentation

◆ format

◆ size

◆ usage

HardwareBufferUsage impeller::android::HardwareBufferDescriptor::usage = HardwareBufferUsageFlags::kNone

The documentation for this struct was generated from the following files:
impeller::ISize
ISize64 ISize
Definition: size.h:140
impeller::android::ToAHardwareBufferDesc
static AHardwareBuffer_Desc ToAHardwareBufferDesc(const HardwareBufferDescriptor &desc)
Definition: hardware_buffer.cc:20
impeller::android::HardwareBufferUsageFlags::kSampledImage
@ kSampledImage
impeller::TSize::Max
constexpr TSize Max(const TSize &o) const
Definition: size.h:81
impeller::android::HardwareBufferFormat::kR8G8B8A8UNormInt
@ kR8G8B8A8UNormInt
impeller::android::HardwareBufferUsageFlags::kFrameBufferAttachment
@ kFrameBufferAttachment
impeller::android::HardwareBufferUsageFlags::kCompositorOverlay
@ kCompositorOverlay
impeller::android::HardwareBufferDescriptor::size
ISize size
Definition: hardware_buffer.h:49
impeller::android::HardwareBufferDescriptor::usage
HardwareBufferUsage usage
Definition: hardware_buffer.h:50
impeller::android::GetProcTable
const ProcTable & GetProcTable()
Definition: proc_table.cc:12
impeller::android::HardwareBufferDescriptor::format
HardwareBufferFormat format
Definition: hardware_buffer.h:48