#include "src/gpu/graphite/KeyHelpers.h"
#include "include/core/SkColorFilter.h"
#include "include/core/SkColorSpace.h"
#include "include/core/SkData.h"
#include "include/core/SkImageInfo.h"
#include "include/core/SkM44.h"
#include "include/core/SkScalar.h"
#include "include/effects/SkRuntimeEffect.h"
#include "include/gpu/graphite/Surface.h"
#include "src/base/SkHalf.h"
#include "src/core/SkBlendModeBlender.h"
#include "src/core/SkBlenderBase.h"
#include "src/core/SkColorSpacePriv.h"
#include "src/core/SkDebugUtils.h"
#include "src/core/SkRuntimeBlender.h"
#include "src/core/SkRuntimeEffectPriv.h"
#include "src/core/SkYUVMath.h"
#include "src/effects/colorfilters/SkBlendModeColorFilter.h"
#include "src/effects/colorfilters/SkColorFilterBase.h"
#include "src/effects/colorfilters/SkColorSpaceXformColorFilter.h"
#include "src/effects/colorfilters/SkComposeColorFilter.h"
#include "src/effects/colorfilters/SkGaussianColorFilter.h"
#include "src/effects/colorfilters/SkMatrixColorFilter.h"
#include "src/effects/colorfilters/SkRuntimeColorFilter.h"
#include "src/effects/colorfilters/SkTableColorFilter.h"
#include "src/effects/colorfilters/SkWorkingFormatColorFilter.h"
#include "src/gpu/Blend.h"
#include "src/gpu/DitherUtils.h"
#include "src/gpu/Swizzle.h"
#include "src/gpu/graphite/Caps.h"
#include "src/gpu/graphite/DrawContext.h"
#include "src/gpu/graphite/Image_Base_Graphite.h"
#include "src/gpu/graphite/Image_Graphite.h"
#include "src/gpu/graphite/Image_YUVA_Graphite.h"
#include "src/gpu/graphite/KeyContext.h"
#include "src/gpu/graphite/KeyHelpers.h"
#include "src/gpu/graphite/Log.h"
#include "src/gpu/graphite/PaintParams.h"
#include "src/gpu/graphite/PaintParamsKey.h"
#include "src/gpu/graphite/PipelineData.h"
#include "src/gpu/graphite/ReadSwizzle.h"
#include "src/gpu/graphite/RecorderPriv.h"
#include "src/gpu/graphite/ResourceProvider.h"
#include "src/gpu/graphite/RuntimeEffectDictionary.h"
#include "src/gpu/graphite/ShaderCodeDictionary.h"
#include "src/gpu/graphite/Surface_Graphite.h"
#include "src/gpu/graphite/Texture.h"
#include "src/gpu/graphite/TextureProxy.h"
#include "src/gpu/graphite/TextureProxyView.h"
#include "src/gpu/graphite/TextureUtils.h"
#include "src/gpu/graphite/Uniform.h"
#include "src/gpu/graphite/UniformManager.h"
#include "src/image/SkImage_Base.h"
#include "src/shaders/SkBlendShader.h"
#include "src/shaders/SkColorFilterShader.h"
#include "src/shaders/SkColorShader.h"
#include "src/shaders/SkCoordClampShader.h"
#include "src/shaders/SkEmptyShader.h"
#include "src/shaders/SkImageShader.h"
#include "src/shaders/SkLocalMatrixShader.h"
#include "src/shaders/SkPerlinNoiseShaderImpl.h"
#include "src/shaders/SkPerlinNoiseShaderType.h"
#include "src/shaders/SkPictureShader.h"
#include "src/shaders/SkRuntimeShader.h"
#include "src/shaders/SkShaderBase.h"
#include "src/shaders/SkTransformShader.h"
#include "src/shaders/SkTriColorShader.h"
#include "src/shaders/SkWorkingColorSpaceShader.h"
#include "src/shaders/gradients/SkConicalGradient.h"
#include "src/shaders/gradients/SkLinearGradient.h"
#include "src/shaders/gradients/SkRadialGradient.h"
#include "src/shaders/gradients/SkSweepGradient.h"
usingnamespaceskia_private;
namespace skgpu::graphite {
namespace {
class ScopedUniformWriter { … };
#define BEGIN_WRITE_UNIFORMS(gatherer, dict, codeSnippetID) …
void add_solid_uniform_data(const ShaderCodeDictionary* dict,
const SkPMColor4f& premulColor,
PipelineDataGatherer* gatherer) { … }
}
void SolidColorShaderBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkPMColor4f& premulColor) { … }
namespace {
void add_rgb_paint_color_uniform_data(const ShaderCodeDictionary* dict,
const SkPMColor4f& premulColor,
PipelineDataGatherer* gatherer) { … }
void add_alpha_only_paint_color_uniform_data(const ShaderCodeDictionary* dict,
const SkPMColor4f& premulColor,
PipelineDataGatherer* gatherer) { … }
}
void RGBPaintColorBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer) { … }
void AlphaOnlyPaintColorBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer) { … }
namespace {
void add_dst_read_sample_uniform_data(const ShaderCodeDictionary* dict,
PipelineDataGatherer* gatherer,
sk_sp<TextureProxy> dstTexture,
SkIPoint dstOffset) { … }
}
void DstReadSampleBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
sk_sp<TextureProxy> dstTexture,
SkIPoint dstOffset) { … }
namespace {
void add_gradient_preamble(const GradientShaderBlocks::GradientData& gradData,
PipelineDataGatherer* gatherer) { … }
void add_gradient_postamble(const GradientShaderBlocks::GradientData& gradData,
int bufferOffset,
PipelineDataGatherer* gatherer) { … }
void add_linear_gradient_uniform_data(const ShaderCodeDictionary* dict,
BuiltInCodeSnippetID codeSnippetID,
const GradientShaderBlocks::GradientData& gradData,
int bufferOffset,
PipelineDataGatherer* gatherer) {
BEGIN_WRITE_UNIFORMS(gatherer, dict, codeSnippetID)
add_gradient_preamble(gradData, gatherer);
add_gradient_postamble(gradData, bufferOffset, gatherer);
};
void add_radial_gradient_uniform_data(const ShaderCodeDictionary* dict,
BuiltInCodeSnippetID codeSnippetID,
const GradientShaderBlocks::GradientData& gradData,
int bufferOffset,
PipelineDataGatherer* gatherer) {
BEGIN_WRITE_UNIFORMS(gatherer, dict, codeSnippetID)
add_gradient_preamble(gradData, gatherer);
add_gradient_postamble(gradData, bufferOffset, gatherer);
};
void add_sweep_gradient_uniform_data(const ShaderCodeDictionary* dict,
BuiltInCodeSnippetID codeSnippetID,
const GradientShaderBlocks::GradientData& gradData,
int bufferOffset,
PipelineDataGatherer* gatherer) {
BEGIN_WRITE_UNIFORMS(gatherer, dict, codeSnippetID)
add_gradient_preamble(gradData, gatherer);
gatherer->write(gradData.fBias);
gatherer->write(gradData.fScale);
add_gradient_postamble(gradData, bufferOffset, gatherer);
};
void add_conical_gradient_uniform_data(const ShaderCodeDictionary* dict,
BuiltInCodeSnippetID codeSnippetID,
const GradientShaderBlocks::GradientData& gradData,
int bufferOffset,
PipelineDataGatherer* gatherer) {
BEGIN_WRITE_UNIFORMS(gatherer, dict, codeSnippetID)
float dRadius = gradData.fRadii[1] - gradData.fRadii[0];
bool isRadial = SkPoint::Distance(gradData.fPoints[1], gradData.fPoints[0])
< SK_ScalarNearlyZero;
float a = 0;
float invA = 1;
if (!isRadial) {
a = 1 - dRadius * dRadius;
if (std::abs(a) > SK_ScalarNearlyZero) {
invA = 1.0 / (2.0 * a);
} else {
a = 0;
invA = 0;
}
} else {
dRadius = gradData.fRadii[0] > 0 ? 1 : -1;
}
add_gradient_preamble(gradData, gatherer);
gatherer->write(gradData.fRadii[0]);
gatherer->write(dRadius);
gatherer->write(a);
gatherer->write(invA);
add_gradient_postamble(gradData, bufferOffset, gatherer);
};
}
static int write_color_and_offset_bufdata(int numStops,
const SkPMColor4f* colors,
const float* offsets,
const SkGradientBaseShader* shader,
PipelineDataGatherer* gatherer) { … }
GradientShaderBlocks::GradientData::GradientData(SkShaderBase::GradientType type,
int numStops,
bool useStorageBuffer)
: … { … }
GradientShaderBlocks::GradientData::GradientData(SkShaderBase::GradientType type,
SkPoint point0, SkPoint point1,
float radius0, float radius1,
float bias, float scale,
SkTileMode tm,
int numStops,
const SkPMColor4f* colors,
const float* offsets,
const SkGradientBaseShader* shader,
sk_sp<TextureProxy> colorsAndOffsetsProxy,
bool useStorageBuffer,
const SkGradientShader::Interpolation& interp)
: … { … }
void GradientShaderBlocks::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const GradientData& gradData) { … }
namespace {
void add_localmatrixshader_uniform_data(const ShaderCodeDictionary* dict,
const SkM44& localMatrix,
PipelineDataGatherer* gatherer) { … }
}
void LocalMatrixShaderBlock::BeginBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const LMShaderData& lmShaderData) { … }
namespace {
static constexpr int kColorSpaceXformFlagAlphaSwizzle = …;
void add_color_space_uniforms(const SkColorSpaceXformSteps& steps,
ReadSwizzle readSwizzle,
PipelineDataGatherer* gatherer) { … }
void add_image_uniform_data(const ShaderCodeDictionary* dict,
const ImageShaderBlock::ImageData& imgData,
PipelineDataGatherer* gatherer) { … }
void add_cubic_image_uniform_data(const ShaderCodeDictionary* dict,
const ImageShaderBlock::ImageData& imgData,
PipelineDataGatherer* gatherer) { … }
void add_hw_image_uniform_data(const ShaderCodeDictionary* dict,
const ImageShaderBlock::ImageData& imgData,
PipelineDataGatherer* gatherer) { … }
bool can_do_tiling_in_hw(const Caps* caps, const ImageShaderBlock::ImageData& imgData) { … }
void add_sampler_data_to_key(PaintParamsKeyBuilder* builder, const SamplerDesc& samplerDesc) { … }
}
ImageShaderBlock::ImageData::ImageData(const SkSamplingOptions& sampling,
SkTileMode tileModeX,
SkTileMode tileModeY,
SkISize imgSize,
SkRect subset)
: … { … }
void ImageShaderBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const ImageData& imgData) { … }
namespace {
void add_yuv_image_uniform_data(const ShaderCodeDictionary* dict,
const YUVImageShaderBlock::ImageData& imgData,
PipelineDataGatherer* gatherer) { … }
void add_cubic_yuv_image_uniform_data(const ShaderCodeDictionary* dict,
const YUVImageShaderBlock::ImageData& imgData,
PipelineDataGatherer* gatherer) { … }
void add_hw_yuv_image_uniform_data(const ShaderCodeDictionary* dict,
const YUVImageShaderBlock::ImageData& imgData,
PipelineDataGatherer* gatherer) { … }
void add_hw_yuv_no_swizzle_image_uniform_data(const ShaderCodeDictionary* dict,
const YUVImageShaderBlock::ImageData& imgData,
PipelineDataGatherer* gatherer) { … }
}
YUVImageShaderBlock::ImageData::ImageData(const SkSamplingOptions& sampling,
SkTileMode tileModeX,
SkTileMode tileModeY,
SkISize imgSize,
SkRect subset)
: … { … }
static bool can_do_yuv_tiling_in_hw(const Caps* caps,
const YUVImageShaderBlock::ImageData& imgData) { … }
static bool no_yuv_swizzle(const YUVImageShaderBlock::ImageData& imgData) { … }
void YUVImageShaderBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const ImageData& imgData) { … }
namespace {
void add_coordclamp_uniform_data(const ShaderCodeDictionary* dict,
const CoordClampShaderBlock::CoordClampData& clampData,
PipelineDataGatherer* gatherer) { … }
}
void CoordClampShaderBlock::BeginBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const CoordClampData& clampData) { … }
namespace {
void add_dither_uniform_data(const ShaderCodeDictionary* dict,
const DitherShaderBlock::DitherData& ditherData,
PipelineDataGatherer* gatherer) { … }
}
void DitherShaderBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const DitherData& data) { … }
namespace {
void add_perlin_noise_uniform_data(const ShaderCodeDictionary* dict,
const PerlinNoiseShaderBlock::PerlinNoiseData& noiseData,
PipelineDataGatherer* gatherer) { … }
}
void PerlinNoiseShaderBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const PerlinNoiseData& noiseData) { … }
void BlendComposeBlock::BeginBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer) { … }
void PorterDuffBlenderBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
SkSpan<const float> coeffs) { … }
void HSLCBlenderBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
SkSpan<const float> coeffs) { … }
void ClipShaderBlock::BeginBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer) { … }
void ComposeBlock::BeginBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer) { … }
namespace {
void add_matrix_colorfilter_uniform_data(const ShaderCodeDictionary* dict,
const MatrixColorFilterBlock::MatrixColorFilterData& data,
PipelineDataGatherer* gatherer) { … }
}
void MatrixColorFilterBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const MatrixColorFilterData& matrixCFData) { … }
namespace {
void add_table_colorfilter_uniform_data(const ShaderCodeDictionary* dict,
const TableColorFilterBlock::TableColorFilterData& data,
PipelineDataGatherer* gatherer) { … }
}
void TableColorFilterBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const TableColorFilterData& data) { … }
namespace {
void add_color_space_xform_uniform_data(
const ShaderCodeDictionary* dict,
const ColorSpaceTransformBlock::ColorSpaceTransformData& data,
PipelineDataGatherer* gatherer) { … }
}
ColorSpaceTransformBlock::ColorSpaceTransformData::ColorSpaceTransformData(const SkColorSpace* src,
SkAlphaType srcAT,
const SkColorSpace* dst,
SkAlphaType dstAT)
: … { … }
void ColorSpaceTransformBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const ColorSpaceTransformData& data) { … }
namespace {
void add_circular_rrect_clip_data(
const ShaderCodeDictionary* dict,
const CircularRRectClipBlock::CircularRRectClipData& data,
PipelineDataGatherer* gatherer) { … }
}
void CircularRRectClipBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const CircularRRectClipData& data) { … }
namespace {
void add_primitive_color_uniform_data(
const ShaderCodeDictionary* dict,
const SkColorSpaceXformSteps& steps,
PipelineDataGatherer* gatherer) { … }
}
void PrimitiveColorBlock::AddBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer) { … }
void AddBlendModeColorFilter(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
SkBlendMode bm,
const SkPMColor4f& srcColor) { … }
RuntimeEffectBlock::ShaderData::ShaderData(sk_sp<const SkRuntimeEffect> effect)
: … { … }
RuntimeEffectBlock::ShaderData::ShaderData(sk_sp<const SkRuntimeEffect> effect,
sk_sp<const SkData> uniforms)
: … { … }
static bool skdata_matches(const SkData* a, const SkData* b) { … }
bool RuntimeEffectBlock::ShaderData::operator==(const ShaderData& rhs) const { … }
static void gather_runtime_effect_uniforms(const KeyContext& keyContext,
const SkRuntimeEffect* effect,
SkSpan<const Uniform> graphiteUniforms,
const SkData* uniformData,
PipelineDataGatherer* gatherer) { … }
void RuntimeEffectBlock::BeginBlock(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const ShaderData& shaderData) { … }
namespace {
void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkBlendModeBlender* blender) { … }
void add_children_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
SkSpan<const SkRuntimeEffect::ChildPtr> children,
const SkRuntimeEffect* effect) { … }
void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkRuntimeBlender* blender) { … }
void notify_in_use(Recorder* recorder,
DrawContext* drawContext,
SkSpan<const SkRuntimeEffect::ChildPtr> children) { … }
}
void AddToKey(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkBlender* blender) { … }
void NotifyImagesInUse(Recorder* recorder, DrawContext* drawContext, const SkBlender* blender) { … }
static SkPMColor4f map_color(const SkColor4f& c, SkColorSpace* src, SkColorSpace* dst) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkBlendModeColorFilter* filter) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkColorSpaceXformColorFilter* filter) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* keyBuilder,
PipelineDataGatherer* gatherer,
const SkComposeColorFilter* filter) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkGaussianColorFilter*) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkMatrixColorFilter* filter) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkRuntimeColorFilter* filter) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkTableColorFilter* filter) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkWorkingFormatColorFilter* filter) { … }
void AddToKey(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkColorFilter* filter) { … }
void NotifyImagesInUse(Recorder* recorder, DrawContext* drawContext, const SkColorFilter* filter) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkBlendShader* shader) { … }
static void notify_in_use(Recorder* recorder,
DrawContext* drawContext,
const SkBlendShader* shader) { … }
static SkMatrix matrix_invert_or_identity(const SkMatrix& matrix) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkCTMShader* shader) { … }
static void notify_in_use(Recorder* recorder, DrawContext* drawContext, const SkCTMShader* shader) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkColorShader* shader) { … }
static void notify_in_use(Recorder*, DrawContext*, const SkColorShader*) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkColor4Shader* shader) { … }
static void notify_in_use(Recorder*, DrawContext*, const SkColor4Shader*) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkColorFilterShader* shader) { … }
static void notify_in_use(Recorder* recorder,
DrawContext* drawContext,
const SkColorFilterShader* shader) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkCoordClampShader* shader) { … }
static void notify_in_use(Recorder* recorder,
DrawContext* drawContext,
const SkCoordClampShader* shader) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkEmptyShader*) { … }
static void notify_in_use(Recorder*, DrawContext*, const SkEmptyShader*) { … }
static bool is_premul_alpha_only(const ColorSpaceTransformBlock::ColorSpaceTransformData& data) { … }
static void add_yuv_image_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkImageShader* origShader,
sk_sp<const SkImage> imageToDraw,
SkSamplingOptions sampling) { … }
static skgpu::graphite::ReadSwizzle swizzle_class_to_read_enum(const skgpu::Swizzle& swizzle) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkImageShader* shader) { … }
static void notify_in_use(Recorder* recorder,
DrawContext* drawContext,
const SkImageShader* shader) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkLocalMatrixShader* shader) { … }
static void notify_in_use(Recorder* recorder,
DrawContext* drawContext,
const SkLocalMatrixShader* shader) { … }
static_assert …;
static_assert …;
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkPerlinNoiseShader* shader) { … }
static void notify_in_use(Recorder*, DrawContext*, const SkPerlinNoiseShader*) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkPictureShader* shader) { … }
static void notify_in_use(Recorder*, DrawContext*, const SkPictureShader*) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkRuntimeShader* shader) { … }
static void notify_in_use(Recorder* recorder,
DrawContext* drawContext,
const SkRuntimeShader* shader) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkTransformShader* shader) { … }
static void notify_in_use(Recorder*, DrawContext*, const SkTransformShader*) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkTriColorShader* shader) { … }
static void notify_in_use(Recorder*, DrawContext*, const SkTriColorShader*) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkWorkingColorSpaceShader* shader) { … }
static void notify_in_use(Recorder* recorder,
DrawContext* drawContext,
const SkWorkingColorSpaceShader* shader) { … }
static SkBitmap create_color_and_offset_bitmap(int numStops,
const SkPMColor4f* colors,
const float* offsets) { … }
static void make_interpolated_to_dst(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const GradientShaderBlocks::GradientData& gradData,
const SkGradientShader::Interpolation& interp,
SkColorSpace* intermediateCS) { … }
static void add_gradient_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkGradientBaseShader* shader,
SkPoint point0,
SkPoint point1,
float radius0,
float radius1,
float bias,
float scale) { … }
static void add_gradient_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkConicalGradient* shader) { … }
static void add_gradient_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkLinearGradient* shader) { … }
static void add_gradient_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkRadialGradient* shader) { … }
static void add_gradient_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkSweepGradient* shader) { … }
static void add_to_key(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkGradientBaseShader* shader) { … }
static void notify_in_use(Recorder*, DrawContext*, const SkGradientBaseShader*) { … }
void AddToKey(const KeyContext& keyContext,
PaintParamsKeyBuilder* builder,
PipelineDataGatherer* gatherer,
const SkShader* shader) { … }
void NotifyImagesInUse(Recorder* recorder,
DrawContext* drawContext,
const SkShader* shader) { … }
}