From f87e2b95f098dd1b43f0704a95057818251d4b5c Mon Sep 17 00:00:00 2001 From: Brian Salomon Date: Thu, 19 Jan 2017 11:31:50 -0500 Subject: 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 Commit-Queue: Brian Salomon --- src/gpu/GrPipeline.cpp | 6 ++++++ src/gpu/GrPipeline.h | 13 +++---------- src/gpu/GrPipelineBuilder.cpp | 6 ------ src/gpu/GrProcessorSet.cpp | 11 ++++++++++- src/gpu/GrProcessorSet.h | 13 +++++++++++-- 5 files changed, 30 insertions(+), 19 deletions(-) (limited to 'src/gpu') 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 -- cgit v1.2.3