| Index: src/gpu/SkGpuDevice.cpp
|
| diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
|
| index a5af472cbb702c0179543b48193d390d55c6e5b2..5206c63ae01d5de04e49fafcf1bebf199ff30719 100644
|
| --- a/src/gpu/SkGpuDevice.cpp
|
| +++ b/src/gpu/SkGpuDevice.cpp
|
| @@ -740,13 +740,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(const GrRenderTarget* rt,
|
| +static void determine_clipped_src_rect(int width, int height,
|
| const GrClip& clip,
|
| const SkMatrix& viewMatrix,
|
| const SkISize& imageSize,
|
| const SkRect* srcRectPtr,
|
| SkIRect* clippedSrcIRect) {
|
| - clip.getConservativeBounds(rt->width(), rt->height(), clippedSrcIRect, nullptr);
|
| + clip.getConservativeBounds(width, height, clippedSrcIRect, nullptr);
|
| SkMatrix inv;
|
| if (!viewMatrix.invert(&inv)) {
|
| clippedSrcIRect->setEmpty();
|
| @@ -779,7 +779,8 @@ 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(fRenderTarget, fClip, viewMatrix, imageRect.size(),
|
| + determine_clipped_src_rect(fDrawContext->width(), fDrawContext->height(),
|
| + fClip, viewMatrix, imageRect.size(),
|
| srcRectPtr, clippedSubset);
|
| *tileSize = determine_tile_size(*clippedSubset, maxTileSize);
|
| return true;
|
| @@ -807,7 +808,8 @@ 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(fRenderTarget, fClip, viewMatrix, imageRect.size(), srcRectPtr,
|
| + determine_clipped_src_rect(fDrawContext->width(), fDrawContext->height(),
|
| + 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) *
|
| @@ -1769,7 +1771,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, fRenderTarget->desc().fSampleCnt,
|
| + return SkSurface::MakeRenderTarget(fContext, kBudgeted, info, fDrawContext->desc().fSampleCnt,
|
| &props);
|
| }
|
|
|
| @@ -1814,7 +1816,7 @@ bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* mainCanvas, const SkPicture
|
| initialMatrix,
|
| clipBounds,
|
| &atlasedNeedRendering, &atlasedRecycled,
|
| - fRenderTarget->numColorSamples());
|
| + fDrawContext->numColorSamples());
|
|
|
| GrLayerHoister::DrawLayersToAtlas(fContext, atlasedNeedRendering);
|
|
|
| @@ -1826,7 +1828,7 @@ bool SkGpuDevice::EXPERIMENTAL_drawPicture(SkCanvas* mainCanvas, const SkPicture
|
| initialMatrix,
|
| clipBounds,
|
| &needRendering, &recycled,
|
| - fRenderTarget->numColorSamples());
|
| + fDrawContext->numColorSamples());
|
|
|
| GrLayerHoister::DrawLayers(fContext, needRendering);
|
|
|
|
|