aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar robertphillips <robertphillips@google.com>2016-05-03 09:37:08 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-05-03 09:37:08 -0700
commitb4511344b61bffc02219c1282610411529ddb7f8 (patch)
tree9e02cde88c0468f0016e923162b661691467ce18
parent46db22f1cfc65a7a4f1de13d774718347362f60f (diff)
Minor refactor of GrLayerHoister
The main point of this CL is to make sure using the rect bounds (rather than the underlying texture's bounds) is acceptable in GrLayerHoister::FilterLayer. This is split out of https://codereview.chromium.org/1943913002/ (Retract GrRenderTarget from GrLayerHoister) GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1947593002 Review-Url: https://codereview.chromium.org/1947593002
-rw-r--r--src/gpu/GrLayerHoister.cpp6
-rw-r--r--tests/GpuLayerCacheTest.cpp8
2 files changed, 8 insertions, 6 deletions
diff --git a/src/gpu/GrLayerHoister.cpp b/src/gpu/GrLayerHoister.cpp
index 1c6e5738ba..4a2a7f5b97 100644
--- a/src/gpu/GrLayerHoister.cpp
+++ b/src/gpu/GrLayerHoister.cpp
@@ -232,7 +232,7 @@ void GrLayerHoister::DrawLayersToAtlas(GrContext* context,
if (atlased.count() > 0) {
// All the atlased layers are rendered into the same GrTexture
SkSurfaceProps props(0, kUnknown_SkPixelGeometry);
- auto surface(SkSurface::MakeRenderTargetDirect(
+ sk_sp<SkSurface> surface(SkSurface::MakeRenderTargetDirect(
atlased[0].fLayer->texture()->asRenderTarget(), &props));
SkCanvas* atlasCanvas = surface->getCanvas();
@@ -301,7 +301,9 @@ void GrLayerHoister::FilterLayer(GrContext* context,
SkImageFilter::Context filterContext(totMat, clipBounds, cache);
// TODO: should the layer hoister store stand alone layers as SkSpecialImages internally?
- const SkIRect subset = SkIRect::MakeWH(layer->texture()->width(), layer->texture()->height());
+ SkASSERT(layer->rect().width() == layer->texture()->width() &&
+ layer->rect().height() == layer->texture()->height());
+ const SkIRect subset = SkIRect::MakeWH(layer->rect().width(), layer->rect().height());
sk_sp<SkSpecialImage> img(SkSpecialImage::MakeFromGpu(subset,
kNeedNewImageUniqueID_SpecialImage,
sk_ref_sp(layer->texture()),
diff --git a/tests/GpuLayerCacheTest.cpp b/tests/GpuLayerCacheTest.cpp
index 2249eba904..eea81db385 100644
--- a/tests/GpuLayerCacheTest.cpp
+++ b/tests/GpuLayerCacheTest.cpp
@@ -69,8 +69,8 @@ static void create_layers(skiatest::Reporter* reporter,
REPORTER_ASSERT(reporter, picture.uniqueID() == layer->pictureID());
REPORTER_ASSERT(reporter, layer->start() == idOffset + i + 1);
REPORTER_ASSERT(reporter, layer->stop() == idOffset + i + 2);
- REPORTER_ASSERT(reporter, nullptr == layer->texture());
- REPORTER_ASSERT(reporter, nullptr == layer->paint());
+ REPORTER_ASSERT(reporter, !layer->texture());
+ REPORTER_ASSERT(reporter, !layer->paint());
REPORTER_ASSERT(reporter, !layer->isAtlased());
}
}
@@ -197,7 +197,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GpuLayerCache, reporter, ctxInfo) {
} else {
#endif
// The final layer should not be atlased.
- REPORTER_ASSERT(reporter, nullptr == layer->texture());
+ REPORTER_ASSERT(reporter, !layer->texture());
REPORTER_ASSERT(reporter, !layer->isAtlased());
#if GR_CACHE_HOISTED_LAYERS
}
@@ -258,7 +258,7 @@ DEF_GPUTEST_FOR_RENDERING_CONTEXTS(GpuLayerCache, reporter, ctxInfo) {
// The one that was never atlased should still be around
REPORTER_ASSERT(reporter, layer);
- REPORTER_ASSERT(reporter, nullptr == layer->texture());
+ REPORTER_ASSERT(reporter, !layer->texture());
REPORTER_ASSERT(reporter, !layer->isAtlased());
#if GR_CACHE_HOISTED_LAYERS
} else {