diff options
author | Brian Salomon <bsalomon@google.com> | 2017-10-25 15:12:19 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-10-25 19:32:20 +0000 |
commit | 4cbb6e6d551e8bea2c040b1aa9dce253cffb9af0 (patch) | |
tree | a93401716e0f5d45760da36b49c8cf8ea8e1cc21 /src/shaders/SkPictureShader.cpp | |
parent | 291af4f17e0630f78a8c4d22f304243fb28ae42b (diff) |
Pass GrRenderTargetContext's GrColorSpaceInfo to SkShader and SkColorFilter.
Also to SkColorTo(Premul|Unpremul)GrColor4f.
This can avoid cache lookups to find GrColorSpaceXforms as the xform pointer is stored in GrColorSpaceInfo after the first lookup.
Also uses GrColorSpaceInfo to construct GrTextUtils::Paint.
Bug: skia:
Change-Id: Idf19d512a60d2269e6921c7fb54d93aee499a70d
Reviewed-on: https://skia-review.googlesource.com/63660
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/shaders/SkPictureShader.cpp')
-rw-r--r-- | src/shaders/SkPictureShader.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/shaders/SkPictureShader.cpp b/src/shaders/SkPictureShader.cpp index 1a86af6d6e..677c0e15dc 100644 --- a/src/shaders/SkPictureShader.cpp +++ b/src/shaders/SkPictureShader.cpp @@ -21,8 +21,9 @@ #include "SkResourceCache.h" #if SK_SUPPORT_GPU -#include "GrContext.h" #include "GrCaps.h" +#include "GrColorSpaceInfo.h" +#include "GrContext.h" #include "GrFragmentProcessor.h" #endif @@ -374,11 +375,14 @@ std::unique_ptr<GrFragmentProcessor> SkPictureShader::asFragmentProcessor( maxTextureSize = args.fContext->caps()->maxTextureSize(); } sk_sp<SkShader> bitmapShader(this->refBitmapShader(*args.fViewMatrix, args.fLocalMatrix, - args.fDstColorSpace, maxTextureSize)); + args.fDstColorSpaceInfo->colorSpace(), + maxTextureSize)); if (!bitmapShader) { return nullptr; } - return as_SB(bitmapShader)->asFragmentProcessor(SkShaderBase::AsFPArgs( - args.fContext, args.fViewMatrix, nullptr, args.fFilterQuality, args.fDstColorSpace)); + return as_SB(bitmapShader) + ->asFragmentProcessor(SkShaderBase::AsFPArgs(args.fContext, args.fViewMatrix, nullptr, + args.fFilterQuality, + args.fDstColorSpaceInfo)); } #endif |