• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
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 "vk/GrVkTypes.h"
14 
15 class GrVkImageView;
16 class GrVkGpu;
17 
18 class GrVkStencilAttachment : public GrStencilAttachment, public GrVkImage {
19 public:
20     struct Format {
21         VkFormat  fInternalFormat;
22         int  fStencilBits;
23         int  fTotalBits;
24         bool fPacked;
25     };
26 
27     static GrVkStencilAttachment* Create(GrVkGpu* gpu, int width, int height,
28                                          int sampleCnt, const Format& format);
29 
30     ~GrVkStencilAttachment() override;
31 
imageResource()32     const GrVkResource* imageResource() const { return this->resource(); }
stencilView()33     const GrVkImageView* stencilView() const { return fStencilView; }
34 
vkFormat()35     VkFormat vkFormat() const { return fFormat.fInternalFormat; }
36 
37 protected:
38     void onRelease() override;
39     void onAbandon() override;
40 
41 private:
42     size_t onGpuMemorySize() const override;
43 
44     GrVkStencilAttachment(GrVkGpu* gpu,
45                           const Format& format,
46                           const GrVkImage::ImageDesc&,
47                           const GrVkImageInfo&,
48                           sk_sp<GrVkImageLayout> layout,
49                           const GrVkImageView* stencilView);
50 
51     GrVkGpu* getVkGpu() const;
52 
53     Format fFormat;
54 
55     const GrVkImageView*       fStencilView;
56 };
57 
58 #endif
59