| 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;
|
| }
|
|
|