Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
GrBackendSurfacePriv.h
Go to the documentation of this file.
1/*
2 * Copyright 2023 Google LLC
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef GrBackendSurfacePriv_DEFINED
9#define GrBackendSurfacePriv_DEFINED
10
13#include "include/gpu/MutableTextureState.h" // IWYU pragma: keep
16
17#include <cstddef>
18#include <cstdint>
19#include <string>
20#include <string_view>
21
22enum class GrBackendApi : unsigned int;
24
25namespace skgpu {
26enum class Mipmapped : bool;
27}
28
30public:
31 virtual ~GrBackendFormatData();
33 virtual size_t bytesPerBlock() const = 0;
34 virtual int stencilBits() const = 0;
35 virtual bool equal(const GrBackendFormatData* that) const = 0;
36#if defined(SK_DEBUG)
37 virtual GrBackendApi type() const = 0;
38#endif
39protected:
42
44
45private:
46 friend class GrBackendFormat;
47 virtual uint32_t channelMask() const = 0;
48 virtual GrColorFormatDesc desc() const = 0;
49 virtual std::string toString() const = 0;
50 virtual void copyTo(AnyFormatData&) const = 0;
51
52 // Vulkan-only API:
53 virtual void makeTexture2D() {}
54};
55
57public:
58 virtual ~GrBackendTextureData();
59#if defined(SK_DEBUG)
60 virtual GrBackendApi type() const = 0;
61#endif
62protected:
65
67
68private:
69 friend class GrBackendTexture;
70 virtual bool isProtected() const = 0;
71 virtual bool equal(const GrBackendTextureData* that) const = 0;
72 virtual bool isSameTexture(const GrBackendTextureData*) const = 0;
73 virtual GrBackendFormat getBackendFormat() const = 0;
74 virtual void copyTo(AnyTextureData&) const = 0;
75
76 // Vulkan-only API:
77 virtual sk_sp<skgpu::MutableTextureState> getMutableState() const { return nullptr; }
79};
80
82public:
84#if defined(SK_DEBUG)
85 virtual GrBackendApi type() const = 0;
86#endif
87protected:
90
92
93private:
95 virtual GrBackendFormat getBackendFormat() const = 0;
96 virtual bool isProtected() const = 0;
97 virtual bool equal(const GrBackendRenderTargetData* that) const = 0;
98 virtual void copyTo(AnyRenderTargetData&) const = 0;
99
100 // Vulkan-only API:
101 virtual sk_sp<skgpu::MutableTextureState> getMutableState() const { return nullptr; }
103};
104
106public:
107 template <typename FormatData>
109 GrBackendApi api,
110 const FormatData& data) {
111 return GrBackendFormat(textureType, api, data);
112 }
113
115 return format.fFormatData.get();
116 }
117
118 template <typename TextureData>
120 int height,
121 std::string_view label,
122 skgpu::Mipmapped mipped,
123 GrBackendApi backend,
125 const TextureData& data) {
126 return GrBackendTexture(width, height, label, mipped, backend, texture, data);
127 }
128
130 return tex.fTextureData.get();
131 }
132
134 SkASSERT(tex);
135 return tex->fTextureData.get();
136 }
137
138 template <typename RenderTargetData>
140 int height,
141 int sampleCnt,
142 int stencilBits,
143 GrBackendApi backend,
144 bool framebufferOnly,
145 const RenderTargetData& data) {
147 width, height, sampleCnt, stencilBits, backend, framebufferOnly, data);
148 }
149
151 return rt.fRTData.get();
152 }
153
155 return rt->fRTData.get();
156 }
157};
158
159#endif
const char * backend
GrTextureType
GrBackendApi
Definition GrTypes.h:95
#define SkASSERT(cond)
Definition SkAssert.h:116
Type::kYUV Type::kRGBA() int(0.7 *637)
GrBackendFormatData()=default
virtual SkTextureCompressionType compressionType() const =0
virtual GrColorFormatDesc desc() const =0
virtual void copyTo(AnyFormatData &) const =0
virtual std::string toString() const =0
GrBackendFormatData(const GrBackendFormatData &)=default
virtual bool equal(const GrBackendFormatData *that) const =0
virtual uint32_t channelMask() const =0
virtual size_t bytesPerBlock() const =0
virtual int stencilBits() const =0
virtual void setMutableState(const skgpu::MutableTextureState &)
GrBackendRenderTargetData()=default
GrBackendRenderTargetData(const GrBackendRenderTargetData &)=default
virtual void copyTo(AnyRenderTargetData &) const =0
virtual bool isProtected() const =0
virtual sk_sp< skgpu::MutableTextureState > getMutableState() const
virtual GrBackendFormat getBackendFormat() const =0
virtual bool equal(const GrBackendRenderTargetData *that) const =0
static GrBackendRenderTarget MakeGrBackendRenderTarget(int width, int height, int sampleCnt, int stencilBits, GrBackendApi backend, bool framebufferOnly, const RenderTargetData &data)
static GrBackendRenderTargetData * GetBackendData(GrBackendRenderTarget *rt)
static const GrBackendTextureData * GetBackendData(const GrBackendTexture &tex)
static GrBackendTextureData * GetBackendData(GrBackendTexture *tex)
static GrBackendTexture MakeGrBackendTexture(int width, int height, std::string_view label, skgpu::Mipmapped mipped, GrBackendApi backend, GrTextureType texture, const TextureData &data)
static GrBackendFormat MakeGrBackendFormat(GrTextureType textureType, GrBackendApi api, const FormatData &data)
static const GrBackendRenderTargetData * GetBackendData(const GrBackendRenderTarget &rt)
static const GrBackendFormatData * GetBackendData(const GrBackendFormat &format)
virtual bool equal(const GrBackendTextureData *that) const =0
GrBackendTextureData(const GrBackendTextureData &)=default
virtual bool isSameTexture(const GrBackendTextureData *) const =0
virtual bool isProtected() const =0
virtual sk_sp< skgpu::MutableTextureState > getMutableState() const
virtual void copyTo(AnyTextureData &) const =0
GrBackendTextureData()=default
virtual GrBackendFormat getBackendFormat() const =0
virtual void setMutableState(const skgpu::MutableTextureState &)
const Base * get() const
uint32_t uint32_t * format
FlTexture * texture
Mipmapped
Definition GpuTypes.h:53
int32_t height
int32_t width