diff --git a/src/gpu/GrAttachment.cpp b/src/gpu/GrAttachment.cpp
index 35fdbf2..562526a 100644
--- a/src/gpu/GrAttachment.cpp
+++ b/src/gpu/GrAttachment.cpp
@@ -8,7 +8,19 @@
 #include "src/gpu/GrAttachment.h"
 
 #include "include/private/GrResourceKey.h"
+#include "src/gpu/GrBackendUtils.h"
 #include "src/gpu/GrCaps.h"
+#include "src/gpu/GrDataUtils.h"
+
+size_t GrAttachment::onGpuMemorySize() const {
+    GrBackendFormat format = this->backendFormat();
+    SkImage::CompressionType compression = GrBackendFormatToCompressionType(format);
+
+    uint64_t size = GrNumBlocks(compression, this->dimensions());
+    size *= GrBackendFormatBytesPerBlock(this->backendFormat());
+    size *= this->numSamples();
+    return size;
+}
 
 static void build_key(GrResourceKey::Builder* builder,
                       const GrCaps& caps,
diff --git a/src/gpu/GrAttachment.h b/src/gpu/GrAttachment.h
index 9f04117..a5f0dc1 100644
--- a/src/gpu/GrAttachment.h
+++ b/src/gpu/GrAttachment.h
@@ -70,6 +70,8 @@
             , fSampleCnt(sampleCnt) {}
 
 private:
+    size_t onGpuMemorySize() const final;
+
     const char* getResourceType() const override {
         // TODO: Once attachments can have multiple usages this needs to be updated
         switch (fSupportedUsages) {
diff --git a/src/gpu/GrDataUtils.cpp b/src/gpu/GrDataUtils.cpp
index 23e5d27..cb91de2 100644
--- a/src/gpu/GrDataUtils.cpp
+++ b/src/gpu/GrDataUtils.cpp
@@ -152,6 +152,22 @@
     }
 }
 
+size_t GrNumBlocks(SkImage::CompressionType type, SkISize baseDimensions) {
+    switch (type) {
+        case SkImage::CompressionType::kNone:
+            return baseDimensions.width() * baseDimensions.height();
+        case SkImage::CompressionType::kETC2_RGB8_UNORM:
+        case SkImage::CompressionType::kBC1_RGB8_UNORM:
+        case SkImage::CompressionType::kBC1_RGBA8_UNORM: {
+            int numBlocksWidth = num_4x4_blocks(baseDimensions.width());
+            int numBlocksHeight = num_4x4_blocks(baseDimensions.height());
+
+            return numBlocksWidth * numBlocksHeight;
+        }
+    }
+    SkUNREACHABLE;
+}
+
 size_t GrCompressedRowBytes(SkImage::CompressionType type, int width) {
     switch (type) {
         case SkImage::CompressionType::kNone:
diff --git a/src/gpu/GrDataUtils.h b/src/gpu/GrDataUtils.h
index 9cb062d..6b17b46 100644
--- a/src/gpu/GrDataUtils.h
+++ b/src/gpu/GrDataUtils.h
@@ -15,6 +15,8 @@
 
 class GrImageInfo;
 
+size_t GrNumBlocks(SkImage::CompressionType, SkISize baseDimensions);
+
 // Returns a value that can be used to set rowBytes for a transfer function.
 size_t GrCompressedRowBytes(SkImage::CompressionType, int w);
 
diff --git a/src/gpu/d3d/GrD3DAttachment.cpp b/src/gpu/d3d/GrD3DAttachment.cpp
index ba6b34f..e4992c2 100644
--- a/src/gpu/d3d/GrD3DAttachment.cpp
+++ b/src/gpu/d3d/GrD3DAttachment.cpp
@@ -62,14 +62,6 @@
                                                       std::move(state), view));
 }
 
-size_t GrD3DAttachment::onGpuMemorySize() const {
-    uint64_t size = this->width();
-    size *= this->height();
-    size *= GrD3DCaps::GetStencilFormatTotalBitCount(this->dxgiFormat());
-    size *= this->numSamples();
-    return static_cast<size_t>(size / 8);
-}
-
 void GrD3DAttachment::onRelease() {
     GrD3DGpu* gpu = this->getD3DGpu();
     this->releaseResource(gpu);
diff --git a/src/gpu/d3d/GrD3DAttachment.h b/src/gpu/d3d/GrD3DAttachment.h
index 651a04b..1f4194b 100644
--- a/src/gpu/d3d/GrD3DAttachment.h
+++ b/src/gpu/d3d/GrD3DAttachment.h
@@ -34,8 +34,6 @@
     void onAbandon() override;
 
 private:
-    size_t onGpuMemorySize() const override;
-
     GrD3DAttachment(GrD3DGpu* gpu,
                     SkISize dimensions,
                     UsageFlags supportedUsages,
diff --git a/src/gpu/dawn/GrDawnAttachment.cpp b/src/gpu/dawn/GrDawnAttachment.cpp
index 9cd0a1f..ddea0b4 100644
--- a/src/gpu/dawn/GrDawnAttachment.cpp
+++ b/src/gpu/dawn/GrDawnAttachment.cpp
@@ -47,14 +47,6 @@
 
 GrDawnAttachment::~GrDawnAttachment() {}
 
-size_t GrDawnAttachment::onGpuMemorySize() const {
-    uint64_t size = this->width();
-    size *= this->height();
-    size *= 32;
-    size *= std::max(1, this->numSamples());
-    return static_cast<size_t>(size / 8);
-}
-
 void GrDawnAttachment::onRelease() { GrAttachment::onRelease(); }
 
 void GrDawnAttachment::onAbandon() { GrAttachment::onAbandon(); }
diff --git a/src/gpu/dawn/GrDawnAttachment.h b/src/gpu/dawn/GrDawnAttachment.h
index 8063234..a23a367 100644
--- a/src/gpu/dawn/GrDawnAttachment.h
+++ b/src/gpu/dawn/GrDawnAttachment.h
@@ -29,8 +29,6 @@
     void onAbandon() override;
 
 private:
-    size_t onGpuMemorySize() const override;
-
     GrDawnAttachment(GrDawnGpu* gpu,
                      SkISize dimensions,
                      UsageFlags supportedUsages,
diff --git a/src/gpu/gl/GrGLAttachment.cpp b/src/gpu/gl/GrGLAttachment.cpp
index d6bdaaf..8c032a0 100644
--- a/src/gpu/gl/GrGLAttachment.cpp
+++ b/src/gpu/gl/GrGLAttachment.cpp
@@ -10,14 +10,6 @@
 #include "include/core/SkTraceMemoryDump.h"
 #include "src/gpu/gl/GrGLGpu.h"
 
-size_t GrGLAttachment::onGpuMemorySize() const {
-    uint64_t size = this->width();
-    size *= this->height();
-    size *= GrGLFormatBytesPerBlock(fFormat);
-    size *= this->numSamples();
-    return static_cast<size_t>(size);
-}
-
 void GrGLAttachment::onRelease() {
     if (0 != fRenderbufferID) {
         GrGLGpu* gpuGL = (GrGLGpu*)this->getGpu();
diff --git a/src/gpu/gl/GrGLAttachment.h b/src/gpu/gl/GrGLAttachment.h
index 2ebb405..55b58c0 100644
--- a/src/gpu/gl/GrGLAttachment.h
+++ b/src/gpu/gl/GrGLAttachment.h
@@ -42,8 +42,6 @@
                           const SkString& dumpName) const override;
 
 private:
-    size_t onGpuMemorySize() const override;
-
     GrGLFormat fFormat;
 
     // may be zero for external SBs associated with external RTs
diff --git a/src/gpu/mock/GrMockAttachment.h b/src/gpu/mock/GrMockAttachment.h
index 6878965..fc268e8 100644
--- a/src/gpu/mock/GrMockAttachment.h
+++ b/src/gpu/mock/GrMockAttachment.h
@@ -26,11 +26,6 @@
     }
 
 private:
-    size_t onGpuMemorySize() const override {
-        int bpp = GrBackendFormatBytesPerBlock(this->backendFormat());
-        return std::max(1, (int)(bpp)) * this->width() * this->height();
-    }
-
     using INHERITED = GrAttachment;
 };
 
diff --git a/src/gpu/mtl/GrMtlAttachment.h b/src/gpu/mtl/GrMtlAttachment.h
index f198b83..ae31e1e 100644
--- a/src/gpu/mtl/GrMtlAttachment.h
+++ b/src/gpu/mtl/GrMtlAttachment.h
@@ -37,8 +37,6 @@
     void onAbandon() override;
 
 private:
-    size_t onGpuMemorySize() const override;
-
     GrMtlAttachment(GrMtlGpu* gpu,
                     SkISize dimensions,
                     UsageFlags supportedUsages,
diff --git a/src/gpu/mtl/GrMtlAttachment.mm b/src/gpu/mtl/GrMtlAttachment.mm
index be568d4..d31c27e 100644
--- a/src/gpu/mtl/GrMtlAttachment.mm
+++ b/src/gpu/mtl/GrMtlAttachment.mm
@@ -50,14 +50,6 @@
     SkASSERT(!fView);
 }
 
-size_t GrMtlAttachment::onGpuMemorySize() const {
-    uint64_t size = this->width();
-    size *= this->height();
-    size *= GrMtlFormatBytesPerBlock(this->mtlFormat());
-    size *= this->numSamples();
-    return static_cast<size_t>(size);
-}
-
 void GrMtlAttachment::onRelease() {
     fView = nullptr;
     GrAttachment::onRelease();
diff --git a/src/gpu/vk/GrVkAttachment.cpp b/src/gpu/vk/GrVkAttachment.cpp
index 65f081a..ac5f1e8 100644
--- a/src/gpu/vk/GrVkAttachment.cpp
+++ b/src/gpu/vk/GrVkAttachment.cpp
@@ -100,14 +100,6 @@
     SkASSERT(!fView);
 }
 
-size_t GrVkAttachment::onGpuMemorySize() const {
-    uint64_t size = this->width();
-    size *= this->height();
-    size *= GrVkCaps::GetStencilFormatTotalBitCount(this->imageFormat());
-    size *= this->numSamples();
-    return static_cast<size_t>(size / 8);
-}
-
 void GrVkAttachment::onRelease() {
     this->releaseImage();
     fView.reset();
diff --git a/src/gpu/vk/GrVkAttachment.h b/src/gpu/vk/GrVkAttachment.h
index a931300..1185e43 100644
--- a/src/gpu/vk/GrVkAttachment.h
+++ b/src/gpu/vk/GrVkAttachment.h
@@ -40,8 +40,6 @@
     void onAbandon() override;
 
 private:
-    size_t onGpuMemorySize() const override;
-
     static sk_sp<GrVkAttachment> Make(GrVkGpu* gpu,
                                       SkISize dimensions,
                                       UsageFlags attachmentUsages,
