Home | History | Annotate | Download | only in vk
      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 
     33     void textureParamsModified() override {}
     34 
     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