blob: d1c65d13951fd46b63db57fd738b06fa4dbeae2e [file] [log] [blame]
/*
* Copyright 2021 Google LLC.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "src/sksl/dsl/priv/DSLFPs.h"
#include "src/sksl/dsl/priv/DSLWriter.h"
#include "src/sksl/ir/SkSLCodeStringExpression.h"
#if !defined(SKSL_STANDALONE) && SK_SUPPORT_GPU
namespace SkSL {
namespace dsl {
void StartFragmentProcessor(GrGLSLFragmentProcessor* processor,
GrGLSLFragmentProcessor::EmitArgs* emitArgs) {
DSLWriter::StartFragmentProcessor(processor, emitArgs);
}
void EndFragmentProcessor() {
DSLWriter::EndFragmentProcessor();
}
DSLVar sk_SampleCoord() {
return DSLVar("sk_SampleCoord");
}
DSLExpression SampleChild(int index, DSLExpression coords) {
std::unique_ptr<SkSL::Expression> coordsExpr = coords.release();
SkString code = DSLWriter::CurrentProcessor()->invokeChild(index, *DSLWriter::CurrentEmitArgs(),
coordsExpr ? coordsExpr->description()
: "");
return DSLExpression(std::make_unique<SkSL::CodeStringExpression>(code.c_str(),
DSLWriter::Context().fTypes.fHalf4.get()));
}
GrGLSLUniformHandler::UniformHandle VarUniformHandle(const DSLVar& var) {
return DSLWriter::VarUniformHandle(var);
}
} // namespace dsl
} // namespace SkSL
#endif // !defined(SKSL_STANDALONE) && SK_SUPPORT_GPU