Index: src/views/SkWindow.cpp |
diff --git a/src/views/SkWindow.cpp b/src/views/SkWindow.cpp |
index 481a1f9eb23ee490bd72f8bd8c340c30e3c23734..d42dc12b88e434cba4be813cee5ccae63aa806dd 100644 |
--- a/src/views/SkWindow.cpp |
+++ b/src/views/SkWindow.cpp |
@@ -70,6 +70,11 @@ void SkWindow::resize(int width, int height) { |
void SkWindow::setColorType(SkColorType ct, SkColorProfileType pt) { |
const SkImageInfo& info = fBitmap.info(); |
this->resize(SkImageInfo::Make(info.width(), info.height(), ct, kPremul_SkAlphaType, pt)); |
+ |
robertphillips
2016/04/05 12:54:34
// Comment ?
Brian Osman
2016/04/05 15:36:42
Acknowledged.
|
+ SkSurfaceProps props = this->getSurfaceProps(); |
+ uint32_t flags = (props.flags() & ~SkSurfaceProps::kAllowSRGBInputs_Flag) | |
+ (SkColorAndProfileAreGammaCorrect(ct, pt) ? SkSurfaceProps::kAllowSRGBInputs_Flag : 0); |
+ this->setSurfaceProps(SkSurfaceProps(flags, props.pixelGeometry())); |
} |
bool SkWindow::handleInval(const SkRect* localR) { |
@@ -333,9 +338,7 @@ GrRenderTarget* SkWindow::renderTarget(const AttachmentInfo& attachmentInfo, |
// |
// Also, we may not have real sRGB support (ANGLE, in particular), so check for |
// that, and fall back to L32: |
- desc.fConfig = grContext->caps()->srgbSupport() && |
- (info().profileType() == kSRGB_SkColorProfileType || |
- info().colorType() == kRGBA_F16_SkColorType) |
+ desc.fConfig = grContext->caps()->srgbSupport() && SkImageInfoIsGammaCorrect(info()) |
? kSkiaGamma8888_GrPixelConfig |
: kSkia8888_GrPixelConfig; |
desc.fOrigin = kBottomLeft_GrSurfaceOrigin; |