• Home
  • 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 
18 class GrVkTexture : public GrTexture, public virtual GrVkImage {
19 public:
20     static GrVkTexture* CreateNewTexture(GrVkGpu*, const GrSurfaceDesc&,
21                                          GrGpuResource::LifeCycle,
22                                          const GrVkImage::ImageDesc&);
23 
24 
25     static GrVkTexture* CreateWrappedTexture(GrVkGpu*, const GrSurfaceDesc&,
26                                              GrGpuResource::LifeCycle,
27                                              VkFormat, const GrVkImage::Resource*);
28 
29     ~GrVkTexture() override;
30 
31     GrBackendObject getTextureHandle() const override;
32 
textureParamsModified()33     void textureParamsModified() override {}
34 
textureView()35     const GrVkImageView* textureView() const { return fTextureView; }
36 
37 protected:
38     enum Derived { kDerived };
39 
40     GrVkTexture(GrVkGpu*, const GrSurfaceDesc&, GrGpuResource::LifeCycle,
41                 const GrVkImage::Resource*, const GrVkImageView* imageView);
42 
43     GrVkTexture(GrVkGpu*, const GrSurfaceDesc&, GrGpuResource::LifeCycle,
44                 const GrVkImage::Resource*, const GrVkImageView* imageView, Derived);
45 
46     static GrVkTexture* Create(GrVkGpu*, const GrSurfaceDesc&,
47                                GrGpuResource::LifeCycle, VkFormat,
48                                const GrVkImage::Resource* texImpl);
49 
50     GrVkGpu* getVkGpu() const;
51 
52     void onAbandon() override;
53     void onRelease() override;
54 
55 private:
56     const GrVkImageView* fTextureView;
57 
58     typedef GrTexture INHERITED;
59 };
60 
61 #endif
62