Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(205)

Unified Diff: src/gpu/GrLayerCache.cpp

Issue 350183006: Move allocation of texture from SkGpuDevice to GrLayerCache (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address code review comments Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/gpu/GrLayerCache.h ('k') | src/gpu/SkGpuDevice.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/gpu/GrLayerCache.cpp
diff --git a/src/gpu/GrLayerCache.cpp b/src/gpu/GrLayerCache.cpp
index f6377bf7e92e5713196296114a545dd4dfb5e177..86258abf42cb213555d19fa39ea5ae78957c965e 100644
--- a/src/gpu/GrLayerCache.cpp
+++ b/src/gpu/GrLayerCache.cpp
@@ -41,8 +41,8 @@ private:
int fLayerID;
};
-GrLayerCache::GrLayerCache(GrGpu* gpu)
- : fGpu(SkRef(gpu))
+GrLayerCache::GrLayerCache(GrContext* context)
+ : fContext(context)
, fLayerPool(16) { // TODO: may need to increase this later
}
@@ -57,7 +57,7 @@ void GrLayerCache::init() {
// The layer cache only gets 1 plot
SkISize textureSize = SkISize::Make(kAtlasTextureWidth, kAtlasTextureHeight);
- fAtlasMgr.reset(SkNEW_ARGS(GrAtlasMgr, (fGpu, kSkia8888_GrPixelConfig,
+ fAtlasMgr.reset(SkNEW_ARGS(GrAtlasMgr, (fContext->getGpu(), kSkia8888_GrPixelConfig,
textureSize, 1, 1, false)));
}
@@ -75,6 +75,10 @@ GrCachedLayer* GrLayerCache::createLayer(const SkPicture* picture, int layerID)
return layer;
}
+GrCachedLayer* GrLayerCache::findLayer(const SkPicture* picture, int layerID) {
+ SkASSERT(picture->uniqueID() != SK_InvalidGenID);
+ return fLayerHash.find(PictureLayerKey(picture->uniqueID(), layerID));
+}
GrCachedLayer* GrLayerCache::findLayerOrCreate(const SkPicture* picture, int layerID) {
SkASSERT(picture->uniqueID() != SK_InvalidGenID);
@@ -82,5 +86,24 @@ GrCachedLayer* GrLayerCache::findLayerOrCreate(const SkPicture* picture, int lay
if (NULL == layer) {
layer = this->createLayer(picture, layerID);
}
+
return layer;
}
+
+bool GrLayerCache::lock(GrCachedLayer* layer, const GrTextureDesc& desc) {
+ SkASSERT(NULL == layer->getTexture());
+
+ // This just uses scratch textures and doesn't cache the texture.
+ // This can yield a lot of re-rendering
+ layer->setTexture(fContext->lockAndRefScratchTexture(desc, GrContext::kApprox_ScratchTexMatch));
+ return false;
+}
+
+void GrLayerCache::unlock(GrCachedLayer* layer) {
+ if (NULL == layer || NULL == layer->getTexture()) {
+ return;
+ }
+
+ fContext->unlockScratchTexture(layer->getTexture());
+ layer->setTexture(NULL);
+}
« no previous file with comments | « src/gpu/GrLayerCache.h ('k') | src/gpu/SkGpuDevice.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698