• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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