Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
texture.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_IMPELLER_CORE_TEXTURE_H_
6#define FLUTTER_IMPELLER_CORE_TEXTURE_H_
7
8#include <string_view>
9
10#include "flutter/fml/mapping.h"
14
15namespace impeller {
16
17class Texture {
18 public:
19 virtual ~Texture();
20
21 /// @brief Label this resource for inspection in GPU debugging tools.
22 ///
23 /// This functionality may be disabled in release builds.
24 virtual void SetLabel(std::string_view label) = 0;
25
26 /// @brief Label this resource for inspection in GPU debugging tools, with
27 /// label and trailing will be concatenated together.
28 ///
29 /// This functionality may be disabled in release builds.
30 virtual void SetLabel(std::string_view label, std::string_view trailing) = 0;
31
32 // Deprecated: use BlitPass::AddCopy instead.
33 [[nodiscard]] bool SetContents(const uint8_t* contents,
34 size_t length,
35 size_t slice = 0,
36 bool is_opaque = false);
37
38 // Deprecated: use BlitPass::AddCopy instead.
39 [[nodiscard]] bool SetContents(std::shared_ptr<const fml::Mapping> mapping,
40 size_t slice = 0,
41 bool is_opaque = false);
42
43 virtual bool IsValid() const = 0;
44
45 virtual ISize GetSize() const = 0;
46
47 bool IsOpaque() const;
48
49 size_t GetMipCount() const;
50
52
53 /// Returns true if mipmaps have never been generated.
54 /// The contents of the mipmap may be out of date if the root texture has been
55 /// modified and the mipmaps hasn't been regenerated.
56 bool NeedsMipmapGeneration() const;
57
58 protected:
59 explicit Texture(TextureDescriptor desc);
60
61 [[nodiscard]] virtual bool OnSetContents(const uint8_t* contents,
62 size_t length,
63 size_t slice) = 0;
64
65 [[nodiscard]] virtual bool OnSetContents(
66 std::shared_ptr<const fml::Mapping> mapping,
67 size_t slice) = 0;
68
69 bool mipmap_generated_ = false;
70
71 private:
72 const TextureDescriptor desc_;
73 bool is_opaque_ = false;
74
75 bool IsSliceValid(size_t slice) const;
76
77 Texture(const Texture&) = delete;
78
79 Texture& operator=(const Texture&) = delete;
80};
81
82} // namespace impeller
83
84#endif // FLUTTER_IMPELLER_CORE_TEXTURE_H_
size_t GetMipCount() const
Definition texture.cc:51
bool IsOpaque() const
Definition texture.cc:47
virtual ~Texture()
const TextureDescriptor & GetTextureDescriptor() const
Definition texture.cc:55
virtual bool OnSetContents(std::shared_ptr< const fml::Mapping > mapping, size_t slice)=0
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 concatenat...
bool NeedsMipmapGeneration() const
Definition texture.cc:71
bool mipmap_generated_
Definition texture.h:69
virtual void SetLabel(std::string_view label)=0
Label this resource for inspection in GPU debugging tools.
virtual ISize GetSize() const =0
virtual bool OnSetContents(const uint8_t *contents, size_t length, size_t slice)=0
virtual bool IsValid() const =0
bool SetContents(const uint8_t *contents, size_t length, size_t slice=0, bool is_opaque=false)
Definition texture.cc:15
size_t length
A lightweight object that describes the attributes of a texture that can then used an allocator to cr...