| Index: src/gpu/SkGpuDevice.cpp
|
| diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
|
| index da81c696d2aa5857ee5d6e5b3b878fa9bebc7ed5..96c071473ca303630f692c7da39d1cbd9caf8001 100644
|
| --- a/src/gpu/SkGpuDevice.cpp
|
| +++ b/src/gpu/SkGpuDevice.cpp
|
| @@ -67,7 +67,7 @@ enum { kDefaultImageFilterCacheSize = 32 * 1024 * 1024 };
|
|
|
| #define DO_DEFERRED_CLEAR() \
|
| do { \
|
| - if (fNeedClear) { \
|
| + if (fFlags & kNeedClear_Flag) { \
|
| this->clear(SK_ColorTRANSPARENT); \
|
| } \
|
| } while (false) \
|
| @@ -137,7 +137,7 @@ SkGpuDevice::SkGpuDevice(GrSurface* surface, const SkSurfaceProps& props, unsign
|
|
|
| fContext = SkRef(surface->getContext());
|
|
|
| - fNeedClear = flags & kNeedClear_Flag;
|
| + fFlags = flags;
|
|
|
| fRenderTarget = SkRef(surface->asRenderTarget());
|
|
|
| @@ -148,8 +148,8 @@ SkGpuDevice::SkGpuDevice(GrSurface* surface, const SkSurfaceProps& props, unsign
|
|
|
| this->setPixelGeometry(props.pixelGeometry());
|
|
|
| - bool useDFFonts = !!(flags & kDFFonts_Flag);
|
| - fTextContext = fContext->createTextContext(fRenderTarget, this->getLeakyProperties(), useDFFonts);
|
| + bool useDFT = SkToBool(flags & kDFText_Flag);
|
| + fTextContext = fContext->createTextContext(fRenderTarget, this->getLeakyProperties(), useDFT);
|
| }
|
|
|
| SkGpuDevice* SkGpuDevice::Create(GrContext* context, const SkImageInfo& origInfo,
|
| @@ -310,7 +310,7 @@ void SkGpuDevice::clear(SkColor color) {
|
| GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::clear", fContext);
|
| SkIRect rect = SkIRect::MakeWH(this->width(), this->height());
|
| fContext->clear(&rect, SkColor2GrColor(color), true, fRenderTarget);
|
| - fNeedClear = false;
|
| + fFlags &= ~kNeedClear_Flag;
|
| }
|
|
|
| void SkGpuDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) {
|
| @@ -1473,7 +1473,7 @@ void SkGpuDevice::drawDevice(const SkDraw& draw, SkBaseDevice* device,
|
| // clear of the source device must occur before CHECK_SHOULD_DRAW
|
| GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawDevice", fContext);
|
| SkGpuDevice* dev = static_cast<SkGpuDevice*>(device);
|
| - if (dev->fNeedClear) {
|
| + if (dev->fFlags & kNeedClear_Flag) {
|
| // TODO: could check here whether we really need to draw at all
|
| dev->clear(0x0);
|
| }
|
| @@ -1763,6 +1763,8 @@ SkBaseDevice* SkGpuDevice::onCreateDevice(const SkImageInfo& info, Usage usage)
|
| SkAutoTUnref<GrTexture> texture;
|
| // Skia's convention is to only clear a device if it is non-opaque.
|
| unsigned flags = info.isOpaque() ? 0 : kNeedClear_Flag;
|
| + // If we're using distance field text, enable in the new device
|
| + flags |= (fFlags & kDFText_Flag) ? kDFText_Flag : 0;
|
|
|
| #if CACHE_COMPATIBLE_DEVICE_TEXTURES
|
| // layers are never draw in repeat modes, so we can request an approx
|
|
|