blob: ab1b32bc70d20b69984f5cb060dc018d8ddfb6ad [file] [log] [blame]
Greg Daniel164a9f02016-02-22 09:56:40 -05001/*
2* Copyright 2015 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 GrVkStencil_DEFINED
9#define GrVkStencil_DEFINED
10
11#include "GrStencilAttachment.h"
12#include "GrVkImage.h"
13#include "vulkan/vulkan.h"
14
15class GrVkImageView;
16class GrVkGpu;
17
18class GrVkStencilAttachment : public GrStencilAttachment {
19public:
20 struct Format {
21 VkFormat fInternalFormat;
22 int fStencilBits;
23 int fTotalBits;
24 bool fPacked;
25 };
26
27 static GrVkStencilAttachment* Create(GrVkGpu* gpu, GrGpuResource::LifeCycle lifeCycle,
28 int width, int height,
29 int sampleCnt, const Format& format);
30
31 ~GrVkStencilAttachment() override;
32
33 const GrVkImage::Resource* imageResource() const { return fImageResource; }
34 const GrVkImageView* stencilView() const { return fStencilView; }
35
36 VkFormat vkFormat() const { return fFormat.fInternalFormat; }
37
38protected:
39 void onRelease() override;
40 void onAbandon() override;
41
42private:
43 size_t onGpuMemorySize() const override;
44
45 GrVkStencilAttachment(GrVkGpu* gpu,
46 GrGpuResource::LifeCycle lifeCycle,
47 const Format& format,
48 const GrVkImage::ImageDesc&,
49 const GrVkImage::Resource*,
50 const GrVkImageView* stencilView);
51
52 GrVkGpu* getVkGpu() const;
53
54 Format fFormat;
55
56 const GrVkImage::Resource* fImageResource;
57 const GrVkImageView* fStencilView;
58
59 typedef GrStencilAttachment INHERITED;
60};
61
62#endif