diff options
author | robertphillips <robertphillips@google.com> | 2016-05-13 11:20:46 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-05-13 11:20:46 -0700 |
commit | e576874b162f8c66aa6c2e06cb6bc459ccd8b6f9 (patch) | |
tree | 8ce401f7abec406f202f01ceedbdaf6af71e77b4 /src | |
parent | 846c051a4800b3cea341a0195db24297d6d9047f (diff) |
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
Review-Url: https://codereview.chromium.org/1956473002
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/SkGpuDevice.cpp | 16 | ||||
-rw-r--r-- | src/image/SkSurface_Gpu.cpp | 5 |
2 files changed, 11 insertions, 10 deletions
diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp index a5af472cbb..5206c63ae0 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); diff --git a/src/image/SkSurface_Gpu.cpp b/src/image/SkSurface_Gpu.cpp index 110d614d9b..1e4bd87661 100644 --- a/src/image/SkSurface_Gpu.cpp +++ b/src/image/SkSurface_Gpu.cpp @@ -68,8 +68,7 @@ SkCanvas* SkSurface_Gpu::onNewCanvas() { } sk_sp<SkSurface> SkSurface_Gpu::onNewSurface(const SkImageInfo& info) { - GrRenderTarget* rt = fDevice->accessRenderTarget(); - int sampleCount = rt->numColorSamples(); + int sampleCount = fDevice->accessDrawContext()->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, @@ -85,7 +84,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->accessRenderTarget()->desc(); + GrSurfaceDesc desc = fDevice->accessDrawContext()->desc(); GrContext* ctx = fDevice->context(); desc.fFlags = desc.fFlags & ~kRenderTarget_GrSurfaceFlag; copy.reset(ctx->textureProvider()->createTexture(desc, budgeted)); |