GrVkImageView.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. * Copyright 2016 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. #ifndef GrVkImageView_DEFINED
  8. #define GrVkImageView_DEFINED
  9. #include "include/gpu/GrTypes.h"
  10. #include "include/gpu/vk/GrVkTypes.h"
  11. #include "src/gpu/vk/GrVkResource.h"
  12. class GrVkSamplerYcbcrConversion;
  13. struct GrVkYcbcrConversionInfo;
  14. class GrVkImageView : public GrVkResource {
  15. public:
  16. enum Type {
  17. kColor_Type,
  18. kStencil_Type
  19. };
  20. static const GrVkImageView* Create(GrVkGpu* gpu, VkImage image, VkFormat format,
  21. Type viewType, uint32_t miplevels,
  22. const GrVkYcbcrConversionInfo& ycbcrInfo);
  23. VkImageView imageView() const { return fImageView; }
  24. #ifdef SK_TRACE_VK_RESOURCES
  25. void dumpInfo() const override {
  26. SkDebugf("GrVkImageView: %d (%d refs)\n", fImageView, this->getRefCnt());
  27. }
  28. #endif
  29. private:
  30. GrVkImageView(VkImageView imageView, GrVkSamplerYcbcrConversion* ycbcrConversion)
  31. : INHERITED(), fImageView(imageView), fYcbcrConversion(ycbcrConversion) {}
  32. GrVkImageView(const GrVkImageView&);
  33. GrVkImageView& operator=(const GrVkImageView&);
  34. void freeGPUData(GrVkGpu* gpu) const override;
  35. void abandonGPUData() const override;
  36. VkImageView fImageView;
  37. GrVkSamplerYcbcrConversion* fYcbcrConversion;
  38. typedef GrVkResource INHERITED;
  39. };
  40. #endif