Flutter Impeller
impeller::DeviceBuffer Class Referenceabstract

#include <device_buffer.h>

Inheritance diagram for impeller::DeviceBuffer:
impeller::Buffer impeller::DeviceBufferGLES impeller::DeviceBufferMTL impeller::DeviceBufferVK

Public Member Functions

virtual ~DeviceBuffer ()
 
bool CopyHostBuffer (const uint8_t *source, Range source_range, size_t offset=0u)
 
virtual bool SetLabel (const std::string &label)=0
 
virtual bool SetLabel (const std::string &label, Range range)=0
 
BufferView AsBufferView () const
 
virtual std::shared_ptr< TextureAsTexture (Allocator &allocator, const TextureDescriptor &descriptor, uint16_t row_bytes) const
 
std::shared_ptr< const DeviceBufferGetDeviceBuffer (Allocator &allocator) const
 
const DeviceBufferDescriptorGetDeviceBufferDescriptor () const
 
virtual uint8_t * OnGetContents () const =0
 
- Public Member Functions inherited from impeller::Buffer
virtual ~Buffer ()
 

Protected Member Functions

 DeviceBuffer (DeviceBufferDescriptor desc)
 
virtual bool OnCopyHostBuffer (const uint8_t *source, Range source_range, size_t offset)=0
 

Protected Attributes

const DeviceBufferDescriptor desc_
 

Detailed Description

Definition at line 20 of file device_buffer.h.

Constructor & Destructor Documentation

◆ ~DeviceBuffer()

impeller::DeviceBuffer::~DeviceBuffer ( )
virtualdefault

◆ DeviceBuffer()

impeller::DeviceBuffer::DeviceBuffer ( DeviceBufferDescriptor  desc)
explicitprotected

Definition at line 9 of file device_buffer.cc.

9 : desc_(desc) {}

Member Function Documentation

◆ AsBufferView()

BufferView impeller::DeviceBuffer::AsBufferView ( ) const

Definition at line 19 of file device_buffer.cc.

19  {
20  BufferView view;
21  view.buffer = shared_from_this();
22  view.contents = OnGetContents();
23  view.range = {0u, desc_.size};
24  return view;
25 }

References impeller::BufferView::buffer, impeller::BufferView::contents, desc_, OnGetContents(), impeller::BufferView::range, and impeller::DeviceBufferDescriptor::size.

◆ AsTexture()

std::shared_ptr< Texture > impeller::DeviceBuffer::AsTexture ( Allocator allocator,
const TextureDescriptor descriptor,
uint16_t  row_bytes 
) const
virtual

Definition at line 27 of file device_buffer.cc.

30  {
31  auto texture = allocator.CreateTexture(descriptor);
32  if (!texture) {
33  return nullptr;
34  }
35  if (!texture->SetContents(std::make_shared<fml::NonOwnedMapping>(
36  OnGetContents(), desc_.size))) {
37  return nullptr;
38  }
39  return texture;
40 }

References impeller::Allocator::CreateTexture(), desc_, OnGetContents(), and impeller::DeviceBufferDescriptor::size.

◆ CopyHostBuffer()

bool impeller::DeviceBuffer::CopyHostBuffer ( const uint8_t *  source,
Range  source_range,
size_t  offset = 0u 
)

Definition at line 46 of file device_buffer.cc.

48  {
49  if (source_range.length == 0u) {
50  // Nothing to copy. Bail.
51  return true;
52  }
53 
54  if (source == nullptr) {
55  // Attempted to copy data from a null buffer.
56  return false;
57  }
58 
60  // One of the storage modes where a transfer queue must be used.
61  return false;
62  }
63 
64  if (offset + source_range.length > desc_.size) {
65  // Out of bounds of this buffer.
66  return false;
67  }
68 
69  return OnCopyHostBuffer(source, source_range, offset);
70 }

References desc_, impeller::kHostVisible, impeller::Range::length, OnCopyHostBuffer(), impeller::DeviceBufferDescriptor::size, and impeller::DeviceBufferDescriptor::storage_mode.

◆ GetDeviceBuffer()

std::shared_ptr< const DeviceBuffer > impeller::DeviceBuffer::GetDeviceBuffer ( Allocator allocator) const
virtual

Implements impeller::Buffer.

Definition at line 14 of file device_buffer.cc.

15  {
16  return shared_from_this();
17 }

◆ GetDeviceBufferDescriptor()

const DeviceBufferDescriptor & impeller::DeviceBuffer::GetDeviceBufferDescriptor ( ) const

Definition at line 42 of file device_buffer.cc.

42  {
43  return desc_;
44 }

References desc_.

◆ OnCopyHostBuffer()

virtual bool impeller::DeviceBuffer::OnCopyHostBuffer ( const uint8_t *  source,
Range  source_range,
size_t  offset 
)
protectedpure virtual

Referenced by CopyHostBuffer().

◆ OnGetContents()

virtual uint8_t* impeller::DeviceBuffer::OnGetContents ( ) const
pure virtual

Referenced by AsBufferView(), and AsTexture().

◆ SetLabel() [1/2]

virtual bool impeller::DeviceBuffer::SetLabel ( const std::string &  label)
pure virtual

◆ SetLabel() [2/2]

virtual bool impeller::DeviceBuffer::SetLabel ( const std::string &  label,
Range  range 
)
pure virtual

Member Data Documentation

◆ desc_

const DeviceBufferDescriptor impeller::DeviceBuffer::desc_
protected

Definition at line 49 of file device_buffer.h.

Referenced by AsBufferView(), AsTexture(), CopyHostBuffer(), and GetDeviceBufferDescriptor().


The documentation for this class was generated from the following files:
impeller::DeviceBuffer::OnGetContents
virtual uint8_t * OnGetContents() const =0
impeller::DeviceBufferDescriptor::size
size_t size
Definition: device_buffer_descriptor.h:15
impeller::StorageMode::kHostVisible
@ kHostVisible
impeller::DeviceBufferDescriptor::storage_mode
StorageMode storage_mode
Definition: device_buffer_descriptor.h:14
impeller::DeviceBuffer::desc_
const DeviceBufferDescriptor desc_
Definition: device_buffer.h:49
impeller::DeviceBuffer::OnCopyHostBuffer
virtual bool OnCopyHostBuffer(const uint8_t *source, Range source_range, size_t offset)=0