Delay half-float vertex color determination until Op::finalize
Bug: skia:8871
Change-Id: I873e80e2d97a32e4524c177a9b6e07b0566a02ce
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/201682
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/gpu/ops/GrStrokeRectOp.cpp b/src/gpu/ops/GrStrokeRectOp.cpp
index 5619c41..4aac66d 100644
--- a/src/gpu/ops/GrStrokeRectOp.cpp
+++ b/src/gpu/ops/GrStrokeRectOp.cpp
@@ -165,8 +165,9 @@
GrProcessorSet::Analysis finalize(const GrCaps& caps, const GrAppliedClip* clip,
GrFSAAType fsaaType, GrClampType clampType) override {
- return fHelper.finalizeProcessors(
- caps, clip, fsaaType, clampType, GrProcessorAnalysisCoverage::kNone, &fColor);
+ // This Op uses uniform (not vertex) color, so doesn't need to track wide color.
+ return fHelper.finalizeProcessors(caps, clip, fsaaType, clampType,
+ GrProcessorAnalysisCoverage::kNone, &fColor, nullptr);
}
private:
@@ -343,7 +344,6 @@
fRects.emplace_back(RectInfo{color, devOutside, devOutside, devInside, false});
this->setBounds(devOutside, HasAABloat::kYes, IsZeroArea::kNo);
fMiterStroke = true;
- fWideColor = !SkPMColor4fFitsInBytes(color);
}
static std::unique_ptr<GrDrawOp> Make(GrRecordingContext* context,
@@ -366,7 +366,6 @@
, fHelper(helperArgs, GrAAType::kCoverage)
, fViewMatrix(viewMatrix) {
fMiterStroke = isMiter;
- fWideColor = !SkPMColor4fFitsInBytes(color);
RectInfo& info = fRects.push_back();
compute_aa_rects(&info.fDevOutside, &info.fDevOutsideAssist, &info.fDevInside,
&info.fDegenerate, viewMatrix, rect, stroke.getWidth(), isMiter);
@@ -414,7 +413,7 @@
GrFSAAType fsaaType, GrClampType clampType) override {
return fHelper.finalizeProcessors(
caps, clip, fsaaType, clampType, GrProcessorAnalysisCoverage::kSingleChannel,
- &fRects.back().fColor);
+ &fRects.back().fColor, &fWideColor);
}
private: