Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(641)

Unified Diff: tools/viewer/sk_app/WindowContext.cpp

Issue 2069653002: Use Offscreen Surface for Split Screen (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: More fixes Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..f438789777eaa48ddddea403cf95da6c05098c1a 100755
--- a/tools/viewer/sk_app/WindowContext.cpp
+++ b/tools/viewer/sk_app/WindowContext.cpp
@@ -21,24 +21,33 @@
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);
+ (GrPixelConfigIsSRGB(fPixelConfig) || sRGB ?
+ SkSurfaceProps::kGammaCorrect_Flag : 0);
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.
//
// If we're rendering raster data or using a deep (10-bit or higher) surface, we probably
// 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);
+ SkImageInfo info = SkImageInfo::Make(
+ fWidth, fHeight,
+ fDisplayParams.fColorType,
+ kPremul_SkAlphaType,
+ (sRGB || fDisplayParams.fProfileType == kSRGB_SkColorProfileType) ?
+ SkColorSpace::NewNamed(SkColorSpace::kSRGB_Named) : nullptr
+ );
+ 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);
}

Powered by Google App Engine
This is Rietveld 408576698