1164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel/* 2164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel * Copyright 2015 Google Inc. 3164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel * 4164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel * Use of this source code is governed by a BSD-style license that can be 5164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel * found in the LICENSE file. 6164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel */ 7164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 8164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel#ifndef GrVkTexture_DEFINED 9164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel#define GrVkTexture_DEFINED 10164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 11164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel#include "GrGpu.h" 12164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel#include "GrTexture.h" 13164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel#include "GrVkImage.h" 14164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 15164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Danielclass GrVkGpu; 16164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Danielclass GrVkImageView; 17b2df0c2702329be6380a943d548e7377a51d8565egdanielstruct GrVkImageInfo; 18164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 19164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Danielclass GrVkTexture : public GrTexture, public virtual GrVkImage { 20164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Danielpublic: 212e6055b3ea14a04fcde1ac1974a70bf00b1e295bkkinnunen static GrVkTexture* CreateNewTexture(GrVkGpu*, SkBudgeted budgeted, const GrSurfaceDesc&, 22164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel const GrVkImage::ImageDesc&); 239d524f22bfde5dc3dc8f48e1be39bdebd3bb0304halcanary 246bd5284415bd983b0628c4941dff5def40018f5abungeman static sk_sp<GrVkTexture> MakeWrappedTexture(GrVkGpu*, const GrSurfaceDesc&, 256bd5284415bd983b0628c4941dff5def40018f5abungeman GrWrapOwnership, const GrVkImageInfo*); 26164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 27164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel ~GrVkTexture() override; 28164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 29164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel GrBackendObject getTextureHandle() const override; 30164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 31164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel void textureParamsModified() override {} 32164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 33f05ab1b820b482fa633544579ab4d4c6bfcdb433brianosman const GrVkImageView* textureView(bool allowSRGB); 34164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 3550ead53ac97deb23310916e3736c3f5e2d8f7f4begdaniel bool reallocForMipmap(GrVkGpu* gpu, uint32_t mipLevels); 3662340067270c5c3365afa6b40b8e995ae6a6c1ecjvanverth 37164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Danielprotected: 38b2df0c2702329be6380a943d548e7377a51d8565egdaniel GrVkTexture(GrVkGpu*, const GrSurfaceDesc&, const GrVkImageInfo&, const GrVkImageView*, 39b2df0c2702329be6380a943d548e7377a51d8565egdaniel GrVkImage::Wrapped wrapped); 40164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 419d524f22bfde5dc3dc8f48e1be39bdebd3bb0304halcanary GrVkGpu* getVkGpu() const; 42164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 43164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel void onAbandon() override; 44164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel void onRelease() override; 452c2bc11aea4dfcd7ee2f5859838a2aa0a56939e0Brian Osman std::unique_ptr<GrExternalTextureData> detachBackendTexture() override; 46164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 47164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Danielprivate: 482e6055b3ea14a04fcde1ac1974a70bf00b1e295bkkinnunen enum Wrapped { kWrapped }; 492e6055b3ea14a04fcde1ac1974a70bf00b1e295bkkinnunen GrVkTexture(GrVkGpu*, SkBudgeted, const GrSurfaceDesc&, 50b2df0c2702329be6380a943d548e7377a51d8565egdaniel const GrVkImageInfo&, const GrVkImageView* imageView); 512e6055b3ea14a04fcde1ac1974a70bf00b1e295bkkinnunen GrVkTexture(GrVkGpu*, Wrapped, const GrSurfaceDesc&, 52b2df0c2702329be6380a943d548e7377a51d8565egdaniel const GrVkImageInfo&, const GrVkImageView* imageView, GrVkImage::Wrapped wrapped); 532e6055b3ea14a04fcde1ac1974a70bf00b1e295bkkinnunen 54900bd4a0463bc6471ef07a77120b413bd8f472b2jvanverth const GrVkImageView* fTextureView; 55f05ab1b820b482fa633544579ab4d4c6bfcdb433brianosman const GrVkImageView* fLinearTextureView; 56164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 57164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel typedef GrTexture INHERITED; 58164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel}; 59164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel 60164a9f061c5186ae931cc23a3c73f32472e80ff5Greg Daniel#endif 61