OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
3 * All rights reserved. | 3 * All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 24 matching lines...) Expand all Loading... |
35 | 35 |
36 #include <algorithm> | 36 #include <algorithm> |
37 #include "command_buffer/common/cross/cmd_buffer_format.h" | 37 #include "command_buffer/common/cross/cmd_buffer_format.h" |
38 #include "command_buffer/service/win/d3d9/gapi_d3d9.h" | 38 #include "command_buffer/service/win/d3d9/gapi_d3d9.h" |
39 | 39 |
40 namespace o3d { | 40 namespace o3d { |
41 namespace command_buffer { | 41 namespace command_buffer { |
42 | 42 |
43 namespace { | 43 namespace { |
44 | 44 |
45 // Checks that a GAPIInterface enum matches a D3D enum so that it can be | 45 // Checks that a command_buffer enum matches a D3D enum so that it can be |
46 // converted quickly. | 46 // converted quickly. |
47 #define CHECK_GAPI_ENUM_MATCHES_D3D(GAPI_ENUM, D3D_ENUM) \ | 47 #define CHECK_CB_ENUM_MATCHES_D3D(CB_ENUM, D3D_ENUM) \ |
48 COMPILE_ASSERT(GAPIInterface::GAPI_ENUM + 1 == D3D_ENUM, \ | 48 COMPILE_ASSERT(command_buffer::CB_ENUM + 1 == D3D_ENUM, \ |
49 GAPI_ENUM ## _plus_1_not_ ## D3D_ENUM) | 49 CB_ENUM ## _plus_1_not_ ## D3D_ENUM) |
50 | 50 |
51 // Converts values from the PolygonMode enum to corresponding D3D values | 51 // Converts values from the PolygonMode enum to corresponding D3D values |
52 inline D3DFILLMODE PolygonModeToD3D(GAPIInterface::PolygonMode fill_mode) { | 52 inline D3DFILLMODE PolygonModeToD3D(command_buffer::PolygonMode fill_mode) { |
53 DCHECK_LT(fill_mode, GAPIInterface::NUM_POLYGON_MODE); | 53 DCHECK_LT(fill_mode, command_buffer::kNumPolygonMode); |
54 | 54 |
55 // Check that all acceptable values translate to D3D values by adding 1. | 55 // Check that all acceptable values translate to D3D values by adding 1. |
56 | 56 |
57 CHECK_GAPI_ENUM_MATCHES_D3D(POLYGON_MODE_POINTS, D3DFILL_POINT); | 57 CHECK_CB_ENUM_MATCHES_D3D(kPolygonModePoints, D3DFILL_POINT); |
58 CHECK_GAPI_ENUM_MATCHES_D3D(POLYGON_MODE_LINES, D3DFILL_WIREFRAME); | 58 CHECK_CB_ENUM_MATCHES_D3D(kPolygonModeLines, D3DFILL_WIREFRAME); |
59 CHECK_GAPI_ENUM_MATCHES_D3D(POLYGON_MODE_FILL, D3DFILL_SOLID); | 59 CHECK_CB_ENUM_MATCHES_D3D(kPolygonModeFill, D3DFILL_SOLID); |
60 return static_cast<D3DFILLMODE>(fill_mode + 1); | 60 return static_cast<D3DFILLMODE>(fill_mode + 1); |
61 } | 61 } |
62 | 62 |
63 // Converts values from the FaceCullMode enum to corresponding D3D values | 63 // Converts values from the FaceCullMode enum to corresponding D3D values |
64 inline D3DCULL FaceCullModeToD3D(GAPIInterface::FaceCullMode cull_mode) { | 64 inline D3DCULL FaceCullModeToD3D(command_buffer::FaceCullMode cull_mode) { |
65 DCHECK_LT(cull_mode, GAPIInterface::NUM_FACE_CULL_MODE); | 65 DCHECK_LT(cull_mode, command_buffer::kNumFaceCullMode); |
66 | 66 |
67 // Check that all acceptable values translate to D3D values by adding 1. | 67 // Check that all acceptable values translate to D3D values by adding 1. |
68 CHECK_GAPI_ENUM_MATCHES_D3D(CULL_NONE, D3DCULL_NONE); | 68 CHECK_CB_ENUM_MATCHES_D3D(kCullNone, D3DCULL_NONE); |
69 CHECK_GAPI_ENUM_MATCHES_D3D(CULL_CW, D3DCULL_CW); | 69 CHECK_CB_ENUM_MATCHES_D3D(kCullCW, D3DCULL_CW); |
70 CHECK_GAPI_ENUM_MATCHES_D3D(CULL_CCW, D3DCULL_CCW); | 70 CHECK_CB_ENUM_MATCHES_D3D(kCullCCW, D3DCULL_CCW); |
71 return static_cast<D3DCULL>(cull_mode + 1); | 71 return static_cast<D3DCULL>(cull_mode + 1); |
72 } | 72 } |
73 | 73 |
74 // Converts values from the Comparison enum to corresponding D3D values | 74 // Converts values from the Comparison enum to corresponding D3D values |
75 inline D3DCMPFUNC ComparisonToD3D(GAPIInterface::Comparison comp) { | 75 inline D3DCMPFUNC ComparisonToD3D(command_buffer::Comparison comp) { |
76 DCHECK_LT(comp, GAPIInterface::NUM_COMPARISON); | 76 DCHECK_LT(comp, command_buffer::kNumComparison); |
77 | 77 |
78 // Check that all acceptable values translate to D3D values by adding 1. | 78 // Check that all acceptable values translate to D3D values by adding 1. |
79 CHECK_GAPI_ENUM_MATCHES_D3D(NEVER, D3DCMP_NEVER); | 79 CHECK_CB_ENUM_MATCHES_D3D(kNever, D3DCMP_NEVER); |
80 CHECK_GAPI_ENUM_MATCHES_D3D(LESS, D3DCMP_LESS); | 80 CHECK_CB_ENUM_MATCHES_D3D(kLess, D3DCMP_LESS); |
81 CHECK_GAPI_ENUM_MATCHES_D3D(EQUAL, D3DCMP_EQUAL); | 81 CHECK_CB_ENUM_MATCHES_D3D(kEqual, D3DCMP_EQUAL); |
82 CHECK_GAPI_ENUM_MATCHES_D3D(LEQUAL, D3DCMP_LESSEQUAL); | 82 CHECK_CB_ENUM_MATCHES_D3D(kLEqual, D3DCMP_LESSEQUAL); |
83 CHECK_GAPI_ENUM_MATCHES_D3D(GREATER, D3DCMP_GREATER); | 83 CHECK_CB_ENUM_MATCHES_D3D(kGreater, D3DCMP_GREATER); |
84 CHECK_GAPI_ENUM_MATCHES_D3D(NOT_EQUAL, D3DCMP_NOTEQUAL); | 84 CHECK_CB_ENUM_MATCHES_D3D(kNotEqual, D3DCMP_NOTEQUAL); |
85 CHECK_GAPI_ENUM_MATCHES_D3D(GEQUAL, D3DCMP_GREATEREQUAL); | 85 CHECK_CB_ENUM_MATCHES_D3D(kGEqual, D3DCMP_GREATEREQUAL); |
86 CHECK_GAPI_ENUM_MATCHES_D3D(ALWAYS, D3DCMP_ALWAYS); | 86 CHECK_CB_ENUM_MATCHES_D3D(kAlways, D3DCMP_ALWAYS); |
87 return static_cast<D3DCMPFUNC>(comp + 1); | 87 return static_cast<D3DCMPFUNC>(comp + 1); |
88 } | 88 } |
89 | 89 |
90 // Converts values from the StencilOp enum to corresponding D3D values | 90 // Converts values from the StencilOp enum to corresponding D3D values |
91 inline D3DSTENCILOP StencilOpToD3D(GAPIInterface::StencilOp stencil_op) { | 91 inline D3DSTENCILOP StencilOpToD3D(command_buffer::StencilOp stencil_op) { |
92 DCHECK_LT(stencil_op, GAPIInterface::NUM_STENCIL_OP); | 92 DCHECK_LT(stencil_op, command_buffer::kNumStencilOp); |
93 | 93 |
94 // Check that all acceptable values translate to D3D values by adding 1. | 94 // Check that all acceptable values translate to D3D values by adding 1. |
95 CHECK_GAPI_ENUM_MATCHES_D3D(KEEP, D3DSTENCILOP_KEEP); | 95 CHECK_CB_ENUM_MATCHES_D3D(kKeep, D3DSTENCILOP_KEEP); |
96 CHECK_GAPI_ENUM_MATCHES_D3D(ZERO, D3DSTENCILOP_ZERO); | 96 CHECK_CB_ENUM_MATCHES_D3D(kZero, D3DSTENCILOP_ZERO); |
97 CHECK_GAPI_ENUM_MATCHES_D3D(REPLACE, D3DSTENCILOP_REPLACE); | 97 CHECK_CB_ENUM_MATCHES_D3D(kReplace, D3DSTENCILOP_REPLACE); |
98 CHECK_GAPI_ENUM_MATCHES_D3D(INC_NO_WRAP, D3DSTENCILOP_INCRSAT); | 98 CHECK_CB_ENUM_MATCHES_D3D(kIncNoWrap, D3DSTENCILOP_INCRSAT); |
99 CHECK_GAPI_ENUM_MATCHES_D3D(DEC_NO_WRAP, D3DSTENCILOP_DECRSAT); | 99 CHECK_CB_ENUM_MATCHES_D3D(kDecNoWrap, D3DSTENCILOP_DECRSAT); |
100 CHECK_GAPI_ENUM_MATCHES_D3D(INVERT, D3DSTENCILOP_INVERT); | 100 CHECK_CB_ENUM_MATCHES_D3D(kInvert, D3DSTENCILOP_INVERT); |
101 CHECK_GAPI_ENUM_MATCHES_D3D(INC_WRAP, D3DSTENCILOP_INCR); | 101 CHECK_CB_ENUM_MATCHES_D3D(kIncWrap, D3DSTENCILOP_INCR); |
102 CHECK_GAPI_ENUM_MATCHES_D3D(DEC_WRAP, D3DSTENCILOP_DECR); | 102 CHECK_CB_ENUM_MATCHES_D3D(kDecWrap, D3DSTENCILOP_DECR); |
103 return static_cast<D3DSTENCILOP>(stencil_op + 1); | 103 return static_cast<D3DSTENCILOP>(stencil_op + 1); |
104 } | 104 } |
105 | 105 |
106 // Converts values from the BlendEq enum to corresponding D3D values | 106 // Converts values from the BlendEq enum to corresponding D3D values |
107 inline D3DBLENDOP BlendEqToD3D(GAPIInterface::BlendEq blend_eq) { | 107 inline D3DBLENDOP BlendEqToD3D(command_buffer::BlendEq blend_eq) { |
108 DCHECK_LT(blend_eq, GAPIInterface::NUM_BLEND_EQ); | 108 DCHECK_LT(blend_eq, command_buffer::kNumBlendEq); |
109 // Check that all acceptable values translate to D3D values by adding 1. | 109 // Check that all acceptable values translate to D3D values by adding 1. |
110 CHECK_GAPI_ENUM_MATCHES_D3D(BLEND_EQ_ADD, D3DBLENDOP_ADD); | 110 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqAdd, D3DBLENDOP_ADD); |
111 CHECK_GAPI_ENUM_MATCHES_D3D(BLEND_EQ_SUB, D3DBLENDOP_SUBTRACT); | 111 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqSub, D3DBLENDOP_SUBTRACT); |
112 CHECK_GAPI_ENUM_MATCHES_D3D(BLEND_EQ_REV_SUB, D3DBLENDOP_REVSUBTRACT); | 112 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqRevSub, D3DBLENDOP_REVSUBTRACT); |
113 CHECK_GAPI_ENUM_MATCHES_D3D(BLEND_EQ_MIN, D3DBLENDOP_MIN); | 113 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqMin, D3DBLENDOP_MIN); |
114 CHECK_GAPI_ENUM_MATCHES_D3D(BLEND_EQ_MAX, D3DBLENDOP_MAX); | 114 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqMax, D3DBLENDOP_MAX); |
115 return static_cast<D3DBLENDOP>(blend_eq + 1); | 115 return static_cast<D3DBLENDOP>(blend_eq + 1); |
116 } | 116 } |
117 | 117 |
118 // Converts values from the BlendFunc enum to corresponding D3D values | 118 // Converts values from the BlendFunc enum to corresponding D3D values |
119 D3DBLEND BlendFuncToD3D(GAPIInterface::BlendFunc blend_func) { | 119 D3DBLEND BlendFuncToD3D(command_buffer::BlendFunc blend_func) { |
120 // The D3DBLEND enum values don't map 1-to-1 to BlendFunc, so we use a switch | 120 // The D3DBLEND enum values don't map 1-to-1 to BlendFunc, so we use a switch |
121 // here. | 121 // here. |
122 switch (blend_func) { | 122 switch (blend_func) { |
123 case GAPIInterface::BLEND_FUNC_ZERO: | 123 case command_buffer::kBlendFuncZero: |
124 return D3DBLEND_ZERO; | 124 return D3DBLEND_ZERO; |
125 case GAPIInterface::BLEND_FUNC_ONE: | 125 case command_buffer::kBlendFuncOne: |
126 return D3DBLEND_ONE; | 126 return D3DBLEND_ONE; |
127 case GAPIInterface::BLEND_FUNC_SRC_COLOR: | 127 case command_buffer::kBlendFuncSrcColor: |
128 return D3DBLEND_SRCCOLOR; | 128 return D3DBLEND_SRCCOLOR; |
129 case GAPIInterface::BLEND_FUNC_INV_SRC_COLOR: | 129 case command_buffer::kBlendFuncInvSrcColor: |
130 return D3DBLEND_INVSRCCOLOR; | 130 return D3DBLEND_INVSRCCOLOR; |
131 case GAPIInterface::BLEND_FUNC_SRC_ALPHA: | 131 case command_buffer::kBlendFuncSrcAlpha: |
132 return D3DBLEND_SRCALPHA; | 132 return D3DBLEND_SRCALPHA; |
133 case GAPIInterface::BLEND_FUNC_INV_SRC_ALPHA: | 133 case command_buffer::kBlendFuncInvSrcAlpha: |
134 return D3DBLEND_INVSRCALPHA; | 134 return D3DBLEND_INVSRCALPHA; |
135 case GAPIInterface::BLEND_FUNC_DST_ALPHA: | 135 case command_buffer::kBlendFuncDstAlpha: |
136 return D3DBLEND_DESTALPHA; | 136 return D3DBLEND_DESTALPHA; |
137 case GAPIInterface::BLEND_FUNC_INV_DST_ALPHA: | 137 case command_buffer::kBlendFuncInvDstAlpha: |
138 return D3DBLEND_INVDESTALPHA; | 138 return D3DBLEND_INVDESTALPHA; |
139 case GAPIInterface::BLEND_FUNC_DST_COLOR: | 139 case command_buffer::kBlendFuncDstColor: |
140 return D3DBLEND_DESTCOLOR; | 140 return D3DBLEND_DESTCOLOR; |
141 case GAPIInterface::BLEND_FUNC_INV_DST_COLOR: | 141 case command_buffer::kBlendFuncInvDstColor: |
142 return D3DBLEND_INVDESTCOLOR; | 142 return D3DBLEND_INVDESTCOLOR; |
143 case GAPIInterface::BLEND_FUNC_SRC_ALPHA_SATUTRATE: | 143 case command_buffer::kBlendFuncSrcAlphaSaturate: |
144 return D3DBLEND_SRCALPHASAT; | 144 return D3DBLEND_SRCALPHASAT; |
145 case GAPIInterface::BLEND_FUNC_BLEND_COLOR: | 145 case command_buffer::kBlendFuncBlendColor: |
146 return D3DBLEND_BLENDFACTOR; | 146 return D3DBLEND_BLENDFACTOR; |
147 case GAPIInterface::BLEND_FUNC_INV_BLEND_COLOR: | 147 case command_buffer::kBlendFuncInvBlendColor: |
148 return D3DBLEND_INVBLENDFACTOR; | 148 return D3DBLEND_INVBLENDFACTOR; |
149 default: | 149 default: |
150 DLOG(FATAL) << "Invalid BlendFunc"; | 150 DLOG(FATAL) << "Invalid BlendFunc"; |
151 return D3DBLEND_ZERO; | 151 return D3DBLEND_ZERO; |
152 } | 152 } |
153 } | 153 } |
154 | 154 |
155 // Decodes stencil test function and operations from the bitfield. | 155 // Decodes stencil test function and operations from the bitfield. |
156 void DecodeStencilFuncOps(Uint32 params, | 156 void DecodeStencilFuncOps(Uint32 params, |
157 GAPIInterface::Comparison *func, | 157 command_buffer::Comparison *func, |
158 GAPIInterface::StencilOp *pass, | 158 command_buffer::StencilOp *pass, |
159 GAPIInterface::StencilOp *fail, | 159 command_buffer::StencilOp *fail, |
160 GAPIInterface::StencilOp *zfail) { | 160 command_buffer::StencilOp *zfail) { |
161 namespace cmd = set_stencil_test; | |
162 // Sanity check. The value has already been tested in | 161 // Sanity check. The value has already been tested in |
163 // GAPIDecoder::DecodeSetStencilTest in gapi_decoder.cc. | 162 // GAPIDecoder::DecodeSetStencilTest in gapi_decoder.cc. |
164 DCHECK_EQ(cmd::Unused1::Get(params), 0); | 163 DCHECK_EQ(cmd::SetStencilTest::Unused1::Get(params), 0); |
165 // Check that the bitmask get cannot generate values outside of the allowed | 164 // Check that the bitmask get cannot generate values outside of the allowed |
166 // range. | 165 // range. |
167 COMPILE_ASSERT(cmd::CWFunc::kMask < GAPIInterface::NUM_COMPARISON, | 166 COMPILE_ASSERT(cmd::SetStencilTest::CWFunc::kMask < |
| 167 command_buffer::kNumComparison, |
168 set_stencil_test_CWFunc_may_produce_invalid_values); | 168 set_stencil_test_CWFunc_may_produce_invalid_values); |
169 *func = static_cast<GAPIInterface::Comparison>(cmd::CWFunc::Get(params)); | 169 *func = static_cast<command_buffer::Comparison>( |
| 170 cmd::SetStencilTest::CWFunc::Get(params)); |
170 | 171 |
171 COMPILE_ASSERT(cmd::CWPassOp::kMask < GAPIInterface::NUM_STENCIL_OP, | 172 COMPILE_ASSERT(cmd::SetStencilTest::CWPassOp::kMask < |
| 173 command_buffer::kNumStencilOp, |
172 set_stencil_test_CWPassOp_may_produce_invalid_values); | 174 set_stencil_test_CWPassOp_may_produce_invalid_values); |
173 *pass = static_cast<GAPIInterface::StencilOp>(cmd::CWPassOp::Get(params)); | 175 *pass = static_cast<command_buffer::StencilOp>( |
| 176 cmd::SetStencilTest::CWPassOp::Get(params)); |
174 | 177 |
175 COMPILE_ASSERT(cmd::CWFailOp::kMask < GAPIInterface::NUM_STENCIL_OP, | 178 COMPILE_ASSERT(cmd::SetStencilTest::CWFailOp::kMask < |
| 179 command_buffer::kNumStencilOp, |
176 set_stencil_test_CWFailOp_may_produce_invalid_values); | 180 set_stencil_test_CWFailOp_may_produce_invalid_values); |
177 *fail = static_cast<GAPIInterface::StencilOp>(cmd::CWFailOp::Get(params)); | 181 *fail = static_cast<command_buffer::StencilOp>( |
| 182 cmd::SetStencilTest::CWFailOp::Get(params)); |
178 | 183 |
179 COMPILE_ASSERT(cmd::CWZFailOp::kMask < GAPIInterface::NUM_STENCIL_OP, | 184 COMPILE_ASSERT(cmd::SetStencilTest::CWZFailOp::kMask < |
| 185 command_buffer::kNumStencilOp, |
180 set_stencil_test_CWZFailOp_may_produce_invalid_values); | 186 set_stencil_test_CWZFailOp_may_produce_invalid_values); |
181 *zfail = static_cast<GAPIInterface::StencilOp>(cmd::CWZFailOp::Get(params)); | 187 *zfail = static_cast<command_buffer::StencilOp>( |
| 188 cmd::SetStencilTest::CWZFailOp::Get(params)); |
182 } | 189 } |
183 | 190 |
184 } // anonymous namespace | 191 } // anonymous namespace |
185 | 192 |
186 void GAPID3D9::SetScissor(bool enable, | 193 void GAPID3D9::SetScissor(bool enable, |
187 unsigned int x, | 194 unsigned int x, |
188 unsigned int y, | 195 unsigned int y, |
189 unsigned int width, | 196 unsigned int width, |
190 unsigned int height) { | 197 unsigned int height) { |
191 HR(d3d_device_->SetRenderState(D3DRS_SCISSORTESTENABLE, | 198 HR(d3d_device_->SetRenderState(D3DRS_SCISSORTESTENABLE, |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 StencilOpToD3D(fail))); | 273 StencilOpToD3D(fail))); |
267 HR(d3d_device_->SetRenderState(D3DRS_STENCILZFAIL, | 274 HR(d3d_device_->SetRenderState(D3DRS_STENCILZFAIL, |
268 StencilOpToD3D(zfail))); | 275 StencilOpToD3D(zfail))); |
269 | 276 |
270 if (separate_ccw) { | 277 if (separate_ccw) { |
271 HR(d3d_device_->SetRenderState(D3DRS_TWOSIDEDSTENCILMODE, TRUE)); | 278 HR(d3d_device_->SetRenderState(D3DRS_TWOSIDEDSTENCILMODE, TRUE)); |
272 // Check that the definition of the counter-clockwise func/ops match the | 279 // Check that the definition of the counter-clockwise func/ops match the |
273 // clockwise ones, just shifted by 16 bits, so that we can use | 280 // clockwise ones, just shifted by 16 bits, so that we can use |
274 // DecodeStencilFuncOps on both of them. | 281 // DecodeStencilFuncOps on both of them. |
275 #define CHECK_CCW_MATCHES_CW(FIELD) \ | 282 #define CHECK_CCW_MATCHES_CW(FIELD) \ |
276 COMPILE_ASSERT(set_stencil_test::CW ## FIELD::kLength == \ | 283 COMPILE_ASSERT(cmd::SetStencilTest::CW ## FIELD::kLength == \ |
277 set_stencil_test::CCW ## FIELD::kLength, \ | 284 cmd::SetStencilTest::CCW ## FIELD::kLength, \ |
278 CCW ## FIELD ## _length_does_not_match_ ## CW ## FIELD); \ | 285 CCW ## FIELD ## _length_does_not_match_ ## CW ## FIELD); \ |
279 COMPILE_ASSERT(set_stencil_test::CW ## FIELD::kShift + 16 == \ | 286 COMPILE_ASSERT(cmd::SetStencilTest::CW ## FIELD::kShift + 16 == \ |
280 set_stencil_test::CCW ## FIELD::kShift, \ | 287 cmd::SetStencilTest::CCW ## FIELD::kShift, \ |
281 CCW ## FIELD ## _shift_does_not_match_ ## CW ## FIELD) | 288 CCW ## FIELD ## _shift_does_not_match_ ## CW ## FIELD) |
282 CHECK_CCW_MATCHES_CW(Func); | 289 CHECK_CCW_MATCHES_CW(Func); |
283 CHECK_CCW_MATCHES_CW(PassOp); | 290 CHECK_CCW_MATCHES_CW(PassOp); |
284 CHECK_CCW_MATCHES_CW(FailOp); | 291 CHECK_CCW_MATCHES_CW(FailOp); |
285 CHECK_CCW_MATCHES_CW(ZFailOp); | 292 CHECK_CCW_MATCHES_CW(ZFailOp); |
286 #undef CHECK_CCW_MATCHES_CW | 293 #undef CHECK_CCW_MATCHES_CW |
287 // Extract upper 16 bits. | 294 // Extract upper 16 bits. |
288 Uint32 ccw_func_ops = BitField<16, 16>::Get(func_ops); | 295 Uint32 ccw_func_ops = BitField<16, 16>::Get(func_ops); |
289 | 296 |
290 DecodeStencilFuncOps(ccw_func_ops, &func, &pass, &fail, &zfail); | 297 DecodeStencilFuncOps(ccw_func_ops, &func, &pass, &fail, &zfail); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 HR(d3d_device_->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, FALSE)); | 347 HR(d3d_device_->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, FALSE)); |
341 } | 348 } |
342 } | 349 } |
343 | 350 |
344 void GAPID3D9::SetBlendingColor(const RGBA &color) { | 351 void GAPID3D9::SetBlendingColor(const RGBA &color) { |
345 HR(d3d_device_->SetRenderState(D3DRS_BLENDFACTOR, RGBAToD3DCOLOR(color))); | 352 HR(d3d_device_->SetRenderState(D3DRS_BLENDFACTOR, RGBAToD3DCOLOR(color))); |
346 } | 353 } |
347 | 354 |
348 } // namespace command_buffer | 355 } // namespace command_buffer |
349 } // namespace o3d | 356 } // namespace o3d |
OLD | NEW |