chromium/third_party/skia/src/gpu/ganesh/effects/GrSkSLFP.h

/*
 * Copyright 2018 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#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" // IWYU pragma: keep
#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
// UNIFORM_TYPE allows C++ types to be mapped onto SkRuntimeEffect::Uniform::Type
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