Image filters: remove SkBitmap-based cache.
Also some #include cleanup.
TBR=reed@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1905753002
Review URL: https://codereview.chromium.org/1905753002
diff --git a/include/core/SkImageFilter.h b/include/core/SkImageFilter.h
index 43369d3..a31403f 100644
--- a/include/core/SkImageFilter.h
+++ b/include/core/SkImageFilter.h
@@ -15,13 +15,10 @@
#include "SkFlattenable.h"
#include "SkMatrix.h"
#include "SkRect.h"
-#include "SkSurfaceProps.h"
class GrContext;
class GrFragmentProcessor;
-class GrTexture;
class SkBaseDevice;
-class SkBitmap;
class SkColorFilter;
struct SkIPoint;
class SkSpecialImage;
@@ -43,9 +40,7 @@
virtual ~Cache() {}
static Cache* Create(size_t maxBytes);
static Cache* Get();
- virtual bool get(const Key& key, SkBitmap* result, SkIPoint* offset) const = 0;
virtual SkSpecialImage* get(const Key& key, SkIPoint* offset) const = 0;
- virtual void set(const Key& key, const SkBitmap& result, const SkIPoint& offset) = 0;
virtual void set(const Key& key, SkSpecialImage* image, const SkIPoint& offset) = 0;
virtual void purge() = 0;
virtual void purgeByKeys(const Key[], int) = 0;
diff --git a/include/effects/SkMatrixConvolutionImageFilter.h b/include/effects/SkMatrixConvolutionImageFilter.h
index 6c55967..9a45486 100644
--- a/include/effects/SkMatrixConvolutionImageFilter.h
+++ b/include/effects/SkMatrixConvolutionImageFilter.h
@@ -13,6 +13,8 @@
#include "SkSize.h"
#include "SkPoint.h"
+class SkBitmap;
+
/*! \class SkMatrixConvolutionImageFilter
Matrix convolution image filter. This filter applies an NxM image
processing kernel to a given input image. This can be used to produce
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp
index 18fafd9..4128ba6 100644
--- a/src/core/SkImageFilter.cpp
+++ b/src/core/SkImageFilter.cpp
@@ -8,8 +8,7 @@
#include "SkImageFilter.h"
#include "SkImageFilterCacheKey.h"
-#include "SkBitmap.h"
-#include "SkBitmapDevice.h"
+#include "SkCanvas.h"
#include "SkChecksum.h"
#include "SkFuzzLogging.h"
#include "SkLocalMatrixImageFilter.h"
@@ -26,8 +25,6 @@
#if SK_SUPPORT_GPU
#include "GrContext.h"
#include "GrDrawContext.h"
-#include "SkGrPixelRef.h"
-#include "SkGr.h"
#endif
#ifdef SK_BUILD_FOR_IOS
@@ -467,13 +464,10 @@
}
}
struct Value {
- Value(const Key& key, const SkBitmap& bitmap, const SkIPoint& offset)
- : fKey(key), fBitmap(bitmap), fOffset(offset) {}
Value(const Key& key, SkSpecialImage* image, const SkIPoint& offset)
: fKey(key), fImage(SkRef(image)), fOffset(offset) {}
Key fKey;
- SkBitmap fBitmap;
SkAutoTUnref<SkSpecialImage> fImage;
SkIPoint fOffset;
static const Key& GetKey(const Value& v) {
@@ -485,20 +479,6 @@
SK_DECLARE_INTERNAL_LLIST_INTERFACE(Value);
};
- bool get(const Key& key, SkBitmap* result, SkIPoint* offset) const override {
- SkAutoMutexAcquire mutex(fMutex);
- if (Value* v = fLookup.find(key)) {
- *result = v->fBitmap;
- *offset = v->fOffset;
- if (v != fLRU.head()) {
- fLRU.remove(v);
- fLRU.addToHead(v);
- }
- return true;
- }
- return false;
- }
-
SkSpecialImage* get(const Key& key, SkIPoint* offset) const override {
SkAutoMutexAcquire mutex(fMutex);
if (Value* v = fLookup.find(key)) {
@@ -512,25 +492,6 @@
return nullptr;
}
- void set(const Key& key, const SkBitmap& result, const SkIPoint& offset) override {
- SkAutoMutexAcquire mutex(fMutex);
- if (Value* v = fLookup.find(key)) {
- this->removeInternal(v);
- }
- Value* v = new Value(key, result, offset);
- fLookup.add(v);
- fLRU.addToHead(v);
- fCurrentBytes += result.getSize();
- while (fCurrentBytes > fMaxBytes) {
- Value* tail = fLRU.tail();
- SkASSERT(tail);
- if (tail == v) {
- break;
- }
- this->removeInternal(tail);
- }
- }
-
void set(const Key& key, SkSpecialImage* image, const SkIPoint& offset) override {
SkAutoMutexAcquire mutex(fMutex);
if (Value* v = fLookup.find(key)) {
@@ -571,11 +532,8 @@
SkDEBUGCODE(int count() const override { return fLookup.count(); })
private:
void removeInternal(Value* v) {
- if (v->fImage) {
- fCurrentBytes -= v->fImage->getSize();
- } else {
- fCurrentBytes -= v->fBitmap.getSize();
- }
+ SkASSERT(v->fImage);
+ fCurrentBytes -= v->fImage->getSize();
fLRU.remove(v);
fLookup.remove(v->fKey);
delete v;