Rename GrPipeline::Flags to GrPipeline::InputFlags
Renames the Flags to InputFlags and makes it a strongly typed enum.
Simplifies the relationship between GrSimpleMeshDrawOpHelper::Flags
and GrPipeline::InputFlags.
Bug: skia:
Change-Id: Ia25b8526ff96a47428dfbb82da18dbebdd382c5b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/204906
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/ops/GrAtlasTextOp.cpp b/src/gpu/ops/GrAtlasTextOp.cpp
index 1826a0b..7588c6c 100644
--- a/src/gpu/ops/GrAtlasTextOp.cpp
+++ b/src/gpu/ops/GrAtlasTextOp.cpp
@@ -390,9 +390,8 @@
}
void GrAtlasTextOp::onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) {
- static const uint32_t kPipelineFlags = 0;
flushState->executeDrawsAndUploadsForMeshDrawOp(
- this, chainBounds, std::move(fProcessors), kPipelineFlags);
+ this, chainBounds, std::move(fProcessors), GrPipeline::InputFlags::kNone);
}
void GrAtlasTextOp::flush(GrMeshDrawOp::Target* target, FlushInfo* flushInfo) const {
diff --git a/src/gpu/ops/GrDashOp.cpp b/src/gpu/ops/GrDashOp.cpp
index 3893ba4..ec5e22e 100644
--- a/src/gpu/ops/GrDashOp.cpp
+++ b/src/gpu/ops/GrDashOp.cpp
@@ -624,9 +624,9 @@
}
void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {
- uint32_t pipelineFlags = 0;
+ auto pipelineFlags = GrPipeline::InputFlags::kNone;
if (AAMode::kCoverageWithMSAA == fAAMode) {
- pipelineFlags |= GrPipeline::kHWAntialias_Flag;
+ pipelineFlags |= GrPipeline::InputFlags::kHWAntialias;
}
flushState->executeDrawsAndUploadsForMeshDrawOp(
this, chainBounds, std::move(fProcessorSet), pipelineFlags, fStencilSettings);
diff --git a/src/gpu/ops/GrDrawPathOp.cpp b/src/gpu/ops/GrDrawPathOp.cpp
index ede3bb2..72910a1 100644
--- a/src/gpu/ops/GrDrawPathOp.cpp
+++ b/src/gpu/ops/GrDrawPathOp.cpp
@@ -45,7 +45,7 @@
GrPipeline::InitArgs GrDrawPathOpBase::pipelineInitArgs(const GrOpFlushState& state) {
GrPipeline::InitArgs args;
if (fDoAA) {
- args.fFlags |= GrPipeline::kHWAntialias_Flag;
+ args.fInputFlags |= GrPipeline::InputFlags::kHWAntialias;
}
args.fUserStencil = &kCoverPass;
args.fCaps = &state.caps();
diff --git a/src/gpu/ops/GrFillRRectOp.cpp b/src/gpu/ops/GrFillRRectOp.cpp
index 12d4300..a302099 100644
--- a/src/gpu/ops/GrFillRRectOp.cpp
+++ b/src/gpu/ops/GrFillRRectOp.cpp
@@ -741,7 +741,7 @@
GrPipeline::InitArgs initArgs;
if (GrAAType::kMSAA == fAAType) {
- initArgs.fFlags = GrPipeline::kHWAntialias_Flag;
+ initArgs.fInputFlags = GrPipeline::InputFlags::kHWAntialias;
}
initArgs.fCaps = &flushState->caps();
initArgs.fResourceProvider = flushState->resourceProvider();
diff --git a/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp b/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp
index 2863870..4826b3e 100644
--- a/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp
+++ b/src/gpu/ops/GrSimpleMeshDrawOpHelper.cpp
@@ -13,19 +13,16 @@
#include "SkGr.h"
GrSimpleMeshDrawOpHelper::GrSimpleMeshDrawOpHelper(const MakeArgs& args, GrAAType aaType,
- Flags flags)
+ InputFlags inputFlags)
: fProcessors(args.fProcessorSet)
- , fPipelineFlags(0)
+ , fPipelineFlags((GrPipeline::InputFlags)inputFlags)
, fAAType((int)aaType)
, fUsesLocalCoords(false)
, fCompatibleWithCoverageAsAlpha(false) {
SkDEBUGCODE(fDidAnalysis = false);
SkDEBUGCODE(fMadePipeline = false);
if (GrAATypeIsHW(aaType)) {
- fPipelineFlags |= GrPipeline::kHWAntialias_Flag;
- }
- if (flags & Flags::kSnapVerticesToPixelCenters) {
- fPipelineFlags |= GrPipeline::kSnapVerticesToPixelCenters_Flag;
+ fPipelineFlags |= GrPipeline::InputFlags::kHWAntialias;
}
}
@@ -115,6 +112,19 @@
}
#ifdef SK_DEBUG
+static void dump_pipeline_flags(GrPipeline::InputFlags flags, SkString* result) {
+ if (GrPipeline::InputFlags::kNone != flags) {
+ if (flags & GrPipeline::InputFlags::kSnapVerticesToPixelCenters) {
+ result->append("Snap vertices to pixel center.\n");
+ }
+ if (flags & GrPipeline::InputFlags::kHWAntialias) {
+ result->append("HW Antialiasing enabled.\n");
+ }
+ return;
+ }
+ result->append("No pipeline flags\n");
+}
+
SkString GrSimpleMeshDrawOpHelper::dumpInfo() const {
const GrProcessorSet& processors = fProcessors ? *fProcessors : GrProcessorSet::EmptySet();
SkString result = processors.dumpProcessors();
@@ -133,15 +143,15 @@
result.append(" mixed samples\n");
break;
}
- result.append(GrPipeline::DumpFlags(fPipelineFlags));
+ dump_pipeline_flags(fPipelineFlags, &result);
return result;
}
#endif
GrSimpleMeshDrawOpHelperWithStencil::GrSimpleMeshDrawOpHelperWithStencil(
const MakeArgs& args, GrAAType aaType, const GrUserStencilSettings* stencilSettings,
- Flags flags)
- : INHERITED(args, aaType, flags)
+ InputFlags inputFlags)
+ : INHERITED(args, aaType, inputFlags)
, fStencilSettings(stencilSettings ? stencilSettings : &GrUserStencilSettings::kUnused) {}
GrDrawOp::FixedFunctionFlags GrSimpleMeshDrawOpHelperWithStencil::fixedFunctionFlags() const {
diff --git a/src/gpu/ops/GrSimpleMeshDrawOpHelper.h b/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
index b2708ff..fee013f 100644
--- a/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
+++ b/src/gpu/ops/GrSimpleMeshDrawOpHelper.h
@@ -38,13 +38,14 @@
template <typename Op, typename... OpArgs>
static std::unique_ptr<GrDrawOp> FactoryHelper(GrRecordingContext*, GrPaint&&, OpArgs...);
- enum class Flags : uint32_t {
- kNone = 0x0,
- kSnapVerticesToPixelCenters = 0x1,
+ // Here we allow callers to specify a subset of the GrPipeline::InputFlags upon creation.
+ enum class InputFlags : uint8_t {
+ kNone = 0,
+ kSnapVerticesToPixelCenters = (uint8_t)GrPipeline::InputFlags::kSnapVerticesToPixelCenters,
};
- GR_DECL_BITFIELD_CLASS_OPS_FRIENDS(Flags);
+ GR_DECL_BITFIELD_CLASS_OPS_FRIENDS(InputFlags);
- GrSimpleMeshDrawOpHelper(const MakeArgs&, GrAAType, Flags = Flags::kNone);
+ GrSimpleMeshDrawOpHelper(const MakeArgs&, GrAAType, InputFlags = InputFlags::kNone);
~GrSimpleMeshDrawOpHelper();
GrSimpleMeshDrawOpHelper() = delete;
@@ -124,7 +125,7 @@
void executeDrawsAndUploads(const GrOp*, GrOpFlushState*, const SkRect& chainBounds);
protected:
- uint32_t pipelineFlags() const { return fPipelineFlags; }
+ GrPipeline::InputFlags pipelineFlags() const { return fPipelineFlags; }
GrProcessorSet::Analysis finalizeProcessors(
const GrCaps& caps, const GrAppliedClip*, const GrUserStencilSettings*, GrFSAAType,
@@ -132,7 +133,7 @@
GrProcessorAnalysisColor* geometryColor);
GrProcessorSet* fProcessors;
- unsigned fPipelineFlags : 8;
+ GrPipeline::InputFlags fPipelineFlags;
unsigned fAAType : 2;
unsigned fUsesLocalCoords : 1;
unsigned fCompatibleWithCoverageAsAlpha : 1;
@@ -148,7 +149,7 @@
class GrSimpleMeshDrawOpHelperWithStencil : private GrSimpleMeshDrawOpHelper {
public:
using MakeArgs = GrSimpleMeshDrawOpHelper::MakeArgs;
- using Flags = GrSimpleMeshDrawOpHelper::Flags;
+ using InputFlags = GrSimpleMeshDrawOpHelper::InputFlags;
using GrSimpleMeshDrawOpHelper::visitProxies;
@@ -161,7 +162,7 @@
}
GrSimpleMeshDrawOpHelperWithStencil(const MakeArgs&, GrAAType, const GrUserStencilSettings*,
- Flags = Flags::kNone);
+ InputFlags = InputFlags::kNone);
GrDrawOp::FixedFunctionFlags fixedFunctionFlags() const;
@@ -220,6 +221,6 @@
}
}
-GR_MAKE_BITFIELD_CLASS_OPS(GrSimpleMeshDrawOpHelper::Flags)
+GR_MAKE_BITFIELD_CLASS_OPS(GrSimpleMeshDrawOpHelper::InputFlags)
#endif
diff --git a/src/gpu/ops/GrStrokeRectOp.cpp b/src/gpu/ops/GrStrokeRectOp.cpp
index 4aac66d..c7b469c 100644
--- a/src/gpu/ops/GrStrokeRectOp.cpp
+++ b/src/gpu/ops/GrStrokeRectOp.cpp
@@ -117,22 +117,22 @@
if (!allowed_stroke(stroke, GrAA::kNo, &isMiter)) {
return nullptr;
}
- Helper::Flags flags = Helper::Flags::kNone;
+ Helper::InputFlags inputFlags = Helper::InputFlags::kNone;
// Depending on sub-pixel coordinates and the particular GPU, we may lose a corner of
// hairline rects. We jam all the vertices to pixel centers to avoid this, but not
// when MSAA is enabled because it can cause ugly artifacts.
if (stroke.getStyle() == SkStrokeRec::kHairline_Style && aaType != GrAAType::kMSAA) {
- flags |= Helper::Flags::kSnapVerticesToPixelCenters;
+ inputFlags |= Helper::InputFlags::kSnapVerticesToPixelCenters;
}
- return Helper::FactoryHelper<NonAAStrokeRectOp>(context, std::move(paint), flags,
+ return Helper::FactoryHelper<NonAAStrokeRectOp>(context, std::move(paint), inputFlags,
viewMatrix, rect,
stroke, aaType);
}
NonAAStrokeRectOp(const Helper::MakeArgs& helperArgs, const SkPMColor4f& color,
- Helper::Flags flags, const SkMatrix& viewMatrix, const SkRect& rect,
+ Helper::InputFlags inputFlags, const SkMatrix& viewMatrix, const SkRect& rect,
const SkStrokeRec& stroke, GrAAType aaType)
- : INHERITED(ClassID()), fHelper(helperArgs, aaType, flags) {
+ : INHERITED(ClassID()), fHelper(helperArgs, aaType, inputFlags) {
fColor = color;
fViewMatrix = viewMatrix;
fRect = rect;
@@ -145,7 +145,7 @@
bounds.outset(rad, rad);
// If our caller snaps to pixel centers then we have to round out the bounds
- if (flags & Helper::Flags::kSnapVerticesToPixelCenters) {
+ if (inputFlags & Helper::InputFlags::kSnapVerticesToPixelCenters) {
viewMatrix.mapRect(&bounds);
// We want to be consistent with how we snap non-aa lines. To match what we do in
// GrGLSLVertexShaderBuilder, we first floor all the vertex values and then add half a
diff --git a/src/gpu/ops/GrTextureOp.cpp b/src/gpu/ops/GrTextureOp.cpp
index 6fdeb87..a3a1153 100644
--- a/src/gpu/ops/GrTextureOp.cpp
+++ b/src/gpu/ops/GrTextureOp.cpp
@@ -547,8 +547,8 @@
void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {
auto pipelineFlags = (GrAAType::kMSAA == this->aaType())
- ? GrPipeline::kHWAntialias_Flag
- : 0;
+ ? GrPipeline::InputFlags::kHWAntialias
+ : GrPipeline::InputFlags::kNone;
flushState->executeDrawsAndUploadsForMeshDrawOp(
this, chainBounds, GrProcessorSet::MakeEmptySet(), pipelineFlags);
}