1 // Copyright 2018 The Amber Authors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 #ifndef SRC_COMMAND_DATA_H_ 16 #define SRC_COMMAND_DATA_H_ 17 18 #include <cstdint> 19 #include <string> 20 21 namespace amber { 22 23 enum class Topology : uint8_t { 24 kUnknown = 0, 25 kPointList, 26 kLineList, 27 kLineStrip, 28 kTriangleList, 29 kTriangleStrip, 30 kTriangleFan, 31 kLineListWithAdjacency, 32 kLineStripWithAdjacency, 33 kTriangleListWithAdjacency, 34 kTriangleStripWithAdjacency, 35 kPatchList, 36 }; 37 38 enum class PolygonMode : uint8_t { 39 kFill = 0, 40 kLine, 41 kPoint, 42 }; 43 44 enum class CullMode : uint8_t { 45 kNone = 0, 46 kFront, 47 kBack, 48 kFrontAndBack, 49 }; 50 51 enum class FrontFace : uint8_t { 52 kCounterClockwise = 0, 53 kClockwise, 54 }; 55 56 enum ColorMask { 57 kColorMaskR = 1 << 0, 58 kColorMaskG = 1 << 1, 59 kColorMaskB = 1 << 2, 60 kColorMaskA = 1 << 3, 61 }; 62 63 enum class CompareOp : uint8_t { 64 kNever = 0, 65 kLess, 66 kEqual, 67 kLessOrEqual, 68 kGreater, 69 kNotEqual, 70 kGreaterOrEqual, 71 kAlways, 72 }; 73 74 enum class StencilOp : uint8_t { 75 kKeep = 0, 76 kZero, 77 kReplace, 78 kIncrementAndClamp, 79 kDecrementAndClamp, 80 kInvert, 81 kIncrementAndWrap, 82 kDecrementAndWrap, 83 }; 84 85 enum class LogicOp : uint8_t { 86 kClear = 0, 87 kAnd, 88 kAndReverse, 89 kCopy, 90 kAndInverted, 91 kNoOp, 92 kXor, 93 kOr, 94 kNor, 95 kEquivalent, 96 kInvert, 97 kOrReverse, 98 kCopyInverted, 99 kOrInverted, 100 kNand, 101 kSet, 102 }; 103 104 enum class BlendOp : uint8_t { 105 kAdd = 0, 106 kSubtract, 107 kReverseSubtract, 108 kMin, 109 kMax, 110 kZero, 111 kSrc, 112 kDst, 113 kSrcOver, 114 kDstOver, 115 kSrcIn, 116 kDstIn, 117 kSrcOut, 118 kDstOut, 119 kSrcAtop, 120 kDstAtop, 121 kXor, 122 kMultiply, 123 kScreen, 124 kOverlay, 125 kDarken, 126 kLighten, 127 kColorDodge, 128 kColorBurn, 129 kHardLight, 130 kSoftLight, 131 kDifference, 132 kExclusion, 133 kInvert, 134 kInvertRGB, 135 kLinearDodge, 136 kLinearBurn, 137 kVividLight, 138 kLinearLight, 139 kPinLight, 140 kHardMix, 141 kHslHue, 142 kHslSaturation, 143 kHslColor, 144 kHslLuminosity, 145 kPlus, 146 kPlusClamped, 147 kPlusClampedAlpha, 148 kPlusDarker, 149 kMinus, 150 kMinusClamped, 151 kContrast, 152 kInvertOvg, 153 kRed, 154 kGreen, 155 kBlue, 156 }; 157 158 enum class BlendFactor : uint8_t { 159 kZero = 0, 160 kOne, 161 kSrcColor, 162 kOneMinusSrcColor, 163 kDstColor, 164 kOneMinusDstColor, 165 kSrcAlpha, 166 kOneMinusSrcAlpha, 167 kDstAlpha, 168 kOneMinusDstAlpha, 169 kConstantColor, 170 kOneMinusConstantColor, 171 kConstantAlpha, 172 kOneMinusConstantAlpha, 173 kSrcAlphaSaturate, 174 kSrc1Color, 175 kOneMinusSrc1Color, 176 kSrc1Alpha, 177 kOneMinusSrc1Alpha, 178 }; 179 180 Topology NameToTopology(const std::string& name); 181 182 } // namespace amber 183 184 #endif // SRC_COMMAND_DATA_H_ 185