Flutter Impeller
impeller::BlitCopyBufferToTextureCommandMTL Struct Reference

#include <blit_command_mtl.h>

Inheritance diagram for impeller::BlitCopyBufferToTextureCommandMTL:
impeller::BlitCopyBufferToTextureCommand impeller::BlitEncodeMTL impeller::BlitCommand impeller::BackendCast< BlitEncodeMTL, BlitCommand >

Public Member Functions

 ~BlitCopyBufferToTextureCommandMTL () override
 
std::string GetLabel () const override
 
bool Encode (id< MTLBlitCommandEncoder > encoder) const override
 
- Public Member Functions inherited from impeller::BlitEncodeMTL
virtual ~BlitEncodeMTL ()
 

Additional Inherited Members

- Static Public Member Functions inherited from impeller::BackendCast< BlitEncodeMTL, BlitCommand >
static BlitEncodeMTLCast (BlitCommand &base)
 
static const BlitEncodeMTLCast (const BlitCommand &base)
 
static BlitEncodeMTLCast (BlitCommand *base)
 
static const BlitEncodeMTLCast (const BlitCommand *base)
 
- Public Attributes inherited from impeller::BlitCopyBufferToTextureCommand
BufferView source
 
std::shared_ptr< Texturedestination
 
IPoint destination_origin
 
- Public Attributes inherited from impeller::BlitCommand
std::string label
 

Detailed Description

Definition at line 54 of file blit_command_mtl.h.

Constructor & Destructor Documentation

◆ ~BlitCopyBufferToTextureCommandMTL()

impeller::BlitCopyBufferToTextureCommandMTL::~BlitCopyBufferToTextureCommandMTL ( )
overridedefault

Member Function Documentation

◆ Encode()

bool impeller::BlitCopyBufferToTextureCommandMTL::Encode ( id< MTLBlitCommandEncoder >  encoder) const
overridevirtual

Implements impeller::BlitEncodeMTL.

Definition at line 104 of file blit_command_mtl.mm.

105  {
106  auto source_mtl = DeviceBufferMTL::Cast(*source.buffer).GetMTLBuffer();
107  if (!source_mtl) {
108  return false;
109  }
110 
111  auto destination_mtl = TextureMTL::Cast(*destination).GetMTLTexture();
112  if (!destination_mtl) {
113  return false;
114  }
115 
116  auto destination_origin_mtl =
117  MTLOriginMake(destination_origin.x, destination_origin.y, 0);
118 
119  auto image_size = destination->GetTextureDescriptor().size;
120  auto source_size_mtl = MTLSizeMake(image_size.width, image_size.height, 1);
121 
122  auto destination_bytes_per_pixel =
123  BytesPerPixelForPixelFormat(destination->GetTextureDescriptor().format);
124  auto destination_bytes_per_row =
125  source_size_mtl.width * destination_bytes_per_pixel;
126  auto destination_bytes_per_image =
127  source_size_mtl.height * destination_bytes_per_row;
128 
129  [encoder copyFromBuffer:source_mtl
130  sourceOffset:source.range.offset
131  sourceBytesPerRow:destination_bytes_per_row
132  sourceBytesPerImage:destination_bytes_per_image
133  sourceSize:source_size_mtl
134  toTexture:destination_mtl
135  destinationSlice:0
136  destinationLevel:0
137  destinationOrigin:destination_origin_mtl];
138 
139  return true;
140 };

References impeller::BufferView::buffer, impeller::BytesPerPixelForPixelFormat(), impeller::BackendCast< TextureMTL, Texture >::Cast(), impeller::BackendCast< DeviceBufferMTL, DeviceBuffer >::Cast(), impeller::BlitCopyBufferToTextureCommand::destination, impeller::BlitCopyBufferToTextureCommand::destination_origin, impeller::DeviceBufferMTL::GetMTLBuffer(), impeller::TextureMTL::GetMTLTexture(), impeller::Range::offset, impeller::BufferView::range, impeller::BlitCopyBufferToTextureCommand::source, impeller::TPoint< T >::x, and impeller::TPoint< T >::y.

◆ GetLabel()

std::string impeller::BlitCopyBufferToTextureCommandMTL::GetLabel ( ) const
overridevirtual

Implements impeller::BlitEncodeMTL.

Definition at line 100 of file blit_command_mtl.mm.

100  {
101  return label;
102 }

References impeller::BlitCommand::label.


The documentation for this struct was generated from the following files:
impeller::TPoint::y
Type y
Definition: point.h:31
impeller::Range::offset
size_t offset
Definition: range.h:15
impeller::TextureMTL::GetMTLTexture
id< MTLTexture > GetMTLTexture() const
Definition: texture_mtl.mm:116
impeller::BufferView::range
Range range
Definition: buffer_view.h:17
impeller::BlitCommand::label
std::string label
Definition: blit_command.h:15
impeller::BlitCopyBufferToTextureCommand::source
BufferView source
Definition: blit_command.h:33
impeller::BytesPerPixelForPixelFormat
constexpr size_t BytesPerPixelForPixelFormat(PixelFormat format)
Definition: formats.h:448
impeller::TPoint::x
Type x
Definition: point.h:30
impeller::DeviceBufferMTL::GetMTLBuffer
id< MTLBuffer > GetMTLBuffer() const
Definition: device_buffer_mtl.mm:21
impeller::BackendCast< DeviceBufferMTL, DeviceBuffer >::Cast
static DeviceBufferMTL & Cast(DeviceBuffer &base)
Definition: backend_cast.h:13
impeller::BufferView::buffer
std::shared_ptr< const DeviceBuffer > buffer
Definition: buffer_view.h:16
impeller::BlitCopyBufferToTextureCommand::destination_origin
IPoint destination_origin
Definition: blit_command.h:35
impeller::BlitCopyBufferToTextureCommand::destination
std::shared_ptr< Texture > destination
Definition: blit_command.h:34