summaryrefslogtreecommitdiffstats
path: root/gfx/skia/skia/include/sksl/DSLLayout.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/skia/skia/include/sksl/DSLLayout.h')
-rw-r--r--gfx/skia/skia/include/sksl/DSLLayout.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/gfx/skia/skia/include/sksl/DSLLayout.h b/gfx/skia/skia/include/sksl/DSLLayout.h
new file mode 100644
index 0000000000..6eb8b6257b
--- /dev/null
+++ b/gfx/skia/skia/include/sksl/DSLLayout.h
@@ -0,0 +1,118 @@
+/*
+ * Copyright 2021 Google LLC.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#ifndef SKSL_DSL_LAYOUT
+#define SKSL_DSL_LAYOUT
+
+#include "include/private/SkSLLayout.h"
+#include "include/sksl/SkSLPosition.h"
+
+namespace SkSL {
+
+namespace dsl {
+
+class DSLLayout {
+public:
+ DSLLayout() {}
+
+ DSLLayout& originUpperLeft(Position pos = {}) {
+ return this->flag(SkSL::Layout::kOriginUpperLeft_Flag, "origin_upper_left", pos);
+ }
+
+ DSLLayout& pushConstant(Position pos = {}) {
+ return this->flag(SkSL::Layout::kPushConstant_Flag, "push_constant", pos);
+ }
+
+ DSLLayout& blendSupportAllEquations(Position pos = {}) {
+ return this->flag(SkSL::Layout::kBlendSupportAllEquations_Flag,
+ "blend_support_all_equations", pos);
+ }
+
+ DSLLayout& color(Position pos = {}) {
+ return this->flag(SkSL::Layout::kColor_Flag, "color", pos);
+ }
+
+ DSLLayout& location(int location, Position pos = {}) {
+ return this->intValue(&fSkSLLayout.fLocation, location, SkSL::Layout::kLocation_Flag,
+ "location", pos);
+ }
+
+ DSLLayout& offset(int offset, Position pos = {}) {
+ return this->intValue(&fSkSLLayout.fOffset, offset, SkSL::Layout::kOffset_Flag, "offset",
+ pos);
+ }
+
+ DSLLayout& binding(int binding, Position pos = {}) {
+ return this->intValue(&fSkSLLayout.fBinding, binding, SkSL::Layout::kBinding_Flag,
+ "binding", pos);
+ }
+
+ DSLLayout& texture(int texture, Position pos = {}) {
+ return this->intValue(&fSkSLLayout.fTexture, texture, SkSL::Layout::kTexture_Flag,
+ "texture", pos);
+ }
+
+ DSLLayout& sampler(int sampler, Position pos = {}) {
+ return this->intValue(&fSkSLLayout.fSampler, sampler, SkSL::Layout::kSampler_Flag,
+ "sampler", pos);
+ }
+
+ DSLLayout& index(int index, Position pos = {}) {
+ return this->intValue(&fSkSLLayout.fIndex, index, SkSL::Layout::kIndex_Flag, "index", pos);
+ }
+
+ DSLLayout& set(int set, Position pos = {}) {
+ return this->intValue(&fSkSLLayout.fSet, set, SkSL::Layout::kSet_Flag, "set", pos);
+ }
+
+ DSLLayout& builtin(int builtin, Position pos = {}) {
+ return this->intValue(&fSkSLLayout.fBuiltin, builtin, SkSL::Layout::kBuiltin_Flag,
+ "builtin", pos);
+ }
+
+ DSLLayout& inputAttachmentIndex(int inputAttachmentIndex,
+ Position pos = {}) {
+ return this->intValue(&fSkSLLayout.fInputAttachmentIndex, inputAttachmentIndex,
+ SkSL::Layout::kInputAttachmentIndex_Flag, "input_attachment_index",
+ pos);
+ }
+
+ DSLLayout& spirv(Position pos = {}) {
+ return this->flag(SkSL::Layout::kSPIRV_Flag, "spirv", pos);
+ }
+
+ DSLLayout& metal(Position pos = {}) {
+ return this->flag(SkSL::Layout::kMetal_Flag, "metal", pos);
+ }
+
+ DSLLayout& gl(Position pos = {}) {
+ return this->flag(SkSL::Layout::kGL_Flag, "gl", pos);
+ }
+
+ DSLLayout& wgsl(Position pos = {}) {
+ return this->flag(SkSL::Layout::kWGSL_Flag, "wgsl", pos);
+ }
+
+private:
+ explicit DSLLayout(SkSL::Layout skslLayout)
+ : fSkSLLayout(skslLayout) {}
+
+ DSLLayout& flag(SkSL::Layout::Flag mask, const char* name, Position pos);
+
+ DSLLayout& intValue(int* target, int value, SkSL::Layout::Flag flag, const char* name,
+ Position pos);
+
+ SkSL::Layout fSkSLLayout;
+
+ friend class DSLModifiers;
+};
+
+} // namespace dsl
+
+} // namespace SkSL
+
+#endif