blob: 3274ab11851e390536afaaf75766910be5b70d35 [file] [log] [blame]
/*
* Copyright 2022 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "include/private/SkSLLayout.h"
#include "include/private/SkSLString.h"
namespace SkSL {
std::string Layout::description() const {
std::string result;
auto separator = SkSL::String::Separator();
if (fLocation >= 0) {
result += separator() + "location = " + std::to_string(fLocation);
}
if (fOffset >= 0) {
result += separator() + "offset = " + std::to_string(fOffset);
}
if (fBinding >= 0) {
result += separator() + "binding = " + std::to_string(fBinding);
}
if (fTexture >= 0) {
result += separator() + "texture = " + std::to_string(fTexture);
}
if (fSampler >= 0) {
result += separator() + "sampler = " + std::to_string(fSampler);
}
if (fIndex >= 0) {
result += separator() + "index = " + std::to_string(fIndex);
}
if (fSet >= 0) {
result += separator() + "set = " + std::to_string(fSet);
}
if (fBuiltin >= 0) {
result += separator() + "builtin = " + std::to_string(fBuiltin);
}
if (fInputAttachmentIndex >= 0) {
result += separator() + "input_attachment_index = " +
std::to_string(fInputAttachmentIndex);
}
if (fFlags & kOriginUpperLeft_Flag) {
result += separator() + "origin_upper_left";
}
if (fFlags & kBlendSupportAllEquations_Flag) {
result += separator() + "blend_support_all_equations";
}
if (fFlags & kPushConstant_Flag) {
result += separator() + "push_constant";
}
if (fFlags & kColor_Flag) {
result += separator() + "color";
}
if (result.size() > 0) {
result = "layout (" + result + ")";
}
return result;
}
bool Layout::operator==(const Layout& other) const {
return fFlags == other.fFlags &&
fLocation == other.fLocation &&
fOffset == other.fOffset &&
fBinding == other.fBinding &&
fTexture == other.fTexture &&
fSampler == other.fSampler &&
fIndex == other.fIndex &&
fSet == other.fSet &&
fBuiltin == other.fBuiltin &&
fInputAttachmentIndex == other.fInputAttachmentIndex;
}
} // namespace SkSL