| // Copyright 2018 The Amber Authors. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| #ifndef SRC_COMMAND_DATA_H_ |
| #define SRC_COMMAND_DATA_H_ |
| |
| #include <cstdint> |
| #include <string> |
| |
| namespace amber { |
| |
| enum class Topology : uint8_t { |
| kUnknown = 0, |
| kPointList, |
| kLineList, |
| kLineStrip, |
| kTriangleList, |
| kTriangleStrip, |
| kTriangleFan, |
| kLineListWithAdjacency, |
| kLineStripWithAdjacency, |
| kTriangleListWithAdjacency, |
| kTriangleStripWithAdjacency, |
| kPatchList, |
| }; |
| |
| enum class PolygonMode : uint8_t { |
| kFill = 0, |
| kLine, |
| kPoint, |
| }; |
| |
| enum class CullMode : uint8_t { |
| kNone = 0, |
| kFront, |
| kBack, |
| kFrontAndBack, |
| }; |
| |
| enum class FrontFace : uint8_t { |
| kCounterClockwise = 0, |
| kClockwise, |
| }; |
| |
| enum ColorMask { |
| kColorMaskR = 1 << 0, |
| kColorMaskG = 1 << 1, |
| kColorMaskB = 1 << 2, |
| kColorMaskA = 1 << 3, |
| }; |
| |
| enum class CompareOp : uint8_t { |
| kUnknown = 0, |
| kNever, |
| kLess, |
| kEqual, |
| kLessOrEqual, |
| kGreater, |
| kNotEqual, |
| kGreaterOrEqual, |
| kAlways, |
| }; |
| |
| enum class StencilOp : uint8_t { |
| kUnknown = 0, |
| kKeep, |
| kZero, |
| kReplace, |
| kIncrementAndClamp, |
| kDecrementAndClamp, |
| kInvert, |
| kIncrementAndWrap, |
| kDecrementAndWrap, |
| }; |
| |
| enum class LogicOp : uint8_t { |
| kClear = 0, |
| kAnd, |
| kAndReverse, |
| kCopy, |
| kAndInverted, |
| kNoOp, |
| kXor, |
| kOr, |
| kNor, |
| kEquivalent, |
| kInvert, |
| kOrReverse, |
| kCopyInverted, |
| kOrInverted, |
| kNand, |
| kSet, |
| }; |
| |
| enum class BlendOp : uint8_t { |
| kUnknown = 0, |
| kAdd, |
| kSubtract, |
| kReverseSubtract, |
| kMin, |
| kMax, |
| kZero, |
| kSrc, |
| kDst, |
| kSrcOver, |
| kDstOver, |
| kSrcIn, |
| kDstIn, |
| kSrcOut, |
| kDstOut, |
| kSrcAtop, |
| kDstAtop, |
| kXor, |
| kMultiply, |
| kScreen, |
| kOverlay, |
| kDarken, |
| kLighten, |
| kColorDodge, |
| kColorBurn, |
| kHardLight, |
| kSoftLight, |
| kDifference, |
| kExclusion, |
| kInvert, |
| kInvertRGB, |
| kLinearDodge, |
| kLinearBurn, |
| kVividLight, |
| kLinearLight, |
| kPinLight, |
| kHardMix, |
| kHslHue, |
| kHslSaturation, |
| kHslColor, |
| kHslLuminosity, |
| kPlus, |
| kPlusClamped, |
| kPlusClampedAlpha, |
| kPlusDarker, |
| kMinus, |
| kMinusClamped, |
| kContrast, |
| kInvertOvg, |
| kRed, |
| kGreen, |
| kBlue, |
| }; |
| |
| enum class BlendFactor : uint8_t { |
| kUnknown = 0, |
| kZero, |
| kOne, |
| kSrcColor, |
| kOneMinusSrcColor, |
| kDstColor, |
| kOneMinusDstColor, |
| kSrcAlpha, |
| kOneMinusSrcAlpha, |
| kDstAlpha, |
| kOneMinusDstAlpha, |
| kConstantColor, |
| kOneMinusConstantColor, |
| kConstantAlpha, |
| kOneMinusConstantAlpha, |
| kSrcAlphaSaturate, |
| kSrc1Color, |
| kOneMinusSrc1Color, |
| kSrc1Alpha, |
| kOneMinusSrc1Alpha, |
| }; |
| |
| Topology NameToTopology(const std::string& name); |
| BlendFactor NameToBlendFactor(const std::string& name); |
| BlendOp NameToBlendOp(const std::string& name); |
| |
| } // namespace amber |
| |
| #endif // SRC_COMMAND_DATA_H_ |