diff options
author | robertphillips <robertphillips@google.com> | 2016-05-06 07:55:19 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-06 07:55:20 -0700 |
commit | 524484b143e472b3b6bdc8fd7812635f509071a9 (patch) | |
tree | a640f1f8d127a144b47d4ee08878210fb055805d /src | |
parent | ebbdfe63a9643faa403f33282da9921427ca91eb (diff) |
Revert of Retract GrRenderTarget a bit within SkGpuDevice (patchset #2 id:20001 of https://codereview.chromium.org/1956473002/ )
Reason for revert:
Experimental revert to track down perf regression
Original issue's description:
> Retract GrRenderTarget a bit within SkGpuDevice
>
> Split off of: https://codereview.chromium.org/1930013002/ ((Mostly) Retract GrRenderTarget from SkGpuDevice)
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1956473002
>
> Committed: https://skia.googlesource.com/skia/+/d215a95882485026d176a81bf58871276b21c89c
TBR=bsalomon@google.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review-Url: https://codereview.chromium.org/1954103002
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 16 | ||||
-rw-r--r-- | src/image/SkSurface_Gpu.cpp | 5 |
2 files changed, 10 insertions, 11 deletions
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index 54ed413549..98da472581 100644 --- a/src/gpu/SkGpuDevice.cpp +++ b/src/gpu/SkGpuDevice.cpp @@ -744,13 +744,13 @@ static int determine_tile_size(const SkIRect& src, int maxTileSize) { // Given a bitmap, an optional src rect, and a context with a clip and matrix determine what // pixels from the bitmap are necessary. -static void determine_clipped_src_rect(int width, int height, +static void determine_clipped_src_rect(const GrRenderTarget* rt, const GrClip& clip, const SkMatrix& viewMatrix, const SkISize& imageSize, const SkRect* srcRectPtr, SkIRect* clippedSrcIRect) { - clip.getConservativeBounds(width, height, clippedSrcIRect, nullptr); + clip.getConservativeBounds(rt->width(), rt->height(), clippedSrcIRect, nullptr); SkMatrix inv; if (!viewMatrix.invert(&inv)) { clippedSrcIRect->setEmpty(); @@ -783,8 +783,7 @@ bool SkGpuDevice::shouldTileImageID(uint32_t imageID, const SkIRect& imageRect, ASSERT_SINGLE_OWNER // if it's larger than the max tile size, then we have no choice but tiling. if (imageRect.width() > maxTileSize || imageRect.height() > maxTileSize) { - determine_clipped_src_rect(fDrawContext->width(), fDrawContext->height(), - fClip, viewMatrix, imageRect.size(), + determine_clipped_src_rect(fRenderTarget, fClip, viewMatrix, imageRect.size(), srcRectPtr, clippedSubset); *tileSize = determine_tile_size(*clippedSubset, maxTileSize); return true; @@ -812,8 +811,7 @@ bool SkGpuDevice::shouldTileImageID(uint32_t imageID, const SkIRect& imageRect, // Figure out how much of the src we will need based on the src rect and clipping. Reject if // tiling memory savings would be < 50%. - determine_clipped_src_rect(fDrawContext->width(), fDrawContext->height(), - fClip, viewMatrix, imageRect.size(), srcRectPtr, + determine_clipped_src_rect(fRenderTarget, fClip, viewMatrix, imageRect.size(), srcRectPtr, clippedSubset); *tileSize = kBmpSmallTileSize; // already know whole bitmap fits in one max sized tile. size_t usedTileBytes = get_tile_count(*clippedSubset, kBmpSmallTileSize) * @@ -1775,7 +1773,7 @@ sk_sp<SkSurface> SkGpuDevice::makeSurface(const SkImageInfo& info, const SkSurfa ASSERT_SINGLE_OWNER // TODO: Change the signature of newSurface to take a budgeted parameter. static const SkBudgeted kBudgeted = SkBudgeted::kNo; - return SkSurface::MakeRenderTarget(fContext, kBudgeted, info, fDrawContext->numColorSamples(), + return SkSurface::MakeRenderTarget(fContext, kBudgeted, info, fRenderTarget->desc().fSampleCnt, &props); } @@ -1818,7 +1816,7 @@ bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* mainCanvas, const SkPicture initialMatrix, clipBounds, &atlasedNeedRendering, &atlasedRecycled, - fDrawContext->numColorSamples()); + fRenderTarget->numColorSamples()); GrLayerHoister::DrawLayersToAtlas(fContext, atlasedNeedRendering); @@ -1830,7 +1828,7 @@ bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* mainCanvas, const SkPicture initialMatrix, clipBounds, &needRendering, &recycled, - fDrawContext->numColorSamples()); + fRenderTarget->numColorSamples()); GrLayerHoister::DrawLayers(fContext, needRendering); diff --git a/src/image/SkSurface_Gpu.cpp b/src/image/SkSurface_Gpu.cpp index 1e4bd87661..110d614d9b 100644 --- a/src/image/SkSurface_Gpu.cpp +++ b/src/image/SkSurface_Gpu.cpp @@ -68,7 +68,8 @@ SkCanvas* SkSurface_Gpu::onNewCanvas() { } sk_sp<SkSurface> SkSurface_Gpu::onNewSurface(const SkImageInfo& info) { - int sampleCount = fDevice->accessDrawContext()->numColorSamples(); + GrRenderTarget* rt = fDevice->accessRenderTarget(); + int sampleCount = rt->numColorSamples(); // TODO: Make caller specify this (change virtual signature of onNewSurface). static const SkBudgeted kBudgeted = SkBudgeted::kNo; return SkSurface::MakeRenderTarget(fDevice->context(), kBudgeted, info, sampleCount, @@ -84,7 +85,7 @@ sk_sp<SkImage> SkSurface_Gpu::onNewImageSnapshot(SkBudgeted budgeted, ForceCopyM // want to ever retarget the SkSurface at another buffer we create. Force a copy now to avoid // copy-on-write. if (kYes_ForceCopyMode == forceCopyMode || !tex || rt->resourcePriv().refsWrappedObjects()) { - GrSurfaceDesc desc = fDevice->accessDrawContext()->desc(); + GrSurfaceDesc desc = fDevice->accessRenderTarget()->desc(); GrContext* ctx = fDevice->context(); desc.fFlags = desc.fFlags & ~kRenderTarget_GrSurfaceFlag; copy.reset(ctx->textureProvider()->createTexture(desc, budgeted)); |