• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2015 Google Inc.
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 GrVkTexture_DEFINED
9 #define GrVkTexture_DEFINED
10 
11 #include "GrGpu.h"
12 #include "GrTexture.h"
13 #include "GrVkImage.h"
14 
15 class GrVkGpu;
16 class GrVkImageView;
17 struct GrVkImageInfo;
18 
19 class GrVkTexture : public GrTexture, public virtual GrVkImage {
20 public:
21     static GrVkTexture* CreateNewTexture(GrVkGpu*, SkBudgeted budgeted, const GrSurfaceDesc&,
22                                          const GrVkImage::ImageDesc&);
23 
24     static sk_sp<GrVkTexture> MakeWrappedTexture(GrVkGpu*, const GrSurfaceDesc&,
25                                                  GrWrapOwnership, const GrVkImageInfo*);
26 
27     ~GrVkTexture() override;
28 
29     GrBackendObject getTextureHandle() const override;
30 
textureParamsModified()31     void textureParamsModified() override {}
32 
33     const GrVkImageView* textureView(bool allowSRGB);
34 
35     bool reallocForMipmap(GrVkGpu* gpu, uint32_t mipLevels);
36 
37 protected:
38     GrVkTexture(GrVkGpu*, const GrSurfaceDesc&, const GrVkImageInfo&, const GrVkImageView*,
39                 GrVkImage::Wrapped wrapped);
40 
41     GrVkGpu* getVkGpu() const;
42 
43     void onAbandon() override;
44     void onRelease() override;
45     std::unique_ptr<GrExternalTextureData> detachBackendTexture() override;
46 
47 private:
48     enum Wrapped { kWrapped };
49     GrVkTexture(GrVkGpu*, SkBudgeted, const GrSurfaceDesc&,
50                 const GrVkImageInfo&, const GrVkImageView* imageView);
51     GrVkTexture(GrVkGpu*, Wrapped, const GrSurfaceDesc&,
52                 const GrVkImageInfo&, const GrVkImageView* imageView, GrVkImage::Wrapped wrapped);
53 
54     const GrVkImageView*     fTextureView;
55     const GrVkImageView*     fLinearTextureView;
56 
57     typedef GrTexture INHERITED;
58 };
59 
60 #endif
61