| Index: src/gpu/SkGpuDevice.cpp
|
| diff --git a/src/gpu/SkGpuDevice.cpp b/src/gpu/SkGpuDevice.cpp
|
| index 5351f4bc3df6e149186e9677149b8626a3485910..5bc347c5d0a7c6c19142088aa80a2824e2f203c4 100644
|
| --- a/src/gpu/SkGpuDevice.cpp
|
| +++ b/src/gpu/SkGpuDevice.cpp
|
| @@ -309,9 +309,7 @@ void SkGpuDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) {
|
| GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice", "drawPaint", fContext);
|
|
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| - &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix, &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -361,8 +359,7 @@ void SkGpuDevice::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode,
|
| if (paint.getPathEffect() && 2 == count && SkCanvas::kLines_PointMode == mode) {
|
| GrStyle style(paint, SkPaint::kStroke_Style);
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix,
|
| &grPaint)) {
|
| return;
|
| }
|
| @@ -383,9 +380,7 @@ void SkGpuDevice::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode,
|
| }
|
|
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| - &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix, &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -422,9 +417,7 @@ void SkGpuDevice::drawRect(const SkDraw& draw, const SkRect& rect, const SkPaint
|
| }
|
|
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| - &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix, &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -441,9 +434,7 @@ void SkGpuDevice::drawRRect(const SkDraw& draw, const SkRRect& rect,
|
| CHECK_SHOULD_DRAW(draw);
|
|
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| - &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix, &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -518,8 +509,7 @@ void SkGpuDevice::drawDRRect(const SkDraw& draw, const SkRRect& outer,
|
|
|
| if (stroke.isFillStyle() && !paint.getMaskFilter() && !paint.getPathEffect()) {
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix,
|
| &grPaint)) {
|
| return;
|
| }
|
| @@ -564,9 +554,7 @@ void SkGpuDevice::drawOval(const SkDraw& draw, const SkRect& oval, const SkPaint
|
| }
|
|
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| - &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix, &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -622,9 +610,7 @@ void SkGpuDevice::drawStrokedLine(const SkPoint points[2],
|
| m.postConcat(*draw.fMatrix);
|
|
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), newPaint, m,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| - &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), newPaint, m, &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -1036,9 +1022,8 @@ void SkGpuDevice::internalDrawBitmap(const SkBitmap& bitmap,
|
| SkASSERT(bitmap.width() <= fContext->caps()->maxTileSize() &&
|
| bitmap.height() <= fContext->caps()->maxTileSize());
|
|
|
| - SkSourceGammaTreatment gammaTreatment = this->surfaceProps().isGammaCorrect()
|
| - ? SkSourceGammaTreatment::kRespect : SkSourceGammaTreatment::kIgnore;
|
| - sk_sp<GrTexture> texture = GrMakeCachedBitmapTexture(fContext, bitmap, params, gammaTreatment);
|
| + sk_sp<GrTexture> texture = GrMakeCachedBitmapTexture(fContext, bitmap, params,
|
| + fDrawContext->sourceGammaTreatment());
|
| if (nullptr == texture) {
|
| return;
|
| }
|
| @@ -1105,10 +1090,9 @@ void SkGpuDevice::internalDrawBitmap(const SkBitmap& bitmap,
|
| }
|
|
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaintWithTexture(this->context(), paint, viewMatrix, std::move(fp),
|
| - kAlpha_8_SkColorType == bitmap.colorType(),
|
| - this->surfaceProps().isGammaCorrect(),
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaintWithTexture(this->context(), fDrawContext.get(), paint, viewMatrix,
|
| + std::move(fp), kAlpha_8_SkColorType == bitmap.colorType(),
|
| + &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -1198,9 +1182,8 @@ void SkGpuDevice::drawSpecial(const SkDraw& draw,
|
| } else {
|
| fp = GrFragmentProcessor::MulOutputByInputAlpha(std::move(fp));
|
| }
|
| - if (!SkPaintToGrPaintReplaceShader(this->context(), tmpUnfiltered, std::move(fp),
|
| - this->surfaceProps().isGammaCorrect(),
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaintReplaceShader(this->context(), fDrawContext.get(), tmpUnfiltered,
|
| + std::move(fp), &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -1471,18 +1454,15 @@ void SkGpuDevice::drawProducerNine(const SkDraw& draw, GrTextureProducer* produc
|
| }
|
|
|
| static const GrTextureParams::FilterMode kMode = GrTextureParams::kNone_FilterMode;
|
| - bool gammaCorrect = this->surfaceProps().isGammaCorrect();
|
| - SkSourceGammaTreatment gammaTreatment = gammaCorrect
|
| - ? SkSourceGammaTreatment::kRespect : SkSourceGammaTreatment::kIgnore;
|
| sk_sp<GrFragmentProcessor> fp(
|
| producer->createFragmentProcessor(SkMatrix::I(),
|
| SkRect::MakeIWH(producer->width(), producer->height()),
|
| GrTextureProducer::kNo_FilterConstraint, true,
|
| - &kMode, fDrawContext->getColorSpace(), gammaTreatment));
|
| + &kMode, fDrawContext->getColorSpace(),
|
| + fDrawContext->sourceGammaTreatment()));
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaintWithTexture(this->context(), paint, *draw.fMatrix, std::move(fp),
|
| - producer->isAlphaOnly(), gammaCorrect,
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaintWithTexture(this->context(), fDrawContext.get(), paint, *draw.fMatrix,
|
| + std::move(fp), producer->isAlphaOnly(), &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -1544,9 +1524,7 @@ void SkGpuDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode,
|
|
|
| GrPaint grPaint;
|
| // we ignore the shader if texs is null.
|
| - if (!SkPaintToGrPaintNoShader(this->context(), copy,
|
| - this->surfaceProps().isGammaCorrect(),
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaintNoShader(this->context(), fDrawContext.get(), copy, &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -1617,16 +1595,14 @@ void SkGpuDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode,
|
| } else {
|
| colorMode = SkXfermode::kModulate_Mode;
|
| }
|
| - if (!SkPaintToGrPaintWithXfermode(this->context(), paint, *draw.fMatrix, colorMode,
|
| - false, this->surfaceProps().isGammaCorrect(),
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaintWithXfermode(this->context(), fDrawContext.get(), paint,
|
| + *draw.fMatrix, colorMode, false, &grPaint)) {
|
| return;
|
| }
|
| } else {
|
| // We have a shader, but no colors to blend it against.
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(),
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix,
|
| + &grPaint)) {
|
| return;
|
| }
|
| }
|
| @@ -1634,16 +1610,13 @@ void SkGpuDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode,
|
| if (colors) {
|
| // We have colors, but either have no shader or no texture coords (which implies that
|
| // we should ignore the shader).
|
| - if (!SkPaintToGrPaintWithPrimitiveColor(this->context(), paint,
|
| - this->surfaceProps().isGammaCorrect(),
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaintWithPrimitiveColor(this->context(), fDrawContext.get(), paint,
|
| + &grPaint)) {
|
| return;
|
| }
|
| } else {
|
| // No colors and no shaders. Just draw with the paint color.
|
| - if (!SkPaintToGrPaintNoShader(this->context(), paint,
|
| - this->surfaceProps().isGammaCorrect(),
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaintNoShader(this->context(), fDrawContext.get(), paint, &grPaint)) {
|
| return;
|
| }
|
| }
|
| @@ -1680,15 +1653,12 @@ void SkGpuDevice::drawAtlas(const SkDraw& draw, const SkImage* atlas, const SkRS
|
|
|
| GrPaint grPaint;
|
| if (colors) {
|
| - if (!SkPaintToGrPaintWithXfermode(this->context(), p, *draw.fMatrix, mode, true,
|
| - this->surfaceProps().isGammaCorrect(),
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaintWithXfermode(this->context(), fDrawContext.get(), p, *draw.fMatrix,
|
| + mode, true, &grPaint)) {
|
| return;
|
| }
|
| } else {
|
| - if (!SkPaintToGrPaint(this->context(), p, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(),
|
| - fDrawContext->getColorSpace(), &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), p, *draw.fMatrix, &grPaint)) {
|
| return;
|
| }
|
| }
|
| @@ -1707,9 +1677,7 @@ void SkGpuDevice::drawText(const SkDraw& draw, const void* text,
|
| GR_CREATE_TRACE_MARKER_CONTEXT("SkGpuDevice", "drawText", fContext);
|
|
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| - &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix, &grPaint)) {
|
| return;
|
| }
|
|
|
| @@ -1727,9 +1695,7 @@ void SkGpuDevice::drawPosText(const SkDraw& draw, const void* text, size_t byteL
|
| CHECK_SHOULD_DRAW(draw);
|
|
|
| GrPaint grPaint;
|
| - if (!SkPaintToGrPaint(this->context(), paint, *draw.fMatrix,
|
| - this->surfaceProps().isGammaCorrect(), fDrawContext->getColorSpace(),
|
| - &grPaint)) {
|
| + if (!SkPaintToGrPaint(this->context(), fDrawContext.get(), paint, *draw.fMatrix, &grPaint)) {
|
| return;
|
| }
|
|
|
|
|