1b8e80941Smrg/*
2b8e80941Smrg * Copyright 2011 Joakim Sindholt <opensource@zhasha.com>
3b8e80941Smrg *
4b8e80941Smrg * Permission is hereby granted, free of charge, to any person obtaining a
5b8e80941Smrg * copy of this software and associated documentation files (the "Software"),
6b8e80941Smrg * to deal in the Software without restriction, including without limitation
7b8e80941Smrg * on the rights to use, copy, modify, merge, publish, distribute, sub
8b8e80941Smrg * license, and/or sell copies of the Software, and to permit persons to whom
9b8e80941Smrg * the Software is furnished to do so, subject to the following conditions:
10b8e80941Smrg *
11b8e80941Smrg * The above copyright notice and this permission notice (including the next
12b8e80941Smrg * paragraph) shall be included in all copies or substantial portions of the
13b8e80941Smrg * Software.
14b8e80941Smrg *
15b8e80941Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16b8e80941Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17b8e80941Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
18b8e80941Smrg * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
19b8e80941Smrg * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
20b8e80941Smrg * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
21b8e80941Smrg * USE OR OTHER DEALINGS IN THE SOFTWARE. */
22b8e80941Smrg
23b8e80941Smrg#ifndef _NINE_DEVICE9_H_
24b8e80941Smrg#define _NINE_DEVICE9_H_
25b8e80941Smrg
26b8e80941Smrg#include "d3dadapter/d3dadapter9.h"
27b8e80941Smrg
28b8e80941Smrg#include "iunknown.h"
29b8e80941Smrg#include "adapter9.h"
30b8e80941Smrg
31b8e80941Smrg#include "nine_helpers.h"
32b8e80941Smrg#include "nine_state.h"
33b8e80941Smrg
34b8e80941Smrgstruct gen_mipmap_state;
35b8e80941Smrgstruct util_hash_table;
36b8e80941Smrgstruct pipe_screen;
37b8e80941Smrgstruct pipe_context;
38b8e80941Smrgstruct cso_context;
39b8e80941Smrgstruct hud_context;
40b8e80941Smrgstruct u_upload_mgr;
41b8e80941Smrgstruct csmt_context;
42b8e80941Smrg
43b8e80941Smrgstruct NineSwapChain9;
44b8e80941Smrgstruct NineStateBlock9;
45b8e80941Smrg
46b8e80941Smrg#include "util/list.h"
47b8e80941Smrg
48b8e80941Smrgstruct NineDevice9
49b8e80941Smrg{
50b8e80941Smrg    struct NineUnknown base;
51b8e80941Smrg    boolean ex;
52b8e80941Smrg    boolean may_swvp;
53b8e80941Smrg
54b8e80941Smrg    /* G3D context */
55b8e80941Smrg    struct pipe_screen *screen;
56b8e80941Smrg    /* For first time upload. No Sync with rendering thread */
57b8e80941Smrg    struct pipe_context *pipe_secondary;
58b8e80941Smrg    struct pipe_screen *screen_sw;
59b8e80941Smrg    struct pipe_context *pipe_sw;
60b8e80941Smrg    struct cso_context *cso_sw;
61b8e80941Smrg
62b8e80941Smrg    /* CSMT context */
63b8e80941Smrg    struct csmt_context *csmt_ctx;
64b8e80941Smrg    BOOL csmt_active;
65b8e80941Smrg
66b8e80941Smrg    /* For DISCARD/NOOVERWRITE */
67b8e80941Smrg    struct nine_buffer_upload *buffer_upload;
68b8e80941Smrg
69b8e80941Smrg    /* creation parameters */
70b8e80941Smrg    D3DCAPS9 caps;
71b8e80941Smrg    D3DDEVICE_CREATION_PARAMETERS params;
72b8e80941Smrg    IDirect3D9 *d3d9;
73b8e80941Smrg
74b8e80941Smrg    /* swapchain stuff */
75b8e80941Smrg    ID3DPresentGroup *present;
76b8e80941Smrg    struct NineSwapChain9 **swapchains;
77b8e80941Smrg    unsigned nswapchains;
78b8e80941Smrg
79b8e80941Smrg    struct NineStateBlock9 *record;
80b8e80941Smrg    struct nine_state *update; /* state to update (&state / &record->state) */
81b8e80941Smrg    struct nine_state state;   /* device state */
82b8e80941Smrg    struct nine_context context;
83b8e80941Smrg    struct nine_state_sw_internal state_sw_internal;
84b8e80941Smrg
85b8e80941Smrg    struct list_head update_buffers;
86b8e80941Smrg    struct list_head update_textures;
87b8e80941Smrg    struct list_head managed_buffers;
88b8e80941Smrg    struct list_head managed_textures;
89b8e80941Smrg
90b8e80941Smrg    boolean is_recording;
91b8e80941Smrg    boolean in_scene;
92b8e80941Smrg
93b8e80941Smrg    uint16_t vs_const_size;
94b8e80941Smrg    uint16_t ps_const_size;
95b8e80941Smrg    uint16_t max_vs_const_f;
96b8e80941Smrg    uint16_t max_ps_const_f;
97b8e80941Smrg
98b8e80941Smrg    struct pipe_resource *dummy_texture;
99b8e80941Smrg    struct pipe_sampler_view *dummy_sampler_view;
100b8e80941Smrg    struct pipe_sampler_state dummy_sampler_state;
101b8e80941Smrg
102b8e80941Smrg    struct gen_mipmap_state *gen_mipmap;
103b8e80941Smrg
104b8e80941Smrg    struct {
105b8e80941Smrg        struct util_hash_table *ht_vs;
106b8e80941Smrg        struct util_hash_table *ht_ps;
107b8e80941Smrg        struct NineVertexShader9 *vs;
108b8e80941Smrg        struct NinePixelShader9 *ps;
109b8e80941Smrg        unsigned num_vs;
110b8e80941Smrg        unsigned num_ps;
111b8e80941Smrg        float *vs_const;
112b8e80941Smrg        float *ps_const;
113b8e80941Smrg
114b8e80941Smrg        struct util_hash_table *ht_fvf;
115b8e80941Smrg    } ff;
116b8e80941Smrg
117b8e80941Smrg    struct {
118b8e80941Smrg        struct pipe_resource *image;
119b8e80941Smrg        unsigned w;
120b8e80941Smrg        unsigned h;
121b8e80941Smrg        POINT hotspot; /* -1, -1 if no cursor image set */
122b8e80941Smrg        POINT pos;
123b8e80941Smrg        BOOL visible;
124b8e80941Smrg        boolean software;
125b8e80941Smrg        void *hw_upload_temp;
126b8e80941Smrg    } cursor;
127b8e80941Smrg
128b8e80941Smrg    struct {
129b8e80941Smrg        boolean user_vbufs;
130b8e80941Smrg        boolean user_sw_vbufs;
131b8e80941Smrg        boolean window_space_position_support;
132b8e80941Smrg        boolean vs_integer;
133b8e80941Smrg        boolean ps_integer;
134b8e80941Smrg        boolean offset_units_unscaled;
135b8e80941Smrg    } driver_caps;
136b8e80941Smrg
137b8e80941Smrg    struct {
138b8e80941Smrg        boolean buggy_barycentrics;
139b8e80941Smrg    } driver_bugs;
140b8e80941Smrg
141b8e80941Smrg    struct {
142b8e80941Smrg        boolean dynamic_texture_workaround;
143b8e80941Smrg    } workarounds;
144b8e80941Smrg
145b8e80941Smrg    struct u_upload_mgr *vertex_uploader;
146b8e80941Smrg
147b8e80941Smrg    struct nine_range_pool range_pool;
148b8e80941Smrg
149b8e80941Smrg    struct hud_context *hud; /* NULL if hud is disabled */
150b8e80941Smrg
151b8e80941Smrg    /* dummy vbo (containing 0 0 0 0) to bind if vertex shader input
152b8e80941Smrg     * is not bound to anything by the vertex declaration */
153b8e80941Smrg    struct pipe_resource *dummy_vbo;
154b8e80941Smrg    BOOL device_needs_reset;
155b8e80941Smrg    int minor_version_num;
156b8e80941Smrg    long long available_texture_mem;
157b8e80941Smrg    long long available_texture_limit;
158b8e80941Smrg
159b8e80941Smrg    /* software vertex processing */
160b8e80941Smrg    boolean swvp;
161b8e80941Smrg};
162b8e80941Smrgstatic inline struct NineDevice9 *
163b8e80941SmrgNineDevice9( void *data )
164b8e80941Smrg{
165b8e80941Smrg    return (struct NineDevice9 *)data;
166b8e80941Smrg}
167b8e80941Smrg
168b8e80941SmrgHRESULT
169b8e80941SmrgNineDevice9_new( struct pipe_screen *pScreen,
170b8e80941Smrg                 D3DDEVICE_CREATION_PARAMETERS *pCreationParameters,
171b8e80941Smrg                 D3DCAPS9 *pCaps,
172b8e80941Smrg                 D3DPRESENT_PARAMETERS *pPresentationParameters,
173b8e80941Smrg                 IDirect3D9 *pD3D9,
174b8e80941Smrg                 ID3DPresentGroup *pPresentationGroup,
175b8e80941Smrg                 struct d3dadapter9_context *pCTX,
176b8e80941Smrg                 boolean ex,
177b8e80941Smrg                 D3DDISPLAYMODEEX *pFullscreenDisplayMode,
178b8e80941Smrg                 struct NineDevice9 **ppOut,
179b8e80941Smrg                 int minorVersionNum );
180b8e80941Smrg
181b8e80941SmrgHRESULT
182b8e80941SmrgNineDevice9_ctor( struct NineDevice9 *This,
183b8e80941Smrg                  struct NineUnknownParams *pParams,
184b8e80941Smrg                  struct pipe_screen *pScreen,
185b8e80941Smrg                  D3DDEVICE_CREATION_PARAMETERS *pCreationParameters,
186b8e80941Smrg                  D3DCAPS9 *pCaps,
187b8e80941Smrg                  D3DPRESENT_PARAMETERS *pPresentationParameters,
188b8e80941Smrg                  IDirect3D9 *pD3D9,
189b8e80941Smrg                  ID3DPresentGroup *pPresentationGroup,
190b8e80941Smrg                  struct d3dadapter9_context *pCTX,
191b8e80941Smrg                  boolean ex,
192b8e80941Smrg                  D3DDISPLAYMODEEX *pFullscreenDisplayMode,
193b8e80941Smrg                  int minorVersionNum );
194b8e80941Smrg
195b8e80941Smrgvoid
196b8e80941SmrgNineDevice9_dtor( struct NineDevice9 *This );
197b8e80941Smrg
198b8e80941Smrg/*** Nine private ***/
199b8e80941Smrgvoid
200b8e80941SmrgNineDevice9_SetDefaultState( struct NineDevice9 *This, boolean is_reset );
201b8e80941Smrg
202b8e80941Smrgstruct pipe_screen *
203b8e80941SmrgNineDevice9_GetScreen( struct NineDevice9 *This );
204b8e80941Smrg
205b8e80941Smrgstruct pipe_context *
206b8e80941SmrgNineDevice9_GetPipe( struct NineDevice9 *This );
207b8e80941Smrg
208b8e80941Smrgconst D3DCAPS9 *
209b8e80941SmrgNineDevice9_GetCaps( struct NineDevice9 *This );
210b8e80941Smrg
211b8e80941Smrg/*** Direct3D public ***/
212b8e80941Smrg
213b8e80941SmrgHRESULT NINE_WINAPI
214b8e80941SmrgNineDevice9_TestCooperativeLevel( struct NineDevice9 *This );
215b8e80941Smrg
216b8e80941SmrgUINT NINE_WINAPI
217b8e80941SmrgNineDevice9_GetAvailableTextureMem( struct NineDevice9 *This );
218b8e80941Smrg
219b8e80941SmrgHRESULT NINE_WINAPI
220b8e80941SmrgNineDevice9_EvictManagedResources( struct NineDevice9 *This );
221b8e80941Smrg
222b8e80941SmrgHRESULT NINE_WINAPI
223b8e80941SmrgNineDevice9_GetDirect3D( struct NineDevice9 *This,
224b8e80941Smrg                         IDirect3D9 **ppD3D9 );
225b8e80941Smrg
226b8e80941SmrgHRESULT NINE_WINAPI
227b8e80941SmrgNineDevice9_GetDeviceCaps( struct NineDevice9 *This,
228b8e80941Smrg                           D3DCAPS9 *pCaps );
229b8e80941Smrg
230b8e80941SmrgHRESULT NINE_WINAPI
231b8e80941SmrgNineDevice9_GetDisplayMode( struct NineDevice9 *This,
232b8e80941Smrg                            UINT iSwapChain,
233b8e80941Smrg                            D3DDISPLAYMODE *pMode );
234b8e80941Smrg
235b8e80941SmrgHRESULT NINE_WINAPI
236b8e80941SmrgNineDevice9_GetCreationParameters( struct NineDevice9 *This,
237b8e80941Smrg                                   D3DDEVICE_CREATION_PARAMETERS *pParameters );
238b8e80941Smrg
239b8e80941SmrgHRESULT NINE_WINAPI
240b8e80941SmrgNineDevice9_SetCursorProperties( struct NineDevice9 *This,
241b8e80941Smrg                                 UINT XHotSpot,
242b8e80941Smrg                                 UINT YHotSpot,
243b8e80941Smrg                                 IDirect3DSurface9 *pCursorBitmap );
244b8e80941Smrg
245b8e80941Smrgvoid NINE_WINAPI
246b8e80941SmrgNineDevice9_SetCursorPosition( struct NineDevice9 *This,
247b8e80941Smrg                               int X,
248b8e80941Smrg                               int Y,
249b8e80941Smrg                               DWORD Flags );
250b8e80941Smrg
251b8e80941SmrgBOOL NINE_WINAPI
252b8e80941SmrgNineDevice9_ShowCursor( struct NineDevice9 *This,
253b8e80941Smrg                        BOOL bShow );
254b8e80941Smrg
255b8e80941SmrgHRESULT NINE_WINAPI
256b8e80941SmrgNineDevice9_CreateAdditionalSwapChain( struct NineDevice9 *This,
257b8e80941Smrg                                       D3DPRESENT_PARAMETERS *pPresentationParameters,
258b8e80941Smrg                                       IDirect3DSwapChain9 **pSwapChain );
259b8e80941Smrg
260b8e80941SmrgHRESULT NINE_WINAPI
261b8e80941SmrgNineDevice9_GetSwapChain( struct NineDevice9 *This,
262b8e80941Smrg                          UINT iSwapChain,
263b8e80941Smrg                          IDirect3DSwapChain9 **pSwapChain );
264b8e80941Smrg
265b8e80941SmrgUINT NINE_WINAPI
266b8e80941SmrgNineDevice9_GetNumberOfSwapChains( struct NineDevice9 *This );
267b8e80941Smrg
268b8e80941SmrgHRESULT NINE_WINAPI
269b8e80941SmrgNineDevice9_Reset( struct NineDevice9 *This,
270b8e80941Smrg                   D3DPRESENT_PARAMETERS *pPresentationParameters );
271b8e80941Smrg
272b8e80941SmrgHRESULT NINE_WINAPI
273b8e80941SmrgNineDevice9_Present( struct NineDevice9 *This,
274b8e80941Smrg                     const RECT *pSourceRect,
275b8e80941Smrg                     const RECT *pDestRect,
276b8e80941Smrg                     HWND hDestWindowOverride,
277b8e80941Smrg                     const RGNDATA *pDirtyRegion );
278b8e80941Smrg
279b8e80941SmrgHRESULT NINE_WINAPI
280b8e80941SmrgNineDevice9_GetBackBuffer( struct NineDevice9 *This,
281b8e80941Smrg                           UINT iSwapChain,
282b8e80941Smrg                           UINT iBackBuffer,
283b8e80941Smrg                           D3DBACKBUFFER_TYPE Type,
284b8e80941Smrg                           IDirect3DSurface9 **ppBackBuffer );
285b8e80941Smrg
286b8e80941SmrgHRESULT NINE_WINAPI
287b8e80941SmrgNineDevice9_GetRasterStatus( struct NineDevice9 *This,
288b8e80941Smrg                             UINT iSwapChain,
289b8e80941Smrg                             D3DRASTER_STATUS *pRasterStatus );
290b8e80941Smrg
291b8e80941SmrgHRESULT NINE_WINAPI
292b8e80941SmrgNineDevice9_SetDialogBoxMode( struct NineDevice9 *This,
293b8e80941Smrg                              BOOL bEnableDialogs );
294b8e80941Smrg
295b8e80941Smrgvoid NINE_WINAPI
296b8e80941SmrgNineDevice9_SetGammaRamp( struct NineDevice9 *This,
297b8e80941Smrg                          UINT iSwapChain,
298b8e80941Smrg                          DWORD Flags,
299b8e80941Smrg                          const D3DGAMMARAMP *pRamp );
300b8e80941Smrg
301b8e80941Smrgvoid NINE_WINAPI
302b8e80941SmrgNineDevice9_GetGammaRamp( struct NineDevice9 *This,
303b8e80941Smrg                          UINT iSwapChain,
304b8e80941Smrg                          D3DGAMMARAMP *pRamp );
305b8e80941Smrg
306b8e80941SmrgHRESULT NINE_WINAPI
307b8e80941SmrgNineDevice9_CreateTexture( struct NineDevice9 *This,
308b8e80941Smrg                           UINT Width,
309b8e80941Smrg                           UINT Height,
310b8e80941Smrg                           UINT Levels,
311b8e80941Smrg                           DWORD Usage,
312b8e80941Smrg                           D3DFORMAT Format,
313b8e80941Smrg                           D3DPOOL Pool,
314b8e80941Smrg                           IDirect3DTexture9 **ppTexture,
315b8e80941Smrg                           HANDLE *pSharedHandle );
316b8e80941Smrg
317b8e80941SmrgHRESULT NINE_WINAPI
318b8e80941SmrgNineDevice9_CreateVolumeTexture( struct NineDevice9 *This,
319b8e80941Smrg                                 UINT Width,
320b8e80941Smrg                                 UINT Height,
321b8e80941Smrg                                 UINT Depth,
322b8e80941Smrg                                 UINT Levels,
323b8e80941Smrg                                 DWORD Usage,
324b8e80941Smrg                                 D3DFORMAT Format,
325b8e80941Smrg                                 D3DPOOL Pool,
326b8e80941Smrg                                 IDirect3DVolumeTexture9 **ppVolumeTexture,
327b8e80941Smrg                                 HANDLE *pSharedHandle );
328b8e80941Smrg
329b8e80941SmrgHRESULT NINE_WINAPI
330b8e80941SmrgNineDevice9_CreateCubeTexture( struct NineDevice9 *This,
331b8e80941Smrg                               UINT EdgeLength,
332b8e80941Smrg                               UINT Levels,
333b8e80941Smrg                               DWORD Usage,
334b8e80941Smrg                               D3DFORMAT Format,
335b8e80941Smrg                               D3DPOOL Pool,
336b8e80941Smrg                               IDirect3DCubeTexture9 **ppCubeTexture,
337b8e80941Smrg                               HANDLE *pSharedHandle );
338b8e80941Smrg
339b8e80941SmrgHRESULT NINE_WINAPI
340b8e80941SmrgNineDevice9_CreateVertexBuffer( struct NineDevice9 *This,
341b8e80941Smrg                                UINT Length,
342b8e80941Smrg                                DWORD Usage,
343b8e80941Smrg                                DWORD FVF,
344b8e80941Smrg                                D3DPOOL Pool,
345b8e80941Smrg                                IDirect3DVertexBuffer9 **ppVertexBuffer,
346b8e80941Smrg                                HANDLE *pSharedHandle );
347b8e80941Smrg
348b8e80941SmrgHRESULT NINE_WINAPI
349b8e80941SmrgNineDevice9_CreateIndexBuffer( struct NineDevice9 *This,
350b8e80941Smrg                               UINT Length,
351b8e80941Smrg                               DWORD Usage,
352b8e80941Smrg                               D3DFORMAT Format,
353b8e80941Smrg                               D3DPOOL Pool,
354b8e80941Smrg                               IDirect3DIndexBuffer9 **ppIndexBuffer,
355b8e80941Smrg                               HANDLE *pSharedHandle );
356b8e80941Smrg
357b8e80941SmrgHRESULT NINE_WINAPI
358b8e80941SmrgNineDevice9_CreateRenderTarget( struct NineDevice9 *This,
359b8e80941Smrg                                UINT Width,
360b8e80941Smrg                                UINT Height,
361b8e80941Smrg                                D3DFORMAT Format,
362b8e80941Smrg                                D3DMULTISAMPLE_TYPE MultiSample,
363b8e80941Smrg                                DWORD MultisampleQuality,
364b8e80941Smrg                                BOOL Lockable,
365b8e80941Smrg                                IDirect3DSurface9 **ppSurface,
366b8e80941Smrg                                HANDLE *pSharedHandle );
367b8e80941Smrg
368b8e80941SmrgHRESULT NINE_WINAPI
369b8e80941SmrgNineDevice9_CreateDepthStencilSurface( struct NineDevice9 *This,
370b8e80941Smrg                                       UINT Width,
371b8e80941Smrg                                       UINT Height,
372b8e80941Smrg                                       D3DFORMAT Format,
373b8e80941Smrg                                       D3DMULTISAMPLE_TYPE MultiSample,
374b8e80941Smrg                                       DWORD MultisampleQuality,
375b8e80941Smrg                                       BOOL Discard,
376b8e80941Smrg                                       IDirect3DSurface9 **ppSurface,
377b8e80941Smrg                                       HANDLE *pSharedHandle );
378b8e80941Smrg
379b8e80941SmrgHRESULT NINE_WINAPI
380b8e80941SmrgNineDevice9_UpdateSurface( struct NineDevice9 *This,
381b8e80941Smrg                           IDirect3DSurface9 *pSourceSurface,
382b8e80941Smrg                           const RECT *pSourceRect,
383b8e80941Smrg                           IDirect3DSurface9 *pDestinationSurface,
384b8e80941Smrg                           const POINT *pDestPoint );
385b8e80941Smrg
386b8e80941SmrgHRESULT NINE_WINAPI
387b8e80941SmrgNineDevice9_UpdateTexture( struct NineDevice9 *This,
388b8e80941Smrg                           IDirect3DBaseTexture9 *pSourceTexture,
389b8e80941Smrg                           IDirect3DBaseTexture9 *pDestinationTexture );
390b8e80941Smrg
391b8e80941SmrgHRESULT NINE_WINAPI
392b8e80941SmrgNineDevice9_GetRenderTargetData( struct NineDevice9 *This,
393b8e80941Smrg                                 IDirect3DSurface9 *pRenderTarget,
394b8e80941Smrg                                 IDirect3DSurface9 *pDestSurface );
395b8e80941Smrg
396b8e80941SmrgHRESULT NINE_WINAPI
397b8e80941SmrgNineDevice9_GetFrontBufferData( struct NineDevice9 *This,
398b8e80941Smrg                                UINT iSwapChain,
399b8e80941Smrg                                IDirect3DSurface9 *pDestSurface );
400b8e80941Smrg
401b8e80941SmrgHRESULT NINE_WINAPI
402b8e80941SmrgNineDevice9_StretchRect( struct NineDevice9 *This,
403b8e80941Smrg                         IDirect3DSurface9 *pSourceSurface,
404b8e80941Smrg                         const RECT *pSourceRect,
405b8e80941Smrg                         IDirect3DSurface9 *pDestSurface,
406b8e80941Smrg                         const RECT *pDestRect,
407b8e80941Smrg                         D3DTEXTUREFILTERTYPE Filter );
408b8e80941Smrg
409b8e80941SmrgHRESULT NINE_WINAPI
410b8e80941SmrgNineDevice9_ColorFill( struct NineDevice9 *This,
411b8e80941Smrg                       IDirect3DSurface9 *pSurface,
412b8e80941Smrg                       const RECT *pRect,
413b8e80941Smrg                       D3DCOLOR color );
414b8e80941Smrg
415b8e80941SmrgHRESULT NINE_WINAPI
416b8e80941SmrgNineDevice9_CreateOffscreenPlainSurface( struct NineDevice9 *This,
417b8e80941Smrg                                         UINT Width,
418b8e80941Smrg                                         UINT Height,
419b8e80941Smrg                                         D3DFORMAT Format,
420b8e80941Smrg                                         D3DPOOL Pool,
421b8e80941Smrg                                         IDirect3DSurface9 **ppSurface,
422b8e80941Smrg                                         HANDLE *pSharedHandle );
423b8e80941Smrg
424b8e80941SmrgHRESULT NINE_WINAPI
425b8e80941SmrgNineDevice9_SetRenderTarget( struct NineDevice9 *This,
426b8e80941Smrg                             DWORD RenderTargetIndex,
427b8e80941Smrg                             IDirect3DSurface9 *pRenderTarget );
428b8e80941Smrg
429b8e80941SmrgHRESULT NINE_WINAPI
430b8e80941SmrgNineDevice9_GetRenderTarget( struct NineDevice9 *This,
431b8e80941Smrg                             DWORD RenderTargetIndex,
432b8e80941Smrg                             IDirect3DSurface9 **ppRenderTarget );
433b8e80941Smrg
434b8e80941SmrgHRESULT NINE_WINAPI
435b8e80941SmrgNineDevice9_SetDepthStencilSurface( struct NineDevice9 *This,
436b8e80941Smrg                                    IDirect3DSurface9 *pNewZStencil );
437b8e80941Smrg
438b8e80941SmrgHRESULT NINE_WINAPI
439b8e80941SmrgNineDevice9_GetDepthStencilSurface( struct NineDevice9 *This,
440b8e80941Smrg                                    IDirect3DSurface9 **ppZStencilSurface );
441b8e80941Smrg
442b8e80941SmrgHRESULT NINE_WINAPI
443b8e80941SmrgNineDevice9_BeginScene( struct NineDevice9 *This );
444b8e80941Smrg
445b8e80941SmrgHRESULT NINE_WINAPI
446b8e80941SmrgNineDevice9_EndScene( struct NineDevice9 *This );
447b8e80941Smrg
448b8e80941SmrgHRESULT NINE_WINAPI
449b8e80941SmrgNineDevice9_Clear( struct NineDevice9 *This,
450b8e80941Smrg                   DWORD Count,
451b8e80941Smrg                   const D3DRECT *pRects,
452b8e80941Smrg                   DWORD Flags,
453b8e80941Smrg                   D3DCOLOR Color,
454b8e80941Smrg                   float Z,
455b8e80941Smrg                   DWORD Stencil );
456b8e80941Smrg
457b8e80941SmrgHRESULT NINE_WINAPI
458b8e80941SmrgNineDevice9_SetTransform( struct NineDevice9 *This,
459b8e80941Smrg                          D3DTRANSFORMSTATETYPE State,
460b8e80941Smrg                          const D3DMATRIX *pMatrix );
461b8e80941Smrg
462b8e80941SmrgHRESULT NINE_WINAPI
463b8e80941SmrgNineDevice9_GetTransform( struct NineDevice9 *This,
464b8e80941Smrg                          D3DTRANSFORMSTATETYPE State,
465b8e80941Smrg                          D3DMATRIX *pMatrix );
466b8e80941Smrg
467b8e80941SmrgHRESULT NINE_WINAPI
468b8e80941SmrgNineDevice9_MultiplyTransform( struct NineDevice9 *This,
469b8e80941Smrg                               D3DTRANSFORMSTATETYPE State,
470b8e80941Smrg                               const D3DMATRIX *pMatrix );
471b8e80941Smrg
472b8e80941SmrgHRESULT NINE_WINAPI
473b8e80941SmrgNineDevice9_SetViewport( struct NineDevice9 *This,
474b8e80941Smrg                         const D3DVIEWPORT9 *pViewport );
475b8e80941Smrg
476b8e80941SmrgHRESULT NINE_WINAPI
477b8e80941SmrgNineDevice9_GetViewport( struct NineDevice9 *This,
478b8e80941Smrg                         D3DVIEWPORT9 *pViewport );
479b8e80941Smrg
480b8e80941SmrgHRESULT NINE_WINAPI
481b8e80941SmrgNineDevice9_SetMaterial( struct NineDevice9 *This,
482b8e80941Smrg                         const D3DMATERIAL9 *pMaterial );
483b8e80941Smrg
484b8e80941SmrgHRESULT NINE_WINAPI
485b8e80941SmrgNineDevice9_GetMaterial( struct NineDevice9 *This,
486b8e80941Smrg                         D3DMATERIAL9 *pMaterial );
487b8e80941Smrg
488b8e80941SmrgHRESULT NINE_WINAPI
489b8e80941SmrgNineDevice9_SetLight( struct NineDevice9 *This,
490b8e80941Smrg                      DWORD Index,
491b8e80941Smrg                      const D3DLIGHT9 *pLight );
492b8e80941Smrg
493b8e80941SmrgHRESULT NINE_WINAPI
494b8e80941SmrgNineDevice9_GetLight( struct NineDevice9 *This,
495b8e80941Smrg                      DWORD Index,
496b8e80941Smrg                      D3DLIGHT9 *pLight );
497b8e80941Smrg
498b8e80941SmrgHRESULT NINE_WINAPI
499b8e80941SmrgNineDevice9_LightEnable( struct NineDevice9 *This,
500b8e80941Smrg                         DWORD Index,
501b8e80941Smrg                         BOOL Enable );
502b8e80941Smrg
503b8e80941SmrgHRESULT NINE_WINAPI
504b8e80941SmrgNineDevice9_GetLightEnable( struct NineDevice9 *This,
505b8e80941Smrg                            DWORD Index,
506b8e80941Smrg                            BOOL *pEnable );
507b8e80941Smrg
508b8e80941SmrgHRESULT NINE_WINAPI
509b8e80941SmrgNineDevice9_SetClipPlane( struct NineDevice9 *This,
510b8e80941Smrg                          DWORD Index,
511b8e80941Smrg                          const float *pPlane );
512b8e80941Smrg
513b8e80941SmrgHRESULT NINE_WINAPI
514b8e80941SmrgNineDevice9_GetClipPlane( struct NineDevice9 *This,
515b8e80941Smrg                          DWORD Index,
516b8e80941Smrg                          float *pPlane );
517b8e80941Smrg
518b8e80941SmrgHRESULT NINE_WINAPI
519b8e80941SmrgNineDevice9_SetRenderState( struct NineDevice9 *This,
520b8e80941Smrg                            D3DRENDERSTATETYPE State,
521b8e80941Smrg                            DWORD Value );
522b8e80941Smrg
523b8e80941SmrgHRESULT NINE_WINAPI
524b8e80941SmrgNineDevice9_GetRenderState( struct NineDevice9 *This,
525b8e80941Smrg                            D3DRENDERSTATETYPE State,
526b8e80941Smrg                            DWORD *pValue );
527b8e80941Smrg
528b8e80941SmrgHRESULT NINE_WINAPI
529b8e80941SmrgNineDevice9_CreateStateBlock( struct NineDevice9 *This,
530b8e80941Smrg                              D3DSTATEBLOCKTYPE Type,
531b8e80941Smrg                              IDirect3DStateBlock9 **ppSB );
532b8e80941Smrg
533b8e80941SmrgHRESULT NINE_WINAPI
534b8e80941SmrgNineDevice9_BeginStateBlock( struct NineDevice9 *This );
535b8e80941Smrg
536b8e80941SmrgHRESULT NINE_WINAPI
537b8e80941SmrgNineDevice9_EndStateBlock( struct NineDevice9 *This,
538b8e80941Smrg                           IDirect3DStateBlock9 **ppSB );
539b8e80941Smrg
540b8e80941SmrgHRESULT NINE_WINAPI
541b8e80941SmrgNineDevice9_SetClipStatus( struct NineDevice9 *This,
542b8e80941Smrg                           const D3DCLIPSTATUS9 *pClipStatus );
543b8e80941Smrg
544b8e80941SmrgHRESULT NINE_WINAPI
545b8e80941SmrgNineDevice9_GetClipStatus( struct NineDevice9 *This,
546b8e80941Smrg                           D3DCLIPSTATUS9 *pClipStatus );
547b8e80941Smrg
548b8e80941SmrgHRESULT NINE_WINAPI
549b8e80941SmrgNineDevice9_GetTexture( struct NineDevice9 *This,
550b8e80941Smrg                        DWORD Stage,
551b8e80941Smrg                        IDirect3DBaseTexture9 **ppTexture );
552b8e80941Smrg
553b8e80941SmrgHRESULT NINE_WINAPI
554b8e80941SmrgNineDevice9_SetTexture( struct NineDevice9 *This,
555b8e80941Smrg                        DWORD Stage,
556b8e80941Smrg                        IDirect3DBaseTexture9 *pTexture );
557b8e80941Smrg
558b8e80941SmrgHRESULT NINE_WINAPI
559b8e80941SmrgNineDevice9_GetTextureStageState( struct NineDevice9 *This,
560b8e80941Smrg                                  DWORD Stage,
561b8e80941Smrg                                  D3DTEXTURESTAGESTATETYPE Type,
562b8e80941Smrg                                  DWORD *pValue );
563b8e80941Smrg
564b8e80941SmrgHRESULT NINE_WINAPI
565b8e80941SmrgNineDevice9_SetTextureStageState( struct NineDevice9 *This,
566b8e80941Smrg                                  DWORD Stage,
567b8e80941Smrg                                  D3DTEXTURESTAGESTATETYPE Type,
568b8e80941Smrg                                  DWORD Value );
569b8e80941Smrg
570b8e80941SmrgHRESULT NINE_WINAPI
571b8e80941SmrgNineDevice9_GetSamplerState( struct NineDevice9 *This,
572b8e80941Smrg                             DWORD Sampler,
573b8e80941Smrg                             D3DSAMPLERSTATETYPE Type,
574b8e80941Smrg                             DWORD *pValue );
575b8e80941Smrg
576b8e80941SmrgHRESULT NINE_WINAPI
577b8e80941SmrgNineDevice9_SetSamplerState( struct NineDevice9 *This,
578b8e80941Smrg                             DWORD Sampler,
579b8e80941Smrg                             D3DSAMPLERSTATETYPE Type,
580b8e80941Smrg                             DWORD Value );
581b8e80941Smrg
582b8e80941SmrgHRESULT NINE_WINAPI
583b8e80941SmrgNineDevice9_ValidateDevice( struct NineDevice9 *This,
584b8e80941Smrg                            DWORD *pNumPasses );
585b8e80941Smrg
586b8e80941SmrgHRESULT NINE_WINAPI
587b8e80941SmrgNineDevice9_SetPaletteEntries( struct NineDevice9 *This,
588b8e80941Smrg                               UINT PaletteNumber,
589b8e80941Smrg                               const PALETTEENTRY *pEntries );
590b8e80941Smrg
591b8e80941SmrgHRESULT NINE_WINAPI
592b8e80941SmrgNineDevice9_GetPaletteEntries( struct NineDevice9 *This,
593b8e80941Smrg                               UINT PaletteNumber,
594b8e80941Smrg                               PALETTEENTRY *pEntries );
595b8e80941Smrg
596b8e80941SmrgHRESULT NINE_WINAPI
597b8e80941SmrgNineDevice9_SetCurrentTexturePalette( struct NineDevice9 *This,
598b8e80941Smrg                                      UINT PaletteNumber );
599b8e80941Smrg
600b8e80941SmrgHRESULT NINE_WINAPI
601b8e80941SmrgNineDevice9_GetCurrentTexturePalette( struct NineDevice9 *This,
602b8e80941Smrg                                      UINT *PaletteNumber );
603b8e80941Smrg
604b8e80941SmrgHRESULT NINE_WINAPI
605b8e80941SmrgNineDevice9_SetScissorRect( struct NineDevice9 *This,
606b8e80941Smrg                            const RECT *pRect );
607b8e80941Smrg
608b8e80941SmrgHRESULT NINE_WINAPI
609b8e80941SmrgNineDevice9_GetScissorRect( struct NineDevice9 *This,
610b8e80941Smrg                            RECT *pRect );
611b8e80941Smrg
612b8e80941SmrgHRESULT NINE_WINAPI
613b8e80941SmrgNineDevice9_SetSoftwareVertexProcessing( struct NineDevice9 *This,
614b8e80941Smrg                                         BOOL bSoftware );
615b8e80941Smrg
616b8e80941SmrgBOOL NINE_WINAPI
617b8e80941SmrgNineDevice9_GetSoftwareVertexProcessing( struct NineDevice9 *This );
618b8e80941Smrg
619b8e80941SmrgHRESULT NINE_WINAPI
620b8e80941SmrgNineDevice9_SetNPatchMode( struct NineDevice9 *This,
621b8e80941Smrg                           float nSegments );
622b8e80941Smrg
623b8e80941Smrgfloat NINE_WINAPI
624b8e80941SmrgNineDevice9_GetNPatchMode( struct NineDevice9 *This );
625b8e80941Smrg
626b8e80941SmrgHRESULT NINE_WINAPI
627b8e80941SmrgNineDevice9_DrawPrimitive( struct NineDevice9 *This,
628b8e80941Smrg                           D3DPRIMITIVETYPE PrimitiveType,
629b8e80941Smrg                           UINT StartVertex,
630b8e80941Smrg                           UINT PrimitiveCount );
631b8e80941Smrg
632b8e80941SmrgHRESULT NINE_WINAPI
633b8e80941SmrgNineDevice9_DrawIndexedPrimitive( struct NineDevice9 *This,
634b8e80941Smrg                                  D3DPRIMITIVETYPE PrimitiveType,
635b8e80941Smrg                                  INT BaseVertexIndex,
636b8e80941Smrg                                  UINT MinVertexIndex,
637b8e80941Smrg                                  UINT NumVertices,
638b8e80941Smrg                                  UINT startIndex,
639b8e80941Smrg                                  UINT primCount );
640b8e80941Smrg
641b8e80941SmrgHRESULT NINE_WINAPI
642b8e80941SmrgNineDevice9_DrawPrimitiveUP( struct NineDevice9 *This,
643b8e80941Smrg                             D3DPRIMITIVETYPE PrimitiveType,
644b8e80941Smrg                             UINT PrimitiveCount,
645b8e80941Smrg                             const void *pVertexStreamZeroData,
646b8e80941Smrg                             UINT VertexStreamZeroStride );
647b8e80941Smrg
648b8e80941SmrgHRESULT NINE_WINAPI
649b8e80941SmrgNineDevice9_DrawIndexedPrimitiveUP( struct NineDevice9 *This,
650b8e80941Smrg                                    D3DPRIMITIVETYPE PrimitiveType,
651b8e80941Smrg                                    UINT MinVertexIndex,
652b8e80941Smrg                                    UINT NumVertices,
653b8e80941Smrg                                    UINT PrimitiveCount,
654b8e80941Smrg                                    const void *pIndexData,
655b8e80941Smrg                                    D3DFORMAT IndexDataFormat,
656b8e80941Smrg                                    const void *pVertexStreamZeroData,
657b8e80941Smrg                                    UINT VertexStreamZeroStride );
658b8e80941Smrg
659b8e80941SmrgHRESULT NINE_WINAPI
660b8e80941SmrgNineDevice9_ProcessVertices( struct NineDevice9 *This,
661b8e80941Smrg                             UINT SrcStartIndex,
662b8e80941Smrg                             UINT DestIndex,
663b8e80941Smrg                             UINT VertexCount,
664b8e80941Smrg                             IDirect3DVertexBuffer9 *pDestBuffer,
665b8e80941Smrg                             IDirect3DVertexDeclaration9 *pVertexDecl,
666b8e80941Smrg                             DWORD Flags );
667b8e80941Smrg
668b8e80941SmrgHRESULT NINE_WINAPI
669b8e80941SmrgNineDevice9_CreateVertexDeclaration( struct NineDevice9 *This,
670b8e80941Smrg                                     const D3DVERTEXELEMENT9 *pVertexElements,
671b8e80941Smrg                                     IDirect3DVertexDeclaration9 **ppDecl );
672b8e80941Smrg
673b8e80941SmrgHRESULT NINE_WINAPI
674b8e80941SmrgNineDevice9_SetVertexDeclaration( struct NineDevice9 *This,
675b8e80941Smrg                                  IDirect3DVertexDeclaration9 *pDecl );
676b8e80941Smrg
677b8e80941SmrgHRESULT NINE_WINAPI
678b8e80941SmrgNineDevice9_GetVertexDeclaration( struct NineDevice9 *This,
679b8e80941Smrg                                  IDirect3DVertexDeclaration9 **ppDecl );
680b8e80941Smrg
681b8e80941SmrgHRESULT NINE_WINAPI
682b8e80941SmrgNineDevice9_SetFVF( struct NineDevice9 *This,
683b8e80941Smrg                    DWORD FVF );
684b8e80941Smrg
685b8e80941SmrgHRESULT NINE_WINAPI
686b8e80941SmrgNineDevice9_GetFVF( struct NineDevice9 *This,
687b8e80941Smrg                    DWORD *pFVF );
688b8e80941Smrg
689b8e80941SmrgHRESULT NINE_WINAPI
690b8e80941SmrgNineDevice9_CreateVertexShader( struct NineDevice9 *This,
691b8e80941Smrg                                const DWORD *pFunction,
692b8e80941Smrg                                IDirect3DVertexShader9 **ppShader );
693b8e80941Smrg
694b8e80941SmrgHRESULT NINE_WINAPI
695b8e80941SmrgNineDevice9_SetVertexShader( struct NineDevice9 *This,
696b8e80941Smrg                             IDirect3DVertexShader9 *pShader );
697b8e80941Smrg
698b8e80941SmrgHRESULT NINE_WINAPI
699b8e80941SmrgNineDevice9_GetVertexShader( struct NineDevice9 *This,
700b8e80941Smrg                             IDirect3DVertexShader9 **ppShader );
701b8e80941Smrg
702b8e80941SmrgHRESULT NINE_WINAPI
703b8e80941SmrgNineDevice9_SetVertexShaderConstantF( struct NineDevice9 *This,
704b8e80941Smrg                                      UINT StartRegister,
705b8e80941Smrg                                      const float *pConstantData,
706b8e80941Smrg                                      UINT Vector4fCount );
707b8e80941Smrg
708b8e80941SmrgHRESULT NINE_WINAPI
709b8e80941SmrgNineDevice9_GetVertexShaderConstantF( struct NineDevice9 *This,
710b8e80941Smrg                                      UINT StartRegister,
711b8e80941Smrg                                      float *pConstantData,
712b8e80941Smrg                                      UINT Vector4fCount );
713b8e80941Smrg
714b8e80941SmrgHRESULT NINE_WINAPI
715b8e80941SmrgNineDevice9_SetVertexShaderConstantI( struct NineDevice9 *This,
716b8e80941Smrg                                      UINT StartRegister,
717b8e80941Smrg                                      const int *pConstantData,
718b8e80941Smrg                                      UINT Vector4iCount );
719b8e80941Smrg
720b8e80941SmrgHRESULT NINE_WINAPI
721b8e80941SmrgNineDevice9_GetVertexShaderConstantI( struct NineDevice9 *This,
722b8e80941Smrg                                      UINT StartRegister,
723b8e80941Smrg                                      int *pConstantData,
724b8e80941Smrg                                      UINT Vector4iCount );
725b8e80941Smrg
726b8e80941SmrgHRESULT NINE_WINAPI
727b8e80941SmrgNineDevice9_SetVertexShaderConstantB( struct NineDevice9 *This,
728b8e80941Smrg                                      UINT StartRegister,
729b8e80941Smrg                                      const BOOL *pConstantData,
730b8e80941Smrg                                      UINT BoolCount );
731b8e80941Smrg
732b8e80941SmrgHRESULT NINE_WINAPI
733b8e80941SmrgNineDevice9_GetVertexShaderConstantB( struct NineDevice9 *This,
734b8e80941Smrg                                      UINT StartRegister,
735b8e80941Smrg                                      BOOL *pConstantData,
736b8e80941Smrg                                      UINT BoolCount );
737b8e80941Smrg
738b8e80941SmrgHRESULT NINE_WINAPI
739b8e80941SmrgNineDevice9_SetStreamSource( struct NineDevice9 *This,
740b8e80941Smrg                             UINT StreamNumber,
741b8e80941Smrg                             IDirect3DVertexBuffer9 *pStreamData,
742b8e80941Smrg                             UINT OffsetInBytes,
743b8e80941Smrg                             UINT Stride );
744b8e80941Smrg
745b8e80941SmrgHRESULT NINE_WINAPI
746b8e80941SmrgNineDevice9_GetStreamSource( struct NineDevice9 *This,
747b8e80941Smrg                             UINT StreamNumber,
748b8e80941Smrg                             IDirect3DVertexBuffer9 **ppStreamData,
749b8e80941Smrg                             UINT *pOffsetInBytes,
750b8e80941Smrg                             UINT *pStride );
751b8e80941Smrg
752b8e80941SmrgHRESULT NINE_WINAPI
753b8e80941SmrgNineDevice9_SetStreamSourceFreq( struct NineDevice9 *This,
754b8e80941Smrg                                 UINT StreamNumber,
755b8e80941Smrg                                 UINT Setting );
756b8e80941Smrg
757b8e80941SmrgHRESULT NINE_WINAPI
758b8e80941SmrgNineDevice9_GetStreamSourceFreq( struct NineDevice9 *This,
759b8e80941Smrg                                 UINT StreamNumber,
760b8e80941Smrg                                 UINT *pSetting );
761b8e80941Smrg
762b8e80941SmrgHRESULT NINE_WINAPI
763b8e80941SmrgNineDevice9_SetIndices( struct NineDevice9 *This,
764b8e80941Smrg                        IDirect3DIndexBuffer9 *pIndexData );
765b8e80941Smrg
766b8e80941SmrgHRESULT NINE_WINAPI
767b8e80941SmrgNineDevice9_GetIndices( struct NineDevice9 *This,
768b8e80941Smrg                        IDirect3DIndexBuffer9 **ppIndexData /*,
769b8e80941Smrg                        UINT *pBaseVertexIndex */ );
770b8e80941Smrg
771b8e80941SmrgHRESULT NINE_WINAPI
772b8e80941SmrgNineDevice9_CreatePixelShader( struct NineDevice9 *This,
773b8e80941Smrg                               const DWORD *pFunction,
774b8e80941Smrg                               IDirect3DPixelShader9 **ppShader );
775b8e80941Smrg
776b8e80941SmrgHRESULT NINE_WINAPI
777b8e80941SmrgNineDevice9_SetPixelShader( struct NineDevice9 *This,
778b8e80941Smrg                            IDirect3DPixelShader9 *pShader );
779b8e80941Smrg
780b8e80941SmrgHRESULT NINE_WINAPI
781b8e80941SmrgNineDevice9_GetPixelShader( struct NineDevice9 *This,
782b8e80941Smrg                            IDirect3DPixelShader9 **ppShader );
783b8e80941Smrg
784b8e80941SmrgHRESULT NINE_WINAPI
785b8e80941SmrgNineDevice9_SetPixelShaderConstantF( struct NineDevice9 *This,
786b8e80941Smrg                                     UINT StartRegister,
787b8e80941Smrg                                     const float *pConstantData,
788b8e80941Smrg                                     UINT Vector4fCount );
789b8e80941Smrg
790b8e80941SmrgHRESULT NINE_WINAPI
791b8e80941SmrgNineDevice9_GetPixelShaderConstantF( struct NineDevice9 *This,
792b8e80941Smrg                                     UINT StartRegister,
793b8e80941Smrg                                     float *pConstantData,
794b8e80941Smrg                                     UINT Vector4fCount );
795b8e80941Smrg
796b8e80941SmrgHRESULT NINE_WINAPI
797b8e80941SmrgNineDevice9_SetPixelShaderConstantI( struct NineDevice9 *This,
798b8e80941Smrg                                     UINT StartRegister,
799b8e80941Smrg                                     const int *pConstantData,
800b8e80941Smrg                                     UINT Vector4iCount );
801b8e80941Smrg
802b8e80941SmrgHRESULT NINE_WINAPI
803b8e80941SmrgNineDevice9_GetPixelShaderConstantI( struct NineDevice9 *This,
804b8e80941Smrg                                     UINT StartRegister,
805b8e80941Smrg                                     int *pConstantData,
806b8e80941Smrg                                     UINT Vector4iCount );
807b8e80941Smrg
808b8e80941SmrgHRESULT NINE_WINAPI
809b8e80941SmrgNineDevice9_SetPixelShaderConstantB( struct NineDevice9 *This,
810b8e80941Smrg                                     UINT StartRegister,
811b8e80941Smrg                                     const BOOL *pConstantData,
812b8e80941Smrg                                     UINT BoolCount );
813b8e80941Smrg
814b8e80941SmrgHRESULT NINE_WINAPI
815b8e80941SmrgNineDevice9_GetPixelShaderConstantB( struct NineDevice9 *This,
816b8e80941Smrg                                     UINT StartRegister,
817b8e80941Smrg                                     BOOL *pConstantData,
818b8e80941Smrg                                     UINT BoolCount );
819b8e80941Smrg
820b8e80941SmrgHRESULT NINE_WINAPI
821b8e80941SmrgNineDevice9_DrawRectPatch( struct NineDevice9 *This,
822b8e80941Smrg                           UINT Handle,
823b8e80941Smrg                           const float *pNumSegs,
824b8e80941Smrg                           const D3DRECTPATCH_INFO *pRectPatchInfo );
825b8e80941Smrg
826b8e80941SmrgHRESULT NINE_WINAPI
827b8e80941SmrgNineDevice9_DrawTriPatch( struct NineDevice9 *This,
828b8e80941Smrg                          UINT Handle,
829b8e80941Smrg                          const float *pNumSegs,
830b8e80941Smrg                          const D3DTRIPATCH_INFO *pTriPatchInfo );
831b8e80941Smrg
832b8e80941SmrgHRESULT NINE_WINAPI
833b8e80941SmrgNineDevice9_DeletePatch( struct NineDevice9 *This,
834b8e80941Smrg                         UINT Handle );
835b8e80941Smrg
836b8e80941SmrgHRESULT NINE_WINAPI
837b8e80941SmrgNineDevice9_CreateQuery( struct NineDevice9 *This,
838b8e80941Smrg                         D3DQUERYTYPE Type,
839b8e80941Smrg                         IDirect3DQuery9 **ppQuery );
840b8e80941Smrg
841b8e80941Smrg#endif /* _NINE_DEVICE9_H_ */
842