diff options
Diffstat (limited to 'src/gpu/GrFragmentProcessor.cpp')
-rw-r--r-- | src/gpu/GrFragmentProcessor.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/gpu/GrFragmentProcessor.cpp b/src/gpu/GrFragmentProcessor.cpp index b0a36fce6d..70de1650ed 100644 --- a/src/gpu/GrFragmentProcessor.cpp +++ b/src/gpu/GrFragmentProcessor.cpp @@ -61,11 +61,21 @@ void GrFragmentProcessor::addCoordTransform(const GrCoordTransform* transform) { SkDEBUGCODE(transform->setInProcessor();) } -int GrFragmentProcessor::registerChildProcessor(sk_sp<GrFragmentProcessor> child) { - if (child->isBad()) { - this->markAsBad(); +bool GrFragmentProcessor::instantiate(GrResourceProvider* resourceProvider) const { + if (!INHERITED::instantiate(resourceProvider)) { + return false; } + for (int i = 0; i < this->numChildProcessors(); ++i) { + if (!this->childProcessor(i).instantiate(resourceProvider)) { + return false; + } + } + + return true; +} + +int GrFragmentProcessor::registerChildProcessor(sk_sp<GrFragmentProcessor> child) { this->combineRequiredFeatures(*child); if (child->usesLocalCoords()) { |