xref: /aosp_15_r20/external/mesa3d/src/gallium/frontends/d3d10umd/Rasterizer.cpp (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /**************************************************************************
2*61046927SAndroid Build Coastguard Worker  *
3*61046927SAndroid Build Coastguard Worker  * Copyright 2012-2021 VMware, Inc.
4*61046927SAndroid Build Coastguard Worker  * All Rights Reserved.
5*61046927SAndroid Build Coastguard Worker  *
6*61046927SAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a
7*61046927SAndroid Build Coastguard Worker  * copy of this software and associated documentation files (the
8*61046927SAndroid Build Coastguard Worker  * "Software"), to deal in the Software without restriction, including
9*61046927SAndroid Build Coastguard Worker  * without limitation the rights to use, copy, modify, merge, publish,
10*61046927SAndroid Build Coastguard Worker  * distribute, sub license, and/or sell copies of the Software, and to
11*61046927SAndroid Build Coastguard Worker  * permit persons to whom the Software is furnished to do so, subject to
12*61046927SAndroid Build Coastguard Worker  * the following conditions:
13*61046927SAndroid Build Coastguard Worker  *
14*61046927SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15*61046927SAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16*61046927SAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
17*61046927SAndroid Build Coastguard Worker  * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
18*61046927SAndroid Build Coastguard Worker  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19*61046927SAndroid Build Coastguard Worker  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20*61046927SAndroid Build Coastguard Worker  * USE OR OTHER DEALINGS IN THE SOFTWARE.
21*61046927SAndroid Build Coastguard Worker  *
22*61046927SAndroid Build Coastguard Worker  * The above copyright notice and this permission notice (including the
23*61046927SAndroid Build Coastguard Worker  * next paragraph) shall be included in all copies or substantial portions
24*61046927SAndroid Build Coastguard Worker  * of the Software.
25*61046927SAndroid Build Coastguard Worker  *
26*61046927SAndroid Build Coastguard Worker  **************************************************************************/
27*61046927SAndroid Build Coastguard Worker 
28*61046927SAndroid Build Coastguard Worker /*
29*61046927SAndroid Build Coastguard Worker  * Rasterizer.cpp --
30*61046927SAndroid Build Coastguard Worker  *    Functions that manipulate rasterizer state.
31*61046927SAndroid Build Coastguard Worker  */
32*61046927SAndroid Build Coastguard Worker 
33*61046927SAndroid Build Coastguard Worker 
34*61046927SAndroid Build Coastguard Worker #include "Rasterizer.h"
35*61046927SAndroid Build Coastguard Worker #include "State.h"
36*61046927SAndroid Build Coastguard Worker 
37*61046927SAndroid Build Coastguard Worker #include "Debug.h"
38*61046927SAndroid Build Coastguard Worker 
39*61046927SAndroid Build Coastguard Worker 
40*61046927SAndroid Build Coastguard Worker /*
41*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
42*61046927SAndroid Build Coastguard Worker  *
43*61046927SAndroid Build Coastguard Worker  * SetViewports --
44*61046927SAndroid Build Coastguard Worker  *
45*61046927SAndroid Build Coastguard Worker  *    The SetViewports function sets viewports.
46*61046927SAndroid Build Coastguard Worker  *
47*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
48*61046927SAndroid Build Coastguard Worker  */
49*61046927SAndroid Build Coastguard Worker 
50*61046927SAndroid Build Coastguard Worker void APIENTRY
SetViewports(D3D10DDI_HDEVICE hDevice,UINT NumViewports,UINT ClearViewports,__in_ecount (NumViewports)const D3D10_DDI_VIEWPORT * pViewports)51*61046927SAndroid Build Coastguard Worker SetViewports(D3D10DDI_HDEVICE hDevice,                                        // IN
52*61046927SAndroid Build Coastguard Worker              UINT NumViewports,                                               // IN
53*61046927SAndroid Build Coastguard Worker              UINT ClearViewports,                                             // IN
54*61046927SAndroid Build Coastguard Worker              __in_ecount (NumViewports) const D3D10_DDI_VIEWPORT *pViewports) // IN
55*61046927SAndroid Build Coastguard Worker {
56*61046927SAndroid Build Coastguard Worker    LOG_ENTRYPOINT();
57*61046927SAndroid Build Coastguard Worker 
58*61046927SAndroid Build Coastguard Worker    struct pipe_context *pipe = CastPipeContext(hDevice);
59*61046927SAndroid Build Coastguard Worker    struct pipe_viewport_state states[PIPE_MAX_VIEWPORTS];
60*61046927SAndroid Build Coastguard Worker 
61*61046927SAndroid Build Coastguard Worker    ASSERT(NumViewports + ClearViewports <=
62*61046927SAndroid Build Coastguard Worker           D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE);
63*61046927SAndroid Build Coastguard Worker 
64*61046927SAndroid Build Coastguard Worker    for (UINT i = 0; i < NumViewports; ++i) {
65*61046927SAndroid Build Coastguard Worker       const D3D10_DDI_VIEWPORT *pViewport = &pViewports[i];
66*61046927SAndroid Build Coastguard Worker       float width = pViewport->Width;
67*61046927SAndroid Build Coastguard Worker       float height = pViewport->Height;
68*61046927SAndroid Build Coastguard Worker       float x = pViewport->TopLeftX;
69*61046927SAndroid Build Coastguard Worker       float y = pViewport->TopLeftY;
70*61046927SAndroid Build Coastguard Worker       float z = pViewport->MinDepth;
71*61046927SAndroid Build Coastguard Worker       float half_width = width / 2.0f;
72*61046927SAndroid Build Coastguard Worker       float half_height = height / 2.0f;
73*61046927SAndroid Build Coastguard Worker       float depth = pViewport->MaxDepth - z;
74*61046927SAndroid Build Coastguard Worker 
75*61046927SAndroid Build Coastguard Worker       states[i].scale[0] = half_width;
76*61046927SAndroid Build Coastguard Worker       states[i].scale[1] = -half_height;
77*61046927SAndroid Build Coastguard Worker       states[i].scale[2] = depth;
78*61046927SAndroid Build Coastguard Worker 
79*61046927SAndroid Build Coastguard Worker       states[i].translate[0] = half_width + x;
80*61046927SAndroid Build Coastguard Worker       states[i].translate[1] = half_height + y;
81*61046927SAndroid Build Coastguard Worker       states[i].translate[2] = z;
82*61046927SAndroid Build Coastguard Worker    }
83*61046927SAndroid Build Coastguard Worker    if (ClearViewports) {
84*61046927SAndroid Build Coastguard Worker       memset(states + NumViewports, 0,
85*61046927SAndroid Build Coastguard Worker              sizeof(struct pipe_viewport_state) * ClearViewports);
86*61046927SAndroid Build Coastguard Worker    }
87*61046927SAndroid Build Coastguard Worker    pipe->set_viewport_states(pipe, 0, NumViewports + ClearViewports,
88*61046927SAndroid Build Coastguard Worker                              states);
89*61046927SAndroid Build Coastguard Worker }
90*61046927SAndroid Build Coastguard Worker 
91*61046927SAndroid Build Coastguard Worker 
92*61046927SAndroid Build Coastguard Worker /*
93*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
94*61046927SAndroid Build Coastguard Worker  *
95*61046927SAndroid Build Coastguard Worker  * SetScissorRects --
96*61046927SAndroid Build Coastguard Worker  *
97*61046927SAndroid Build Coastguard Worker  *    The SetScissorRects function marks portions of render targets
98*61046927SAndroid Build Coastguard Worker  *    that rendering is confined to.
99*61046927SAndroid Build Coastguard Worker  *
100*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
101*61046927SAndroid Build Coastguard Worker  */
102*61046927SAndroid Build Coastguard Worker 
103*61046927SAndroid Build Coastguard Worker void APIENTRY
SetScissorRects(D3D10DDI_HDEVICE hDevice,UINT NumScissorRects,UINT ClearScissorRects,__in_ecount (NumRects)const D3D10_DDI_RECT * pRects)104*61046927SAndroid Build Coastguard Worker SetScissorRects(D3D10DDI_HDEVICE hDevice,                            // IN
105*61046927SAndroid Build Coastguard Worker                 UINT NumScissorRects,                                // IN
106*61046927SAndroid Build Coastguard Worker                 UINT ClearScissorRects,                              // IN
107*61046927SAndroid Build Coastguard Worker                 __in_ecount (NumRects) const D3D10_DDI_RECT *pRects) // IN
108*61046927SAndroid Build Coastguard Worker {
109*61046927SAndroid Build Coastguard Worker    LOG_ENTRYPOINT();
110*61046927SAndroid Build Coastguard Worker 
111*61046927SAndroid Build Coastguard Worker    struct pipe_context *pipe = CastPipeContext(hDevice);
112*61046927SAndroid Build Coastguard Worker    struct pipe_scissor_state states[PIPE_MAX_VIEWPORTS];
113*61046927SAndroid Build Coastguard Worker 
114*61046927SAndroid Build Coastguard Worker    ASSERT(NumScissorRects + ClearScissorRects <=
115*61046927SAndroid Build Coastguard Worker           D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE);
116*61046927SAndroid Build Coastguard Worker 
117*61046927SAndroid Build Coastguard Worker    for (UINT i = 0; i < NumScissorRects; ++i) {
118*61046927SAndroid Build Coastguard Worker       const D3D10_DDI_RECT *pRect = &pRects[i];
119*61046927SAndroid Build Coastguard Worker       /* gallium scissor values are unsigned so lets make
120*61046927SAndroid Build Coastguard Worker       * sure that we don't overflow */
121*61046927SAndroid Build Coastguard Worker       states[i].minx = pRect->left   < 0 ? 0 : pRect->left;
122*61046927SAndroid Build Coastguard Worker       states[i].miny = pRect->top    < 0 ? 0 : pRect->top;
123*61046927SAndroid Build Coastguard Worker       states[i].maxx = pRect->right  < 0 ? 0 : pRect->right;
124*61046927SAndroid Build Coastguard Worker       states[i].maxy = pRect->bottom < 0 ? 0 : pRect->bottom;
125*61046927SAndroid Build Coastguard Worker    }
126*61046927SAndroid Build Coastguard Worker    if (ClearScissorRects) {
127*61046927SAndroid Build Coastguard Worker       memset(states + NumScissorRects, 0,
128*61046927SAndroid Build Coastguard Worker              sizeof(struct pipe_scissor_state) * ClearScissorRects);
129*61046927SAndroid Build Coastguard Worker    }
130*61046927SAndroid Build Coastguard Worker    pipe->set_scissor_states(pipe, 0, NumScissorRects + ClearScissorRects,
131*61046927SAndroid Build Coastguard Worker                             states);
132*61046927SAndroid Build Coastguard Worker }
133*61046927SAndroid Build Coastguard Worker 
134*61046927SAndroid Build Coastguard Worker 
135*61046927SAndroid Build Coastguard Worker /*
136*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
137*61046927SAndroid Build Coastguard Worker  *
138*61046927SAndroid Build Coastguard Worker  * CalcPrivateRasterizerStateSize --
139*61046927SAndroid Build Coastguard Worker  *
140*61046927SAndroid Build Coastguard Worker  *    The CalcPrivateRasterizerStateSize function determines the size
141*61046927SAndroid Build Coastguard Worker  *    of the user-mode display driver's private region of memory
142*61046927SAndroid Build Coastguard Worker  *    (that is, the size of internal driver structures, not the size
143*61046927SAndroid Build Coastguard Worker  *    of the resource video memory) for a rasterizer state.
144*61046927SAndroid Build Coastguard Worker  *
145*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
146*61046927SAndroid Build Coastguard Worker  */
147*61046927SAndroid Build Coastguard Worker 
148*61046927SAndroid Build Coastguard Worker SIZE_T APIENTRY
CalcPrivateRasterizerStateSize(D3D10DDI_HDEVICE hDevice,__in const D3D10_DDI_RASTERIZER_DESC * pRasterizerDesc)149*61046927SAndroid Build Coastguard Worker CalcPrivateRasterizerStateSize(
150*61046927SAndroid Build Coastguard Worker    D3D10DDI_HDEVICE hDevice,                                // IN
151*61046927SAndroid Build Coastguard Worker    __in const D3D10_DDI_RASTERIZER_DESC *pRasterizerDesc)   // IN
152*61046927SAndroid Build Coastguard Worker {
153*61046927SAndroid Build Coastguard Worker    return sizeof(RasterizerState);
154*61046927SAndroid Build Coastguard Worker }
155*61046927SAndroid Build Coastguard Worker 
156*61046927SAndroid Build Coastguard Worker 
157*61046927SAndroid Build Coastguard Worker static uint
translate_cull_mode(D3D10_DDI_CULL_MODE CullMode)158*61046927SAndroid Build Coastguard Worker translate_cull_mode(D3D10_DDI_CULL_MODE CullMode)
159*61046927SAndroid Build Coastguard Worker {
160*61046927SAndroid Build Coastguard Worker    switch (CullMode) {
161*61046927SAndroid Build Coastguard Worker    case D3D10_DDI_CULL_NONE:
162*61046927SAndroid Build Coastguard Worker       return PIPE_FACE_NONE;
163*61046927SAndroid Build Coastguard Worker    case D3D10_DDI_CULL_FRONT:
164*61046927SAndroid Build Coastguard Worker       return PIPE_FACE_FRONT;
165*61046927SAndroid Build Coastguard Worker    case D3D10_DDI_CULL_BACK:
166*61046927SAndroid Build Coastguard Worker       return PIPE_FACE_BACK;
167*61046927SAndroid Build Coastguard Worker    default:
168*61046927SAndroid Build Coastguard Worker       assert(0);
169*61046927SAndroid Build Coastguard Worker       return PIPE_FACE_NONE;
170*61046927SAndroid Build Coastguard Worker    }
171*61046927SAndroid Build Coastguard Worker }
172*61046927SAndroid Build Coastguard Worker 
173*61046927SAndroid Build Coastguard Worker static uint
translate_fill_mode(D3D10_DDI_FILL_MODE FillMode)174*61046927SAndroid Build Coastguard Worker translate_fill_mode(D3D10_DDI_FILL_MODE FillMode)
175*61046927SAndroid Build Coastguard Worker {
176*61046927SAndroid Build Coastguard Worker    switch (FillMode) {
177*61046927SAndroid Build Coastguard Worker    case D3D10_DDI_FILL_WIREFRAME:
178*61046927SAndroid Build Coastguard Worker       return PIPE_POLYGON_MODE_LINE;
179*61046927SAndroid Build Coastguard Worker    case D3D10_DDI_FILL_SOLID:
180*61046927SAndroid Build Coastguard Worker       return PIPE_POLYGON_MODE_FILL;
181*61046927SAndroid Build Coastguard Worker    default:
182*61046927SAndroid Build Coastguard Worker       assert(0);
183*61046927SAndroid Build Coastguard Worker       return PIPE_POLYGON_MODE_FILL;
184*61046927SAndroid Build Coastguard Worker    }
185*61046927SAndroid Build Coastguard Worker }
186*61046927SAndroid Build Coastguard Worker 
187*61046927SAndroid Build Coastguard Worker 
188*61046927SAndroid Build Coastguard Worker /*
189*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
190*61046927SAndroid Build Coastguard Worker  *
191*61046927SAndroid Build Coastguard Worker  * CreateRasterizerState --
192*61046927SAndroid Build Coastguard Worker  *
193*61046927SAndroid Build Coastguard Worker  *    The CreateRasterizerState function creates a rasterizer state.
194*61046927SAndroid Build Coastguard Worker  *
195*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
196*61046927SAndroid Build Coastguard Worker  */
197*61046927SAndroid Build Coastguard Worker 
198*61046927SAndroid Build Coastguard Worker void APIENTRY
CreateRasterizerState(D3D10DDI_HDEVICE hDevice,__in const D3D10_DDI_RASTERIZER_DESC * pRasterizerDesc,D3D10DDI_HRASTERIZERSTATE hRasterizerState,D3D10DDI_HRTRASTERIZERSTATE hRTRasterizerState)199*61046927SAndroid Build Coastguard Worker CreateRasterizerState(
200*61046927SAndroid Build Coastguard Worker     D3D10DDI_HDEVICE hDevice,                               // IN
201*61046927SAndroid Build Coastguard Worker     __in const D3D10_DDI_RASTERIZER_DESC *pRasterizerDesc,  // IN
202*61046927SAndroid Build Coastguard Worker     D3D10DDI_HRASTERIZERSTATE hRasterizerState,             // IN
203*61046927SAndroid Build Coastguard Worker     D3D10DDI_HRTRASTERIZERSTATE hRTRasterizerState)         // IN
204*61046927SAndroid Build Coastguard Worker {
205*61046927SAndroid Build Coastguard Worker    LOG_ENTRYPOINT();
206*61046927SAndroid Build Coastguard Worker 
207*61046927SAndroid Build Coastguard Worker    struct pipe_context *pipe = CastPipeContext(hDevice);
208*61046927SAndroid Build Coastguard Worker    RasterizerState *pRasterizerState = CastRasterizerState(hRasterizerState);
209*61046927SAndroid Build Coastguard Worker 
210*61046927SAndroid Build Coastguard Worker    struct pipe_rasterizer_state state;
211*61046927SAndroid Build Coastguard Worker    memset(&state, 0, sizeof state);
212*61046927SAndroid Build Coastguard Worker 
213*61046927SAndroid Build Coastguard Worker    state.flatshade_first = 1;
214*61046927SAndroid Build Coastguard Worker    state.front_ccw = (pRasterizerDesc->FrontCounterClockwise ? 1 : 0);
215*61046927SAndroid Build Coastguard Worker    state.cull_face = translate_cull_mode(pRasterizerDesc->CullMode);
216*61046927SAndroid Build Coastguard Worker    state.fill_front = translate_fill_mode(pRasterizerDesc->FillMode);
217*61046927SAndroid Build Coastguard Worker    state.fill_back = state.fill_front;
218*61046927SAndroid Build Coastguard Worker    state.scissor = (pRasterizerDesc->ScissorEnable ? 1 : 0);
219*61046927SAndroid Build Coastguard Worker    state.line_smooth = (pRasterizerDesc->AntialiasedLineEnable ? 1 : 0);
220*61046927SAndroid Build Coastguard Worker    state.offset_units = (float)pRasterizerDesc->DepthBias;
221*61046927SAndroid Build Coastguard Worker    state.offset_scale = pRasterizerDesc->SlopeScaledDepthBias;
222*61046927SAndroid Build Coastguard Worker    state.offset_clamp = pRasterizerDesc->DepthBiasClamp;
223*61046927SAndroid Build Coastguard Worker    state.multisample = /* pRasterizerDesc->MultisampleEnable */ 0;
224*61046927SAndroid Build Coastguard Worker    state.half_pixel_center = 1;
225*61046927SAndroid Build Coastguard Worker    state.bottom_edge_rule = 0;
226*61046927SAndroid Build Coastguard Worker    state.clip_halfz = 1;
227*61046927SAndroid Build Coastguard Worker    state.depth_clip_near = pRasterizerDesc->DepthClipEnable ? 1 : 0;
228*61046927SAndroid Build Coastguard Worker    state.depth_clip_far = pRasterizerDesc->DepthClipEnable ? 1 : 0;
229*61046927SAndroid Build Coastguard Worker    state.depth_clamp = 1;
230*61046927SAndroid Build Coastguard Worker 
231*61046927SAndroid Build Coastguard Worker    state.point_quad_rasterization = 1;
232*61046927SAndroid Build Coastguard Worker    state.point_size = 1.0f;
233*61046927SAndroid Build Coastguard Worker    state.point_line_tri_clip = 1;
234*61046927SAndroid Build Coastguard Worker 
235*61046927SAndroid Build Coastguard Worker    state.line_width = 1.0f;
236*61046927SAndroid Build Coastguard Worker    state.line_rectangular = 0;
237*61046927SAndroid Build Coastguard Worker 
238*61046927SAndroid Build Coastguard Worker    pRasterizerState->handle = pipe->create_rasterizer_state(pipe, &state);
239*61046927SAndroid Build Coastguard Worker }
240*61046927SAndroid Build Coastguard Worker 
241*61046927SAndroid Build Coastguard Worker 
242*61046927SAndroid Build Coastguard Worker /*
243*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
244*61046927SAndroid Build Coastguard Worker  *
245*61046927SAndroid Build Coastguard Worker  * DestroyRasterizerState --
246*61046927SAndroid Build Coastguard Worker  *
247*61046927SAndroid Build Coastguard Worker  *    The DestroyRasterizerState function destroys the specified
248*61046927SAndroid Build Coastguard Worker  *    rasterizer state object. The rasterizer state object can be
249*61046927SAndroid Build Coastguard Worker  *    destoyed only if it is not currently bound to a display device.
250*61046927SAndroid Build Coastguard Worker  *
251*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
252*61046927SAndroid Build Coastguard Worker  */
253*61046927SAndroid Build Coastguard Worker 
254*61046927SAndroid Build Coastguard Worker void APIENTRY
DestroyRasterizerState(D3D10DDI_HDEVICE hDevice,D3D10DDI_HRASTERIZERSTATE hRasterizerState)255*61046927SAndroid Build Coastguard Worker DestroyRasterizerState(D3D10DDI_HDEVICE hDevice,                     // IN
256*61046927SAndroid Build Coastguard Worker                        D3D10DDI_HRASTERIZERSTATE hRasterizerState)   // IN
257*61046927SAndroid Build Coastguard Worker {
258*61046927SAndroid Build Coastguard Worker    LOG_ENTRYPOINT();
259*61046927SAndroid Build Coastguard Worker 
260*61046927SAndroid Build Coastguard Worker    struct pipe_context *pipe = CastPipeContext(hDevice);
261*61046927SAndroid Build Coastguard Worker    RasterizerState *pRasterizerState = CastRasterizerState(hRasterizerState);
262*61046927SAndroid Build Coastguard Worker 
263*61046927SAndroid Build Coastguard Worker    pipe->delete_rasterizer_state(pipe, pRasterizerState->handle);
264*61046927SAndroid Build Coastguard Worker }
265*61046927SAndroid Build Coastguard Worker 
266*61046927SAndroid Build Coastguard Worker 
267*61046927SAndroid Build Coastguard Worker /*
268*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
269*61046927SAndroid Build Coastguard Worker  *
270*61046927SAndroid Build Coastguard Worker  * SetRasterizerState --
271*61046927SAndroid Build Coastguard Worker  *
272*61046927SAndroid Build Coastguard Worker  *    The SetRasterizerState function sets the rasterizer state.
273*61046927SAndroid Build Coastguard Worker  *
274*61046927SAndroid Build Coastguard Worker  * ----------------------------------------------------------------------
275*61046927SAndroid Build Coastguard Worker  */
276*61046927SAndroid Build Coastguard Worker 
277*61046927SAndroid Build Coastguard Worker void APIENTRY
SetRasterizerState(D3D10DDI_HDEVICE hDevice,D3D10DDI_HRASTERIZERSTATE hRasterizerState)278*61046927SAndroid Build Coastguard Worker SetRasterizerState(D3D10DDI_HDEVICE hDevice,                   // IN
279*61046927SAndroid Build Coastguard Worker                    D3D10DDI_HRASTERIZERSTATE hRasterizerState) // IN
280*61046927SAndroid Build Coastguard Worker {
281*61046927SAndroid Build Coastguard Worker    LOG_ENTRYPOINT();
282*61046927SAndroid Build Coastguard Worker 
283*61046927SAndroid Build Coastguard Worker    struct pipe_context *pipe = CastPipeContext(hDevice);
284*61046927SAndroid Build Coastguard Worker    void *state = CastPipeRasterizerState(hRasterizerState);
285*61046927SAndroid Build Coastguard Worker 
286*61046927SAndroid Build Coastguard Worker    pipe->bind_rasterizer_state(pipe, state);
287*61046927SAndroid Build Coastguard Worker }
288