#ifndef GrFragmentProcessor_DEFINED
#define GrFragmentProcessor_DEFINED
#include "include/core/SkAlphaType.h"
#include "include/core/SkString.h"
#include "include/private/SkColorData.h"
#include "include/private/SkSLSampleUsage.h"
#include "include/private/base/SkAssert.h"
#include "include/private/base/SkDebug.h"
#include "include/private/base/SkMacros.h"
#include "include/private/base/SkTArray.h"
#include "include/private/base/SkTo.h"
#include "include/private/gpu/ganesh/GrTypesPriv.h"
#include "src/gpu/ganesh/GrProcessor.h"
#include "src/gpu/ganesh/glsl/GrGLSLUniformHandler.h"
#include <cstdint>
#include <functional>
#include <memory>
#include <string_view>
#include <tuple>
#include <utility>
class GrGLSLFPFragmentBuilder;
class GrGLSLProgramDataManager;
struct GrShaderCaps;
class GrTextureEffect;
struct SkPoint;
struct SkRect;
namespace skgpu {
class KeyBuilder;
class Swizzle;
}
class GrFragmentProcessor;
GrFPResult;
class GrFragmentProcessor : public GrProcessor { … };
class GrFragmentProcessor::ProgramImpl { … };
SK_MAKE_BITFIELD_OPS(GrFragmentProcessor::OptimizationFlags)
static inline GrFPResult GrFPFailure(std::unique_ptr<GrFragmentProcessor> fp) { … }
static inline GrFPResult GrFPSuccess(std::unique_ptr<GrFragmentProcessor> fp) { … }
static inline GrFPResult GrFPNullableSuccess(std::unique_ptr<GrFragmentProcessor> fp) { … }
#endif