xref: /aosp_15_r20/external/skia/src/gpu/ganesh/gl/GrGLBackendSurfacePriv.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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 GrGLBackendSurfacePriv_DEFINED
9 #define GrGLBackendSurfacePriv_DEFINED
10 
11 #include "include/core/SkRefCnt.h"
12 #include "include/gpu/ganesh/GrBackendSurface.h"
13 #include "include/gpu/ganesh/GrTypes.h"
14 #include "include/private/base/SkDebug.h"
15 #include "src/gpu/ganesh/GrBackendSurfacePriv.h"
16 #include "src/gpu/ganesh/gl/GrGLTypesPriv.h"
17 
18 #include <string_view>
19 
20 struct GrGLTextureInfo;
21 
22 namespace skgpu { enum class Mipmapped : bool; }
23 
24 namespace GrBackendTextures {
25 // The GrGLTextureInfo must have a valid fFormat.
26 GrBackendTexture MakeGL(int width,
27                         int height,
28                         skgpu::Mipmapped,
29                         const GrGLTextureInfo& glInfo,
30                         sk_sp<GrGLTextureParameters> params,
31                         std::string_view label = {});
32 }  // namespace GrBackendTextures
33 
34 class GrGLBackendTextureData final : public GrBackendTextureData {
35 public:
36     GrGLBackendTextureData(const GrGLTextureInfo& info, sk_sp<GrGLTextureParameters> params);
37 
info()38     const GrGLBackendTextureInfo& info() const { return fGLInfo; }
39 
40 private:
41     void copyTo(AnyTextureData&) const override;
42     bool isProtected() const override;
43     bool equal(const GrBackendTextureData* that) const override;
44     bool isSameTexture(const GrBackendTextureData* that) const override;
45     GrBackendFormat getBackendFormat() const override;
46 #if defined(SK_DEBUG)
type()47     GrBackendApi type() const override { return GrBackendApi::kOpenGL; }
48 #endif
49 
50     GrGLBackendTextureInfo fGLInfo;
51 };
52 
53 #endif
54