/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef GrVkImageView_DEFINED #define GrVkImageView_DEFINED #include "include/gpu/GrTypes.h" #include "include/gpu/vk/GrVkTypes.h" #include "src/gpu/vk/GrVkManagedResource.h" #include class GrVkSamplerYcbcrConversion; struct GrVkYcbcrConversionInfo; class GrVkImageView : public GrVkManagedResource { public: enum Type { kColor_Type, kStencil_Type }; static sk_sp Make(GrVkGpu* gpu, VkImage image, VkFormat format, Type viewType, uint32_t miplevels, const GrVkYcbcrConversionInfo& ycbcrInfo); VkImageView imageView() const { return fImageView; } #ifdef SK_TRACE_MANAGED_RESOURCES void dumpInfo() const override { SkDebugf("GrVkImageView: %" PRIdPTR " (%d refs)\n", (intptr_t)fImageView, this->getRefCnt()); } #endif private: GrVkImageView(const GrVkGpu* gpu, VkImageView imageView, GrVkSamplerYcbcrConversion* ycbcrConversion) : INHERITED(gpu), fImageView(imageView), fYcbcrConversion(ycbcrConversion) {} void freeGPUData() const override; VkImageView fImageView; GrVkSamplerYcbcrConversion* fYcbcrConversion; using INHERITED = GrVkManagedResource; }; #endif