#ifndef GrSkSLFP_DEFINED
#define GrSkSLFP_DEFINED
#include "include/core/SkRefCnt.h"
#include "include/effects/SkRuntimeEffect.h"
#include "include/private/SkColorData.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkDebug.h"
#include "include/private/base/SkMacros.h"
#include "include/private/base/SkSpan_impl.h"
#include "src/base/SkVx.h"
#include "src/gpu/ganesh/GrFragmentProcessor.h"
#include "src/gpu/ganesh/GrProcessorUnitTest.h"
#include "src/gpu/ganesh/glsl/GrGLSLProgramDataManager.h"
#include <cstdint>
#include <cstring>
#include <memory>
#include <string>
#include <string_view>
#include <utility>
#include <vector>
class SkColorSpace;
class SkData;
class SkM44;
namespace skgpu { class KeyBuilder; }
struct GrShaderCaps;
struct SkISize;
struct SkRect;
struct SkV2;
struct SkV4;
template <typename T> struct GrFPUniformType;
#ifdef SK_DEBUG
template <typename T> struct GrFPUniformType { … };
#define UNIFORM_TYPE …
UNIFORM_TYPE(kFloat, float);
UNIFORM_TYPE …;
UNIFORM_TYPE …;
UNIFORM_TYPE …;
UNIFORM_TYPE …;
UNIFORM_TYPE(kFloat4, skvx::Vec<4, float>);
UNIFORM_TYPE …;
UNIFORM_TYPE(kInt, int);
UNIFORM_TYPE …;
#undef UNIFORM_TYPE
#endif
class GrSkSLFP : public GrFragmentProcessor { … };
SK_MAKE_BITFIELD_CLASS_OPS(GrSkSLFP::OptFlags)
#endif