Index: src/core/SkImageFilter.cpp |
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp |
index 64603b4cb5244b423ccdf32c28c7b7bd7519a617..8a0e734b245fd7562c4d6135d8cce9e8a308be3c 100644 |
--- a/src/core/SkImageFilter.cpp |
+++ b/src/core/SkImageFilter.cpp |
@@ -8,6 +8,7 @@ |
#include "SkImageFilter.h" |
#include "SkBitmap.h" |
+#include "SkChecksum.h" |
#include "SkDevice.h" |
#include "SkReadBuffer.h" |
#include "SkWriteBuffer.h" |
@@ -334,31 +335,6 @@ bool SkImageFilter::getInputResultGPU(SkImageFilter::Proxy* proxy, |
} |
#endif |
-static uint32_t compute_hash(const uint32_t* data, int count) { |
- uint32_t hash = 0; |
- |
- for (int i = 0; i < count; ++i) { |
- uint32_t k = data[i]; |
- k *= 0xcc9e2d51; |
- k = (k << 15) | (k >> 17); |
- k *= 0x1b873593; |
- |
- hash ^= k; |
- hash = (hash << 13) | (hash >> 19); |
- hash *= 5; |
- hash += 0xe6546b64; |
- } |
- |
- // hash ^= size; |
- hash ^= hash >> 16; |
- hash *= 0x85ebca6b; |
- hash ^= hash >> 13; |
- hash *= 0xc2b2ae35; |
- hash ^= hash >> 16; |
- |
- return hash; |
-} |
- |
class CacheImpl : public SkImageFilter::Cache { |
public: |
explicit CacheImpl(int minChildren) : fMinChildren(minChildren) { |
@@ -381,7 +357,7 @@ private: |
return v.fKey; |
} |
static uint32_t Hash(Key key) { |
- return compute_hash(reinterpret_cast<const uint32_t*>(&key), sizeof(Key) / sizeof(uint32_t)); |
+ return SkChecksum::Murmur3(reinterpret_cast<const uint32_t*>(&key), sizeof(Key)); |
} |
}; |
SkTDynamicHash<Value, Key> fData; |