blob: c09e0c568177d07cf77153ea58f0e21f695f4465 [file] [log] [blame]
/*
* Copyright 2020 Google LLC
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef SKSL_HLSLCODEGENERATOR
#define SKSL_HLSLCODEGENERATOR
#include "include/core/SkSpan.h"
#include "src/sksl/codegen/SkSLNativeShader.h"
#include <cstdint>
#include <string>
namespace SkSL {
class ErrorReporter;
class OutputStream;
struct Program;
struct ShaderCaps;
using ValidateSPIRVProc = bool (*)(ErrorReporter&, SkSpan<const uint32_t>);
/** Converts a Program into HLSL code. */
bool ToHLSL(Program& program,
const ShaderCaps* caps,
OutputStream& out,
ValidateSPIRVProc = nullptr);
bool ToHLSL(Program& program, const ShaderCaps* caps, std::string* out, ValidateSPIRVProc);
// This explicit overload is used by SkSLToBackend.
inline bool ToHLSL(Program& program, const ShaderCaps* caps, NativeShader* out) {
return ToHLSL(program, caps, &out->fText, (ValidateSPIRVProc) nullptr);
}
} // namespace SkSL
#endif