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