Chromium Code Reviews| Index: tools/viewer/sk_app/WindowContext.cpp |
| diff --git a/tools/viewer/sk_app/WindowContext.cpp b/tools/viewer/sk_app/WindowContext.cpp |
| index 41bbd14576b37f604c8f65d7001b8de076932553..721639a09904c100b42053a56a2673d781192bd8 100755 |
| --- a/tools/viewer/sk_app/WindowContext.cpp |
| +++ b/tools/viewer/sk_app/WindowContext.cpp |
| @@ -21,12 +21,13 @@ |
| namespace sk_app { |
| -sk_sp<SkSurface> WindowContext::createRenderSurface(sk_sp<GrRenderTarget> rt, int colorBits) { |
| +sk_sp<SkSurface> WindowContext::createRenderSurface( |
| + sk_sp<GrRenderTarget> rt, int colorBits, bool offscreen, bool sRGB) { |
| auto flags = (fSurfaceProps.flags() & ~SkSurfaceProps::kGammaCorrect_Flag) | |
| (GrPixelConfigIsSRGB(fPixelConfig) ? SkSurfaceProps::kGammaCorrect_Flag : 0); |
|
Brian Osman
2016/06/15 13:41:59
Need to also set this flag if sRGB is true:
((GrP
liyuqian
2016/06/15 14:09:15
Done.
|
| SkSurfaceProps props(flags, fSurfaceProps.pixelGeometry()); |
| - if (!this->isGpuContext() || colorBits > 24 || |
| + if (!this->isGpuContext() || colorBits > 24 || offscreen || |
| kRGBA_F16_SkColorType == fDisplayParams.fColorType) { |
| // If we're rendering to F16, we need an off-screen surface - the current render |
| // target is most likely the wrong format. |
| @@ -35,10 +36,17 @@ sk_sp<SkSurface> WindowContext::createRenderSurface(sk_sp<GrRenderTarget> rt, in |
| // need an off-screen surface. 10-bit, in particular, has strange gamma behavior. |
| SkImageInfo info = SkImageInfo::Make(fWidth, fHeight, |
| fDisplayParams.fColorType, |
| - kUnknown_SkAlphaType, |
| - fDisplayParams.fProfileType); |
| - return SkSurface::MakeRenderTarget(fContext, SkBudgeted::kNo, info, |
| - fDisplayParams.fMSAASampleCount, &props); |
| + // kUnknown_SkAlphaType won't pass |
|
msarett
2016/06/15 13:48:10
Sorry I don't understand what you're saying here?
liyuqian
2016/06/15 14:09:15
I was referring to the previous implementation bef
msarett
2016/06/15 14:20:40
Depends on whether what you are drawing is opaque
|
| + // CheckAlphaTypeAndGetFlags |
| + kOpaque_SkAlphaType, |
| + sRGB ? kSRGB_SkColorProfileType |
|
msarett
2016/06/15 13:48:10
Please use a SkColorSpace object here instead of t
liyuqian
2016/06/15 14:09:15
The difficulty here is that DisplayParams maintain
msarett
2016/06/15 14:20:40
SGTM.
I still think it's possible to use SkColorS
liyuqian
2016/06/15 16:43:12
Done. I've adopted your approach.
|
| + : fDisplayParams.fProfileType); |
| + if (this->isGpuContext()) { |
| + return SkSurface::MakeRenderTarget(fContext, SkBudgeted::kNo, info, |
| + fDisplayParams.fMSAASampleCount, &props); |
| + } else { |
| + return SkSurface::MakeRaster(info, &props); |
| + } |
| } else { |
| return SkSurface::MakeRenderTargetDirect(rt.get(), &props); |
| } |