diff options
author | 2016-04-06 07:38:23 -0700 | |
---|---|---|
committer | 2016-04-06 07:38:23 -0700 | |
commit | 898235c4864df66aa7f6d32bc2a8b8551040ce1e (patch) | |
tree | 5fb30f04825c59a970a208cabadd4bad0be283b3 /src/gpu/SkGrPriv.h | |
parent | 1817d282cda17cb8c2db0ac6fdc937743c026016 (diff) |
SkSurfaceProps now has a gamma-correct ("AllowSRGBInputs") flag. That's propagated in a few places so that the backend can do the right thing for L32 vs S32 mode.
Also added SkSurfaceProps to SkSpecialImage, so that Image -> Surface conversion can preserve the desired behavior during filtering.
Many small changes, including a bunch of comments about places where we may be losing information right now. My approach was to ensure that if anything fails, it will always fall back to "legacy" mode - gamma-correctness is opt-in, so I'll just have to feed things through as missing cases are exposed.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1838953007
Review URL: https://codereview.chromium.org/1845283003
Diffstat (limited to 'src/gpu/SkGrPriv.h')
-rw-r--r-- | src/gpu/SkGrPriv.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gpu/SkGrPriv.h b/src/gpu/SkGrPriv.h index f43a4e9595..46be3a53cf 100644 --- a/src/gpu/SkGrPriv.h +++ b/src/gpu/SkGrPriv.h @@ -48,11 +48,13 @@ void GrInstallBitmapUniqueKeyInvalidator(const GrUniqueKey& key, SkPixelRef* pix bool SkPaintToGrPaint(GrContext*, const SkPaint& skPaint, const SkMatrix& viewM, + bool allowSRGBInputs, GrPaint* grPaint); /** Same as above but ignores the SkShader (if any) on skPaint. */ bool SkPaintToGrPaintNoShader(GrContext* context, const SkPaint& skPaint, + bool allowSRGBInputs, GrPaint* grPaint); /** Replaces the SkShader (if any) on skPaint with the passed in GrFragmentProcessor. The processor @@ -61,6 +63,7 @@ bool SkPaintToGrPaintNoShader(GrContext* context, bool SkPaintToGrPaintReplaceShader(GrContext*, const SkPaint& skPaint, const GrFragmentProcessor* shaderFP, + bool allowSRGBInputs, GrPaint* grPaint); /** Blends the SkPaint's shader (or color if no shader) with the color which specified via a @@ -72,6 +75,7 @@ bool SkPaintToGrPaintWithXfermode(GrContext* context, const SkMatrix& viewM, SkXfermode::Mode primColorMode, bool primitiveIsSrc, + bool allowSRGBInputs, GrPaint* grPaint); /** This is used when there is a primitive color, but the shader should be ignored. Currently, @@ -79,9 +83,9 @@ bool SkPaintToGrPaintWithXfermode(GrContext* context, unpremultiplied so that interpolation is done in unpremul space. The paint's alpha will be applied to the primitive color after interpolation. */ inline bool SkPaintToGrPaintWithPrimitiveColor(GrContext* context, const SkPaint& skPaint, - GrPaint* grPaint) { + bool allowSRGBInputs, GrPaint* grPaint) { return SkPaintToGrPaintWithXfermode(context, skPaint, SkMatrix::I(), SkXfermode::kDst_Mode, - false, grPaint); + false, allowSRGBInputs, grPaint); } /** This is used when there may or may not be a shader, and the caller wants to plugin a texture @@ -91,6 +95,7 @@ bool SkPaintToGrPaintWithTexture(GrContext* context, const SkMatrix& viewM, const GrFragmentProcessor* fp, bool textureIsAlphaOnly, + bool allowSRGBInputs, GrPaint* grPaint); ////////////////////////////////////////////////////////////////////////////// |