author | James Willcox <jwillcox@mozilla.com> |
Fri, 21 Jun 2013 15:28:10 -0400 | |
changeset 139174 | 5e051e9912f81bbefc7846b5d0fcba7bfb0e6d73 |
parent 139173 | fb0c86ed08c2a198ea0513202da252a8be675ed5 |
child 139175 | 2293c4eea18e45c1d8ee9e06e65e2c297acd9ed4 |
push id | 31266 |
push user | jwillcox@mozilla.com |
push date | Fri, 19 Jul 2013 02:34:02 +0000 |
treeherder | mozilla-inbound@4303c1af09f6 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mattwoodrow |
bugs | 885632 |
milestone | 25.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
gfx/2d/DrawTargetSkia.cpp | file | annotate | diff | comparison | revisions | |
gfx/2d/DrawTargetSkia.h | file | annotate | diff | comparison | revisions |
--- a/gfx/2d/DrawTargetSkia.cpp +++ b/gfx/2d/DrawTargetSkia.cpp @@ -22,22 +22,16 @@ #include "skia/SkLayerRasterizer.h" #include "skia/SkLayerDrawLooper.h" #include "skia/SkDashPathEffect.h" #include "Logging.h" #include "HelpersSkia.h" #include "Tools.h" #include <algorithm> -#ifdef ANDROID -# define USE_SOFT_CLIPPING false -#else -# define USE_SOFT_CLIPPING true -#endif - namespace mozilla { namespace gfx { class GradientStopsSkia : public GradientStops { public: GradientStopsSkia(const std::vector<GradientStop>& aStops, uint32_t aNumStops, ExtendMode aExtendMode) : mCount(aNumStops) @@ -78,16 +72,21 @@ public: std::vector<SkColor> mColors; std::vector<SkScalar> mPositions; int mCount; ExtendMode mExtendMode; }; DrawTargetSkia::DrawTargetSkia() { +#ifdef ANDROID + mSoftClipping = false; +#else + mSoftClipping = true; +#endif } DrawTargetSkia::~DrawTargetSkia() { MOZ_ASSERT(mSnapshots.size() == 0); } TemporaryRef<SourceSurface> @@ -645,16 +644,19 @@ DrawTargetSkia::InitWithGLContextAndGrGL GrGLInterface* aGrGLInterface, const IntSize &aSize, SurfaceFormat aFormat) { mGLContext = aGLContext; mSize = aSize; mFormat = aFormat; + // Always use soft clipping when we're using GL + mSoftClipping = true; + mGrGLInterface = aGrGLInterface; mGrGLInterface->fCallbackData = reinterpret_cast<GrGLInterfaceCallbackData>(this); GrBackendContext backendContext = reinterpret_cast<GrBackendContext>(aGrGLInterface); SkAutoTUnref<GrContext> gr(GrContext::Create(kOpenGL_GrBackend, backendContext)); mGrContext = gr.get(); @@ -717,42 +719,42 @@ DrawTargetSkia::CreatePathBuilder(FillRu } void DrawTargetSkia::ClearRect(const Rect &aRect) { MarkChanged(); SkPaint paint; mCanvas->save(); - mCanvas->clipRect(RectToSkRect(aRect), SkRegion::kIntersect_Op, USE_SOFT_CLIPPING); + mCanvas->clipRect(RectToSkRect(aRect), SkRegion::kIntersect_Op, mSoftClipping); paint.setColor(SkColorSetARGB(0, 0, 0, 0)); paint.setXfermodeMode(SkXfermode::kSrc_Mode); mCanvas->drawPaint(paint); mCanvas->restore(); } void DrawTargetSkia::PushClip(const Path *aPath) { if (aPath->GetBackendType() != BACKEND_SKIA) { return; } const PathSkia *skiaPath = static_cast<const PathSkia*>(aPath); mCanvas->save(SkCanvas::kClip_SaveFlag); - mCanvas->clipPath(skiaPath->GetPath(), SkRegion::kIntersect_Op, USE_SOFT_CLIPPING); + mCanvas->clipPath(skiaPath->GetPath(), SkRegion::kIntersect_Op, mSoftClipping); } void DrawTargetSkia::PushClipRect(const Rect& aRect) { SkRect rect = RectToSkRect(aRect); mCanvas->save(SkCanvas::kClip_SaveFlag); - mCanvas->clipRect(rect, SkRegion::kIntersect_Op, USE_SOFT_CLIPPING); + mCanvas->clipRect(rect, SkRegion::kIntersect_Op, mSoftClipping); } void DrawTargetSkia::PopClip() { mCanvas->restore(); }
--- a/gfx/2d/DrawTargetSkia.h +++ b/gfx/2d/DrawTargetSkia.h @@ -129,12 +129,13 @@ private: RefPtr<GenericRefCountedBase> mGLContext; SkRefPtr<GrGLInterface> mGrGLInterface; SkRefPtr<GrContext> mGrContext; #endif IntSize mSize; SkRefPtr<SkCanvas> mCanvas; std::vector<SourceSurfaceSkia*> mSnapshots; + bool mSoftClipping; }; } }