From 2b23c4bf3186bf3fa71bb105afdcf3b8e5995b52 Mon Sep 17 00:00:00 2001 From: Brian Osman Date: Fri, 1 Jun 2018 12:25:08 -0400 Subject: Dest color space no longer impacts mipmaps or texture sampling PS5: Removes SkDestinationSurfaceColorMode, tracking of mipmap mode on GrTexture, sRGB decode state per-texture. Because we were often choosing sRGB configs for RGB color types, legacy rendering would then be incorrect (too dark). So... PS7: Stops ever using sRGB pixel configs when translating image info or color type. Also removes a bunch of GrCaps bits and a GrContextOption that are no longer relevant. PS9: Adjusts surface creation unit test expectations, and changes the raster rules accordingly. At this point, sRGB configs are (obviously) going to be broken. Locally, I ran 8888, gl, and the gbr- versions of both. Across all GMs x configs, there are 13 diffs. 12 are GMs that create surfaces with a color-space attached (and thus, the offscreen is no longer getting sRGB pixel config). The only remainder constructs an SkPictureImageGenerator, (with an attached color space) and renders it to the gbr-gl canvas, which triggers a a tagged surface inside the generator. Bug: skia: Change-Id: Ie5edfa157dd799f3121e8173fc4f97f6c8ed6789 Reviewed-on: https://skia-review.googlesource.com/131282 Commit-Queue: Brian Osman Reviewed-by: Mike Klein Reviewed-by: Brian Salomon --- src/shaders/SkImageShader.cpp | 5 ++--- src/shaders/gradients/SkGradientShader.cpp | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) (limited to 'src/shaders') diff --git a/src/shaders/SkImageShader.cpp b/src/shaders/SkImageShader.cpp index bd1b17f029..e0dd512f07 100644 --- a/src/shaders/SkImageShader.cpp +++ b/src/shaders/SkImageShader.cpp @@ -117,8 +117,7 @@ SkShaderBase::Context* SkImageShader::onMakeContext(const ContextRec& rec, } return SkBitmapProcLegacyShader::MakeContext(*this, fTileModeX, fTileModeY, - SkBitmapProvider(fImage.get(), rec.fDstColorSpace), - rec, alloc); + SkBitmapProvider(fImage.get()), rec, alloc); } SkImage* SkImageShader::onIsAImage(SkMatrix* texM, TileMode xy[]) const { @@ -285,7 +284,7 @@ bool SkImageShader::onAppendStages(const StageRec& rec) const { } auto quality = rec.fPaint.getFilterQuality(); - SkBitmapProvider provider(fImage.get(), rec.fDstCS); + SkBitmapProvider provider(fImage.get()); SkDefaultBitmapController controller; std::unique_ptr state { controller.requestBitmap(provider, matrix, quality) diff --git a/src/shaders/gradients/SkGradientShader.cpp b/src/shaders/gradients/SkGradientShader.cpp index a574b7d46d..4c6a42571a 100644 --- a/src/shaders/gradients/SkGradientShader.cpp +++ b/src/shaders/gradients/SkGradientShader.cpp @@ -1288,7 +1288,7 @@ GrGradientEffect::GrGradientEffect(ClassID classID, const CreateArgs& args, bool desc.fWidth = bitmap.width(); desc.fHeight = 32; desc.fRowHeight = bitmap.height(); // always 1 here - desc.fConfig = SkImageInfo2GrPixelConfig(bitmap.info(), *caps); + desc.fConfig = SkColorType2GrPixelConfig(bitmap.colorType()); fAtlas = atlasManager->refAtlas(desc); SkASSERT(fAtlas); -- cgit v1.2.3