Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(348)

Side by Side Diff: command_buffer/service/win/d3d9/states_d3d9.cc

Issue 332036: move all O3D specific command buffer stuff to command_buffer::o3d... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 16 matching lines...) Expand all
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32 32
33 // This file contains the implementation of the state-related GAPID3D9 33 // This file contains the implementation of the state-related GAPID3D9
34 // functions. 34 // functions.
35 35
36 #include <algorithm> 36 #include <algorithm>
37 #include "command_buffer/common/cross/cmd_buffer_format.h" 37 #include "command_buffer/common/cross/o3d_cmd_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 namespace o3d {
42 43
43 namespace { 44 namespace {
44 45
45 // Checks that a command_buffer enum matches a D3D enum so that it can be 46 // Checks that a command_buffer enum matches a D3D enum so that it can be
46 // converted quickly. 47 // converted quickly.
47 #define CHECK_CB_ENUM_MATCHES_D3D(CB_ENUM, D3D_ENUM) \ 48 #define CHECK_CB_ENUM_MATCHES_D3D(CB_ENUM, D3D_ENUM) \
48 COMPILE_ASSERT(command_buffer::CB_ENUM + 1 == D3D_ENUM, \ 49 COMPILE_ASSERT(CB_ENUM + 1 == D3D_ENUM, \
49 CB_ENUM ## _plus_1_not_ ## D3D_ENUM) 50 CB_ENUM ## _plus_1_not_ ## D3D_ENUM)
50 51
51 // Converts values from the PolygonMode enum to corresponding D3D values 52 // Converts values from the PolygonMode enum to corresponding D3D values
52 inline D3DFILLMODE PolygonModeToD3D(command_buffer::PolygonMode fill_mode) { 53 inline D3DFILLMODE PolygonModeToD3D(PolygonMode fill_mode) {
53 DCHECK_LT(fill_mode, command_buffer::kNumPolygonMode); 54 DCHECK_LT(fill_mode, kNumPolygonMode);
54 55
55 // Check that all acceptable values translate to D3D values by adding 1. 56 // Check that all acceptable values translate to D3D values by adding 1.
56 57
57 CHECK_CB_ENUM_MATCHES_D3D(kPolygonModePoints, D3DFILL_POINT); 58 CHECK_CB_ENUM_MATCHES_D3D(kPolygonModePoints, D3DFILL_POINT);
58 CHECK_CB_ENUM_MATCHES_D3D(kPolygonModeLines, D3DFILL_WIREFRAME); 59 CHECK_CB_ENUM_MATCHES_D3D(kPolygonModeLines, D3DFILL_WIREFRAME);
59 CHECK_CB_ENUM_MATCHES_D3D(kPolygonModeFill, D3DFILL_SOLID); 60 CHECK_CB_ENUM_MATCHES_D3D(kPolygonModeFill, D3DFILL_SOLID);
60 return static_cast<D3DFILLMODE>(fill_mode + 1); 61 return static_cast<D3DFILLMODE>(fill_mode + 1);
61 } 62 }
62 63
63 // Converts values from the FaceCullMode enum to corresponding D3D values 64 // Converts values from the FaceCullMode enum to corresponding D3D values
64 inline D3DCULL FaceCullModeToD3D(command_buffer::FaceCullMode cull_mode) { 65 inline D3DCULL FaceCullModeToD3D(FaceCullMode cull_mode) {
65 DCHECK_LT(cull_mode, command_buffer::kNumFaceCullMode); 66 DCHECK_LT(cull_mode, kNumFaceCullMode);
66 67
67 // Check that all acceptable values translate to D3D values by adding 1. 68 // Check that all acceptable values translate to D3D values by adding 1.
68 CHECK_CB_ENUM_MATCHES_D3D(kCullNone, D3DCULL_NONE); 69 CHECK_CB_ENUM_MATCHES_D3D(kCullNone, D3DCULL_NONE);
69 CHECK_CB_ENUM_MATCHES_D3D(kCullCW, D3DCULL_CW); 70 CHECK_CB_ENUM_MATCHES_D3D(kCullCW, D3DCULL_CW);
70 CHECK_CB_ENUM_MATCHES_D3D(kCullCCW, D3DCULL_CCW); 71 CHECK_CB_ENUM_MATCHES_D3D(kCullCCW, D3DCULL_CCW);
71 return static_cast<D3DCULL>(cull_mode + 1); 72 return static_cast<D3DCULL>(cull_mode + 1);
72 } 73 }
73 74
74 // Converts values from the Comparison enum to corresponding D3D values 75 // Converts values from the Comparison enum to corresponding D3D values
75 inline D3DCMPFUNC ComparisonToD3D(command_buffer::Comparison comp) { 76 inline D3DCMPFUNC ComparisonToD3D(Comparison comp) {
76 DCHECK_LT(comp, command_buffer::kNumComparison); 77 DCHECK_LT(comp, kNumComparison);
77 78
78 // Check that all acceptable values translate to D3D values by adding 1. 79 // Check that all acceptable values translate to D3D values by adding 1.
79 CHECK_CB_ENUM_MATCHES_D3D(kNever, D3DCMP_NEVER); 80 CHECK_CB_ENUM_MATCHES_D3D(kNever, D3DCMP_NEVER);
80 CHECK_CB_ENUM_MATCHES_D3D(kLess, D3DCMP_LESS); 81 CHECK_CB_ENUM_MATCHES_D3D(kLess, D3DCMP_LESS);
81 CHECK_CB_ENUM_MATCHES_D3D(kEqual, D3DCMP_EQUAL); 82 CHECK_CB_ENUM_MATCHES_D3D(kEqual, D3DCMP_EQUAL);
82 CHECK_CB_ENUM_MATCHES_D3D(kLEqual, D3DCMP_LESSEQUAL); 83 CHECK_CB_ENUM_MATCHES_D3D(kLEqual, D3DCMP_LESSEQUAL);
83 CHECK_CB_ENUM_MATCHES_D3D(kGreater, D3DCMP_GREATER); 84 CHECK_CB_ENUM_MATCHES_D3D(kGreater, D3DCMP_GREATER);
84 CHECK_CB_ENUM_MATCHES_D3D(kNotEqual, D3DCMP_NOTEQUAL); 85 CHECK_CB_ENUM_MATCHES_D3D(kNotEqual, D3DCMP_NOTEQUAL);
85 CHECK_CB_ENUM_MATCHES_D3D(kGEqual, D3DCMP_GREATEREQUAL); 86 CHECK_CB_ENUM_MATCHES_D3D(kGEqual, D3DCMP_GREATEREQUAL);
86 CHECK_CB_ENUM_MATCHES_D3D(kAlways, D3DCMP_ALWAYS); 87 CHECK_CB_ENUM_MATCHES_D3D(kAlways, D3DCMP_ALWAYS);
87 return static_cast<D3DCMPFUNC>(comp + 1); 88 return static_cast<D3DCMPFUNC>(comp + 1);
88 } 89 }
89 90
90 // Converts values from the StencilOp enum to corresponding D3D values 91 // Converts values from the StencilOp enum to corresponding D3D values
91 inline D3DSTENCILOP StencilOpToD3D(command_buffer::StencilOp stencil_op) { 92 inline D3DSTENCILOP StencilOpToD3D(StencilOp stencil_op) {
92 DCHECK_LT(stencil_op, command_buffer::kNumStencilOp); 93 DCHECK_LT(stencil_op, kNumStencilOp);
93 94
94 // Check that all acceptable values translate to D3D values by adding 1. 95 // Check that all acceptable values translate to D3D values by adding 1.
95 CHECK_CB_ENUM_MATCHES_D3D(kKeep, D3DSTENCILOP_KEEP); 96 CHECK_CB_ENUM_MATCHES_D3D(kKeep, D3DSTENCILOP_KEEP);
96 CHECK_CB_ENUM_MATCHES_D3D(kZero, D3DSTENCILOP_ZERO); 97 CHECK_CB_ENUM_MATCHES_D3D(kZero, D3DSTENCILOP_ZERO);
97 CHECK_CB_ENUM_MATCHES_D3D(kReplace, D3DSTENCILOP_REPLACE); 98 CHECK_CB_ENUM_MATCHES_D3D(kReplace, D3DSTENCILOP_REPLACE);
98 CHECK_CB_ENUM_MATCHES_D3D(kIncNoWrap, D3DSTENCILOP_INCRSAT); 99 CHECK_CB_ENUM_MATCHES_D3D(kIncNoWrap, D3DSTENCILOP_INCRSAT);
99 CHECK_CB_ENUM_MATCHES_D3D(kDecNoWrap, D3DSTENCILOP_DECRSAT); 100 CHECK_CB_ENUM_MATCHES_D3D(kDecNoWrap, D3DSTENCILOP_DECRSAT);
100 CHECK_CB_ENUM_MATCHES_D3D(kInvert, D3DSTENCILOP_INVERT); 101 CHECK_CB_ENUM_MATCHES_D3D(kInvert, D3DSTENCILOP_INVERT);
101 CHECK_CB_ENUM_MATCHES_D3D(kIncWrap, D3DSTENCILOP_INCR); 102 CHECK_CB_ENUM_MATCHES_D3D(kIncWrap, D3DSTENCILOP_INCR);
102 CHECK_CB_ENUM_MATCHES_D3D(kDecWrap, D3DSTENCILOP_DECR); 103 CHECK_CB_ENUM_MATCHES_D3D(kDecWrap, D3DSTENCILOP_DECR);
103 return static_cast<D3DSTENCILOP>(stencil_op + 1); 104 return static_cast<D3DSTENCILOP>(stencil_op + 1);
104 } 105 }
105 106
106 // Converts values from the BlendEq enum to corresponding D3D values 107 // Converts values from the BlendEq enum to corresponding D3D values
107 inline D3DBLENDOP BlendEqToD3D(command_buffer::BlendEq blend_eq) { 108 inline D3DBLENDOP BlendEqToD3D(BlendEq blend_eq) {
108 DCHECK_LT(blend_eq, command_buffer::kNumBlendEq); 109 DCHECK_LT(blend_eq, kNumBlendEq);
109 // Check that all acceptable values translate to D3D values by adding 1. 110 // Check that all acceptable values translate to D3D values by adding 1.
110 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqAdd, D3DBLENDOP_ADD); 111 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqAdd, D3DBLENDOP_ADD);
111 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqSub, D3DBLENDOP_SUBTRACT); 112 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqSub, D3DBLENDOP_SUBTRACT);
112 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqRevSub, D3DBLENDOP_REVSUBTRACT); 113 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqRevSub, D3DBLENDOP_REVSUBTRACT);
113 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqMin, D3DBLENDOP_MIN); 114 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqMin, D3DBLENDOP_MIN);
114 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqMax, D3DBLENDOP_MAX); 115 CHECK_CB_ENUM_MATCHES_D3D(kBlendEqMax, D3DBLENDOP_MAX);
115 return static_cast<D3DBLENDOP>(blend_eq + 1); 116 return static_cast<D3DBLENDOP>(blend_eq + 1);
116 } 117 }
117 118
118 // Converts values from the BlendFunc enum to corresponding D3D values 119 // Converts values from the BlendFunc enum to corresponding D3D values
119 D3DBLEND BlendFuncToD3D(command_buffer::BlendFunc blend_func) { 120 D3DBLEND BlendFuncToD3D(BlendFunc blend_func) {
120 // The D3DBLEND enum values don't map 1-to-1 to BlendFunc, so we use a switch 121 // The D3DBLEND enum values don't map 1-to-1 to BlendFunc, so we use a switch
121 // here. 122 // here.
122 switch (blend_func) { 123 switch (blend_func) {
123 case command_buffer::kBlendFuncZero: 124 case kBlendFuncZero:
124 return D3DBLEND_ZERO; 125 return D3DBLEND_ZERO;
125 case command_buffer::kBlendFuncOne: 126 case kBlendFuncOne:
126 return D3DBLEND_ONE; 127 return D3DBLEND_ONE;
127 case command_buffer::kBlendFuncSrcColor: 128 case kBlendFuncSrcColor:
128 return D3DBLEND_SRCCOLOR; 129 return D3DBLEND_SRCCOLOR;
129 case command_buffer::kBlendFuncInvSrcColor: 130 case kBlendFuncInvSrcColor:
130 return D3DBLEND_INVSRCCOLOR; 131 return D3DBLEND_INVSRCCOLOR;
131 case command_buffer::kBlendFuncSrcAlpha: 132 case kBlendFuncSrcAlpha:
132 return D3DBLEND_SRCALPHA; 133 return D3DBLEND_SRCALPHA;
133 case command_buffer::kBlendFuncInvSrcAlpha: 134 case kBlendFuncInvSrcAlpha:
134 return D3DBLEND_INVSRCALPHA; 135 return D3DBLEND_INVSRCALPHA;
135 case command_buffer::kBlendFuncDstAlpha: 136 case kBlendFuncDstAlpha:
136 return D3DBLEND_DESTALPHA; 137 return D3DBLEND_DESTALPHA;
137 case command_buffer::kBlendFuncInvDstAlpha: 138 case kBlendFuncInvDstAlpha:
138 return D3DBLEND_INVDESTALPHA; 139 return D3DBLEND_INVDESTALPHA;
139 case command_buffer::kBlendFuncDstColor: 140 case kBlendFuncDstColor:
140 return D3DBLEND_DESTCOLOR; 141 return D3DBLEND_DESTCOLOR;
141 case command_buffer::kBlendFuncInvDstColor: 142 case kBlendFuncInvDstColor:
142 return D3DBLEND_INVDESTCOLOR; 143 return D3DBLEND_INVDESTCOLOR;
143 case command_buffer::kBlendFuncSrcAlphaSaturate: 144 case kBlendFuncSrcAlphaSaturate:
144 return D3DBLEND_SRCALPHASAT; 145 return D3DBLEND_SRCALPHASAT;
145 case command_buffer::kBlendFuncBlendColor: 146 case kBlendFuncBlendColor:
146 return D3DBLEND_BLENDFACTOR; 147 return D3DBLEND_BLENDFACTOR;
147 case command_buffer::kBlendFuncInvBlendColor: 148 case kBlendFuncInvBlendColor:
148 return D3DBLEND_INVBLENDFACTOR; 149 return D3DBLEND_INVBLENDFACTOR;
149 default: 150 default:
150 DLOG(FATAL) << "Invalid BlendFunc"; 151 DLOG(FATAL) << "Invalid BlendFunc";
151 return D3DBLEND_ZERO; 152 return D3DBLEND_ZERO;
152 } 153 }
153 } 154 }
154 155
155 // Decodes stencil test function and operations from the bitfield. 156 // Decodes stencil test function and operations from the bitfield.
156 void DecodeStencilFuncOps(Uint32 params, 157 void DecodeStencilFuncOps(Uint32 params,
157 command_buffer::Comparison *func, 158 Comparison *func,
158 command_buffer::StencilOp *pass, 159 StencilOp *pass,
159 command_buffer::StencilOp *fail, 160 StencilOp *fail,
160 command_buffer::StencilOp *zfail) { 161 StencilOp *zfail) {
161 // Sanity check. The value has already been tested in 162 // Sanity check. The value has already been tested in
162 // GAPIDecoder::DecodeSetStencilTest in gapi_decoder.cc. 163 // GAPIDecoder::DecodeSetStencilTest in gapi_decoder.cc.
163 DCHECK_EQ(cmd::SetStencilTest::Unused1::Get(params), 0); 164 DCHECK_EQ(SetStencilTest::Unused1::Get(params), 0);
164 // Check that the bitmask get cannot generate values outside of the allowed 165 // Check that the bitmask get cannot generate values outside of the allowed
165 // range. 166 // range.
166 COMPILE_ASSERT(cmd::SetStencilTest::CWFunc::kMask < 167 COMPILE_ASSERT(SetStencilTest::CWFunc::kMask <
167 command_buffer::kNumComparison, 168 kNumComparison,
168 set_stencil_test_CWFunc_may_produce_invalid_values); 169 set_stencil_test_CWFunc_may_produce_invalid_values);
169 *func = static_cast<command_buffer::Comparison>( 170 *func = static_cast<Comparison>(SetStencilTest::CWFunc::Get(params));
170 cmd::SetStencilTest::CWFunc::Get(params));
171 171
172 COMPILE_ASSERT(cmd::SetStencilTest::CWPassOp::kMask < 172 COMPILE_ASSERT(SetStencilTest::CWPassOp::kMask <
173 command_buffer::kNumStencilOp, 173 kNumStencilOp,
174 set_stencil_test_CWPassOp_may_produce_invalid_values); 174 set_stencil_test_CWPassOp_may_produce_invalid_values);
175 *pass = static_cast<command_buffer::StencilOp>( 175 *pass = static_cast<StencilOp>(SetStencilTest::CWPassOp::Get(params));
176 cmd::SetStencilTest::CWPassOp::Get(params));
177 176
178 COMPILE_ASSERT(cmd::SetStencilTest::CWFailOp::kMask < 177 COMPILE_ASSERT(SetStencilTest::CWFailOp::kMask <
179 command_buffer::kNumStencilOp, 178 kNumStencilOp,
180 set_stencil_test_CWFailOp_may_produce_invalid_values); 179 set_stencil_test_CWFailOp_may_produce_invalid_values);
181 *fail = static_cast<command_buffer::StencilOp>( 180 *fail = static_cast<StencilOp>(SetStencilTest::CWFailOp::Get(params));
182 cmd::SetStencilTest::CWFailOp::Get(params));
183 181
184 COMPILE_ASSERT(cmd::SetStencilTest::CWZFailOp::kMask < 182 COMPILE_ASSERT(SetStencilTest::CWZFailOp::kMask <
185 command_buffer::kNumStencilOp, 183 kNumStencilOp,
186 set_stencil_test_CWZFailOp_may_produce_invalid_values); 184 set_stencil_test_CWZFailOp_may_produce_invalid_values);
187 *zfail = static_cast<command_buffer::StencilOp>( 185 *zfail = static_cast<StencilOp>(SetStencilTest::CWZFailOp::Get(params));
188 cmd::SetStencilTest::CWZFailOp::Get(params));
189 } 186 }
190 187
191 } // anonymous namespace 188 } // anonymous namespace
192 189
193 void GAPID3D9::SetScissor(bool enable, 190 void GAPID3D9::SetScissor(bool enable,
194 unsigned int x, 191 unsigned int x,
195 unsigned int y, 192 unsigned int y,
196 unsigned int width, 193 unsigned int width,
197 unsigned int height) { 194 unsigned int height) {
198 HR(d3d_device_->SetRenderState(D3DRS_SCISSORTESTENABLE, 195 HR(d3d_device_->SetRenderState(D3DRS_SCISSORTESTENABLE,
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 StencilOpToD3D(fail))); 270 StencilOpToD3D(fail)));
274 HR(d3d_device_->SetRenderState(D3DRS_STENCILZFAIL, 271 HR(d3d_device_->SetRenderState(D3DRS_STENCILZFAIL,
275 StencilOpToD3D(zfail))); 272 StencilOpToD3D(zfail)));
276 273
277 if (separate_ccw) { 274 if (separate_ccw) {
278 HR(d3d_device_->SetRenderState(D3DRS_TWOSIDEDSTENCILMODE, TRUE)); 275 HR(d3d_device_->SetRenderState(D3DRS_TWOSIDEDSTENCILMODE, TRUE));
279 // Check that the definition of the counter-clockwise func/ops match the 276 // Check that the definition of the counter-clockwise func/ops match the
280 // clockwise ones, just shifted by 16 bits, so that we can use 277 // clockwise ones, just shifted by 16 bits, so that we can use
281 // DecodeStencilFuncOps on both of them. 278 // DecodeStencilFuncOps on both of them.
282 #define CHECK_CCW_MATCHES_CW(FIELD) \ 279 #define CHECK_CCW_MATCHES_CW(FIELD) \
283 COMPILE_ASSERT(cmd::SetStencilTest::CW ## FIELD::kLength == \ 280 COMPILE_ASSERT(SetStencilTest::CW ## FIELD::kLength == \
284 cmd::SetStencilTest::CCW ## FIELD::kLength, \ 281 SetStencilTest::CCW ## FIELD::kLength, \
285 CCW ## FIELD ## _length_does_not_match_ ## CW ## FIELD); \ 282 CCW ## FIELD ## _length_does_not_match_ ## CW ## FIELD); \
286 COMPILE_ASSERT(cmd::SetStencilTest::CW ## FIELD::kShift + 16 == \ 283 COMPILE_ASSERT(SetStencilTest::CW ## FIELD::kShift + 16 == \
287 cmd::SetStencilTest::CCW ## FIELD::kShift, \ 284 SetStencilTest::CCW ## FIELD::kShift, \
288 CCW ## FIELD ## _shift_does_not_match_ ## CW ## FIELD) 285 CCW ## FIELD ## _shift_does_not_match_ ## CW ## FIELD)
289 CHECK_CCW_MATCHES_CW(Func); 286 CHECK_CCW_MATCHES_CW(Func);
290 CHECK_CCW_MATCHES_CW(PassOp); 287 CHECK_CCW_MATCHES_CW(PassOp);
291 CHECK_CCW_MATCHES_CW(FailOp); 288 CHECK_CCW_MATCHES_CW(FailOp);
292 CHECK_CCW_MATCHES_CW(ZFailOp); 289 CHECK_CCW_MATCHES_CW(ZFailOp);
293 #undef CHECK_CCW_MATCHES_CW 290 #undef CHECK_CCW_MATCHES_CW
294 // Extract upper 16 bits. 291 // Extract upper 16 bits.
295 Uint32 ccw_func_ops = BitField<16, 16>::Get(func_ops); 292 Uint32 ccw_func_ops = BitField<16, 16>::Get(func_ops);
296 293
297 DecodeStencilFuncOps(ccw_func_ops, &func, &pass, &fail, &zfail); 294 DecodeStencilFuncOps(ccw_func_ops, &func, &pass, &fail, &zfail);
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 BlendFuncToD3D(alpha_dst_func))); 342 BlendFuncToD3D(alpha_dst_func)));
346 } else { 343 } else {
347 HR(d3d_device_->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, FALSE)); 344 HR(d3d_device_->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, FALSE));
348 } 345 }
349 } 346 }
350 347
351 void GAPID3D9::SetBlendingColor(const RGBA &color) { 348 void GAPID3D9::SetBlendingColor(const RGBA &color) {
352 HR(d3d_device_->SetRenderState(D3DRS_BLENDFACTOR, RGBAToD3DCOLOR(color))); 349 HR(d3d_device_->SetRenderState(D3DRS_BLENDFACTOR, RGBAToD3DCOLOR(color)));
353 } 350 }
354 351
352 } // namespace o3d
355 } // namespace command_buffer 353 } // namespace command_buffer
356 } // namespace o3d 354 } // namespace o3d
OLDNEW
« no previous file with comments | « command_buffer/service/win/d3d9/sampler_d3d9.cc ('k') | command_buffer/service/win/d3d9/texture_d3d9.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698