diff options
author | bsalomon <bsalomon@google.com> | 2016-02-11 11:42:31 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-11 11:42:31 -0800 |
commit | 7ea5e28065e5eb797e95f5d81c1a65cf3209d741 (patch) | |
tree | b239caa1224b79d021154265e44ebbc4a945b7d1 /src/gpu/batches | |
parent | e1745a1efc02de4964a430cf9fd02d7652b3ed5e (diff) |
Make copySurface work for texture dsts, return a bool, & add unit test.
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1684313002
Review URL: https://codereview.chromium.org/1684313002
Diffstat (limited to 'src/gpu/batches')
-rw-r--r-- | src/gpu/batches/GrCopySurfaceBatch.cpp | 19 | ||||
-rw-r--r-- | src/gpu/batches/GrCopySurfaceBatch.h | 10 |
2 files changed, 17 insertions, 12 deletions
diff --git a/src/gpu/batches/GrCopySurfaceBatch.cpp b/src/gpu/batches/GrCopySurfaceBatch.cpp index 098f7c7704..a59ed38f51 100644 --- a/src/gpu/batches/GrCopySurfaceBatch.cpp +++ b/src/gpu/batches/GrCopySurfaceBatch.cpp @@ -9,12 +9,12 @@ #include "GrCopySurfaceBatch.h" // returns true if the read/written rect intersects the src/dst and false if not. -static bool clip_srcrect_and_dstpoint(const GrSurface* dst, - const GrSurface* src, - const SkIRect& srcRect, - const SkIPoint& dstPoint, - SkIRect* clippedSrcRect, - SkIPoint* clippedDstPoint) { +bool GrCopySurfaceBatch::ClipSrcRectAndDstPoint(const GrSurface* dst, + const GrSurface* src, + const SkIRect& srcRect, + const SkIPoint& dstPoint, + SkIRect* clippedSrcRect, + SkIPoint* clippedDstPoint) { *clippedSrcRect = srcRect; *clippedDstPoint = dstPoint; @@ -67,12 +67,7 @@ GrBatch* GrCopySurfaceBatch::Create(GrSurface* dst, GrSurface* src, const SkIRec SkIRect clippedSrcRect; SkIPoint clippedDstPoint; // If the rect is outside the src or dst then we've already succeeded. - if (!clip_srcrect_and_dstpoint(dst, - src, - srcRect, - dstPoint, - &clippedSrcRect, - &clippedDstPoint)) { + if (!ClipSrcRectAndDstPoint(dst, src, srcRect, dstPoint, &clippedSrcRect, &clippedDstPoint)) { return nullptr; } return new GrCopySurfaceBatch(dst, src, clippedSrcRect, clippedDstPoint); diff --git a/src/gpu/batches/GrCopySurfaceBatch.h b/src/gpu/batches/GrCopySurfaceBatch.h index 7bf8d8d8c2..3926643f8a 100644 --- a/src/gpu/batches/GrCopySurfaceBatch.h +++ b/src/gpu/batches/GrCopySurfaceBatch.h @@ -17,6 +17,16 @@ class GrCopySurfaceBatch final : public GrBatch { public: DEFINE_BATCH_CLASS_ID + /** This should not really be exposed as Create() will apply this clipping, but there is + * currently a workaround in GrContext::copySurface() for non-render target dsts that relies + * on it. */ + static bool ClipSrcRectAndDstPoint(const GrSurface* dst, + const GrSurface* src, + const SkIRect& srcRect, + const SkIPoint& dstPoint, + SkIRect* clippedSrcRect, + SkIPoint* clippedDstPoint); + static GrBatch* Create(GrSurface* dst, GrSurface* src, const SkIRect& srcRect, const SkIPoint& dstPoint); |