1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci* Copyright 2016 Google Inc. 3cb93a386Sopenharmony_ci* 4cb93a386Sopenharmony_ci* Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci* found in the LICENSE file. 6cb93a386Sopenharmony_ci*/ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef GrVkImageView_DEFINED 9cb93a386Sopenharmony_ci#define GrVkImageView_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "include/gpu/GrTypes.h" 12cb93a386Sopenharmony_ci#include "include/gpu/vk/GrVkTypes.h" 13cb93a386Sopenharmony_ci#include "src/gpu/vk/GrVkManagedResource.h" 14cb93a386Sopenharmony_ci 15cb93a386Sopenharmony_ci#include <cinttypes> 16cb93a386Sopenharmony_ci 17cb93a386Sopenharmony_ciclass GrVkSamplerYcbcrConversion; 18cb93a386Sopenharmony_cistruct GrVkYcbcrConversionInfo; 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ciclass GrVkImageView : public GrVkManagedResource { 21cb93a386Sopenharmony_cipublic: 22cb93a386Sopenharmony_ci enum Type { 23cb93a386Sopenharmony_ci kColor_Type, 24cb93a386Sopenharmony_ci kStencil_Type 25cb93a386Sopenharmony_ci }; 26cb93a386Sopenharmony_ci 27cb93a386Sopenharmony_ci static sk_sp<const GrVkImageView> Make(GrVkGpu* gpu, VkImage image, VkFormat format, 28cb93a386Sopenharmony_ci Type viewType, uint32_t miplevels, 29cb93a386Sopenharmony_ci const GrVkYcbcrConversionInfo& ycbcrInfo); 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci VkImageView imageView() const { return fImageView; } 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_ci#ifdef SK_TRACE_MANAGED_RESOURCES 34cb93a386Sopenharmony_ci void dumpInfo() const override { 35cb93a386Sopenharmony_ci SkDebugf("GrVkImageView: %" PRIdPTR " (%d refs)\n", 36cb93a386Sopenharmony_ci (intptr_t)fImageView, this->getRefCnt()); 37cb93a386Sopenharmony_ci } 38cb93a386Sopenharmony_ci#endif 39cb93a386Sopenharmony_ci 40cb93a386Sopenharmony_ciprivate: 41cb93a386Sopenharmony_ci GrVkImageView(const GrVkGpu* gpu, VkImageView imageView, 42cb93a386Sopenharmony_ci GrVkSamplerYcbcrConversion* ycbcrConversion) 43cb93a386Sopenharmony_ci : INHERITED(gpu), fImageView(imageView), fYcbcrConversion(ycbcrConversion) {} 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci void freeGPUData() const override; 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_ci VkImageView fImageView; 48cb93a386Sopenharmony_ci GrVkSamplerYcbcrConversion* fYcbcrConversion; 49cb93a386Sopenharmony_ci 50cb93a386Sopenharmony_ci using INHERITED = GrVkManagedResource; 51cb93a386Sopenharmony_ci}; 52cb93a386Sopenharmony_ci 53cb93a386Sopenharmony_ci#endif 54