[graphite] Begin refactoring paint key creation
Bug: 251493570
Change-Id: Id92358016150e1cc4f73da2368e37c13c04a8902
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/754020
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/graphite/PaintParams.cpp b/src/gpu/graphite/PaintParams.cpp
index 8fe4d51..66a6b60 100644
--- a/src/gpu/graphite/PaintParams.cpp
+++ b/src/gpu/graphite/PaintParams.cpp
@@ -104,6 +104,18 @@
return result;
}
+void PaintParams::addPaintColorToKey(const KeyContext& keyContext,
+ PaintParamsKeyBuilder* keyBuilder,
+ PipelineDataGatherer* gatherer) const {
+ if (fShader) {
+ AddToKey(keyContext, keyBuilder, gatherer, fShader.get());
+ } else {
+ SolidColorShaderBlock::BeginBlock(keyContext, keyBuilder, gatherer,
+ keyContext.paintColor());
+ keyBuilder->endBlock();
+ }
+}
+
void PaintParams::toKey(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer) const {
@@ -124,7 +136,7 @@
builder->endBlock();
}
- AddToKey(keyContext, builder, gatherer, fShader.get());
+ this->addPaintColorToKey(keyContext, builder, gatherer);
if (fPrimitiveBlender) {
AddPrimitiveBlendBlock(keyContext, builder, gatherer, fPrimitiveBlender.get());
diff --git a/src/gpu/graphite/PaintParams.h b/src/gpu/graphite/PaintParams.h
index c0ceae7..7b34ac5 100644
--- a/src/gpu/graphite/PaintParams.h
+++ b/src/gpu/graphite/PaintParams.h
@@ -73,6 +73,8 @@
void toKey(const KeyContext&, PaintParamsKeyBuilder*, PipelineDataGatherer*) const;
private:
+ void addPaintColorToKey(const KeyContext&, PaintParamsKeyBuilder*, PipelineDataGatherer*) const;
+
SkColor4f fColor;
sk_sp<SkBlender> fFinalBlender; // A nullptr here means SrcOver blending
sk_sp<SkShader> fShader;
diff --git a/src/gpu/graphite/Precompile.cpp b/src/gpu/graphite/Precompile.cpp
index e191ebd..c41eb26 100644
--- a/src/gpu/graphite/Precompile.cpp
+++ b/src/gpu/graphite/Precompile.cpp
@@ -107,6 +107,18 @@
return GetDstReadRequirement(caps, SkBlendMode::kSrcOver, coverage);
}
+void PaintOptions::addPaintColorToKey(const KeyContext& keyContext,
+ PaintParamsKeyBuilder* keyBuilder,
+ int desiredShaderCombination) const {
+ if (!fShaderOptions.empty()) {
+ PrecompileBase::AddToKey(keyContext, keyBuilder, fShaderOptions, desiredShaderCombination);
+ } else {
+ SolidColorShaderBlock::BeginBlock(keyContext, keyBuilder, /* gatherer= */ nullptr,
+ {1, 0, 0, 1});
+ keyBuilder->endBlock();
+ }
+}
+
void PaintOptions::createKey(const KeyContext& keyContext,
int desiredCombination,
PaintParamsKeyBuilder* keyBuilder,
@@ -153,9 +165,7 @@
keyBuilder->endBlock();
}
- if (!fShaderOptions.empty()) {
- PrecompileBase::AddToKey(keyContext, keyBuilder, fShaderOptions, desiredShaderCombination);
- }
+ this->addPaintColorToKey(keyContext, keyBuilder, desiredShaderCombination);
if (addPrimitiveBlender) {
BlendShaderBlock::BeginBlock(keyContext, keyBuilder, /* gatherer= */ nullptr);
diff --git a/src/gpu/graphite/Precompile.h b/src/gpu/graphite/Precompile.h
index 6753b9c..b170095 100644
--- a/src/gpu/graphite/Precompile.h
+++ b/src/gpu/graphite/Precompile.h
@@ -196,6 +196,10 @@
Coverage coverage,
const std::function<void(UniquePaintParamsID)>& processCombination) const;
+ void addPaintColorToKey(const KeyContext&,
+ PaintParamsKeyBuilder*,
+ int desiredShaderCombination) const;
+
std::vector<sk_sp<PrecompileShader>> fShaderOptions;
std::vector<sk_sp<PrecompileMaskFilter>> fMaskFilterOptions;
std::vector<sk_sp<PrecompileColorFilter>> fColorFilterOptions;