diff options
author | robertphillips <robertphillips@google.com> | 2016-05-03 09:37:08 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-03 09:37:08 -0700 |
commit | b4511344b61bffc02219c1282610411529ddb7f8 (patch) | |
tree | 9e02cde88c0468f0016e923162b661691467ce18 | |
parent | 46db22f1cfc65a7a4f1de13d774718347362f60f (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.cpp | 6 | ||||
-rw-r--r-- | tests/GpuLayerCacheTest.cpp | 8 |
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 { |