blob: 12f3b218207f305d8c42cd1af54ccb0c5faff260 [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
Mike Kleinc0bd9f92019-04-23 12:05:21 -050011#include "include/gpu/GrTypes.h"
12#include "include/gpu/vk/GrVkTypes.h"
13#include "src/gpu/vk/GrVkResource.h"
Greg Daniel164a9f02016-02-22 09:56:40 -050014
Greg Daniel7e000222018-12-03 10:08:21 -050015class GrVkSamplerYcbcrConversion;
16struct GrVkYcbcrConversionInfo;
17
Greg Daniel164a9f02016-02-22 09:56:40 -050018class GrVkImageView : public GrVkResource {
19public:
20 enum Type {
21 kColor_Type,
22 kStencil_Type
23 };
halcanary9d524f22016-03-29 09:03:52 -070024
Greg Daniel7e000222018-12-03 10:08:21 -050025 static const GrVkImageView* Create(GrVkGpu* gpu, VkImage image, VkFormat format,
26 Type viewType, uint32_t miplevels,
27 const GrVkYcbcrConversionInfo& ycbcrInfo);
Greg Daniel164a9f02016-02-22 09:56:40 -050028
29 VkImageView imageView() const { return fImageView; }
30
jvanverth7ec92412016-07-06 09:24:57 -070031#ifdef SK_TRACE_VK_RESOURCES
32 void dumpInfo() const override {
33 SkDebugf("GrVkImageView: %d (%d refs)\n", fImageView, this->getRefCnt());
34 }
35#endif
36
Greg Daniel164a9f02016-02-22 09:56:40 -050037private:
Greg Daniel7e000222018-12-03 10:08:21 -050038 GrVkImageView(VkImageView imageView, GrVkSamplerYcbcrConversion* ycbcrConversion)
39 : INHERITED(), fImageView(imageView), fYcbcrConversion(ycbcrConversion) {}
Greg Daniel164a9f02016-02-22 09:56:40 -050040
41 GrVkImageView(const GrVkImageView&);
42 GrVkImageView& operator=(const GrVkImageView&);
43
Ethan Nicholas8e265a72018-12-12 16:22:40 -050044 void freeGPUData(GrVkGpu* gpu) const override;
Greg Daniel7e000222018-12-03 10:08:21 -050045 void abandonGPUData() const override;
Greg Daniel164a9f02016-02-22 09:56:40 -050046
47 VkImageView fImageView;
Greg Daniel7e000222018-12-03 10:08:21 -050048 GrVkSamplerYcbcrConversion* fYcbcrConversion;
Greg Daniel164a9f02016-02-22 09:56:40 -050049
50 typedef GrVkResource INHERITED;
51};
52
jvanverthe50f3e72016-03-28 07:03:06 -070053#endif