Flutter Impeller
impeller::Texture Class Referenceabstract

#include <texture.h>

Inheritance diagram for impeller::Texture:
impeller::TextureGLES impeller::TextureMTL impeller::TextureVK

Public Member Functions

virtual ~Texture ()
 
virtual void SetLabel (std::string_view label)=0
 Label this resource for inspection in GPU debugging tools. More...
 
virtual void SetLabel (std::string_view label, std::string_view trailing)=0
 Label this resource for inspection in GPU debugging tools, with label and trailing will be concatenated together. More...
 
bool SetContents (const uint8_t *contents, size_t length, size_t slice=0, bool is_opaque=false)
 
bool SetContents (std::shared_ptr< const fml::Mapping > mapping, size_t slice=0, bool is_opaque=false)
 
virtual bool IsValid () const =0
 
virtual ISize GetSize () const =0
 
bool IsOpaque () const
 
size_t GetMipCount () const
 
const TextureDescriptorGetTextureDescriptor () const
 
void SetCoordinateSystem (TextureCoordinateSystem coordinate_system)
 
TextureCoordinateSystem GetCoordinateSystem () const
 
virtual Scalar GetYCoordScale () const
 
bool NeedsMipmapGeneration () const
 

Protected Member Functions

 Texture (TextureDescriptor desc)
 
virtual bool OnSetContents (const uint8_t *contents, size_t length, size_t slice)=0
 
virtual bool OnSetContents (std::shared_ptr< const fml::Mapping > mapping, size_t slice)=0
 

Protected Attributes

bool mipmap_generated_ = false
 

Detailed Description

Definition at line 17 of file texture.h.

Constructor & Destructor Documentation

◆ ~Texture()

impeller::Texture::~Texture ( )
virtualdefault

◆ Texture()

impeller::Texture::Texture ( TextureDescriptor  desc)
explicitprotected

Definition at line 11 of file texture.cc.

11 : desc_(desc) {}

Member Function Documentation

◆ GetCoordinateSystem()

TextureCoordinateSystem impeller::Texture::GetCoordinateSystem ( ) const

Definition at line 77 of file texture.cc.

77  {
78  return coordinate_system_;
79 }

◆ GetMipCount()

size_t impeller::Texture::GetMipCount ( ) const

Definition at line 53 of file texture.cc.

53  {
55 }
const TextureDescriptor & GetTextureDescriptor() const
Definition: texture.cc:57

References GetTextureDescriptor(), and impeller::TextureDescriptor::mip_count.

◆ GetSize()

virtual ISize impeller::Texture::GetSize ( ) const
pure virtual

Implemented in impeller::TextureVK.

◆ GetTextureDescriptor()

◆ GetYCoordScale()

Scalar impeller::Texture::GetYCoordScale ( ) const
virtual

Definition at line 81 of file texture.cc.

81  {
82  return 1.0;
83 }

◆ IsOpaque()

bool impeller::Texture::IsOpaque ( ) const

Definition at line 49 of file texture.cc.

49  {
50  return is_opaque_;
51 }

◆ IsValid()

virtual bool impeller::Texture::IsValid ( ) const
pure virtual

Implemented in impeller::TextureMTL, and impeller::TextureGLES.

Referenced by impeller::Bind().

◆ NeedsMipmapGeneration()

bool impeller::Texture::NeedsMipmapGeneration ( ) const

Returns true if mipmaps have never been generated. The contents of the mipmap may be out of date if the root texture has been modified and the mipmaps hasn't been regenerated.

Definition at line 85 of file texture.cc.

85  {
86  return !mipmap_generated_ && desc_.mip_count > 1;
87 }
bool mipmap_generated_
Definition: texture.h:79

References impeller::TextureDescriptor::mip_count, and mipmap_generated_.

Referenced by impeller::Bind(), and impeller::SamplerGLES::ConfigureBoundTexture().

◆ OnSetContents() [1/2]

virtual bool impeller::Texture::OnSetContents ( const uint8_t *  contents,
size_t  length,
size_t  slice 
)
protectedpure virtual

Referenced by SetContents().

◆ OnSetContents() [2/2]

virtual bool impeller::Texture::OnSetContents ( std::shared_ptr< const fml::Mapping >  mapping,
size_t  slice 
)
protectedpure virtual

◆ SetContents() [1/2]

bool impeller::Texture::SetContents ( const uint8_t *  contents,
size_t  length,
size_t  slice = 0,
bool  is_opaque = false 
)

Definition at line 15 of file texture.cc.

18  {
19  if (!IsSliceValid(slice)) {
20  VALIDATION_LOG << "Invalid slice for texture.";
21  return false;
22  }
23  if (!OnSetContents(contents, length, slice)) {
24  return false;
25  }
26  coordinate_system_ = TextureCoordinateSystem::kUploadFromHost;
27  is_opaque_ = is_opaque;
28  return true;
29 }
virtual bool OnSetContents(const uint8_t *contents, size_t length, size_t slice)=0
#define VALIDATION_LOG
Definition: validation.h:91

References impeller::kUploadFromHost, OnSetContents(), and VALIDATION_LOG.

◆ SetContents() [2/2]

bool impeller::Texture::SetContents ( std::shared_ptr< const fml::Mapping >  mapping,
size_t  slice = 0,
bool  is_opaque = false 
)

Definition at line 31 of file texture.cc.

33  {
34  if (!IsSliceValid(slice)) {
35  VALIDATION_LOG << "Invalid slice for texture.";
36  return false;
37  }
38  if (!mapping) {
39  return false;
40  }
41  if (!OnSetContents(std::move(mapping), slice)) {
42  return false;
43  }
44  coordinate_system_ = TextureCoordinateSystem::kUploadFromHost;
45  is_opaque_ = is_opaque;
46  return true;
47 }

References impeller::kUploadFromHost, OnSetContents(), and VALIDATION_LOG.

◆ SetCoordinateSystem()

void impeller::Texture::SetCoordinateSystem ( TextureCoordinateSystem  coordinate_system)

Update the coordinate system used by the texture.

The setting is used to conditionally invert the coordinates to account for the different origin of GLES textures.

Definition at line 73 of file texture.cc.

73  {
74  coordinate_system_ = coordinate_system;
75 }

◆ SetLabel() [1/2]

virtual void impeller::Texture::SetLabel ( std::string_view  label)
pure virtual

Label this resource for inspection in GPU debugging tools.

This functionality may be disabled in release builds.

◆ SetLabel() [2/2]

virtual void impeller::Texture::SetLabel ( std::string_view  label,
std::string_view  trailing 
)
pure virtual

Label this resource for inspection in GPU debugging tools, with label and trailing will be concatenated together.

This functionality may be disabled in release builds.

Member Data Documentation

◆ mipmap_generated_

bool impeller::Texture::mipmap_generated_ = false
protected

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