| Index: src/gpu/SkGpuDevice.cpp
|
| diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
|
| index b6cc69d8587cb0d8ff7dc46a7bf2b38dcc4b5d46..458c8afc04194bdcae23ba82b045f7bb8d4fb887 100644
|
| --- a/src/gpu/SkGpuDevice.cpp
|
| +++ b/src/gpu/SkGpuDevice.cpp
|
| @@ -211,12 +211,6 @@ SkGpuDevice::~SkGpuDevice() {
|
|
|
| delete fTextContext;
|
|
|
| - // The GrContext takes a ref on the target. We don't want to cause the render
|
| - // target to be unnecessarily kept alive.
|
| - if (fContext->getRenderTarget() == fRenderTarget) {
|
| - fContext->setRenderTarget(NULL);
|
| - }
|
| -
|
| if (fContext->getClip() == &fClipData) {
|
| fContext->setClip(NULL);
|
| }
|
| @@ -286,8 +280,6 @@ void SkGpuDevice::onDetachFromCanvas() {
|
| void SkGpuDevice::prepareDraw(const SkDraw& draw) {
|
| SkASSERT(fClipData.fClipStack);
|
|
|
| - fContext->setRenderTarget(fRenderTarget);
|
| -
|
| SkASSERT(draw.fClipStack && draw.fClipStack == fClipData.fClipStack);
|
|
|
| fClipData.fOrigin = this->getOrigin();
|
| @@ -330,9 +322,9 @@ void SkGpuDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) {
|
| GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawPaint", fContext);
|
|
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
|
|
|
| - fContext->drawPaint(grPaint, *draw.fMatrix);
|
| + fContext->drawPaint(fRenderTarget, grPaint, *draw.fMatrix);
|
| }
|
|
|
| // must be in SkCanvas::PointMode order
|
| @@ -355,12 +347,12 @@ void SkGpuDevice::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode,
|
| if (paint.getPathEffect() && 2 == count && SkCanvas::kLines_PointMode == mode) {
|
| GrStrokeInfo strokeInfo(paint, SkPaint::kStroke_Style);
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
|
| SkPath path;
|
| path.setIsVolatile(true);
|
| path.moveTo(pts[0]);
|
| path.lineTo(pts[1]);
|
| - fContext->drawPath(grPaint, *draw.fMatrix, path, strokeInfo);
|
| + fContext->drawPath(fRenderTarget, grPaint, *draw.fMatrix, path, strokeInfo);
|
| return;
|
| }
|
|
|
| @@ -372,9 +364,10 @@ void SkGpuDevice::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode,
|
| }
|
|
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
|
|
|
| - fContext->drawVertices(grPaint,
|
| + fContext->drawVertices(fRenderTarget,
|
| + grPaint,
|
| *draw.fMatrix,
|
| gPointMode2PrimtiveType[mode],
|
| SkToS32(count),
|
| @@ -442,9 +435,9 @@ void SkGpuDevice::drawRect(const SkDraw& draw, const SkRect& rect,
|
| }
|
|
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
|
|
|
| - fContext->drawRect(grPaint, *draw.fMatrix, rect, &strokeInfo);
|
| + fContext->drawRect(fRenderTarget, grPaint, *draw.fMatrix, rect, &strokeInfo);
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -456,7 +449,7 @@ void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect,
|
| CHECK_SHOULD_DRAW(draw);
|
|
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
|
|
|
| GrStrokeInfo strokeInfo(paint);
|
| if (paint.getMaskFilter()) {
|
| @@ -476,7 +469,9 @@ void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect,
|
| // clipped out
|
| return;
|
| }
|
| - if (paint.getMaskFilter()->directFilterRRectMaskGPU(fContext, &grPaint,
|
| + if (paint.getMaskFilter()->directFilterRRectMaskGPU(fContext,
|
| + fRenderTarget,
|
| + &grPaint,
|
| *draw.fMatrix,
|
| strokeInfo.getStrokeRec(),
|
| devRRect)) {
|
| @@ -509,7 +504,7 @@ void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect,
|
| return;
|
| }
|
|
|
| - fContext->drawRRect(grPaint, *draw.fMatrix, rect, strokeInfo);
|
| + fContext->drawRRect(fRenderTarget, grPaint, *draw.fMatrix, rect, strokeInfo);
|
| }
|
|
|
| void SkGpuDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer,
|
| @@ -521,10 +516,10 @@ void SkGpuDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer,
|
| CHECK_SHOULD_DRAW(draw);
|
|
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
|
|
|
| if (NULL == paint.getMaskFilter() && NULL == paint.getPathEffect()) {
|
| - fContext->drawDRRect(grPaint, *draw.fMatrix, outer, inner);
|
| + fContext->drawDRRect(fRenderTarget, grPaint, *draw.fMatrix, outer, inner);
|
| return;
|
| }
|
| }
|
| @@ -569,9 +564,9 @@ void SkGpuDevice::drawOval(const SkDraw& draw, const SkRect& oval,
|
| }
|
|
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
|
|
|
| - fContext->drawOval(grPaint, *draw.fMatrix, oval, strokeInfo);
|
| + fContext->drawOval(fRenderTarget, grPaint, *draw.fMatrix, oval, strokeInfo);
|
| }
|
|
|
| #include "SkMaskFilter.h"
|
| @@ -584,8 +579,12 @@ namespace {
|
| // Draw a mask using the supplied paint. Since the coverage/geometry
|
| // is already burnt into the mask this boils down to a rect draw.
|
| // Return true if the mask was successfully drawn.
|
| -bool draw_mask(GrContext* context, const SkMatrix& viewMatrix, const SkRect& maskRect,
|
| - GrPaint* grp, GrTexture* mask) {
|
| +bool draw_mask(GrContext* context,
|
| + GrRenderTarget* rt,
|
| + const SkMatrix& viewMatrix,
|
| + const SkRect& maskRect,
|
| + GrPaint* grp,
|
| + GrTexture* mask) {
|
| SkMatrix matrix;
|
| matrix.setTranslate(-maskRect.fLeft, -maskRect.fTop);
|
| matrix.postIDiv(mask->width(), mask->height());
|
| @@ -597,13 +596,18 @@ bool draw_mask(GrContext* context, const SkMatrix& viewMatrix, const SkRect& mas
|
| if (!viewMatrix.invert(&inverse)) {
|
| return false;
|
| }
|
| - context->drawNonAARectWithLocalMatrix(*grp, SkMatrix::I(), maskRect, inverse);
|
| + context->drawNonAARectWithLocalMatrix(rt, *grp, SkMatrix::I(), maskRect, inverse);
|
| return true;
|
| }
|
|
|
| -bool draw_with_mask_filter(GrContext* context, const SkMatrix& viewMatrix, const SkPath& devPath,
|
| - SkMaskFilter* filter, const SkRegion& clip,
|
| - GrPaint* grp, SkPaint::Style style) {
|
| +bool draw_with_mask_filter(GrContext* context,
|
| + GrRenderTarget* rt,
|
| + const SkMatrix& viewMatrix,
|
| + const SkPath& devPath,
|
| + SkMaskFilter* filter,
|
| + const SkRegion& clip,
|
| + GrPaint* grp,
|
| + SkPaint::Style style) {
|
| SkMask srcM, dstM;
|
|
|
| if (!SkDraw::DrawToMask(devPath, &clip.getBounds(), filter, &viewMatrix, &srcM,
|
| @@ -639,11 +643,12 @@ bool draw_with_mask_filter(GrContext* context, const SkMatrix& viewMatrix, const
|
|
|
| SkRect maskRect = SkRect::Make(dstM.fBounds);
|
|
|
| - return draw_mask(context, viewMatrix, maskRect, grp, texture);
|
| + return draw_mask(context, rt, viewMatrix, maskRect, grp, texture);
|
| }
|
|
|
| // Create a mask of 'devPath' and place the result in 'mask'.
|
| GrTexture* create_mask_GPU(GrContext* context,
|
| + GrRenderTarget* rt,
|
| const SkRect& maskRect,
|
| const SkPath& devPath,
|
| const GrStrokeInfo& strokeInfo,
|
| @@ -670,7 +675,6 @@ GrTexture* create_mask_GPU(GrContext* context,
|
|
|
| SkRect clipRect = SkRect::MakeWH(maskRect.width(), maskRect.height());
|
|
|
| - GrContext::AutoRenderTarget art(context, mask->asRenderTarget());
|
| GrContext::AutoClip ac(context, clipRect);
|
|
|
| context->clear(NULL, 0x0, true, mask->asRenderTarget());
|
| @@ -682,7 +686,7 @@ GrTexture* create_mask_GPU(GrContext* context,
|
| // Draw the mask into maskTexture with the path's top-left at the origin using tempPaint.
|
| SkMatrix translate;
|
| translate.setTranslate(-maskRect.fLeft, -maskRect.fTop);
|
| - context->drawPath(tempPaint, translate, devPath, strokeInfo);
|
| + context->drawPath(mask->asRenderTarget(), tempPaint, translate, devPath, strokeInfo);
|
| return mask;
|
| }
|
|
|
| @@ -741,7 +745,7 @@ void SkGpuDevice::drawPath(const SkDraw& draw, const SkPath& origSrcPath,
|
| SkDEBUGCODE(prePathMatrix = (const SkMatrix*)0x50FF8001;)
|
|
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, viewMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, viewMatrix, true, &grPaint);
|
|
|
| const SkRect* cullRect = NULL; // TODO: what is our bounds?
|
| SkStrokeRec* strokePtr = strokeInfo.getStrokeRecPtr();
|
| @@ -784,16 +788,24 @@ void SkGpuDevice::drawPath(const SkDraw& draw, const SkPath& origSrcPath,
|
| return;
|
| }
|
|
|
| - if (paint.getMaskFilter()->directFilterMaskGPU(fContext, &grPaint, viewMatrix,
|
| - stroke, *devPathPtr)) {
|
| + if (paint.getMaskFilter()->directFilterMaskGPU(fContext,
|
| + fRenderTarget,
|
| + &grPaint,
|
| + viewMatrix,
|
| + stroke,
|
| + *devPathPtr)) {
|
| // the mask filter was able to draw itself directly, so there's nothing
|
| // left to do.
|
| return;
|
| }
|
|
|
|
|
| - SkAutoTUnref<GrTexture> mask(create_mask_GPU(fContext, maskRect, *devPathPtr,
|
| - strokeInfo, grPaint.isAntiAlias(),
|
| + SkAutoTUnref<GrTexture> mask(create_mask_GPU(fContext,
|
| + fRenderTarget,
|
| + maskRect,
|
| + *devPathPtr,
|
| + strokeInfo,
|
| + grPaint.isAntiAlias(),
|
| fRenderTarget->numSamples()));
|
| if (mask) {
|
| GrTexture* filtered;
|
| @@ -801,7 +813,8 @@ void SkGpuDevice::drawPath(const SkDraw& draw, const SkPath& origSrcPath,
|
| if (paint.getMaskFilter()->filterMaskGPU(mask, viewMatrix, maskRect, &filtered, true)) {
|
| // filterMaskGPU gives us ownership of a ref to the result
|
| SkAutoTUnref<GrTexture> atu(filtered);
|
| - if (draw_mask(fContext, viewMatrix, maskRect, &grPaint, filtered)) {
|
| + if (draw_mask(fContext, fRenderTarget, viewMatrix, maskRect, &grPaint,
|
| + filtered)) {
|
| // This path is completely drawn
|
| return;
|
| }
|
| @@ -813,12 +826,12 @@ void SkGpuDevice::drawPath(const SkDraw& draw, const SkPath& origSrcPath,
|
| // GPU path fails
|
| SkPaint::Style style = stroke.isHairlineStyle() ? SkPaint::kStroke_Style :
|
| SkPaint::kFill_Style;
|
| - draw_with_mask_filter(fContext, viewMatrix, *devPathPtr, paint.getMaskFilter(),
|
| - *draw.fClip, &grPaint, style);
|
| + draw_with_mask_filter(fContext, fRenderTarget, viewMatrix, *devPathPtr,
|
| + paint.getMaskFilter(), *draw.fClip, &grPaint, style);
|
| return;
|
| }
|
|
|
| - fContext->drawPath(grPaint, viewMatrix, *pathPtr, strokeInfo);
|
| + fContext->drawPath(fRenderTarget, grPaint, viewMatrix, *pathPtr, strokeInfo);
|
| }
|
|
|
| static const int kBmpSmallTileSize = 1 << 10;
|
| @@ -850,12 +863,13 @@ static int determine_tile_size(const SkBitmap& bitmap, const SkIRect& src, int m
|
| // 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 GrContext* context,
|
| + const GrRenderTarget* rt,
|
| const SkMatrix& viewMatrix,
|
| const SkBitmap& bitmap,
|
| const SkRect* srcRectPtr,
|
| SkIRect* clippedSrcIRect) {
|
| const GrClipData* clip = context->getClip();
|
| - clip->getConservativeBounds(context->getRenderTarget(), clippedSrcIRect, NULL);
|
| + clip->getConservativeBounds(rt, clippedSrcIRect, NULL);
|
| SkMatrix inv;
|
| if (!viewMatrix.invert(&inv)) {
|
| clippedSrcIRect->setEmpty();
|
| @@ -892,7 +906,8 @@ bool SkGpuDevice::shouldTileBitmap(const SkBitmap& bitmap,
|
|
|
| // if it's larger than the max tile size, then we have no choice but tiling.
|
| if (bitmap.width() > maxTileSize || bitmap.height() > maxTileSize) {
|
| - determine_clipped_src_rect(fContext, viewMatrix, bitmap, srcRectPtr, clippedSrcRect);
|
| + determine_clipped_src_rect(fContext, fRenderTarget, viewMatrix, bitmap, srcRectPtr,
|
| + clippedSrcRect);
|
| *tileSize = determine_tile_size(bitmap, *clippedSrcRect, maxTileSize);
|
| return true;
|
| }
|
| @@ -921,7 +936,8 @@ bool SkGpuDevice::shouldTileBitmap(const SkBitmap& bitmap,
|
| }
|
|
|
| // Figure out how much of the src we will need based on the src rect and clipping.
|
| - determine_clipped_src_rect(fContext, viewMatrix, bitmap, srcRectPtr, clippedSrcRect);
|
| + determine_clipped_src_rect(fContext, fRenderTarget, viewMatrix, bitmap, srcRectPtr,
|
| + clippedSrcRect);
|
| *tileSize = kBmpSmallTileSize; // already know whole bitmap fits in one max sized tile.
|
| size_t usedTileBytes = get_tile_count(*clippedSrcRect, kBmpSmallTileSize) *
|
| kBmpSmallTileSize * kBmpSmallTileSize;
|
| @@ -1392,9 +1408,9 @@ void SkGpuDevice::internalDrawBitmap(const SkBitmap& bitmap,
|
| bool alphaOnly = !(kAlpha_8_SkColorType == bitmap.colorType());
|
| GrColor paintColor = (alphaOnly) ? SkColor2GrColorJustAlpha(paint.getColor()) :
|
| SkColor2GrColor(paint.getColor());
|
| - SkPaint2GrPaintNoShader(this->context(), paint, paintColor, false, &grPaint);
|
| + SkPaint2GrPaintNoShader(this->context(), fRenderTarget, paint, paintColor, false, &grPaint);
|
|
|
| - fContext->drawNonAARectToRect(grPaint, viewMatrix, dstRect, paintRect);
|
| + fContext->drawNonAARectToRect(fRenderTarget, grPaint, viewMatrix, dstRect, paintRect);
|
| }
|
|
|
| bool SkGpuDevice::filterTexture(GrContext* context, GrTexture* texture,
|
| @@ -1408,9 +1424,8 @@ bool SkGpuDevice::filterTexture(GrContext* context, GrTexture* texture,
|
| SkDeviceImageFilterProxy proxy(this, SkSurfaceProps(0, getLeakyProperties().pixelGeometry()));
|
|
|
| if (filter->canFilterImageGPU()) {
|
| - // Save the render target and set it to NULL, so we don't accidentally draw to it in the
|
| - // filter. Also set the clip wide open and the matrix to identity.
|
| - GrContext::AutoWideOpenIdentityDraw awo(context, NULL);
|
| + // Set the clip wide open and the matrix to identity.
|
| + GrContext::AutoWideOpenIdentityDraw awo(context);
|
| return filter->filterImageGPU(&proxy, wrap_texture(texture), ctx, result, offset);
|
| } else {
|
| return false;
|
| @@ -1462,10 +1477,11 @@ void SkGpuDevice::drawSprite(const SkDraw& draw, const SkBitmap& bitmap,
|
| GrPaint grPaint;
|
| grPaint.addColorTextureProcessor(texture, SkMatrix::I());
|
|
|
| - SkPaint2GrPaintNoShader(this->context(), paint, SkColor2GrColorJustAlpha(paint.getColor()),
|
| - false, &grPaint);
|
| + SkPaint2GrPaintNoShader(this->context(), fRenderTarget, paint,
|
| + SkColor2GrColorJustAlpha(paint.getColor()), false, &grPaint);
|
|
|
| - fContext->drawNonAARectToRect(grPaint,
|
| + fContext->drawNonAARectToRect(fRenderTarget,
|
| + grPaint,
|
| SkMatrix::I(),
|
| SkRect::MakeXYWH(SkIntToScalar(left),
|
| SkIntToScalar(top),
|
| @@ -1574,8 +1590,8 @@ void SkGpuDevice::drawDevice(const SkDraw& draw, SkBaseDevice* device,
|
| GrPaint grPaint;
|
| grPaint.addColorTextureProcessor(devTex, SkMatrix::I());
|
|
|
| - SkPaint2GrPaintNoShader(this->context(), paint, SkColor2GrColorJustAlpha(paint.getColor()),
|
| - false, &grPaint);
|
| + SkPaint2GrPaintNoShader(this->context(), fRenderTarget, paint,
|
| + SkColor2GrColorJustAlpha(paint.getColor()), false, &grPaint);
|
|
|
| SkRect dstRect = SkRect::MakeXYWH(SkIntToScalar(x),
|
| SkIntToScalar(y),
|
| @@ -1587,7 +1603,7 @@ void SkGpuDevice::drawDevice(const SkDraw& draw, SkBaseDevice* device,
|
| SkRect srcRect = SkRect::MakeWH(SK_Scalar1 * w / devTex->width(),
|
| SK_Scalar1 * h / devTex->height());
|
|
|
| - fContext->drawNonAARectToRect(grPaint, SkMatrix::I(), dstRect, srcRect);
|
| + fContext->drawNonAARectToRect(fRenderTarget, grPaint, SkMatrix::I(), dstRect, srcRect);
|
| }
|
|
|
| bool SkGpuDevice::canHandleImageFilter(const SkImageFilter* filter) {
|
| @@ -1648,8 +1664,8 @@ void SkGpuDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode,
|
| copy.setStrokeWidth(0);
|
|
|
| // we ignore the shader if texs is null.
|
| - SkPaint2GrPaintNoShader(this->context(), copy, SkColor2GrColor(copy.getColor()),
|
| - NULL == colors, &grPaint);
|
| + SkPaint2GrPaintNoShader(this->context(), fRenderTarget, copy,
|
| + SkColor2GrColor(copy.getColor()), NULL == colors, &grPaint);
|
|
|
| primType = kLines_GrPrimitiveType;
|
| int triangleCount = 0;
|
| @@ -1688,10 +1704,12 @@ void SkGpuDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode,
|
| primType = gVertexMode2PrimitiveType[vmode];
|
|
|
| if (NULL == texs || NULL == paint.getShader()) {
|
| - SkPaint2GrPaintNoShader(this->context(), paint, SkColor2GrColor(paint.getColor()),
|
| + SkPaint2GrPaintNoShader(this->context(), fRenderTarget, paint,
|
| + SkColor2GrColor(paint.getColor()),
|
| NULL == colors, &grPaint);
|
| } else {
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, NULL == colors, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix,
|
| + NULL == colors, &grPaint);
|
| }
|
| }
|
|
|
| @@ -1718,7 +1736,8 @@ void SkGpuDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode,
|
| }
|
| colors = convertedColors.get();
|
| }
|
| - fContext->drawVertices(grPaint,
|
| + fContext->drawVertices(fRenderTarget,
|
| + grPaint,
|
| *draw.fMatrix,
|
| primType,
|
| vertexCount,
|
| @@ -1738,12 +1757,12 @@ void SkGpuDevice::drawText(const SkDraw& draw, const void* text,
|
| GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice::drawText", fContext);
|
|
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
|
|
|
| SkDEBUGCODE(this->validate();)
|
|
|
| - if (!fTextContext->drawText(grPaint, paint, *draw.fMatrix, (const char *)text, byteLength, x,
|
| - y)) {
|
| + if (!fTextContext->drawText(fRenderTarget, grPaint, paint, *draw.fMatrix, (const char *)text,
|
| + byteLength, x, y)) {
|
| // this will just call our drawPath()
|
| draw.drawText_asPaths((const char*)text, byteLength, x, y, paint);
|
| }
|
| @@ -1756,12 +1775,12 @@ void SkGpuDevice::drawPosText(const SkDraw& draw, const void* text, size_t byteL
|
| CHECK_SHOULD_DRAW(draw);
|
|
|
| GrPaint grPaint;
|
| - SkPaint2GrPaintShader(this->context(), paint, *draw.fMatrix, true, &grPaint);
|
| + SkPaint2GrPaintShader(this->context(), fRenderTarget, paint, *draw.fMatrix, true, &grPaint);
|
|
|
| SkDEBUGCODE(this->validate();)
|
|
|
| - if (!fTextContext->drawPosText(grPaint, paint, *draw.fMatrix, (const char *)text, byteLength,
|
| - pos, scalarsPerPos, offset)) {
|
| + if (!fTextContext->drawPosText(fRenderTarget, grPaint, paint, *draw.fMatrix, (const char *)text,
|
| + byteLength, pos, scalarsPerPos, offset)) {
|
| // this will just call our drawPath()
|
| draw.drawPosText_asPaths((const char*)text, byteLength, pos, scalarsPerPos, offset, paint);
|
| }
|
|
|