Make GrVkStencilAttachment derive form GrVkImage
authoregdaniel <egdaniel@google.com>
Fri, 26 Feb 2016 21:12:00 +0000 (13:12 -0800)
committerCommit bot <commit-bot@chromium.org>
Fri, 26 Feb 2016 21:12:00 +0000 (13:12 -0800)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1735283004

Review URL: https://codereview.chromium.org/1735283004

src/gpu/vk/GrVkStencilAttachment.cpp
src/gpu/vk/GrVkStencilAttachment.h

index 0b234f2..a632700 100644 (file)
@@ -19,12 +19,12 @@ GrVkStencilAttachment::GrVkStencilAttachment(GrVkGpu* gpu,
                                              const GrVkImage::ImageDesc& desc,
                                              const GrVkImage::Resource* imageResource,
                                              const GrVkImageView* stencilView)
-    : INHERITED(gpu, lifeCycle, desc.fWidth, desc.fHeight, format.fStencilBits, desc.fSamples)
+    : GrStencilAttachment(gpu, lifeCycle, desc.fWidth, desc.fHeight,
+                          format.fStencilBits, desc.fSamples)
+    , GrVkImage(imageResource)
     , fFormat(format)
-    , fImageResource(imageResource)
     , fStencilView(stencilView) {
     this->registerWithCache();
-    imageResource->ref();
     stencilView->ref();
 }
 
@@ -68,7 +68,6 @@ GrVkStencilAttachment* GrVkStencilAttachment::Create(GrVkGpu* gpu,
 
 GrVkStencilAttachment::~GrVkStencilAttachment() {
     // should have been released or abandoned first
-    SkASSERT(!fImageResource);
     SkASSERT(!fStencilView);
 }
 
@@ -83,20 +82,18 @@ size_t GrVkStencilAttachment::onGpuMemorySize() const {
 void GrVkStencilAttachment::onRelease() {
     GrVkGpu* gpu = this->getVkGpu();
 
-    fImageResource->unref(gpu);
-    fImageResource = nullptr;
+    this->releaseImage(gpu);
 
     fStencilView->unref(gpu);
     fStencilView = nullptr;
-    INHERITED::onRelease();
+    GrStencilAttachment::onRelease();
 }
 
 void GrVkStencilAttachment::onAbandon() {
-    fImageResource->unrefAndAbandon();
-    fImageResource = nullptr;
+    this->abandonImage();
     fStencilView->unrefAndAbandon();
     fStencilView = nullptr;
-    INHERITED::onAbandon();
+    GrStencilAttachment::onAbandon();
 }
 
 GrVkGpu* GrVkStencilAttachment::getVkGpu() const {
index ab1b32b..d05a809 100644 (file)
@@ -15,7 +15,7 @@
 class GrVkImageView;
 class GrVkGpu;
 
-class GrVkStencilAttachment : public GrStencilAttachment {
+class GrVkStencilAttachment : public GrStencilAttachment, public GrVkImage {
 public:
     struct Format {
         VkFormat  fInternalFormat;
@@ -30,7 +30,7 @@ public:
 
     ~GrVkStencilAttachment() override;
 
-    const GrVkImage::Resource* imageResource() const { return fImageResource;  }
+    const GrVkImage::Resource* imageResource() const { return this->resource(); }
     const GrVkImageView* stencilView() const { return fStencilView; }
 
     VkFormat vkFormat() const { return fFormat.fInternalFormat; }
@@ -53,10 +53,7 @@ private:
 
     Format fFormat;
 
-    const GrVkImage::Resource* fImageResource;
     const GrVkImageView*       fStencilView;
-
-    typedef GrStencilAttachment INHERITED;
 };
 
 #endif