blob: 27d70d29a68621d7874bcf11b0c3be683ad98ae5 [file] [log] [blame]
Greg Daniel164a9f02016-02-22 09:56:40 -05001/*
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
8#ifndef GrVkImageView_DEFINED
9#define GrVkImageView_DEFINED
10
Greg Daniel54bfb182018-11-20 17:12:36 -050011#include "GrVkVulkan.h"
12
Greg Daniel164a9f02016-02-22 09:56:40 -050013#include "GrTypes.h"
Greg Daniel164a9f02016-02-22 09:56:40 -050014#include "GrVkResource.h"
15
Greg Daniel7e000222018-12-03 10:08:21 -050016class GrVkSamplerYcbcrConversion;
17struct GrVkYcbcrConversionInfo;
18
Greg Daniel164a9f02016-02-22 09:56:40 -050019class GrVkImageView : public GrVkResource {
20public:
21 enum Type {
22 kColor_Type,
23 kStencil_Type
24 };
halcanary9d524f22016-03-29 09:03:52 -070025
Greg Daniel7e000222018-12-03 10:08:21 -050026 static const GrVkImageView* Create(GrVkGpu* gpu, VkImage image, VkFormat format,
27 Type viewType, uint32_t miplevels,
28 const GrVkYcbcrConversionInfo& ycbcrInfo);
Greg Daniel164a9f02016-02-22 09:56:40 -050029
30 VkImageView imageView() const { return fImageView; }
31
jvanverth7ec92412016-07-06 09:24:57 -070032#ifdef SK_TRACE_VK_RESOURCES
33 void dumpInfo() const override {
34 SkDebugf("GrVkImageView: %d (%d refs)\n", fImageView, this->getRefCnt());
35 }
36#endif
37
Greg Daniel164a9f02016-02-22 09:56:40 -050038private:
Greg Daniel7e000222018-12-03 10:08:21 -050039 GrVkImageView(VkImageView imageView, GrVkSamplerYcbcrConversion* ycbcrConversion)
40 : INHERITED(), fImageView(imageView), fYcbcrConversion(ycbcrConversion) {}
Greg Daniel164a9f02016-02-22 09:56:40 -050041
42 GrVkImageView(const GrVkImageView&);
43 GrVkImageView& operator=(const GrVkImageView&);
44
Ethan Nicholas8e265a72018-12-12 16:22:40 -050045 void freeGPUData(GrVkGpu* gpu) const override;
Greg Daniel7e000222018-12-03 10:08:21 -050046 void abandonGPUData() const override;
Greg Daniel164a9f02016-02-22 09:56:40 -050047
48 VkImageView fImageView;
Greg Daniel7e000222018-12-03 10:08:21 -050049 GrVkSamplerYcbcrConversion* fYcbcrConversion;
Greg Daniel164a9f02016-02-22 09:56:40 -050050
51 typedef GrVkResource INHERITED;
52};
53
jvanverthe50f3e72016-03-28 07:03:06 -070054#endif