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

Unified Diff: tools/flags/SkCommonFlagsConfig.cpp

Issue 1746253002: Progress on gamma-correctness in the GPU backend. Fixed conversion of color and profile type to pix… (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Rebase and switch back to kN32 color type. Fixes DM crash on some configs. Created 4 years, 10 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
« no previous file with comments | « tools/flags/SkCommonFlagsConfig.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/flags/SkCommonFlagsConfig.cpp
diff --git a/tools/flags/SkCommonFlagsConfig.cpp b/tools/flags/SkCommonFlagsConfig.cpp
index c82e8de0036214b4a0398eeeb00bef325f773b12..983a5018f0a376233a489757fc0067bef8a8c1d7 100644
--- a/tools/flags/SkCommonFlagsConfig.cpp
+++ b/tools/flags/SkCommonFlagsConfig.cpp
@@ -23,11 +23,11 @@ static const char defaultConfigs[] =
static const char configHelp[] =
"Options: 565 8888 debug gpu gpudebug gpudft gpunull "
- "msaa16 msaa4 nonrendering null nullgpu nvprmsaa16 nvprmsaa4 "
+ "msaa16 msaa4 gpuf16 gpusrgb nonrendering null nullgpu nvprmsaa16 nvprmsaa4 "
"pdf pdf_poppler skp svg xps"
#if SK_ANGLE
#ifdef SK_BUILD_FOR_WIN
- " angle"
+ " angle anglesrgb"
#endif
" angle-gl"
#endif
@@ -47,7 +47,7 @@ static const char configExtendedHelp[] =
"Possible backends and options:\n"
#if SK_SUPPORT_GPU
"\n"
- "gpu(api=string,dit=bool,nvpr=bool,samples=int)\tGPU backend\n"
+ "gpu(api=string,color=string,dit=bool,nvpr=bool,samples=int)\tGPU backend\n"
"\tapi\ttype: string\tdefault: native.\n"
"\t Select graphics API to use with gpu backend.\n"
"\t Options:\n"
@@ -69,6 +69,12 @@ static const char configExtendedHelp[] =
#if SK_MESA
"\t\tmesa\t\t\tUse MESA.\n"
#endif
+ "\tcolor\ttype: string\tdefault: 8888.\n"
+ "\t Select framebuffer color format.\n"
+ "\t Options:\n"
+ "\t\t8888\t\t\tLinear 8888.\n"
+ "\t\tf16 \t\t\tLinear 16-bit floating point.\n"
+ "\t\tsrgb\t\t\tsRGB 8888.\n"
"\tdit\ttype: bool\tdefault: false.\n"
"\t Use device independent text.\n"
"\tnvpr\ttype: bool\tdefault: false.\n"
@@ -82,6 +88,8 @@ static const char configExtendedHelp[] =
"\tmsaa16 \t= gpu(samples=16)\n"
"\tnvprmsaa4\t= gpu(nvpr=true,samples=4)\n"
"\tnvprmsaa16\t= gpu(nvpr=true,samples=16)\n"
+ "\tgpuf16 \t= gpu(color=f16)\n"
+ "\tgpusrgb \t= gpu(color=srgb)\n"
"\tgpudft \t= gpu(dit=true)\n"
"\tgpudebug \t= gpu(api=debug)\n"
"\tgpunull \t= gpu(api=null)\n"
@@ -90,6 +98,7 @@ static const char configExtendedHelp[] =
#if SK_ANGLE
#ifdef SK_BUILD_FOR_WIN
"\tangle \t= gpu(api=angle)\n"
+ "\tanglesrgb \t= gpu(api=angle,color=srgb)\n"
#endif
"\tangle-gl \t= gpu(api=angle-gl)\n"
#endif
@@ -115,6 +124,8 @@ static const struct {
{ "msaa16", "gpu", "samples=16" },
{ "nvprmsaa4", "gpu", "nvpr=true,samples=4,dit=true" },
{ "nvprmsaa16", "gpu", "nvpr=true,samples=16,dit=true" },
+ { "gpuf16", "gpu", "color=f16" },
+ { "gpusrgb", "gpu", "color=srgb" },
{ "gpudft", "gpu", "dit=true" },
{ "gpudebug", "gpu", "api=debug" },
{ "gpunull", "gpu", "api=null" },
@@ -123,6 +134,7 @@ static const struct {
#if SK_ANGLE
#ifdef SK_BUILD_FOR_WIN
, { "angle", "gpu", "api=angle" }
+ , { "anglesrgb", "gpu", "api=angle,color=srgb" }
#endif
, { "angle-gl", "gpu", "api=angle-gl" }
#endif
@@ -149,12 +161,15 @@ SkCommandLineConfig::~SkCommandLineConfig() {
#if SK_SUPPORT_GPU
SkCommandLineConfigGpu::SkCommandLineConfigGpu(
const SkString& tag, const SkTArray<SkString>& viaParts,
- ContextType contextType, bool useNVPR, bool useDIText, int samples)
+ ContextType contextType, bool useNVPR, bool useDIText, int samples,
+ SkColorType colorType, SkColorProfileType profileType)
: SkCommandLineConfig(tag, SkString("gpu"), viaParts)
, fContextType(contextType)
, fUseNVPR(useNVPR)
, fUseDIText(useDIText)
- , fSamples(samples) {
+ , fSamples(samples)
+ , fColorType(colorType)
+ , fProfileType(profileType) {
}
static bool parse_option_int(const SkString& value, int* outInt) {
if (value.isEmpty()) {
@@ -231,6 +246,26 @@ static bool parse_option_gpu_api(const SkString& value,
#endif
return false;
}
+static bool parse_option_gpu_color(const SkString& value,
+ SkColorType* outColorType,
+ SkColorProfileType* outProfileType) {
+ if (value.equals("8888")) {
+ *outColorType = kN32_SkColorType;
+ *outProfileType = kLinear_SkColorProfileType;
+ return true;
+ }
+ if (value.equals("f16")) {
+ *outColorType = kRGBA_F16_SkColorType;
+ *outProfileType = kLinear_SkColorProfileType;
+ return true;
+ }
+ if (value.equals("srgb")) {
+ *outColorType = kN32_SkColorType;
+ *outProfileType = kSRGB_SkColorProfileType;
+ return true;
+ }
+ return false;
+}
SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString& tag,
const SkTArray<SkString>& vias,
@@ -244,6 +279,9 @@ SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString& tag,
bool useDIText = false;
bool seenSamples = false;
int samples = 0;
+ bool seenColor = false;
+ SkColorType colorType = kN32_SkColorType;
+ SkColorProfileType profileType = kLinear_SkColorProfileType;
SkTArray<SkString> optionParts;
SkStrSplit(options.c_str(), ",", kStrict_SkStrSplitMode, &optionParts);
@@ -268,12 +306,16 @@ SkCommandLineConfigGpu* parse_command_line_config_gpu(const SkString& tag,
} else if (key.equals("samples") && !seenSamples) {
valueOk = parse_option_int(value, &samples);
seenSamples = true;
+ } else if (key.equals("color") && !seenColor) {
+ valueOk = parse_option_gpu_color(value, &colorType, &profileType);
+ seenColor = true;
}
if (!valueOk) {
return nullptr;
}
}
- return new SkCommandLineConfigGpu(tag, vias, contextType, useNVPR, useDIText, samples);
+ return new SkCommandLineConfigGpu(tag, vias, contextType, useNVPR, useDIText, samples,
+ colorType, profileType);
}
#endif
« no previous file with comments | « tools/flags/SkCommonFlagsConfig.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698