8#ifndef SkRuntimeEffectPriv_DEFINED
9#define SkRuntimeEffectPriv_DEFINED
65 const SkMatrix* localMatrix =
nullptr);
82 return effect.fStableKey;
86 return *effect.fBaseProgram;
96 options->allowPrivateAccess =
true;
100 options->fStableKey = stableKey;
123 bool alwaysCopyIntoAlloc,
137 return effect->usesColorTransform();
170 SkDEBUGFAILF(
"Found SkSL snippet that can be minified: \n %s\n", sksl);
178 return result.effect.release();
190 : fStage{
s.fPipeline,
198 , fSampleUsages(u) {}
#define SK_ABORT(message,...)
#define SkDEBUGFAILF(fmt,...)
SkRuntimeEffect * SkMakeRuntimeEffect(SkRuntimeEffect::Result(*make)(SkString, const SkRuntimeEffect::Options &), const char *sksl, SkRuntimeEffect::Options options=SkRuntimeEffect::Options{})
sk_sp< SkRuntimeEffect > SkMakeCachedRuntimeEffect(SkRuntimeEffect::Result(*make)(SkString sksl, const SkRuntimeEffect::Options &), SkString sksl)
static bool SkStrContains(const char string[], const char substring[])
void toLinearSrgb(const void *color) override
bool appendColorFilter(int index) override
bool appendBlender(int index) override
void fromLinearSrgb(const void *color) override
RuntimeEffectRPCallbacks(const SkStageRec &s, const SkShaders::MatrixRec &m, SkSpan< const SkRuntimeEffect::ChildPtr > c, SkSpan< const SkSL::SampleUsage > u)
bool appendShader(int index) override
static bool ReadChildEffects(SkReadBuffer &buffer, const SkRuntimeEffect *effect, skia_private::TArray< SkRuntimeEffect::ChildPtr > *children)
static sk_sp< SkShader > MakeDeferredShader(const SkRuntimeEffect *effect, UniformsCallback uniformsCallback, SkSpan< const SkRuntimeEffect::ChildPtr > children, const SkMatrix *localMatrix=nullptr)
static const char * ChildTypeToStr(SkRuntimeEffect::ChildType type)
static uint32_t StableKey(const SkRuntimeEffect &effect)
std::function< sk_sp< const SkData >(const UniformsCallbackContext &)> UniformsCallback
static SkSpan< const float > UniformsAsSpan(SkSpan< const SkRuntimeEffect::Uniform > uniforms, sk_sp< const SkData > originalData, bool alwaysCopyIntoAlloc, const SkColorSpace *destColorSpace, SkArenaAlloc *alloc)
static uint32_t Hash(const SkRuntimeEffect &effect)
static void AllowPrivateAccess(SkRuntimeEffect::Options *options)
static SkRuntimeEffect::Uniform VarAsUniform(const SkSL::Variable &, const SkSL::Context &, size_t *offset)
static sk_sp< const SkData > TransformUniforms(SkSpan< const SkRuntimeEffect::Uniform > uniforms, sk_sp< const SkData > originalData, const SkColorSpaceXformSteps &)
static bool SupportsConstantOutputForConstantInput(const SkRuntimeEffect *effect)
static void SetStableKey(SkRuntimeEffect::Options *options, uint32_t stableKey)
static const SkSL::Program & Program(const SkRuntimeEffect &effect)
static bool CanDraw(const SkCapabilities *, const SkSL::Program *)
static void WriteChildEffects(SkWriteBuffer &buffer, SkSpan< const SkRuntimeEffect::ChildPtr > children)
static bool UsesColorTransform(const SkRuntimeEffect *effect)
static SkRuntimeEffect::Child VarAsChild(const SkSL::Variable &var, int index)
static SkRuntimeEffect::Options ES3Options()
SkSpan< const Child > children() const
bool allowColorFilter() const
static const uint8_t buffer[]
static sk_sp< SkImage > make(sk_sp< SkColorSpace > cs)
const SkColorSpace * fDstColorSpace