Flutter Engine
 
Loading...
Searching...
No Matches
flutter::testing::EmbedderTestBackingStoreProducerMetal Class Reference

#include <embedder_test_backingstore_producer_metal.h>

Inheritance diagram for flutter::testing::EmbedderTestBackingStoreProducerMetal:
flutter::testing::EmbedderTestBackingStoreProducer

Public Member Functions

 EmbedderTestBackingStoreProducerMetal (sk_sp< GrDirectContext > context, RenderTargetType type)
 
virtual ~EmbedderTestBackingStoreProducerMetal ()
 
bool Create (const FlutterBackingStoreConfig *config, FlutterBackingStore *backing_store_out) override
 
sk_sp< SkSurface > GetSurface (const FlutterBackingStore *backing_store) const override
 
sk_sp< SkImage > MakeImageSnapshot (const FlutterBackingStore *backing_store) const override
 
- Public Member Functions inherited from flutter::testing::EmbedderTestBackingStoreProducer
 EmbedderTestBackingStoreProducer (sk_sp< GrDirectContext > context, RenderTargetType type)
 
virtual ~EmbedderTestBackingStoreProducer ()
 

Additional Inherited Members

- Public Types inherited from flutter::testing::EmbedderTestBackingStoreProducer
enum class  RenderTargetType {
  kSoftwareBuffer ,
  kSoftwareBuffer2 ,
  kOpenGLFramebuffer ,
  kOpenGLTexture ,
  kOpenGLSurface ,
  kMetalTexture ,
  kVulkanImage
}
 
- Protected Member Functions inherited from flutter::testing::EmbedderTestBackingStoreProducer
 FML_DISALLOW_COPY_AND_ASSIGN (EmbedderTestBackingStoreProducer)
 
- Protected Attributes inherited from flutter::testing::EmbedderTestBackingStoreProducer
sk_sp< GrDirectContext > context_
 
RenderTargetType type_
 

Detailed Description

Definition at line 13 of file embedder_test_backingstore_producer_metal.h.

Constructor & Destructor Documentation

◆ EmbedderTestBackingStoreProducerMetal()

flutter::testing::EmbedderTestBackingStoreProducerMetal::EmbedderTestBackingStoreProducerMetal ( sk_sp< GrDirectContext >  context,
RenderTargetType  type 
)

Definition at line 18 of file embedder_test_backingstore_producer_metal.mm.

21 : EmbedderTestBackingStoreProducer(std::move(context), type),
22 test_metal_context_(std::make_unique<TestMetalContext>()) {}
GLenum type
EmbedderTestBackingStoreProducer(sk_sp< GrDirectContext > context, RenderTargetType type)

◆ ~EmbedderTestBackingStoreProducerMetal()

flutter::testing::EmbedderTestBackingStoreProducerMetal::~EmbedderTestBackingStoreProducerMetal ( )
virtualdefault

Member Function Documentation

◆ Create()

bool flutter::testing::EmbedderTestBackingStoreProducerMetal::Create ( const FlutterBackingStoreConfig config,
FlutterBackingStore backing_store_out 
)
overridevirtual

Implements flutter::testing::EmbedderTestBackingStoreProducer.

Definition at line 26 of file embedder_test_backingstore_producer_metal.mm.

27 {
28 // TODO(gw280): Use SkSurfaces::RenderTarget instead of generating our
29 // own MTLTexture and wrapping it.
30 auto surface_size = DlISize(config->size.width, config->size.height);
31 auto texture_info = test_metal_context_->CreateMetalTexture(surface_size);
32
33 GrMtlTextureInfo skia_texture_info;
34 skia_texture_info.fTexture.reset(SkCFSafeRetain(texture_info.texture));
35 GrBackendTexture backend_texture = GrBackendTextures::MakeMtl(
36 surface_size.width, surface_size.height, skgpu::Mipmapped::kNo, skia_texture_info);
37
38 sk_sp<SkSurface> surface =
39 SkSurfaces::WrapBackendTexture(context_.get(), backend_texture, kTopLeft_GrSurfaceOrigin, 1,
40 kBGRA_8888_SkColorType, nullptr, nullptr);
41
42 if (!surface) {
43 FML_LOG(ERROR) << "Could not create Skia surface from a Metal texture.";
44 return false;
45 }
46
47 backing_store_out->type = kFlutterBackingStoreTypeMetal;
48 backing_store_out->user_data = surface.get();
49 backing_store_out->metal.texture.texture = texture_info.texture;
50 // The balancing unref is in the destruction callback.
51 surface->ref();
52 backing_store_out->metal.struct_size = sizeof(FlutterMetalBackingStore);
53 backing_store_out->metal.texture.user_data = surface.get();
54 backing_store_out->metal.texture.destruction_callback = [](void* user_data) {
55 reinterpret_cast<SkSurface*>(user_data)->unref();
56 };
57
58 return true;
59}
@ kFlutterBackingStoreTypeMetal
Specifies a Metal backing store. This is backed by a Metal texture.
Definition embedder.h:2055
VkSurfaceKHR surface
Definition main.cc:65
#define FML_LOG(severity)
Definition logging.h:101
impeller::ISize32 DlISize
FlutterSize size
The size of the render target the engine expects to render into.
Definition embedder.h:2093
FlutterMetalBackingStore metal
Definition embedder.h:2083
FlutterBackingStoreType type
Specifies the type of backing store.
Definition embedder.h:2071
size_t struct_size
The size of this struct. Must be sizeof(FlutterMetalBackingStore).
Definition embedder.h:1969
FlutterMetalTexture texture
Definition embedder.h:1974
FlutterMetalTextureHandle texture
Definition embedder.h:865
VoidCallback destruction_callback
Definition embedder.h:872
double height
Definition embedder.h:629
double width
Definition embedder.h:628

References flutter::testing::EmbedderTestBackingStoreProducer::context_, FlutterMetalTexture::destruction_callback, FML_LOG, FlutterSize::height, kFlutterBackingStoreTypeMetal, FlutterBackingStore::metal, FlutterBackingStoreConfig::size, FlutterMetalBackingStore::struct_size, surface, FlutterMetalTexture::texture, FlutterMetalBackingStore::texture, FlutterBackingStore::type, user_data, FlutterMetalTexture::user_data, FlutterBackingStore::user_data, and FlutterSize::width.

◆ GetSurface()

sk_sp< SkSurface > flutter::testing::EmbedderTestBackingStoreProducerMetal::GetSurface ( const FlutterBackingStore backing_store) const
overridevirtual

Implements flutter::testing::EmbedderTestBackingStoreProducer.

Definition at line 61 of file embedder_test_backingstore_producer_metal.mm.

62 {
63 FML_LOG(FATAL) << "Unimplemented.";
64 std::terminate();
65}

References FML_LOG.

◆ MakeImageSnapshot()

sk_sp< SkImage > flutter::testing::EmbedderTestBackingStoreProducerMetal::MakeImageSnapshot ( const FlutterBackingStore backing_store) const
overridevirtual

Implements flutter::testing::EmbedderTestBackingStoreProducer.

Definition at line 67 of file embedder_test_backingstore_producer_metal.mm.

68 {
69 FML_LOG(FATAL) << "Unimplemented.";
70 std::terminate();
71}

References FML_LOG.


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