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 "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 63