aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Brian Salomon <bsalomon@google.com>2017-01-19 11:31:50 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-19 17:18:58 +0000
commitf87e2b95f098dd1b43f0704a95057818251d4b5c (patch)
treeef343c80267ae29b755c41d170ff791a7634e332
parent009d9d1edca1693cfce6f67cb9dcf037cf053aa7 (diff)
Move srgb enable flags to GrProcessorSet from pipelinebuilder
BUG=skia: Change-Id: I533d032a8019980b3870d432ada59bac805d7c36 Reviewed-on: https://skia-review.googlesource.com/7268 Reviewed-by: Greg Daniel <egdaniel@google.com> Commit-Queue: Brian Salomon <bsalomon@google.com>
-rw-r--r--src/gpu/GrPipeline.cpp6
-rw-r--r--src/gpu/GrPipeline.h13
-rw-r--r--src/gpu/GrPipelineBuilder.cpp6
-rw-r--r--src/gpu/GrProcessorSet.cpp11
-rw-r--r--src/gpu/GrProcessorSet.h13
5 files changed, 30 insertions, 19 deletions
diff --git a/src/gpu/GrPipeline.cpp b/src/gpu/GrPipeline.cpp
index c55d7a3af8..af8529ad35 100644
--- a/src/gpu/GrPipeline.cpp
+++ b/src/gpu/GrPipeline.cpp
@@ -44,6 +44,12 @@ GrPipeline* GrPipeline::CreateAt(void* memory, const CreateArgs& args,
if (!args.fUserStencil->isDisabled(args.fAppliedClip->hasStencilClip())) {
pipeline->fFlags |= kStencilEnabled_Flag;
}
+ if (args.fProcessors->disableOutputConversionToSRGB()) {
+ pipeline->fFlags |= kDisableOutputConversionToSRGB_Flag;
+ }
+ if (args.fProcessors->allowSRGBInputs()) {
+ pipeline->fFlags |= kAllowSRGBInputs_Flag;
+ }
bool isHWAA = kHWAntialias_Flag & args.fFlags;
diff --git a/src/gpu/GrPipeline.h b/src/gpu/GrPipeline.h
index e56330025f..3949a75c5c 100644
--- a/src/gpu/GrPipeline.h
+++ b/src/gpu/GrPipeline.h
@@ -83,16 +83,6 @@ public:
* Modifies the vertex shader so that vertices will be positioned at pixel centers.
*/
kSnapVerticesToPixelCenters_Flag = 0x2,
-
- /**
- * Suppress linear -> sRGB conversion when rendering to sRGB render targets.
- */
- kDisableOutputConversionToSRGB_Flag = 0x4,
-
- /**
- * Allow sRGB -> linear conversion when reading from sRGB inputs.
- */
- kAllowSRGBInputs_Flag = 0x8,
};
struct CreateArgs {
@@ -231,7 +221,10 @@ public:
private:
GrPipeline() { /** Initialized in factory function*/ }
+ /** This is a continuation of the public "Flags" enum. */
enum PrivateFlags {
+ kDisableOutputConversionToSRGB_Flag = 0x4,
+ kAllowSRGBInputs_Flag = 0x8,
kUsesDistanceVectorField_Flag = 0x10,
kHasStencilClip_Flag = 0x20,
kStencilEnabled_Flag = 0x40,
diff --git a/src/gpu/GrPipelineBuilder.cpp b/src/gpu/GrPipelineBuilder.cpp
index bbb8f5a159..d249d58edb 100644
--- a/src/gpu/GrPipelineBuilder.cpp
+++ b/src/gpu/GrPipelineBuilder.cpp
@@ -23,12 +23,6 @@ GrPipelineBuilder::GrPipelineBuilder(GrPaint&& paint, GrAAType aaType)
if (GrAATypeIsHW(aaType)) {
fFlags |= GrPipeline::kHWAntialias_Flag;
}
- if (paint.getDisableOutputConversionToSRGB()) {
- fFlags |= GrPipeline::kDisableOutputConversionToSRGB_Flag;
- }
- if (paint.getAllowSRGBInputs()) {
- fFlags |= GrPipeline::kAllowSRGBInputs_Flag;
- }
}
bool GrPipelineBuilder::willXPNeedDstTexture(const GrCaps& caps,
diff --git a/src/gpu/GrProcessorSet.cpp b/src/gpu/GrProcessorSet.cpp
index 6e7eeb844b..595d05cc45 100644
--- a/src/gpu/GrProcessorSet.cpp
+++ b/src/gpu/GrProcessorSet.cpp
@@ -18,5 +18,14 @@ GrProcessorSet::GrProcessorSet(GrPaint&& paint) {
for (auto& fp : paint.fCoverageFragmentProcessors) {
fFragmentProcessors[i++] = fp.release();
}
- fUsesDistanceVectorField = paint.usesDistanceVectorField();
+ fFlags = 0;
+ if (paint.usesDistanceVectorField()) {
+ fFlags |= kUseDistanceVectorField_Flag;
+ }
+ if (paint.getDisableOutputConversionToSRGB()) {
+ fFlags |= kDisableOutputConversionToSRGB_Flag;
+ }
+ if (paint.getAllowSRGBInputs()) {
+ fFlags |= kAllowSRGBInputs_Flag;
+ }
}
diff --git a/src/gpu/GrProcessorSet.h b/src/gpu/GrProcessorSet.h
index a1d68a997a..19c3b225d5 100644
--- a/src/gpu/GrProcessorSet.h
+++ b/src/gpu/GrProcessorSet.h
@@ -50,13 +50,22 @@ public:
analysis->fCoveragePOI.analyzeProcessors(fps, this->numCoverageFragmentProcessors());
}
- bool usesDistanceVectorField() const { return fUsesDistanceVectorField; }
+ bool usesDistanceVectorField() const { return SkToBool(fFlags & kUseDistanceVectorField_Flag); }
+ bool disableOutputConversionToSRGB() const {
+ return SkToBool(fFlags & kDisableOutputConversionToSRGB_Flag);
+ }
+ bool allowSRGBInputs() const { return SkToBool(fFlags & kAllowSRGBInputs_Flag); }
private:
const GrXPFactory* fXPFactory = nullptr;
SkAutoSTArray<4, const GrFragmentProcessor*> fFragmentProcessors;
int fColorFragmentProcessorCnt;
- bool fUsesDistanceVectorField;
+ enum Flags : uint32_t {
+ kUseDistanceVectorField_Flag = 0x1,
+ kDisableOutputConversionToSRGB_Flag = 0x2,
+ kAllowSRGBInputs_Flag = 0x4
+ };
+ uint32_t fFlags;
};
#endif