| Flutter Impeller |

Public Member Functions | Protected Member Functions | List of all members
impeller::Allocator Class Referenceabstract

An object that allocates device memory. More...

`#include <allocator.h>`

Inheritance diagram for impeller::Allocator:

## Public Member Functions
virtual | ~Allocator ()
bool | IsValid () const
std::shared_ptr< DeviceBuffer > | CreateBuffer (const DeviceBufferDescriptor &desc)
std::shared_ptr< Texture > | CreateTexture (const TextureDescriptor &desc)
virtual uint16_t | MinimumBytesPerRow (PixelFormat format) const
| Minimum value for `row_bytes` on a Texture. The row bytes parameter of that method must be aligned to this value. More...
std::shared_ptr< DeviceBuffer > | CreateBufferWithCopy (const uint8_t *buffer, size_t length)
std::shared_ptr< DeviceBuffer > | CreateBufferWithCopy (const fml::Mapping &mapping)
virtual ISize | GetMaxTextureSizeSupported () const =0
virtual void | DidAcquireSurfaceFrame ()
| Increment an internal frame used to cycle through a ring buffer of allocation pools. More...

## Protected Member Functions
| Allocator ()
virtual std::shared_ptr< DeviceBuffer > | OnCreateBuffer (const DeviceBufferDescriptor &desc)=0
virtual std::shared_ptr< Texture > | OnCreateTexture (const TextureDescriptor &desc)=0

## Detailed Description

An object that allocates device memory.

Definition at line 25 of file allocator.h.

## Constructor & Destructor Documentation

## ◆ ~Allocator()

impeller::Allocator::~Allocator | ( |  | ) |
| virtual default

## ◆ Allocator()

impeller::Allocator::Allocator | ( |  | ) |
| protected default

## Member Function Documentation

## ◆ CreateBuffer()

std::shared_ptr< DeviceBuffer > impeller::Allocator::CreateBuffer | ( | const DeviceBufferDescriptor & | desc | ) |

Definition at line 44 of file allocator.cc.

45 {
46 return OnCreateBuffer(desc);
47 }

References OnCreateBuffer().

Referenced by CreateBufferWithCopy(), and impeller::scene::Geometry::MakeFromFlatbuffer().

## ◆ CreateBufferWithCopy() [1/2]

std::shared_ptr< DeviceBuffer > impeller::Allocator::CreateBufferWithCopy | ( | const fml::Mapping & | mapping | ) |

Definition at line 39 of file allocator.cc.

40 {
41 return CreateBufferWithCopy(mapping.GetMapping(), mapping.GetSize());
42 }

References CreateBufferWithCopy().

## ◆ CreateBufferWithCopy() [2/2]

std::shared_ptr< DeviceBuffer > impeller::Allocator::CreateBufferWithCopy | ( | const uint8_t * | buffer,
|  | size_t | length
| ) |  |

Definition at line 18 of file allocator.cc.

20 {
21 DeviceBufferDescriptor desc;
22 desc.size = length;
23 desc.storage_mode = StorageMode::kHostVisible;
24 auto new_buffer = CreateBuffer(desc);
25
26 if (!new_buffer) {
27 return nullptr;
28 }
29
30 auto entire_range = Range{0, length};
31
32 if (!new_buffer->CopyHostBuffer(buffer, entire_range)) {
33 return nullptr;
34 }
35
36 return new_buffer;
37 }

References CreateBuffer(), impeller::kHostVisible, impeller::DeviceBufferDescriptor::size, and impeller::DeviceBufferDescriptor::storage_mode.

Referenced by CreateBufferWithCopy().

## ◆ CreateTexture()

std::shared_ptr< Texture > impeller::Allocator::CreateTexture | ( | const TextureDescriptor & | desc | ) |

Definition at line 49 of file allocator.cc.

50 {
51 const auto max_size = GetMaxTextureSizeSupported();
52 if (desc.size.width > max_size.width || desc.size.height > max_size.height) {
53 VALIDATION_LOG << "Requested texture size " << desc.size
54 << " exceeds maximum supported size of " << max_size;
55 return nullptr;
56 }
57
58 return OnCreateTexture(desc);
59 }

References GetMaxTextureSizeSupported(), impeller::TSize< T >::height, OnCreateTexture(), impeller::TextureDescriptor::size, VALIDATION_LOG, and impeller::TSize< T >::width.

Referenced by impeller::DeviceBuffer::AsTexture(), impeller::EntityPassTarget::Flip(), impeller::scene::Skin::GetJointsTexture(), impeller::scene::UnpackTextureFromFlatbuffer(), and impeller::WrapTextureWithRenderTarget().

## ◆ DidAcquireSurfaceFrame()

void impeller::Allocator::DidAcquireSurfaceFrame | ( |  | ) |
| virtual

Increment an internal frame used to cycle through a ring buffer of allocation pools.

Definition at line 61 of file allocator.cc.

61 {}

## ◆ GetMaxTextureSizeSupported()

virtual ISize impeller::Allocator::GetMaxTextureSizeSupported | ( |  | ) | const
| pure virtual

Implemented in impeller::testing::TestAllocator.

Referenced by CreateTexture().

## ◆ IsValid()

bool impeller::Allocator::IsValid | ( |  | ) | const

## ◆ MinimumBytesPerRow()

uint16_t impeller::Allocator::MinimumBytesPerRow | ( | PixelFormat | format | ) | const
| virtual

Minimum value for `row_bytes` on a Texture. The row bytes parameter of that method must be aligned to this value.

Definition at line 63 of file allocator.cc.

63 {
64 return BytesPerPixelForPixelFormat(format);
65 }

References impeller::BytesPerPixelForPixelFormat().

## ◆ OnCreateBuffer()

virtual std::shared_ptr<DeviceBuffer> impeller::Allocator::OnCreateBuffer | ( | const DeviceBufferDescriptor & | desc | ) |
| protected pure virtual

Implemented in impeller::testing::TestAllocator.

Referenced by CreateBuffer().

## ◆ OnCreateTexture()

virtual std::shared_ptr<Texture> impeller::Allocator::OnCreateTexture | ( | const TextureDescriptor & | desc | ) |
| protected pure virtual

Implemented in impeller::testing::TestAllocator.

Referenced by CreateTexture().

The documentation for this class was generated from the following files:

- impeller/core/allocator.h
- impeller/core/allocator.cc

impeller::Allocator::GetMaxTextureSizeSupported
virtual ISize GetMaxTextureSizeSupported() const =0
impeller::Allocator::OnCreateTexture
virtual std::shared_ptr< Texture > OnCreateTexture(const TextureDescriptor &desc)=0
impeller::StorageMode::kHostVisible
@ kHostVisible
impeller::Allocator::CreateBuffer
std::shared_ptr< DeviceBuffer > CreateBuffer(const DeviceBufferDescriptor &desc)
Definition: allocator.cc:44
impeller::BytesPerPixelForPixelFormat
constexpr size_t BytesPerPixelForPixelFormat(PixelFormat format)
Definition: formats.h:399
impeller::Allocator::CreateBufferWithCopy
std::shared_ptr< DeviceBuffer > CreateBufferWithCopy(const uint8_t *buffer, size_t length)
Definition: allocator.cc:18
VALIDATION_LOG
#define VALIDATION_LOG
Definition: validation.h:60
impeller::Allocator::OnCreateBuffer
virtual std::shared_ptr< DeviceBuffer > OnCreateBuffer(const DeviceBufferDescriptor &desc)=0