Index: src/gpu/GrStencilBuffer.cpp |
diff --git a/src/gpu/GrStencilBuffer.cpp b/src/gpu/GrStencilBuffer.cpp |
index 5aa56e07173c58a3bacabc3fa2a5ef475a70ed8a..be463a0ccf675f68ca011e4e3ec855afc0643ab9 100644 |
--- a/src/gpu/GrStencilBuffer.cpp |
+++ b/src/gpu/GrStencilBuffer.cpp |
@@ -7,35 +7,13 @@ |
*/ |
#include "GrStencilBuffer.h" |
+#include "GrResourceKey.h" |
-#include "GrContext.h" |
-#include "GrGpu.h" |
-#include "GrResourceCache2.h" |
- |
-namespace { |
-// we should never have more than one stencil buffer with same combo of (width,height,samplecount) |
-void gen_cache_id(int width, int height, int sampleCnt, GrCacheID* cacheID) { |
- static const GrCacheID::Domain gStencilBufferDomain = GrResourceKey::ScratchDomain(); |
- GrCacheID::Key key; |
- uint32_t* keyData = key.fData32; |
- keyData[0] = width; |
- keyData[1] = height; |
- keyData[2] = sampleCnt; |
- memset(keyData + 3, 0, sizeof(key) - 3 * sizeof(uint32_t)); |
- GR_STATIC_ASSERT(sizeof(key) >= 3 * sizeof(uint32_t)); |
- cacheID->reset(gStencilBufferDomain, key); |
-} |
-} |
- |
-GrResourceKey GrStencilBuffer::ComputeKey(int width, |
- int height, |
- int sampleCnt) { |
- // All SBs are created internally to attach to RTs so they all use the same domain. |
- static const GrResourceKey::ResourceType gStencilBufferResourceType = |
- GrResourceKey::GenerateResourceType(); |
- GrCacheID id; |
- gen_cache_id(width, height, sampleCnt, &id); |
- |
- // we don't use any flags for SBs currently. |
- return GrResourceKey(id, gStencilBufferResourceType, 0); |
+void GrStencilBuffer::ComputeKey(int width, int height, int sampleCnt, GrScratchKey* key) { |
+ static const GrScratchKey::ResourceType kType = GrScratchKey::GenerateResourceType(); |
+ GrScratchKey::Builder builder(key, kType, 2); |
+ SkASSERT(width <= SK_MaxU16); |
+ SkASSERT(height <= SK_MaxU16); |
+ builder[0] = width | (height << 16); |
+ builder[1] = sampleCnt; |
} |