xref: /aosp_15_r20/external/mesa3d/src/gallium/frontends/nine/device9ex.c (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker /*
2*61046927SAndroid Build Coastguard Worker  * Copyright 2011 Joakim Sindholt <[email protected]>
3*61046927SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
4*61046927SAndroid Build Coastguard Worker  */
5*61046927SAndroid Build Coastguard Worker 
6*61046927SAndroid Build Coastguard Worker #include "device9.h"
7*61046927SAndroid Build Coastguard Worker #include "device9ex.h"
8*61046927SAndroid Build Coastguard Worker #include "nine_pipe.h"
9*61046927SAndroid Build Coastguard Worker #include "swapchain9ex.h"
10*61046927SAndroid Build Coastguard Worker 
11*61046927SAndroid Build Coastguard Worker #include "nine_helpers.h"
12*61046927SAndroid Build Coastguard Worker 
13*61046927SAndroid Build Coastguard Worker #include "util/macros.h"
14*61046927SAndroid Build Coastguard Worker 
15*61046927SAndroid Build Coastguard Worker #define DBG_CHANNEL DBG_DEVICE
16*61046927SAndroid Build Coastguard Worker 
17*61046927SAndroid Build Coastguard Worker static HRESULT
NineDevice9Ex_ctor(struct NineDevice9Ex * This,struct NineUnknownParams * pParams,struct pipe_screen * pScreen,D3DDEVICE_CREATION_PARAMETERS * pCreationParameters,D3DCAPS9 * pCaps,D3DPRESENT_PARAMETERS * pPresentationParameters,D3DDISPLAYMODEEX * pFullscreenDisplayMode,IDirect3D9Ex * pD3D9Ex,ID3DPresentGroup * pPresentationGroup,struct d3dadapter9_context * pCTX,int minorVersionNum)18*61046927SAndroid Build Coastguard Worker NineDevice9Ex_ctor( struct NineDevice9Ex *This,
19*61046927SAndroid Build Coastguard Worker                     struct NineUnknownParams *pParams,
20*61046927SAndroid Build Coastguard Worker                     struct pipe_screen *pScreen,
21*61046927SAndroid Build Coastguard Worker                     D3DDEVICE_CREATION_PARAMETERS *pCreationParameters,
22*61046927SAndroid Build Coastguard Worker                     D3DCAPS9 *pCaps,
23*61046927SAndroid Build Coastguard Worker                     D3DPRESENT_PARAMETERS *pPresentationParameters,
24*61046927SAndroid Build Coastguard Worker                     D3DDISPLAYMODEEX *pFullscreenDisplayMode,
25*61046927SAndroid Build Coastguard Worker                     IDirect3D9Ex *pD3D9Ex,
26*61046927SAndroid Build Coastguard Worker                     ID3DPresentGroup *pPresentationGroup,
27*61046927SAndroid Build Coastguard Worker                     struct d3dadapter9_context *pCTX,
28*61046927SAndroid Build Coastguard Worker                     int minorVersionNum )
29*61046927SAndroid Build Coastguard Worker {
30*61046927SAndroid Build Coastguard Worker     DBG("This=%p pParams=%p pScreen=%p pCreationParameters=%p pCaps=%p "
31*61046927SAndroid Build Coastguard Worker         "pPresentationParameters=%p pFullscreenDisplayMode=%p "
32*61046927SAndroid Build Coastguard Worker         "pD3D9Ex=%p pPresentationGroup=%p pCTX=%p\n",
33*61046927SAndroid Build Coastguard Worker         This, pParams, pScreen, pCreationParameters, pCaps,
34*61046927SAndroid Build Coastguard Worker         pPresentationParameters, pFullscreenDisplayMode,
35*61046927SAndroid Build Coastguard Worker         pD3D9Ex, pPresentationGroup, pCTX);
36*61046927SAndroid Build Coastguard Worker 
37*61046927SAndroid Build Coastguard Worker     return NineDevice9_ctor(&This->base, pParams,
38*61046927SAndroid Build Coastguard Worker                             pScreen, pCreationParameters, pCaps,
39*61046927SAndroid Build Coastguard Worker                             pPresentationParameters,
40*61046927SAndroid Build Coastguard Worker                             (IDirect3D9 *)pD3D9Ex, pPresentationGroup, pCTX,
41*61046927SAndroid Build Coastguard Worker                             true, pFullscreenDisplayMode, minorVersionNum);
42*61046927SAndroid Build Coastguard Worker }
43*61046927SAndroid Build Coastguard Worker 
44*61046927SAndroid Build Coastguard Worker static void
NineDevice9Ex_dtor(struct NineDevice9Ex * This)45*61046927SAndroid Build Coastguard Worker NineDevice9Ex_dtor( struct NineDevice9Ex *This )
46*61046927SAndroid Build Coastguard Worker {
47*61046927SAndroid Build Coastguard Worker     NineDevice9_dtor(&This->base);
48*61046927SAndroid Build Coastguard Worker }
49*61046927SAndroid Build Coastguard Worker 
50*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_SetConvolutionMonoKernel(UNUSED struct NineDevice9Ex * This,UNUSED UINT width,UNUSED UINT height,UNUSED float * rows,UNUSED float * columns)51*61046927SAndroid Build Coastguard Worker NineDevice9Ex_SetConvolutionMonoKernel( UNUSED struct NineDevice9Ex *This,
52*61046927SAndroid Build Coastguard Worker                                         UNUSED UINT width,
53*61046927SAndroid Build Coastguard Worker                                         UNUSED UINT height,
54*61046927SAndroid Build Coastguard Worker                                         UNUSED float *rows,
55*61046927SAndroid Build Coastguard Worker                                         UNUSED float *columns )
56*61046927SAndroid Build Coastguard Worker {
57*61046927SAndroid Build Coastguard Worker     DBG("This\n");
58*61046927SAndroid Build Coastguard Worker     STUB(D3D_OK);
59*61046927SAndroid Build Coastguard Worker }
60*61046927SAndroid Build Coastguard Worker 
61*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_ComposeRects(UNUSED struct NineDevice9Ex * This,UNUSED IDirect3DSurface9 * pSrc,UNUSED IDirect3DSurface9 * pDst,UNUSED IDirect3DVertexBuffer9 * pSrcRectDescs,UNUSED UINT NumRects,UNUSED IDirect3DVertexBuffer9 * pDstRectDescs,UNUSED D3DCOMPOSERECTSOP Operation,UNUSED int Xoffset,UNUSED int Yoffset)62*61046927SAndroid Build Coastguard Worker NineDevice9Ex_ComposeRects( UNUSED struct NineDevice9Ex *This,
63*61046927SAndroid Build Coastguard Worker                             UNUSED IDirect3DSurface9 *pSrc,
64*61046927SAndroid Build Coastguard Worker                             UNUSED IDirect3DSurface9 *pDst,
65*61046927SAndroid Build Coastguard Worker                             UNUSED IDirect3DVertexBuffer9 *pSrcRectDescs,
66*61046927SAndroid Build Coastguard Worker                             UNUSED UINT NumRects,
67*61046927SAndroid Build Coastguard Worker                             UNUSED IDirect3DVertexBuffer9 *pDstRectDescs,
68*61046927SAndroid Build Coastguard Worker                             UNUSED D3DCOMPOSERECTSOP Operation,
69*61046927SAndroid Build Coastguard Worker                             UNUSED int Xoffset,
70*61046927SAndroid Build Coastguard Worker                             UNUSED int Yoffset )
71*61046927SAndroid Build Coastguard Worker {
72*61046927SAndroid Build Coastguard Worker     DBG("This\n");
73*61046927SAndroid Build Coastguard Worker     STUB(D3D_OK);
74*61046927SAndroid Build Coastguard Worker }
75*61046927SAndroid Build Coastguard Worker 
76*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_PresentEx(struct NineDevice9Ex * This,const RECT * pSourceRect,const RECT * pDestRect,HWND hDestWindowOverride,const RGNDATA * pDirtyRegion,DWORD dwFlags)77*61046927SAndroid Build Coastguard Worker NineDevice9Ex_PresentEx( struct NineDevice9Ex *This,
78*61046927SAndroid Build Coastguard Worker                          const RECT *pSourceRect,
79*61046927SAndroid Build Coastguard Worker                          const RECT *pDestRect,
80*61046927SAndroid Build Coastguard Worker                          HWND hDestWindowOverride,
81*61046927SAndroid Build Coastguard Worker                          const RGNDATA *pDirtyRegion,
82*61046927SAndroid Build Coastguard Worker                          DWORD dwFlags )
83*61046927SAndroid Build Coastguard Worker {
84*61046927SAndroid Build Coastguard Worker     unsigned i;
85*61046927SAndroid Build Coastguard Worker     HRESULT hr;
86*61046927SAndroid Build Coastguard Worker 
87*61046927SAndroid Build Coastguard Worker     DBG("This=%p pSourceRect=%p pDestRect=%p hDestWindowOverride=%p "
88*61046927SAndroid Build Coastguard Worker         "pDirtyRegion=%p dwFlags=%d\n",
89*61046927SAndroid Build Coastguard Worker         This, pSourceRect, pDestRect, hDestWindowOverride,
90*61046927SAndroid Build Coastguard Worker         pDirtyRegion, dwFlags);
91*61046927SAndroid Build Coastguard Worker 
92*61046927SAndroid Build Coastguard Worker     for (i = 0; i < This->base.nswapchains; i++) {
93*61046927SAndroid Build Coastguard Worker         hr = NineSwapChain9_Present(This->base.swapchains[i], pSourceRect, pDestRect,
94*61046927SAndroid Build Coastguard Worker                                     hDestWindowOverride, pDirtyRegion, dwFlags);
95*61046927SAndroid Build Coastguard Worker         if (FAILED(hr)) { return hr; }
96*61046927SAndroid Build Coastguard Worker     }
97*61046927SAndroid Build Coastguard Worker 
98*61046927SAndroid Build Coastguard Worker     return D3D_OK;
99*61046927SAndroid Build Coastguard Worker }
100*61046927SAndroid Build Coastguard Worker 
101*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_GetGPUThreadPriority(struct NineDevice9Ex * This,INT * pPriority)102*61046927SAndroid Build Coastguard Worker NineDevice9Ex_GetGPUThreadPriority( struct NineDevice9Ex *This,
103*61046927SAndroid Build Coastguard Worker                                     INT *pPriority )
104*61046927SAndroid Build Coastguard Worker {
105*61046927SAndroid Build Coastguard Worker     DBG("This\n");
106*61046927SAndroid Build Coastguard Worker     user_assert(pPriority != NULL, D3DERR_INVALIDCALL);
107*61046927SAndroid Build Coastguard Worker     *pPriority = This->base.gpu_priority;
108*61046927SAndroid Build Coastguard Worker     return D3D_OK;
109*61046927SAndroid Build Coastguard Worker }
110*61046927SAndroid Build Coastguard Worker 
111*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_SetGPUThreadPriority(struct NineDevice9Ex * This,INT Priority)112*61046927SAndroid Build Coastguard Worker NineDevice9Ex_SetGPUThreadPriority( struct NineDevice9Ex *This,
113*61046927SAndroid Build Coastguard Worker                                     INT Priority )
114*61046927SAndroid Build Coastguard Worker {
115*61046927SAndroid Build Coastguard Worker     DBG("This\n");
116*61046927SAndroid Build Coastguard Worker     user_assert(Priority >= -7 && Priority <= 7, D3DERR_INVALIDCALL);
117*61046927SAndroid Build Coastguard Worker     This->base.gpu_priority = Priority;
118*61046927SAndroid Build Coastguard Worker     return D3D_OK;
119*61046927SAndroid Build Coastguard Worker }
120*61046927SAndroid Build Coastguard Worker 
121*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_WaitForVBlank(UNUSED struct NineDevice9Ex * This,UNUSED UINT iSwapChain)122*61046927SAndroid Build Coastguard Worker NineDevice9Ex_WaitForVBlank( UNUSED struct NineDevice9Ex *This,
123*61046927SAndroid Build Coastguard Worker                              UNUSED UINT iSwapChain )
124*61046927SAndroid Build Coastguard Worker {
125*61046927SAndroid Build Coastguard Worker     DBG("This\n");
126*61046927SAndroid Build Coastguard Worker     STUB(D3D_OK);
127*61046927SAndroid Build Coastguard Worker }
128*61046927SAndroid Build Coastguard Worker 
129*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_CheckResourceResidency(UNUSED struct NineDevice9Ex * This,UNUSED IDirect3DResource9 ** pResourceArray,UNUSED UINT32 NumResources)130*61046927SAndroid Build Coastguard Worker NineDevice9Ex_CheckResourceResidency( UNUSED struct NineDevice9Ex *This,
131*61046927SAndroid Build Coastguard Worker                                       UNUSED IDirect3DResource9 **pResourceArray,
132*61046927SAndroid Build Coastguard Worker                                       UNUSED UINT32 NumResources )
133*61046927SAndroid Build Coastguard Worker {
134*61046927SAndroid Build Coastguard Worker     DBG("This\n");
135*61046927SAndroid Build Coastguard Worker     STUB(D3D_OK);
136*61046927SAndroid Build Coastguard Worker }
137*61046927SAndroid Build Coastguard Worker 
138*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_SetMaximumFrameLatency(struct NineDevice9Ex * This,UINT MaxLatency)139*61046927SAndroid Build Coastguard Worker NineDevice9Ex_SetMaximumFrameLatency( struct NineDevice9Ex *This,
140*61046927SAndroid Build Coastguard Worker                                       UINT MaxLatency )
141*61046927SAndroid Build Coastguard Worker {
142*61046927SAndroid Build Coastguard Worker     DBG("This\n");
143*61046927SAndroid Build Coastguard Worker     This->base.max_frame_latency = MaxLatency;
144*61046927SAndroid Build Coastguard Worker     return D3D_OK;
145*61046927SAndroid Build Coastguard Worker }
146*61046927SAndroid Build Coastguard Worker 
147*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_GetMaximumFrameLatency(struct NineDevice9Ex * This,UINT * pMaxLatency)148*61046927SAndroid Build Coastguard Worker NineDevice9Ex_GetMaximumFrameLatency( struct NineDevice9Ex *This,
149*61046927SAndroid Build Coastguard Worker                                       UINT *pMaxLatency )
150*61046927SAndroid Build Coastguard Worker {
151*61046927SAndroid Build Coastguard Worker     DBG("This\n");
152*61046927SAndroid Build Coastguard Worker     user_assert(pMaxLatency != NULL, D3DERR_INVALIDCALL);
153*61046927SAndroid Build Coastguard Worker     *pMaxLatency = This->base.max_frame_latency;
154*61046927SAndroid Build Coastguard Worker     return D3D_OK;
155*61046927SAndroid Build Coastguard Worker }
156*61046927SAndroid Build Coastguard Worker 
157*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_CheckDeviceState(struct NineDevice9Ex * This,HWND hDestinationWindow)158*61046927SAndroid Build Coastguard Worker NineDevice9Ex_CheckDeviceState( struct NineDevice9Ex *This,
159*61046927SAndroid Build Coastguard Worker                                 HWND hDestinationWindow )
160*61046927SAndroid Build Coastguard Worker {
161*61046927SAndroid Build Coastguard Worker     DBG("This=%p hDestinationWindow=%p\n",
162*61046927SAndroid Build Coastguard Worker         This, hDestinationWindow);
163*61046927SAndroid Build Coastguard Worker 
164*61046927SAndroid Build Coastguard Worker     user_assert(!This->base.swapchains[0]->params.Windowed, D3D_OK);
165*61046927SAndroid Build Coastguard Worker 
166*61046927SAndroid Build Coastguard Worker     if (This->base.params.hFocusWindow == hDestinationWindow) {
167*61046927SAndroid Build Coastguard Worker         if (NineSwapChain9_GetOccluded(This->base.swapchains[0]))
168*61046927SAndroid Build Coastguard Worker             return S_PRESENT_OCCLUDED;
169*61046927SAndroid Build Coastguard Worker     } else if(!NineSwapChain9_GetOccluded(This->base.swapchains[0])) {
170*61046927SAndroid Build Coastguard Worker         return S_PRESENT_OCCLUDED;
171*61046927SAndroid Build Coastguard Worker     }
172*61046927SAndroid Build Coastguard Worker     /* TODO: handle the other return values */
173*61046927SAndroid Build Coastguard Worker     return D3D_OK;
174*61046927SAndroid Build Coastguard Worker }
175*61046927SAndroid Build Coastguard Worker 
176*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_CreateRenderTargetEx(struct NineDevice9Ex * This,UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Lockable,IDirect3DSurface9 ** ppSurface,HANDLE * pSharedHandle,UNUSED DWORD Usage)177*61046927SAndroid Build Coastguard Worker NineDevice9Ex_CreateRenderTargetEx( struct NineDevice9Ex *This,
178*61046927SAndroid Build Coastguard Worker                                     UINT Width,
179*61046927SAndroid Build Coastguard Worker                                     UINT Height,
180*61046927SAndroid Build Coastguard Worker                                     D3DFORMAT Format,
181*61046927SAndroid Build Coastguard Worker                                     D3DMULTISAMPLE_TYPE MultiSample,
182*61046927SAndroid Build Coastguard Worker                                     DWORD MultisampleQuality,
183*61046927SAndroid Build Coastguard Worker                                     BOOL Lockable,
184*61046927SAndroid Build Coastguard Worker                                     IDirect3DSurface9 **ppSurface,
185*61046927SAndroid Build Coastguard Worker                                     HANDLE *pSharedHandle,
186*61046927SAndroid Build Coastguard Worker                                     UNUSED DWORD Usage )
187*61046927SAndroid Build Coastguard Worker {
188*61046927SAndroid Build Coastguard Worker     DBG("This\n");
189*61046927SAndroid Build Coastguard Worker     /* The Create*Ex functions only purpose seem to introduce the
190*61046927SAndroid Build Coastguard Worker      * Usage field, to pass the new d3d9ex flags on secure/restricted
191*61046927SAndroid Build Coastguard Worker      * content.
192*61046927SAndroid Build Coastguard Worker      * TODO: Return error on invalid Usage.
193*61046927SAndroid Build Coastguard Worker      * TODO: Store Usage in the surface descriptor, in case the
194*61046927SAndroid Build Coastguard Worker      * app checks */
195*61046927SAndroid Build Coastguard Worker     return NineDevice9_CreateRenderTarget(&This->base,
196*61046927SAndroid Build Coastguard Worker                                           Width,
197*61046927SAndroid Build Coastguard Worker                                           Height,
198*61046927SAndroid Build Coastguard Worker                                           Format,
199*61046927SAndroid Build Coastguard Worker                                           MultiSample,
200*61046927SAndroid Build Coastguard Worker                                           MultisampleQuality,
201*61046927SAndroid Build Coastguard Worker                                           Lockable,
202*61046927SAndroid Build Coastguard Worker                                           ppSurface,
203*61046927SAndroid Build Coastguard Worker                                           pSharedHandle);
204*61046927SAndroid Build Coastguard Worker }
205*61046927SAndroid Build Coastguard Worker 
206*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_CreateOffscreenPlainSurfaceEx(struct NineDevice9Ex * This,UINT Width,UINT Height,D3DFORMAT Format,D3DPOOL Pool,IDirect3DSurface9 ** ppSurface,HANDLE * pSharedHandle,UNUSED DWORD Usage)207*61046927SAndroid Build Coastguard Worker NineDevice9Ex_CreateOffscreenPlainSurfaceEx( struct NineDevice9Ex *This,
208*61046927SAndroid Build Coastguard Worker                                              UINT Width,
209*61046927SAndroid Build Coastguard Worker                                              UINT Height,
210*61046927SAndroid Build Coastguard Worker                                              D3DFORMAT Format,
211*61046927SAndroid Build Coastguard Worker                                              D3DPOOL Pool,
212*61046927SAndroid Build Coastguard Worker                                              IDirect3DSurface9 **ppSurface,
213*61046927SAndroid Build Coastguard Worker                                              HANDLE *pSharedHandle,
214*61046927SAndroid Build Coastguard Worker                                              UNUSED DWORD Usage )
215*61046927SAndroid Build Coastguard Worker {
216*61046927SAndroid Build Coastguard Worker     DBG("This\n");
217*61046927SAndroid Build Coastguard Worker     /* The Create*Ex functions only purpose seem to introduce the
218*61046927SAndroid Build Coastguard Worker      * Usage field, to pass the new d3d9ex flags on secure/restricted
219*61046927SAndroid Build Coastguard Worker      * content.
220*61046927SAndroid Build Coastguard Worker      * TODO: Return error on invalid Usage.
221*61046927SAndroid Build Coastguard Worker      * TODO: Store Usage in the surface descriptor, in case the
222*61046927SAndroid Build Coastguard Worker      * app checks */
223*61046927SAndroid Build Coastguard Worker     return NineDevice9_CreateOffscreenPlainSurface(&This->base,
224*61046927SAndroid Build Coastguard Worker                                                    Width,
225*61046927SAndroid Build Coastguard Worker                                                    Height,
226*61046927SAndroid Build Coastguard Worker                                                    Format,
227*61046927SAndroid Build Coastguard Worker                                                    Pool,
228*61046927SAndroid Build Coastguard Worker                                                    ppSurface,
229*61046927SAndroid Build Coastguard Worker                                                    pSharedHandle);
230*61046927SAndroid Build Coastguard Worker }
231*61046927SAndroid Build Coastguard Worker 
232*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_CreateDepthStencilSurfaceEx(struct NineDevice9Ex * This,UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Discard,IDirect3DSurface9 ** ppSurface,HANDLE * pSharedHandle,UNUSED DWORD Usage)233*61046927SAndroid Build Coastguard Worker NineDevice9Ex_CreateDepthStencilSurfaceEx( struct NineDevice9Ex *This,
234*61046927SAndroid Build Coastguard Worker                                            UINT Width,
235*61046927SAndroid Build Coastguard Worker                                            UINT Height,
236*61046927SAndroid Build Coastguard Worker                                            D3DFORMAT Format,
237*61046927SAndroid Build Coastguard Worker                                            D3DMULTISAMPLE_TYPE MultiSample,
238*61046927SAndroid Build Coastguard Worker                                            DWORD MultisampleQuality,
239*61046927SAndroid Build Coastguard Worker                                            BOOL Discard,
240*61046927SAndroid Build Coastguard Worker                                            IDirect3DSurface9 **ppSurface,
241*61046927SAndroid Build Coastguard Worker                                            HANDLE *pSharedHandle,
242*61046927SAndroid Build Coastguard Worker                                            UNUSED DWORD Usage )
243*61046927SAndroid Build Coastguard Worker {
244*61046927SAndroid Build Coastguard Worker     DBG("This\n");
245*61046927SAndroid Build Coastguard Worker     /* The Create*Ex functions only purpose seem to introduce the
246*61046927SAndroid Build Coastguard Worker      * Usage field, to pass the new d3d9ex flags on secure/restricted
247*61046927SAndroid Build Coastguard Worker      * content.
248*61046927SAndroid Build Coastguard Worker      * TODO: Return error on invalid Usage.
249*61046927SAndroid Build Coastguard Worker      * TODO: Store Usage in the surface descriptor, in case the
250*61046927SAndroid Build Coastguard Worker      * app checks */
251*61046927SAndroid Build Coastguard Worker     return NineDevice9_CreateDepthStencilSurface(&This->base,
252*61046927SAndroid Build Coastguard Worker                                                  Width,
253*61046927SAndroid Build Coastguard Worker                                                  Height,
254*61046927SAndroid Build Coastguard Worker                                                  Format,
255*61046927SAndroid Build Coastguard Worker                                                  MultiSample,
256*61046927SAndroid Build Coastguard Worker                                                  MultisampleQuality,
257*61046927SAndroid Build Coastguard Worker                                                  Discard,
258*61046927SAndroid Build Coastguard Worker                                                  ppSurface,
259*61046927SAndroid Build Coastguard Worker                                                  pSharedHandle);
260*61046927SAndroid Build Coastguard Worker }
261*61046927SAndroid Build Coastguard Worker 
262*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_ResetEx(struct NineDevice9Ex * This,D3DPRESENT_PARAMETERS * pPresentationParameters,D3DDISPLAYMODEEX * pFullscreenDisplayMode)263*61046927SAndroid Build Coastguard Worker NineDevice9Ex_ResetEx( struct NineDevice9Ex *This,
264*61046927SAndroid Build Coastguard Worker                        D3DPRESENT_PARAMETERS *pPresentationParameters,
265*61046927SAndroid Build Coastguard Worker                        D3DDISPLAYMODEEX *pFullscreenDisplayMode )
266*61046927SAndroid Build Coastguard Worker {
267*61046927SAndroid Build Coastguard Worker     HRESULT hr = D3D_OK;
268*61046927SAndroid Build Coastguard Worker     float MinZ, MaxZ;
269*61046927SAndroid Build Coastguard Worker     unsigned i;
270*61046927SAndroid Build Coastguard Worker 
271*61046927SAndroid Build Coastguard Worker     DBG("This=%p pPresentationParameters=%p pFullscreenDisplayMode=%p\n", This, pPresentationParameters, pFullscreenDisplayMode);
272*61046927SAndroid Build Coastguard Worker 
273*61046927SAndroid Build Coastguard Worker     for (i = 0; i < This->base.nswapchains; ++i) {
274*61046927SAndroid Build Coastguard Worker         D3DDISPLAYMODEEX *mode = NULL;
275*61046927SAndroid Build Coastguard Worker         D3DPRESENT_PARAMETERS *params = &pPresentationParameters[i];
276*61046927SAndroid Build Coastguard Worker         if (pFullscreenDisplayMode) mode = &(pFullscreenDisplayMode[i]);
277*61046927SAndroid Build Coastguard Worker         hr = NineSwapChain9_Resize(This->base.swapchains[i], params, mode);
278*61046927SAndroid Build Coastguard Worker         if (FAILED(hr))
279*61046927SAndroid Build Coastguard Worker             break;
280*61046927SAndroid Build Coastguard Worker     }
281*61046927SAndroid Build Coastguard Worker 
282*61046927SAndroid Build Coastguard Worker     MinZ = This->base.state.viewport.MinZ; /* These are preserved */
283*61046927SAndroid Build Coastguard Worker     MaxZ = This->base.state.viewport.MaxZ;
284*61046927SAndroid Build Coastguard Worker     NineDevice9_SetRenderTarget(
285*61046927SAndroid Build Coastguard Worker         (struct NineDevice9 *)This, 0, (IDirect3DSurface9 *)This->base.swapchains[0]->buffers[0]);
286*61046927SAndroid Build Coastguard Worker     This->base.state.viewport.MinZ = MinZ;
287*61046927SAndroid Build Coastguard Worker     This->base.state.viewport.MaxZ = MaxZ;
288*61046927SAndroid Build Coastguard Worker     nine_context_set_viewport(&This->base, &This->base.state.viewport);
289*61046927SAndroid Build Coastguard Worker 
290*61046927SAndroid Build Coastguard Worker     if (This->base.nswapchains && This->base.swapchains[0]->params.EnableAutoDepthStencil)
291*61046927SAndroid Build Coastguard Worker         NineDevice9_SetDepthStencilSurface(
292*61046927SAndroid Build Coastguard Worker             &This->base, (IDirect3DSurface9 *)This->base.swapchains[0]->zsbuf);
293*61046927SAndroid Build Coastguard Worker 
294*61046927SAndroid Build Coastguard Worker     return hr;
295*61046927SAndroid Build Coastguard Worker }
296*61046927SAndroid Build Coastguard Worker 
297*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_Reset(struct NineDevice9Ex * This,D3DPRESENT_PARAMETERS * pPresentationParameters)298*61046927SAndroid Build Coastguard Worker NineDevice9Ex_Reset( struct NineDevice9Ex *This,
299*61046927SAndroid Build Coastguard Worker                      D3DPRESENT_PARAMETERS *pPresentationParameters )
300*61046927SAndroid Build Coastguard Worker {
301*61046927SAndroid Build Coastguard Worker     HRESULT hr = D3D_OK;
302*61046927SAndroid Build Coastguard Worker     float MinZ, MaxZ;
303*61046927SAndroid Build Coastguard Worker     unsigned i;
304*61046927SAndroid Build Coastguard Worker 
305*61046927SAndroid Build Coastguard Worker     DBG("This=%p pPresentationParameters=%p\n", This, pPresentationParameters);
306*61046927SAndroid Build Coastguard Worker 
307*61046927SAndroid Build Coastguard Worker     for (i = 0; i < This->base.nswapchains; ++i) {
308*61046927SAndroid Build Coastguard Worker         D3DPRESENT_PARAMETERS *params = &pPresentationParameters[i];
309*61046927SAndroid Build Coastguard Worker         hr = NineSwapChain9_Resize(This->base.swapchains[i], params, NULL);
310*61046927SAndroid Build Coastguard Worker         if (FAILED(hr))
311*61046927SAndroid Build Coastguard Worker             break;
312*61046927SAndroid Build Coastguard Worker     }
313*61046927SAndroid Build Coastguard Worker 
314*61046927SAndroid Build Coastguard Worker     MinZ = This->base.state.viewport.MinZ; /* These are preserved */
315*61046927SAndroid Build Coastguard Worker     MaxZ = This->base.state.viewport.MaxZ;
316*61046927SAndroid Build Coastguard Worker     NineDevice9_SetRenderTarget(
317*61046927SAndroid Build Coastguard Worker         (struct NineDevice9 *)This, 0, (IDirect3DSurface9 *)This->base.swapchains[0]->buffers[0]);
318*61046927SAndroid Build Coastguard Worker     This->base.state.viewport.MinZ = MinZ;
319*61046927SAndroid Build Coastguard Worker     This->base.state.viewport.MaxZ = MaxZ;
320*61046927SAndroid Build Coastguard Worker     nine_context_set_viewport(&This->base, &This->base.state.viewport);
321*61046927SAndroid Build Coastguard Worker 
322*61046927SAndroid Build Coastguard Worker     if (This->base.nswapchains && This->base.swapchains[0]->params.EnableAutoDepthStencil)
323*61046927SAndroid Build Coastguard Worker         NineDevice9_SetDepthStencilSurface(
324*61046927SAndroid Build Coastguard Worker             &This->base, (IDirect3DSurface9 *)This->base.swapchains[0]->zsbuf);
325*61046927SAndroid Build Coastguard Worker 
326*61046927SAndroid Build Coastguard Worker     return hr;
327*61046927SAndroid Build Coastguard Worker }
328*61046927SAndroid Build Coastguard Worker 
329*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_GetDisplayModeEx(struct NineDevice9Ex * This,UINT iSwapChain,D3DDISPLAYMODEEX * pMode,D3DDISPLAYROTATION * pRotation)330*61046927SAndroid Build Coastguard Worker NineDevice9Ex_GetDisplayModeEx( struct NineDevice9Ex *This,
331*61046927SAndroid Build Coastguard Worker                                 UINT iSwapChain,
332*61046927SAndroid Build Coastguard Worker                                 D3DDISPLAYMODEEX *pMode,
333*61046927SAndroid Build Coastguard Worker                                 D3DDISPLAYROTATION *pRotation )
334*61046927SAndroid Build Coastguard Worker {
335*61046927SAndroid Build Coastguard Worker     struct NineSwapChain9Ex *swapchain;
336*61046927SAndroid Build Coastguard Worker 
337*61046927SAndroid Build Coastguard Worker     DBG("This=%p iSwapChain=%u pMode=%p pRotation=%p\n",
338*61046927SAndroid Build Coastguard Worker         This, iSwapChain, pMode, pRotation);
339*61046927SAndroid Build Coastguard Worker 
340*61046927SAndroid Build Coastguard Worker     user_assert(iSwapChain < This->base.nswapchains, D3DERR_INVALIDCALL);
341*61046927SAndroid Build Coastguard Worker 
342*61046927SAndroid Build Coastguard Worker     swapchain = NineSwapChain9Ex(This->base.swapchains[iSwapChain]);
343*61046927SAndroid Build Coastguard Worker     return NineSwapChain9Ex_GetDisplayModeEx(swapchain, pMode, pRotation);
344*61046927SAndroid Build Coastguard Worker }
345*61046927SAndroid Build Coastguard Worker 
346*61046927SAndroid Build Coastguard Worker HRESULT NINE_WINAPI
NineDevice9Ex_TestCooperativeLevel(UNUSED struct NineDevice9Ex * This)347*61046927SAndroid Build Coastguard Worker NineDevice9Ex_TestCooperativeLevel( UNUSED struct NineDevice9Ex *This )
348*61046927SAndroid Build Coastguard Worker {
349*61046927SAndroid Build Coastguard Worker     DBG("This\n");
350*61046927SAndroid Build Coastguard Worker     return D3D_OK;
351*61046927SAndroid Build Coastguard Worker }
352*61046927SAndroid Build Coastguard Worker 
353*61046927SAndroid Build Coastguard Worker 
354*61046927SAndroid Build Coastguard Worker IDirect3DDevice9ExVtbl NineDevice9Ex_vtable = {
355*61046927SAndroid Build Coastguard Worker     (void *)NineUnknown_QueryInterface,
356*61046927SAndroid Build Coastguard Worker     (void *)NineUnknown_AddRef,
357*61046927SAndroid Build Coastguard Worker     (void *)NineUnknown_Release,
358*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_TestCooperativeLevel,
359*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetAvailableTextureMem,
360*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_EvictManagedResources,
361*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetDirect3D,
362*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetDeviceCaps,
363*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetDisplayMode,
364*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetCreationParameters,
365*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetCursorProperties,
366*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetCursorPosition,
367*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_ShowCursor,
368*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateAdditionalSwapChain,
369*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetSwapChain,
370*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetNumberOfSwapChains,
371*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_Reset,
372*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_Present,
373*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetBackBuffer,
374*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetRasterStatus,
375*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetDialogBoxMode,
376*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetGammaRamp,
377*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetGammaRamp,
378*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateTexture,
379*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateVolumeTexture,
380*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateCubeTexture,
381*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateVertexBuffer,
382*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateIndexBuffer,
383*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateRenderTarget,
384*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateDepthStencilSurface,
385*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_UpdateSurface,
386*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_UpdateTexture,
387*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetRenderTargetData,
388*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetFrontBufferData,
389*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_StretchRect,
390*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_ColorFill,
391*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateOffscreenPlainSurface,
392*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetRenderTarget,
393*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetRenderTarget,
394*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetDepthStencilSurface,
395*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetDepthStencilSurface,
396*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_BeginScene,
397*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_EndScene,
398*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_Clear,
399*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetTransform,
400*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetTransform,
401*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_MultiplyTransform,
402*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetViewport,
403*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetViewport,
404*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetMaterial,
405*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetMaterial,
406*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetLight,
407*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetLight,
408*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_LightEnable,
409*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetLightEnable,
410*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetClipPlane,
411*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetClipPlane,
412*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetRenderState,
413*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetRenderState,
414*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateStateBlock,
415*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_BeginStateBlock,
416*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_EndStateBlock,
417*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetClipStatus,
418*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetClipStatus,
419*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetTexture,
420*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetTexture,
421*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetTextureStageState,
422*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetTextureStageState,
423*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetSamplerState,
424*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetSamplerState,
425*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_ValidateDevice,
426*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetPaletteEntries,
427*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetPaletteEntries,
428*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetCurrentTexturePalette,
429*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetCurrentTexturePalette,
430*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetScissorRect,
431*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetScissorRect,
432*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetSoftwareVertexProcessing,
433*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetSoftwareVertexProcessing,
434*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetNPatchMode,
435*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetNPatchMode,
436*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_DrawPrimitive,
437*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_DrawIndexedPrimitive,
438*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_DrawPrimitiveUP,
439*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_DrawIndexedPrimitiveUP,
440*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_ProcessVertices,
441*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateVertexDeclaration,
442*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetVertexDeclaration,
443*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetVertexDeclaration,
444*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetFVF,
445*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetFVF,
446*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateVertexShader,
447*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetVertexShader,
448*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetVertexShader,
449*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetVertexShaderConstantF,
450*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetVertexShaderConstantF,
451*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetVertexShaderConstantI,
452*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetVertexShaderConstantI,
453*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetVertexShaderConstantB,
454*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetVertexShaderConstantB,
455*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetStreamSource,
456*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetStreamSource,
457*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetStreamSourceFreq,
458*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetStreamSourceFreq,
459*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetIndices,
460*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetIndices,
461*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreatePixelShader,
462*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetPixelShader,
463*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetPixelShader,
464*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetPixelShaderConstantF,
465*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetPixelShaderConstantF,
466*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetPixelShaderConstantI,
467*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetPixelShaderConstantI,
468*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_SetPixelShaderConstantB,
469*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_GetPixelShaderConstantB,
470*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_DrawRectPatch,
471*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_DrawTriPatch,
472*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_DeletePatch,
473*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9_CreateQuery,
474*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_SetConvolutionMonoKernel,
475*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_ComposeRects,
476*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_PresentEx,
477*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_GetGPUThreadPriority,
478*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_SetGPUThreadPriority,
479*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_WaitForVBlank,
480*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_CheckResourceResidency,
481*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_SetMaximumFrameLatency,
482*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_GetMaximumFrameLatency,
483*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_CheckDeviceState,
484*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_CreateRenderTargetEx,
485*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_CreateOffscreenPlainSurfaceEx,
486*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_CreateDepthStencilSurfaceEx,
487*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_ResetEx,
488*61046927SAndroid Build Coastguard Worker     (void *)NineDevice9Ex_GetDisplayModeEx
489*61046927SAndroid Build Coastguard Worker };
490*61046927SAndroid Build Coastguard Worker 
491*61046927SAndroid Build Coastguard Worker static const GUID *NineDevice9Ex_IIDs[] = {
492*61046927SAndroid Build Coastguard Worker     &IID_IDirect3DDevice9Ex,
493*61046927SAndroid Build Coastguard Worker     &IID_IDirect3DDevice9,
494*61046927SAndroid Build Coastguard Worker     &IID_IUnknown,
495*61046927SAndroid Build Coastguard Worker     NULL
496*61046927SAndroid Build Coastguard Worker };
497*61046927SAndroid Build Coastguard Worker 
498*61046927SAndroid Build Coastguard Worker HRESULT
NineDevice9Ex_new(struct pipe_screen * pScreen,D3DDEVICE_CREATION_PARAMETERS * pCreationParameters,D3DCAPS9 * pCaps,D3DPRESENT_PARAMETERS * pPresentationParameters,D3DDISPLAYMODEEX * pFullscreenDisplayMode,IDirect3D9Ex * pD3D9Ex,ID3DPresentGroup * pPresentationGroup,struct d3dadapter9_context * pCTX,struct NineDevice9Ex ** ppOut,int minorVersionNum)499*61046927SAndroid Build Coastguard Worker NineDevice9Ex_new( struct pipe_screen *pScreen,
500*61046927SAndroid Build Coastguard Worker                    D3DDEVICE_CREATION_PARAMETERS *pCreationParameters,
501*61046927SAndroid Build Coastguard Worker                    D3DCAPS9 *pCaps,
502*61046927SAndroid Build Coastguard Worker                    D3DPRESENT_PARAMETERS *pPresentationParameters,
503*61046927SAndroid Build Coastguard Worker                    D3DDISPLAYMODEEX *pFullscreenDisplayMode,
504*61046927SAndroid Build Coastguard Worker                    IDirect3D9Ex *pD3D9Ex,
505*61046927SAndroid Build Coastguard Worker                    ID3DPresentGroup *pPresentationGroup,
506*61046927SAndroid Build Coastguard Worker                    struct d3dadapter9_context *pCTX,
507*61046927SAndroid Build Coastguard Worker                    struct NineDevice9Ex **ppOut,
508*61046927SAndroid Build Coastguard Worker                    int minorVersionNum )
509*61046927SAndroid Build Coastguard Worker {
510*61046927SAndroid Build Coastguard Worker     BOOL lock;
511*61046927SAndroid Build Coastguard Worker     lock = !!(pCreationParameters->BehaviorFlags & D3DCREATE_MULTITHREADED);
512*61046927SAndroid Build Coastguard Worker 
513*61046927SAndroid Build Coastguard Worker     NINE_NEW(Device9Ex, ppOut, lock,
514*61046927SAndroid Build Coastguard Worker              pScreen, pCreationParameters, pCaps, pPresentationParameters,
515*61046927SAndroid Build Coastguard Worker              pFullscreenDisplayMode, pD3D9Ex, pPresentationGroup, pCTX, minorVersionNum );
516*61046927SAndroid Build Coastguard Worker }
517*61046927SAndroid Build Coastguard Worker 
518