diff options
author | Brian Osman <brianosman@google.com> | 2018-06-01 12:25:08 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-06-01 17:00:26 +0000 |
commit | 2b23c4bf3186bf3fa71bb105afdcf3b8e5995b52 (patch) | |
tree | 5bd5b115bb5d133682ba6c44e1b3422086e90a6b /tools | |
parent | 7abeb28342078af39b19a1448d6147c7258f5203 (diff) |
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 <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/DDLPromiseImageHelper.cpp | 1 | ||||
-rw-r--r-- | tools/fiddle/fiddle_main.cpp | 12 | ||||
-rw-r--r-- | tools/flags/SkCommonFlagsConfig.cpp | 11 | ||||
-rw-r--r-- | tools/gpu/GrContextFactory.cpp | 8 | ||||
-rw-r--r-- | tools/gpu/GrContextFactory.h | 6 | ||||
-rw-r--r-- | tools/gpu/GrTest.cpp | 5 | ||||
-rw-r--r-- | tools/sk_app/VulkanWindowContext.cpp | 5 | ||||
-rw-r--r-- | tools/skpbench/skpbench.cpp | 3 |
8 files changed, 11 insertions, 40 deletions
diff --git a/tools/DDLPromiseImageHelper.cpp b/tools/DDLPromiseImageHelper.cpp index 43a2546f0e..586c2339a6 100644 --- a/tools/DDLPromiseImageHelper.cpp +++ b/tools/DDLPromiseImageHelper.cpp @@ -57,7 +57,6 @@ void DDLPromiseImageHelper::uploadAllToGPU(GrContext* context) { info.fBitmap.width(), info.fBitmap.height(), info.fBitmap.colorType(), - info.fBitmap.colorSpace(), false, GrMipMapped::kNo)); // The GMs sometimes request too large an image //SkAssertResult(callbackContext->backendTexture().isValid()); diff --git a/tools/fiddle/fiddle_main.cpp b/tools/fiddle/fiddle_main.cpp index f000025e6a..526e314220 100644 --- a/tools/fiddle/fiddle_main.cpp +++ b/tools/fiddle/fiddle_main.cpp @@ -164,8 +164,7 @@ static bool setup_backend_objects(GrContext* context, } backingTexture = resourceProvider->createTexture(backingDesc, SkBudgeted::kNo, texels.get(), - mipLevelCount, - SkDestinationSurfaceColorMode::kLegacy); + mipLevelCount); if (!backingTexture) { return false; } @@ -191,8 +190,8 @@ static bool setup_backend_objects(GrContext* context, // We use this fact to initialize it with data but don't allow mipmaps GrMipLevel level0 = { data.get(), backingDesc.fWidth*sizeof(uint32_t) }; - sk_sp<GrTexture> tmp = resourceProvider->createTexture( - backingDesc, SkBudgeted::kNo, &level0, 1, SkDestinationSurfaceColorMode::kLegacy); + sk_sp<GrTexture> tmp = resourceProvider->createTexture(backingDesc, SkBudgeted::kNo, + &level0, 1); if (!tmp || !tmp->asRenderTarget()) { return false; } @@ -219,9 +218,8 @@ static bool setup_backend_objects(GrContext* context, texels[i].fRowBytes = 0; } - backingTextureRenderTarget = resourceProvider->createTexture( - backingDesc, SkBudgeted::kNo, texels.get(), mipLevelCount, - SkDestinationSurfaceColorMode::kLegacy); + backingTextureRenderTarget = resourceProvider->createTexture(backingDesc, SkBudgeted::kNo, + texels.get(), mipLevelCount); if (!backingTextureRenderTarget || !backingTextureRenderTarget->asRenderTarget()) { return false; } diff --git a/tools/flags/SkCommonFlagsConfig.cpp b/tools/flags/SkCommonFlagsConfig.cpp index ba07ec84c7..0b7a74641c 100644 --- a/tools/flags/SkCommonFlagsConfig.cpp +++ b/tools/flags/SkCommonFlagsConfig.cpp @@ -430,17 +430,6 @@ SkCommandLineConfigGpu::SkCommandLineConfigGpu( // samples and we couldn't test the mixed samples backend for simple shapes. fContextOverrides |= ContextOverrides::kDisableNVPR; } - // Subtle logic: If the config has a color space attached, we're going to be rendering to sRGB, - // so we need that capability. In addition, to get the widest test coverage, we DO NOT require - // that we can disable sRGB decode. (That's for rendering sRGB sources to legacy surfaces). - // - // If the config doesn't have a color space attached, we're going to be rendering in legacy - // mode. In that case, we don't require sRGB capability and we defer to the client to decide on - // sRGB decode control. - if (fColorSpace) { - fContextOverrides |= ContextOverrides::kRequireSRGBSupport; - fContextOverrides |= ContextOverrides::kAllowSRGBWithoutDecodeControl; - } if (!useStencilBuffers) { fContextOverrides |= ContextOverrides::kAvoidStencilBuffers; } diff --git a/tools/gpu/GrContextFactory.cpp b/tools/gpu/GrContextFactory.cpp index 2bfccd9763..54f4742b73 100644 --- a/tools/gpu/GrContextFactory.cpp +++ b/tools/gpu/GrContextFactory.cpp @@ -261,9 +261,6 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv if (ContextOverrides::kDisableNVPR & overrides) { grOptions.fSuppressPathRendering = true; } - if (ContextOverrides::kAllowSRGBWithoutDecodeControl & overrides) { - grOptions.fRequireDecodeDisableForSRGB = false; - } if (ContextOverrides::kAvoidStencilBuffers & overrides) { grOptions.fAvoidStencilBuffers = true; } @@ -280,11 +277,6 @@ ContextInfo GrContextFactory::getContextInfoInternal(ContextType type, ContextOv return ContextInfo(); } } - if (ContextOverrides::kRequireSRGBSupport & overrides) { - if (!grCtx->contextPriv().caps()->srgbSupport()) { - return ContextInfo(); - } - } // We must always add new contexts by pushing to the back so that when we delete them we delete // them in reverse order in which they were made. diff --git a/tools/gpu/GrContextFactory.h b/tools/gpu/GrContextFactory.h index 5f16ea8ca9..471e3fd142 100644 --- a/tools/gpu/GrContextFactory.h +++ b/tools/gpu/GrContextFactory.h @@ -56,11 +56,9 @@ public: enum class ContextOverrides { kNone = 0x0, kDisableNVPR = 0x1, - kAllowSRGBWithoutDecodeControl = 0x2, - kAvoidStencilBuffers = 0x4, + kAvoidStencilBuffers = 0x2, - kRequireNVPRSupport = 0x8, - kRequireSRGBSupport = 0x10, + kRequireNVPRSupport = 0x4, }; static bool IsRenderingContext(ContextType type) { diff --git a/tools/gpu/GrTest.cpp b/tools/gpu/GrTest.cpp index f3630ff721..14ba7a0035 100644 --- a/tools/gpu/GrTest.cpp +++ b/tools/gpu/GrTest.cpp @@ -165,10 +165,9 @@ void GrGpu::Stats::dumpKeyValuePairs(SkTArray<SkString>* keys, SkTArray<double>* #endif GrBackendTexture GrGpu::createTestingOnlyBackendTexture(const void* pixels, int w, int h, - SkColorType colorType, - SkColorSpace* cs, bool isRenderTarget, + SkColorType colorType, bool isRenderTarget, GrMipMapped mipMapped) { - GrPixelConfig config = SkImageInfo2GrPixelConfig(colorType, cs, *this->caps()); + GrPixelConfig config = SkColorType2GrPixelConfig(colorType); if (kUnknown_GrPixelConfig == config) { return GrBackendTexture(); } diff --git a/tools/sk_app/VulkanWindowContext.cpp b/tools/sk_app/VulkanWindowContext.cpp index c145fd2410..ad0e15ca7b 100644 --- a/tools/sk_app/VulkanWindowContext.cpp +++ b/tools/sk_app/VulkanWindowContext.cpp @@ -182,12 +182,9 @@ bool VulkanWindowContext::createSwapchain(int width, int height, // Pick our surface format. For now, just make sure it matches our sRGB request: VkFormat surfaceFormat = VK_FORMAT_UNDEFINED; VkColorSpaceKHR colorSpace = VK_COLORSPACE_SRGB_NONLINEAR_KHR; - auto srgbColorSpace = SkColorSpace::MakeSRGB(); - bool wantSRGB = srgbColorSpace == params.fColorSpace; for (uint32_t i = 0; i < surfaceFormatCount; ++i) { VkFormat localFormat = surfaceFormats[i].format; - if (GrVkFormatIsSupported(localFormat) && - GrVkFormatIsSRGB(localFormat, nullptr) == wantSRGB) { + if (GrVkFormatIsSupported(localFormat)) { surfaceFormat = localFormat; colorSpace = surfaceFormats[i].colorSpace; break; diff --git a/tools/skpbench/skpbench.cpp b/tools/skpbench/skpbench.cpp index a4583ce0f6..5f5e96b477 100644 --- a/tools/skpbench/skpbench.cpp +++ b/tools/skpbench/skpbench.cpp @@ -381,8 +381,7 @@ int main(int argc, char** argv) { exitf(ExitErr::kUnavailable, "render target size %ix%i not supported by platform (max: %i)", width, height, ctx->maxRenderTargetSize()); } - GrPixelConfig grPixConfig = SkImageInfo2GrPixelConfig( - config->getColorType(), config->getColorSpace(), *ctx->contextPriv().caps()); + GrPixelConfig grPixConfig = SkColorType2GrPixelConfig(config->getColorType()); if (kUnknown_GrPixelConfig == grPixConfig) { exitf(ExitErr::kUnavailable, "failed to get GrPixelConfig from SkColorType: %d", config->getColorType()); |