aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2018-06-01 12:25:08 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-01 17:00:26 +0000
commit2b23c4bf3186bf3fa71bb105afdcf3b8e5995b52 (patch)
tree5bd5b115bb5d133682ba6c44e1b3422086e90a6b /tools
parent7abeb28342078af39b19a1448d6147c7258f5203 (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.cpp1
-rw-r--r--tools/fiddle/fiddle_main.cpp12
-rw-r--r--tools/flags/SkCommonFlagsConfig.cpp11
-rw-r--r--tools/gpu/GrContextFactory.cpp8
-rw-r--r--tools/gpu/GrContextFactory.h6
-rw-r--r--tools/gpu/GrTest.cpp5
-rw-r--r--tools/sk_app/VulkanWindowContext.cpp5
-rw-r--r--tools/skpbench/skpbench.cpp3
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());