diff options
-rw-r--r-- | src/gpu/GrPipeline.cpp | 6 | ||||
-rw-r--r-- | src/gpu/GrPipeline.h | 13 | ||||
-rw-r--r-- | src/gpu/GrPipelineBuilder.cpp | 6 | ||||
-rw-r--r-- | src/gpu/GrProcessorSet.cpp | 11 | ||||
-rw-r--r-- | src/gpu/GrProcessorSet.h | 13 |
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 |