Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
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};
static DeviceBufferMTL & Cast(DeviceBuffer &base)
id< MTLBuffer > GetMTLBuffer() const
id< MTLTexture > GetMTLTexture() const
constexpr size_t BytesPerPixelForPixelFormat(PixelFormat format)
Definition formats.h:448
std::shared_ptr< Texture > destination
std::shared_ptr< const DeviceBuffer > buffer
Definition buffer_view.h:16
size_t offset
Definition range.h:15

◆ 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}

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