17ec681f3Smrg/*
27ec681f3Smrg * Copyright 2011 Joakim Sindholt <opensource@zhasha.com>
37ec681f3Smrg *
47ec681f3Smrg * Permission is hereby granted, free of charge, to any person obtaining a
57ec681f3Smrg * copy of this software and associated documentation files (the "Software"),
67ec681f3Smrg * to deal in the Software without restriction, including without limitation
77ec681f3Smrg * on the rights to use, copy, modify, merge, publish, distribute, sub
87ec681f3Smrg * license, and/or sell copies of the Software, and to permit persons to whom
97ec681f3Smrg * the Software is furnished to do so, subject to the following conditions:
107ec681f3Smrg *
117ec681f3Smrg * The above copyright notice and this permission notice (including the next
127ec681f3Smrg * paragraph) shall be included in all copies or substantial portions of the
137ec681f3Smrg * Software.
147ec681f3Smrg *
157ec681f3Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
167ec681f3Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
177ec681f3Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
187ec681f3Smrg * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
197ec681f3Smrg * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
207ec681f3Smrg * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
217ec681f3Smrg * USE OR OTHER DEALINGS IN THE SOFTWARE. */
227ec681f3Smrg
237ec681f3Smrg#ifndef _NINE_DEVICE9_H_
247ec681f3Smrg#define _NINE_DEVICE9_H_
257ec681f3Smrg
267ec681f3Smrg#include "d3dadapter/d3dadapter9.h"
277ec681f3Smrg
287ec681f3Smrg#include "iunknown.h"
297ec681f3Smrg#include "adapter9.h"
307ec681f3Smrg
317ec681f3Smrg#include "nine_helpers.h"
327ec681f3Smrg#include "nine_memory_helper.h"
337ec681f3Smrg#include "nine_state.h"
347ec681f3Smrg
357ec681f3Smrgstruct gen_mipmap_state;
367ec681f3Smrgstruct hash_table;
377ec681f3Smrgstruct pipe_screen;
387ec681f3Smrgstruct pipe_context;
397ec681f3Smrgstruct cso_context;
407ec681f3Smrgstruct hud_context;
417ec681f3Smrgstruct u_upload_mgr;
427ec681f3Smrgstruct csmt_context;
437ec681f3Smrg
447ec681f3Smrgstruct NineSwapChain9;
457ec681f3Smrgstruct NineStateBlock9;
467ec681f3Smrg
477ec681f3Smrg#include "util/list.h"
487ec681f3Smrg
497ec681f3Smrgstruct NineDevice9
507ec681f3Smrg{
517ec681f3Smrg    struct NineUnknown base;
527ec681f3Smrg    boolean ex;
537ec681f3Smrg    boolean may_swvp;
547ec681f3Smrg
557ec681f3Smrg    /* G3D context */
567ec681f3Smrg    struct pipe_screen *screen;
577ec681f3Smrg    /* For first time upload. No Sync with rendering thread */
587ec681f3Smrg    struct pipe_context *pipe_secondary;
597ec681f3Smrg    struct pipe_screen *screen_sw;
607ec681f3Smrg    struct pipe_context *pipe_sw;
617ec681f3Smrg    struct cso_context *cso_sw;
627ec681f3Smrg
637ec681f3Smrg    /* CSMT context */
647ec681f3Smrg    struct csmt_context *csmt_ctx;
657ec681f3Smrg    BOOL csmt_active;
667ec681f3Smrg
677ec681f3Smrg    /* For DISCARD/NOOVERWRITE */
687ec681f3Smrg    struct nine_buffer_upload *buffer_upload;
697ec681f3Smrg
707ec681f3Smrg    /* creation parameters */
717ec681f3Smrg    D3DCAPS9 caps;
727ec681f3Smrg    D3DDEVICE_CREATION_PARAMETERS params;
737ec681f3Smrg    IDirect3D9 *d3d9;
747ec681f3Smrg
757ec681f3Smrg    /* swapchain stuff */
767ec681f3Smrg    ID3DPresentGroup *present;
777ec681f3Smrg    struct NineSwapChain9 **swapchains;
787ec681f3Smrg    unsigned nswapchains;
797ec681f3Smrg
807ec681f3Smrg    struct NineStateBlock9 *record;
817ec681f3Smrg    struct nine_state *update; /* state to update (&state / &record->state) */
827ec681f3Smrg    struct nine_state state;   /* device state */
837ec681f3Smrg    struct nine_context context;
847ec681f3Smrg    struct nine_state_sw_internal state_sw_internal;
857ec681f3Smrg
867ec681f3Smrg    struct list_head update_buffers;
877ec681f3Smrg    struct list_head update_textures;
887ec681f3Smrg    struct list_head managed_buffers;
897ec681f3Smrg    struct list_head managed_textures;
907ec681f3Smrg
917ec681f3Smrg    boolean is_recording;
927ec681f3Smrg    boolean in_scene;
937ec681f3Smrg    unsigned end_scene_since_present;
947ec681f3Smrg
957ec681f3Smrg    uint16_t vs_const_size;
967ec681f3Smrg    uint16_t ps_const_size;
977ec681f3Smrg    uint16_t max_vs_const_f;
987ec681f3Smrg    uint16_t max_ps_const_f;
997ec681f3Smrg
1007ec681f3Smrg    struct pipe_resource *dummy_texture;
1017ec681f3Smrg    struct pipe_sampler_view *dummy_sampler_view;
1027ec681f3Smrg    struct pipe_sampler_state dummy_sampler_state;
1037ec681f3Smrg
1047ec681f3Smrg    struct gen_mipmap_state *gen_mipmap;
1057ec681f3Smrg
1067ec681f3Smrg    struct {
1077ec681f3Smrg        struct hash_table *ht_vs;
1087ec681f3Smrg        struct hash_table *ht_ps;
1097ec681f3Smrg        struct NineVertexShader9 *vs;
1107ec681f3Smrg        struct NinePixelShader9 *ps;
1117ec681f3Smrg        unsigned num_vs;
1127ec681f3Smrg        unsigned num_ps;
1137ec681f3Smrg        float *vs_const;
1147ec681f3Smrg        float *ps_const;
1157ec681f3Smrg
1167ec681f3Smrg        struct hash_table *ht_fvf;
1177ec681f3Smrg    } ff;
1187ec681f3Smrg
1197ec681f3Smrg    struct {
1207ec681f3Smrg        struct pipe_resource *image;
1217ec681f3Smrg        unsigned w;
1227ec681f3Smrg        unsigned h;
1237ec681f3Smrg        POINT hotspot; /* -1, -1 if no cursor image set */
1247ec681f3Smrg        POINT pos;
1257ec681f3Smrg        BOOL visible;
1267ec681f3Smrg        boolean software;
1277ec681f3Smrg        void *hw_upload_temp;
1287ec681f3Smrg    } cursor;
1297ec681f3Smrg
1307ec681f3Smrg    struct {
1317ec681f3Smrg        boolean user_sw_vbufs;
1327ec681f3Smrg        boolean window_space_position_support;
1337ec681f3Smrg        boolean vs_integer;
1347ec681f3Smrg        boolean ps_integer;
1357ec681f3Smrg        boolean offset_units_unscaled;
1367ec681f3Smrg    } driver_caps;
1377ec681f3Smrg
1387ec681f3Smrg    struct {
1397ec681f3Smrg        boolean buggy_barycentrics;
1407ec681f3Smrg    } driver_bugs;
1417ec681f3Smrg
1427ec681f3Smrg    struct {
1437ec681f3Smrg        boolean dynamic_texture_workaround;
1447ec681f3Smrg    } workarounds;
1457ec681f3Smrg
1467ec681f3Smrg    struct u_upload_mgr *vertex_uploader;
1477ec681f3Smrg
1487ec681f3Smrg    struct nine_range_pool range_pool;
1497ec681f3Smrg
1507ec681f3Smrg    struct hud_context *hud; /* NULL if hud is disabled */
1517ec681f3Smrg
1527ec681f3Smrg    struct nine_allocator *allocator;
1537ec681f3Smrg
1547ec681f3Smrg    /* dummy vbo (containing 0 0 0 0) to bind if vertex shader input
1557ec681f3Smrg     * is not bound to anything by the vertex declaration */
1567ec681f3Smrg    struct pipe_resource *dummy_vbo;
1577ec681f3Smrg    BOOL device_needs_reset;
1587ec681f3Smrg    int minor_version_num;
1597ec681f3Smrg    long long available_texture_mem;
1607ec681f3Smrg    long long available_texture_limit;
1617ec681f3Smrg
1627ec681f3Smrg    /* software vertex processing */
1637ec681f3Smrg    boolean swvp;
1647ec681f3Smrg    /* pure device */
1657ec681f3Smrg    boolean pure;
1667ec681f3Smrg
1677ec681f3Smrg    unsigned frame_count; /* It's ok if we overflow */
1687ec681f3Smrg
1697ec681f3Smrg    /* Ex */
1707ec681f3Smrg    int gpu_priority;
1717ec681f3Smrg    unsigned max_frame_latency;
1727ec681f3Smrg};
1737ec681f3Smrgstatic inline struct NineDevice9 *
1747ec681f3SmrgNineDevice9( void *data )
1757ec681f3Smrg{
1767ec681f3Smrg    return (struct NineDevice9 *)data;
1777ec681f3Smrg}
1787ec681f3Smrg
1797ec681f3SmrgHRESULT
1807ec681f3SmrgNineDevice9_new( struct pipe_screen *pScreen,
1817ec681f3Smrg                 D3DDEVICE_CREATION_PARAMETERS *pCreationParameters,
1827ec681f3Smrg                 D3DCAPS9 *pCaps,
1837ec681f3Smrg                 D3DPRESENT_PARAMETERS *pPresentationParameters,
1847ec681f3Smrg                 IDirect3D9 *pD3D9,
1857ec681f3Smrg                 ID3DPresentGroup *pPresentationGroup,
1867ec681f3Smrg                 struct d3dadapter9_context *pCTX,
1877ec681f3Smrg                 boolean ex,
1887ec681f3Smrg                 D3DDISPLAYMODEEX *pFullscreenDisplayMode,
1897ec681f3Smrg                 struct NineDevice9 **ppOut,
1907ec681f3Smrg                 int minorVersionNum );
1917ec681f3Smrg
1927ec681f3SmrgHRESULT
1937ec681f3SmrgNineDevice9_ctor( struct NineDevice9 *This,
1947ec681f3Smrg                  struct NineUnknownParams *pParams,
1957ec681f3Smrg                  struct pipe_screen *pScreen,
1967ec681f3Smrg                  D3DDEVICE_CREATION_PARAMETERS *pCreationParameters,
1977ec681f3Smrg                  D3DCAPS9 *pCaps,
1987ec681f3Smrg                  D3DPRESENT_PARAMETERS *pPresentationParameters,
1997ec681f3Smrg                  IDirect3D9 *pD3D9,
2007ec681f3Smrg                  ID3DPresentGroup *pPresentationGroup,
2017ec681f3Smrg                  struct d3dadapter9_context *pCTX,
2027ec681f3Smrg                  boolean ex,
2037ec681f3Smrg                  D3DDISPLAYMODEEX *pFullscreenDisplayMode,
2047ec681f3Smrg                  int minorVersionNum );
2057ec681f3Smrg
2067ec681f3Smrgvoid
2077ec681f3SmrgNineDevice9_dtor( struct NineDevice9 *This );
2087ec681f3Smrg
2097ec681f3Smrg/*** Nine private ***/
2107ec681f3Smrgstruct pipe_resource *
2117ec681f3Smrgnine_resource_create_with_retry( struct NineDevice9 *This,
2127ec681f3Smrg                                 struct pipe_screen *screen,
2137ec681f3Smrg                                 const struct pipe_resource *templat );
2147ec681f3Smrg
2157ec681f3Smrgvoid
2167ec681f3SmrgNineDevice9_SetDefaultState( struct NineDevice9 *This, boolean is_reset );
2177ec681f3Smrg
2187ec681f3Smrgstruct pipe_screen *
2197ec681f3SmrgNineDevice9_GetScreen( struct NineDevice9 *This );
2207ec681f3Smrg
2217ec681f3Smrgstruct pipe_context *
2227ec681f3SmrgNineDevice9_GetPipe( struct NineDevice9 *This );
2237ec681f3Smrg
2247ec681f3Smrgconst D3DCAPS9 *
2257ec681f3SmrgNineDevice9_GetCaps( struct NineDevice9 *This );
2267ec681f3Smrg
2277ec681f3Smrgvoid
2287ec681f3SmrgNineDevice9_EvictManagedResourcesInternal( struct NineDevice9 *This );
2297ec681f3Smrg
2307ec681f3Smrg/*** Direct3D public ***/
2317ec681f3Smrg
2327ec681f3SmrgHRESULT NINE_WINAPI
2337ec681f3SmrgNineDevice9_TestCooperativeLevel( struct NineDevice9 *This );
2347ec681f3Smrg
2357ec681f3SmrgUINT NINE_WINAPI
2367ec681f3SmrgNineDevice9_GetAvailableTextureMem( struct NineDevice9 *This );
2377ec681f3Smrg
2387ec681f3SmrgHRESULT NINE_WINAPI
2397ec681f3SmrgNineDevice9_EvictManagedResources( struct NineDevice9 *This );
2407ec681f3Smrg
2417ec681f3SmrgHRESULT NINE_WINAPI
2427ec681f3SmrgNineDevice9_GetDirect3D( struct NineDevice9 *This,
2437ec681f3Smrg                         IDirect3D9 **ppD3D9 );
2447ec681f3Smrg
2457ec681f3SmrgHRESULT NINE_WINAPI
2467ec681f3SmrgNineDevice9_GetDeviceCaps( struct NineDevice9 *This,
2477ec681f3Smrg                           D3DCAPS9 *pCaps );
2487ec681f3Smrg
2497ec681f3SmrgHRESULT NINE_WINAPI
2507ec681f3SmrgNineDevice9_GetDisplayMode( struct NineDevice9 *This,
2517ec681f3Smrg                            UINT iSwapChain,
2527ec681f3Smrg                            D3DDISPLAYMODE *pMode );
2537ec681f3Smrg
2547ec681f3SmrgHRESULT NINE_WINAPI
2557ec681f3SmrgNineDevice9_GetCreationParameters( struct NineDevice9 *This,
2567ec681f3Smrg                                   D3DDEVICE_CREATION_PARAMETERS *pParameters );
2577ec681f3Smrg
2587ec681f3SmrgHRESULT NINE_WINAPI
2597ec681f3SmrgNineDevice9_SetCursorProperties( struct NineDevice9 *This,
2607ec681f3Smrg                                 UINT XHotSpot,
2617ec681f3Smrg                                 UINT YHotSpot,
2627ec681f3Smrg                                 IDirect3DSurface9 *pCursorBitmap );
2637ec681f3Smrg
2647ec681f3Smrgvoid NINE_WINAPI
2657ec681f3SmrgNineDevice9_SetCursorPosition( struct NineDevice9 *This,
2667ec681f3Smrg                               int X,
2677ec681f3Smrg                               int Y,
2687ec681f3Smrg                               DWORD Flags );
2697ec681f3Smrg
2707ec681f3SmrgBOOL NINE_WINAPI
2717ec681f3SmrgNineDevice9_ShowCursor( struct NineDevice9 *This,
2727ec681f3Smrg                        BOOL bShow );
2737ec681f3Smrg
2747ec681f3SmrgHRESULT NINE_WINAPI
2757ec681f3SmrgNineDevice9_CreateAdditionalSwapChain( struct NineDevice9 *This,
2767ec681f3Smrg                                       D3DPRESENT_PARAMETERS *pPresentationParameters,
2777ec681f3Smrg                                       IDirect3DSwapChain9 **pSwapChain );
2787ec681f3Smrg
2797ec681f3SmrgHRESULT NINE_WINAPI
2807ec681f3SmrgNineDevice9_GetSwapChain( struct NineDevice9 *This,
2817ec681f3Smrg                          UINT iSwapChain,
2827ec681f3Smrg                          IDirect3DSwapChain9 **pSwapChain );
2837ec681f3Smrg
2847ec681f3SmrgUINT NINE_WINAPI
2857ec681f3SmrgNineDevice9_GetNumberOfSwapChains( struct NineDevice9 *This );
2867ec681f3Smrg
2877ec681f3SmrgHRESULT NINE_WINAPI
2887ec681f3SmrgNineDevice9_Reset( struct NineDevice9 *This,
2897ec681f3Smrg                   D3DPRESENT_PARAMETERS *pPresentationParameters );
2907ec681f3Smrg
2917ec681f3SmrgHRESULT NINE_WINAPI
2927ec681f3SmrgNineDevice9_Present( struct NineDevice9 *This,
2937ec681f3Smrg                     const RECT *pSourceRect,
2947ec681f3Smrg                     const RECT *pDestRect,
2957ec681f3Smrg                     HWND hDestWindowOverride,
2967ec681f3Smrg                     const RGNDATA *pDirtyRegion );
2977ec681f3Smrg
2987ec681f3SmrgHRESULT NINE_WINAPI
2997ec681f3SmrgNineDevice9_GetBackBuffer( struct NineDevice9 *This,
3007ec681f3Smrg                           UINT iSwapChain,
3017ec681f3Smrg                           UINT iBackBuffer,
3027ec681f3Smrg                           D3DBACKBUFFER_TYPE Type,
3037ec681f3Smrg                           IDirect3DSurface9 **ppBackBuffer );
3047ec681f3Smrg
3057ec681f3SmrgHRESULT NINE_WINAPI
3067ec681f3SmrgNineDevice9_GetRasterStatus( struct NineDevice9 *This,
3077ec681f3Smrg                             UINT iSwapChain,
3087ec681f3Smrg                             D3DRASTER_STATUS *pRasterStatus );
3097ec681f3Smrg
3107ec681f3SmrgHRESULT NINE_WINAPI
3117ec681f3SmrgNineDevice9_SetDialogBoxMode( struct NineDevice9 *This,
3127ec681f3Smrg                              BOOL bEnableDialogs );
3137ec681f3Smrg
3147ec681f3Smrgvoid NINE_WINAPI
3157ec681f3SmrgNineDevice9_SetGammaRamp( struct NineDevice9 *This,
3167ec681f3Smrg                          UINT iSwapChain,
3177ec681f3Smrg                          DWORD Flags,
3187ec681f3Smrg                          const D3DGAMMARAMP *pRamp );
3197ec681f3Smrg
3207ec681f3Smrgvoid NINE_WINAPI
3217ec681f3SmrgNineDevice9_GetGammaRamp( struct NineDevice9 *This,
3227ec681f3Smrg                          UINT iSwapChain,
3237ec681f3Smrg                          D3DGAMMARAMP *pRamp );
3247ec681f3Smrg
3257ec681f3SmrgHRESULT NINE_WINAPI
3267ec681f3SmrgNineDevice9_CreateTexture( struct NineDevice9 *This,
3277ec681f3Smrg                           UINT Width,
3287ec681f3Smrg                           UINT Height,
3297ec681f3Smrg                           UINT Levels,
3307ec681f3Smrg                           DWORD Usage,
3317ec681f3Smrg                           D3DFORMAT Format,
3327ec681f3Smrg                           D3DPOOL Pool,
3337ec681f3Smrg                           IDirect3DTexture9 **ppTexture,
3347ec681f3Smrg                           HANDLE *pSharedHandle );
3357ec681f3Smrg
3367ec681f3SmrgHRESULT NINE_WINAPI
3377ec681f3SmrgNineDevice9_CreateVolumeTexture( struct NineDevice9 *This,
3387ec681f3Smrg                                 UINT Width,
3397ec681f3Smrg                                 UINT Height,
3407ec681f3Smrg                                 UINT Depth,
3417ec681f3Smrg                                 UINT Levels,
3427ec681f3Smrg                                 DWORD Usage,
3437ec681f3Smrg                                 D3DFORMAT Format,
3447ec681f3Smrg                                 D3DPOOL Pool,
3457ec681f3Smrg                                 IDirect3DVolumeTexture9 **ppVolumeTexture,
3467ec681f3Smrg                                 HANDLE *pSharedHandle );
3477ec681f3Smrg
3487ec681f3SmrgHRESULT NINE_WINAPI
3497ec681f3SmrgNineDevice9_CreateCubeTexture( struct NineDevice9 *This,
3507ec681f3Smrg                               UINT EdgeLength,
3517ec681f3Smrg                               UINT Levels,
3527ec681f3Smrg                               DWORD Usage,
3537ec681f3Smrg                               D3DFORMAT Format,
3547ec681f3Smrg                               D3DPOOL Pool,
3557ec681f3Smrg                               IDirect3DCubeTexture9 **ppCubeTexture,
3567ec681f3Smrg                               HANDLE *pSharedHandle );
3577ec681f3Smrg
3587ec681f3SmrgHRESULT NINE_WINAPI
3597ec681f3SmrgNineDevice9_CreateVertexBuffer( struct NineDevice9 *This,
3607ec681f3Smrg                                UINT Length,
3617ec681f3Smrg                                DWORD Usage,
3627ec681f3Smrg                                DWORD FVF,
3637ec681f3Smrg                                D3DPOOL Pool,
3647ec681f3Smrg                                IDirect3DVertexBuffer9 **ppVertexBuffer,
3657ec681f3Smrg                                HANDLE *pSharedHandle );
3667ec681f3Smrg
3677ec681f3SmrgHRESULT NINE_WINAPI
3687ec681f3SmrgNineDevice9_CreateIndexBuffer( struct NineDevice9 *This,
3697ec681f3Smrg                               UINT Length,
3707ec681f3Smrg                               DWORD Usage,
3717ec681f3Smrg                               D3DFORMAT Format,
3727ec681f3Smrg                               D3DPOOL Pool,
3737ec681f3Smrg                               IDirect3DIndexBuffer9 **ppIndexBuffer,
3747ec681f3Smrg                               HANDLE *pSharedHandle );
3757ec681f3Smrg
3767ec681f3SmrgHRESULT NINE_WINAPI
3777ec681f3SmrgNineDevice9_CreateRenderTarget( struct NineDevice9 *This,
3787ec681f3Smrg                                UINT Width,
3797ec681f3Smrg                                UINT Height,
3807ec681f3Smrg                                D3DFORMAT Format,
3817ec681f3Smrg                                D3DMULTISAMPLE_TYPE MultiSample,
3827ec681f3Smrg                                DWORD MultisampleQuality,
3837ec681f3Smrg                                BOOL Lockable,
3847ec681f3Smrg                                IDirect3DSurface9 **ppSurface,
3857ec681f3Smrg                                HANDLE *pSharedHandle );
3867ec681f3Smrg
3877ec681f3SmrgHRESULT NINE_WINAPI
3887ec681f3SmrgNineDevice9_CreateDepthStencilSurface( struct NineDevice9 *This,
3897ec681f3Smrg                                       UINT Width,
3907ec681f3Smrg                                       UINT Height,
3917ec681f3Smrg                                       D3DFORMAT Format,
3927ec681f3Smrg                                       D3DMULTISAMPLE_TYPE MultiSample,
3937ec681f3Smrg                                       DWORD MultisampleQuality,
3947ec681f3Smrg                                       BOOL Discard,
3957ec681f3Smrg                                       IDirect3DSurface9 **ppSurface,
3967ec681f3Smrg                                       HANDLE *pSharedHandle );
3977ec681f3Smrg
3987ec681f3SmrgHRESULT NINE_WINAPI
3997ec681f3SmrgNineDevice9_UpdateSurface( struct NineDevice9 *This,
4007ec681f3Smrg                           IDirect3DSurface9 *pSourceSurface,
4017ec681f3Smrg                           const RECT *pSourceRect,
4027ec681f3Smrg                           IDirect3DSurface9 *pDestinationSurface,
4037ec681f3Smrg                           const POINT *pDestPoint );
4047ec681f3Smrg
4057ec681f3SmrgHRESULT NINE_WINAPI
4067ec681f3SmrgNineDevice9_UpdateTexture( struct NineDevice9 *This,
4077ec681f3Smrg                           IDirect3DBaseTexture9 *pSourceTexture,
4087ec681f3Smrg                           IDirect3DBaseTexture9 *pDestinationTexture );
4097ec681f3Smrg
4107ec681f3SmrgHRESULT NINE_WINAPI
4117ec681f3SmrgNineDevice9_GetRenderTargetData( struct NineDevice9 *This,
4127ec681f3Smrg                                 IDirect3DSurface9 *pRenderTarget,
4137ec681f3Smrg                                 IDirect3DSurface9 *pDestSurface );
4147ec681f3Smrg
4157ec681f3SmrgHRESULT NINE_WINAPI
4167ec681f3SmrgNineDevice9_GetFrontBufferData( struct NineDevice9 *This,
4177ec681f3Smrg                                UINT iSwapChain,
4187ec681f3Smrg                                IDirect3DSurface9 *pDestSurface );
4197ec681f3Smrg
4207ec681f3SmrgHRESULT NINE_WINAPI
4217ec681f3SmrgNineDevice9_StretchRect( struct NineDevice9 *This,
4227ec681f3Smrg                         IDirect3DSurface9 *pSourceSurface,
4237ec681f3Smrg                         const RECT *pSourceRect,
4247ec681f3Smrg                         IDirect3DSurface9 *pDestSurface,
4257ec681f3Smrg                         const RECT *pDestRect,
4267ec681f3Smrg                         D3DTEXTUREFILTERTYPE Filter );
4277ec681f3Smrg
4287ec681f3SmrgHRESULT NINE_WINAPI
4297ec681f3SmrgNineDevice9_ColorFill( struct NineDevice9 *This,
4307ec681f3Smrg                       IDirect3DSurface9 *pSurface,
4317ec681f3Smrg                       const RECT *pRect,
4327ec681f3Smrg                       D3DCOLOR color );
4337ec681f3Smrg
4347ec681f3SmrgHRESULT NINE_WINAPI
4357ec681f3SmrgNineDevice9_CreateOffscreenPlainSurface( struct NineDevice9 *This,
4367ec681f3Smrg                                         UINT Width,
4377ec681f3Smrg                                         UINT Height,
4387ec681f3Smrg                                         D3DFORMAT Format,
4397ec681f3Smrg                                         D3DPOOL Pool,
4407ec681f3Smrg                                         IDirect3DSurface9 **ppSurface,
4417ec681f3Smrg                                         HANDLE *pSharedHandle );
4427ec681f3Smrg
4437ec681f3SmrgHRESULT NINE_WINAPI
4447ec681f3SmrgNineDevice9_SetRenderTarget( struct NineDevice9 *This,
4457ec681f3Smrg                             DWORD RenderTargetIndex,
4467ec681f3Smrg                             IDirect3DSurface9 *pRenderTarget );
4477ec681f3Smrg
4487ec681f3SmrgHRESULT NINE_WINAPI
4497ec681f3SmrgNineDevice9_GetRenderTarget( struct NineDevice9 *This,
4507ec681f3Smrg                             DWORD RenderTargetIndex,
4517ec681f3Smrg                             IDirect3DSurface9 **ppRenderTarget );
4527ec681f3Smrg
4537ec681f3SmrgHRESULT NINE_WINAPI
4547ec681f3SmrgNineDevice9_SetDepthStencilSurface( struct NineDevice9 *This,
4557ec681f3Smrg                                    IDirect3DSurface9 *pNewZStencil );
4567ec681f3Smrg
4577ec681f3SmrgHRESULT NINE_WINAPI
4587ec681f3SmrgNineDevice9_GetDepthStencilSurface( struct NineDevice9 *This,
4597ec681f3Smrg                                    IDirect3DSurface9 **ppZStencilSurface );
4607ec681f3Smrg
4617ec681f3SmrgHRESULT NINE_WINAPI
4627ec681f3SmrgNineDevice9_BeginScene( struct NineDevice9 *This );
4637ec681f3Smrg
4647ec681f3SmrgHRESULT NINE_WINAPI
4657ec681f3SmrgNineDevice9_EndScene( struct NineDevice9 *This );
4667ec681f3Smrg
4677ec681f3SmrgHRESULT NINE_WINAPI
4687ec681f3SmrgNineDevice9_Clear( struct NineDevice9 *This,
4697ec681f3Smrg                   DWORD Count,
4707ec681f3Smrg                   const D3DRECT *pRects,
4717ec681f3Smrg                   DWORD Flags,
4727ec681f3Smrg                   D3DCOLOR Color,
4737ec681f3Smrg                   float Z,
4747ec681f3Smrg                   DWORD Stencil );
4757ec681f3Smrg
4767ec681f3SmrgHRESULT NINE_WINAPI
4777ec681f3SmrgNineDevice9_SetTransform( struct NineDevice9 *This,
4787ec681f3Smrg                          D3DTRANSFORMSTATETYPE State,
4797ec681f3Smrg                          const D3DMATRIX *pMatrix );
4807ec681f3Smrg
4817ec681f3SmrgHRESULT NINE_WINAPI
4827ec681f3SmrgNineDevice9_GetTransform( struct NineDevice9 *This,
4837ec681f3Smrg                          D3DTRANSFORMSTATETYPE State,
4847ec681f3Smrg                          D3DMATRIX *pMatrix );
4857ec681f3Smrg
4867ec681f3SmrgHRESULT NINE_WINAPI
4877ec681f3SmrgNineDevice9_MultiplyTransform( struct NineDevice9 *This,
4887ec681f3Smrg                               D3DTRANSFORMSTATETYPE State,
4897ec681f3Smrg                               const D3DMATRIX *pMatrix );
4907ec681f3Smrg
4917ec681f3SmrgHRESULT NINE_WINAPI
4927ec681f3SmrgNineDevice9_SetViewport( struct NineDevice9 *This,
4937ec681f3Smrg                         const D3DVIEWPORT9 *pViewport );
4947ec681f3Smrg
4957ec681f3SmrgHRESULT NINE_WINAPI
4967ec681f3SmrgNineDevice9_GetViewport( struct NineDevice9 *This,
4977ec681f3Smrg                         D3DVIEWPORT9 *pViewport );
4987ec681f3Smrg
4997ec681f3SmrgHRESULT NINE_WINAPI
5007ec681f3SmrgNineDevice9_SetMaterial( struct NineDevice9 *This,
5017ec681f3Smrg                         const D3DMATERIAL9 *pMaterial );
5027ec681f3Smrg
5037ec681f3SmrgHRESULT NINE_WINAPI
5047ec681f3SmrgNineDevice9_GetMaterial( struct NineDevice9 *This,
5057ec681f3Smrg                         D3DMATERIAL9 *pMaterial );
5067ec681f3Smrg
5077ec681f3SmrgHRESULT NINE_WINAPI
5087ec681f3SmrgNineDevice9_SetLight( struct NineDevice9 *This,
5097ec681f3Smrg                      DWORD Index,
5107ec681f3Smrg                      const D3DLIGHT9 *pLight );
5117ec681f3Smrg
5127ec681f3SmrgHRESULT NINE_WINAPI
5137ec681f3SmrgNineDevice9_GetLight( struct NineDevice9 *This,
5147ec681f3Smrg                      DWORD Index,
5157ec681f3Smrg                      D3DLIGHT9 *pLight );
5167ec681f3Smrg
5177ec681f3SmrgHRESULT NINE_WINAPI
5187ec681f3SmrgNineDevice9_LightEnable( struct NineDevice9 *This,
5197ec681f3Smrg                         DWORD Index,
5207ec681f3Smrg                         BOOL Enable );
5217ec681f3Smrg
5227ec681f3SmrgHRESULT NINE_WINAPI
5237ec681f3SmrgNineDevice9_GetLightEnable( struct NineDevice9 *This,
5247ec681f3Smrg                            DWORD Index,
5257ec681f3Smrg                            BOOL *pEnable );
5267ec681f3Smrg
5277ec681f3SmrgHRESULT NINE_WINAPI
5287ec681f3SmrgNineDevice9_SetClipPlane( struct NineDevice9 *This,
5297ec681f3Smrg                          DWORD Index,
5307ec681f3Smrg                          const float *pPlane );
5317ec681f3Smrg
5327ec681f3SmrgHRESULT NINE_WINAPI
5337ec681f3SmrgNineDevice9_GetClipPlane( struct NineDevice9 *This,
5347ec681f3Smrg                          DWORD Index,
5357ec681f3Smrg                          float *pPlane );
5367ec681f3Smrg
5377ec681f3SmrgHRESULT NINE_WINAPI
5387ec681f3SmrgNineDevice9_SetRenderState( struct NineDevice9 *This,
5397ec681f3Smrg                            D3DRENDERSTATETYPE State,
5407ec681f3Smrg                            DWORD Value );
5417ec681f3Smrg
5427ec681f3SmrgHRESULT NINE_WINAPI
5437ec681f3SmrgNineDevice9_GetRenderState( struct NineDevice9 *This,
5447ec681f3Smrg                            D3DRENDERSTATETYPE State,
5457ec681f3Smrg                            DWORD *pValue );
5467ec681f3Smrg
5477ec681f3SmrgHRESULT NINE_WINAPI
5487ec681f3SmrgNineDevice9_CreateStateBlock( struct NineDevice9 *This,
5497ec681f3Smrg                              D3DSTATEBLOCKTYPE Type,
5507ec681f3Smrg                              IDirect3DStateBlock9 **ppSB );
5517ec681f3Smrg
5527ec681f3SmrgHRESULT NINE_WINAPI
5537ec681f3SmrgNineDevice9_BeginStateBlock( struct NineDevice9 *This );
5547ec681f3Smrg
5557ec681f3SmrgHRESULT NINE_WINAPI
5567ec681f3SmrgNineDevice9_EndStateBlock( struct NineDevice9 *This,
5577ec681f3Smrg                           IDirect3DStateBlock9 **ppSB );
5587ec681f3Smrg
5597ec681f3SmrgHRESULT NINE_WINAPI
5607ec681f3SmrgNineDevice9_SetClipStatus( struct NineDevice9 *This,
5617ec681f3Smrg                           const D3DCLIPSTATUS9 *pClipStatus );
5627ec681f3Smrg
5637ec681f3SmrgHRESULT NINE_WINAPI
5647ec681f3SmrgNineDevice9_GetClipStatus( struct NineDevice9 *This,
5657ec681f3Smrg                           D3DCLIPSTATUS9 *pClipStatus );
5667ec681f3Smrg
5677ec681f3SmrgHRESULT NINE_WINAPI
5687ec681f3SmrgNineDevice9_GetTexture( struct NineDevice9 *This,
5697ec681f3Smrg                        DWORD Stage,
5707ec681f3Smrg                        IDirect3DBaseTexture9 **ppTexture );
5717ec681f3Smrg
5727ec681f3SmrgHRESULT NINE_WINAPI
5737ec681f3SmrgNineDevice9_SetTexture( struct NineDevice9 *This,
5747ec681f3Smrg                        DWORD Stage,
5757ec681f3Smrg                        IDirect3DBaseTexture9 *pTexture );
5767ec681f3Smrg
5777ec681f3SmrgHRESULT NINE_WINAPI
5787ec681f3SmrgNineDevice9_GetTextureStageState( struct NineDevice9 *This,
5797ec681f3Smrg                                  DWORD Stage,
5807ec681f3Smrg                                  D3DTEXTURESTAGESTATETYPE Type,
5817ec681f3Smrg                                  DWORD *pValue );
5827ec681f3Smrg
5837ec681f3SmrgHRESULT NINE_WINAPI
5847ec681f3SmrgNineDevice9_SetTextureStageState( struct NineDevice9 *This,
5857ec681f3Smrg                                  DWORD Stage,
5867ec681f3Smrg                                  D3DTEXTURESTAGESTATETYPE Type,
5877ec681f3Smrg                                  DWORD Value );
5887ec681f3Smrg
5897ec681f3SmrgHRESULT NINE_WINAPI
5907ec681f3SmrgNineDevice9_GetSamplerState( struct NineDevice9 *This,
5917ec681f3Smrg                             DWORD Sampler,
5927ec681f3Smrg                             D3DSAMPLERSTATETYPE Type,
5937ec681f3Smrg                             DWORD *pValue );
5947ec681f3Smrg
5957ec681f3SmrgHRESULT NINE_WINAPI
5967ec681f3SmrgNineDevice9_SetSamplerState( struct NineDevice9 *This,
5977ec681f3Smrg                             DWORD Sampler,
5987ec681f3Smrg                             D3DSAMPLERSTATETYPE Type,
5997ec681f3Smrg                             DWORD Value );
6007ec681f3Smrg
6017ec681f3SmrgHRESULT NINE_WINAPI
6027ec681f3SmrgNineDevice9_ValidateDevice( struct NineDevice9 *This,
6037ec681f3Smrg                            DWORD *pNumPasses );
6047ec681f3Smrg
6057ec681f3SmrgHRESULT NINE_WINAPI
6067ec681f3SmrgNineDevice9_SetPaletteEntries( struct NineDevice9 *This,
6077ec681f3Smrg                               UINT PaletteNumber,
6087ec681f3Smrg                               const PALETTEENTRY *pEntries );
6097ec681f3Smrg
6107ec681f3SmrgHRESULT NINE_WINAPI
6117ec681f3SmrgNineDevice9_GetPaletteEntries( struct NineDevice9 *This,
6127ec681f3Smrg                               UINT PaletteNumber,
6137ec681f3Smrg                               PALETTEENTRY *pEntries );
6147ec681f3Smrg
6157ec681f3SmrgHRESULT NINE_WINAPI
6167ec681f3SmrgNineDevice9_SetCurrentTexturePalette( struct NineDevice9 *This,
6177ec681f3Smrg                                      UINT PaletteNumber );
6187ec681f3Smrg
6197ec681f3SmrgHRESULT NINE_WINAPI
6207ec681f3SmrgNineDevice9_GetCurrentTexturePalette( struct NineDevice9 *This,
6217ec681f3Smrg                                      UINT *PaletteNumber );
6227ec681f3Smrg
6237ec681f3SmrgHRESULT NINE_WINAPI
6247ec681f3SmrgNineDevice9_SetScissorRect( struct NineDevice9 *This,
6257ec681f3Smrg                            const RECT *pRect );
6267ec681f3Smrg
6277ec681f3SmrgHRESULT NINE_WINAPI
6287ec681f3SmrgNineDevice9_GetScissorRect( struct NineDevice9 *This,
6297ec681f3Smrg                            RECT *pRect );
6307ec681f3Smrg
6317ec681f3SmrgHRESULT NINE_WINAPI
6327ec681f3SmrgNineDevice9_SetSoftwareVertexProcessing( struct NineDevice9 *This,
6337ec681f3Smrg                                         BOOL bSoftware );
6347ec681f3Smrg
6357ec681f3SmrgBOOL NINE_WINAPI
6367ec681f3SmrgNineDevice9_GetSoftwareVertexProcessing( struct NineDevice9 *This );
6377ec681f3Smrg
6387ec681f3SmrgHRESULT NINE_WINAPI
6397ec681f3SmrgNineDevice9_SetNPatchMode( struct NineDevice9 *This,
6407ec681f3Smrg                           float nSegments );
6417ec681f3Smrg
6427ec681f3Smrgfloat NINE_WINAPI
6437ec681f3SmrgNineDevice9_GetNPatchMode( struct NineDevice9 *This );
6447ec681f3Smrg
6457ec681f3SmrgHRESULT NINE_WINAPI
6467ec681f3SmrgNineDevice9_DrawPrimitive( struct NineDevice9 *This,
6477ec681f3Smrg                           D3DPRIMITIVETYPE PrimitiveType,
6487ec681f3Smrg                           UINT StartVertex,
6497ec681f3Smrg                           UINT PrimitiveCount );
6507ec681f3Smrg
6517ec681f3SmrgHRESULT NINE_WINAPI
6527ec681f3SmrgNineDevice9_DrawIndexedPrimitive( struct NineDevice9 *This,
6537ec681f3Smrg                                  D3DPRIMITIVETYPE PrimitiveType,
6547ec681f3Smrg                                  INT BaseVertexIndex,
6557ec681f3Smrg                                  UINT MinVertexIndex,
6567ec681f3Smrg                                  UINT NumVertices,
6577ec681f3Smrg                                  UINT startIndex,
6587ec681f3Smrg                                  UINT primCount );
6597ec681f3Smrg
6607ec681f3SmrgHRESULT NINE_WINAPI
6617ec681f3SmrgNineDevice9_DrawPrimitiveUP( struct NineDevice9 *This,
6627ec681f3Smrg                             D3DPRIMITIVETYPE PrimitiveType,
6637ec681f3Smrg                             UINT PrimitiveCount,
6647ec681f3Smrg                             const void *pVertexStreamZeroData,
6657ec681f3Smrg                             UINT VertexStreamZeroStride );
6667ec681f3Smrg
6677ec681f3SmrgHRESULT NINE_WINAPI
6687ec681f3SmrgNineDevice9_DrawIndexedPrimitiveUP( struct NineDevice9 *This,
6697ec681f3Smrg                                    D3DPRIMITIVETYPE PrimitiveType,
6707ec681f3Smrg                                    UINT MinVertexIndex,
6717ec681f3Smrg                                    UINT NumVertices,
6727ec681f3Smrg                                    UINT PrimitiveCount,
6737ec681f3Smrg                                    const void *pIndexData,
6747ec681f3Smrg                                    D3DFORMAT IndexDataFormat,
6757ec681f3Smrg                                    const void *pVertexStreamZeroData,
6767ec681f3Smrg                                    UINT VertexStreamZeroStride );
6777ec681f3Smrg
6787ec681f3SmrgHRESULT NINE_WINAPI
6797ec681f3SmrgNineDevice9_ProcessVertices( struct NineDevice9 *This,
6807ec681f3Smrg                             UINT SrcStartIndex,
6817ec681f3Smrg                             UINT DestIndex,
6827ec681f3Smrg                             UINT VertexCount,
6837ec681f3Smrg                             IDirect3DVertexBuffer9 *pDestBuffer,
6847ec681f3Smrg                             IDirect3DVertexDeclaration9 *pVertexDecl,
6857ec681f3Smrg                             DWORD Flags );
6867ec681f3Smrg
6877ec681f3SmrgHRESULT NINE_WINAPI
6887ec681f3SmrgNineDevice9_CreateVertexDeclaration( struct NineDevice9 *This,
6897ec681f3Smrg                                     const D3DVERTEXELEMENT9 *pVertexElements,
6907ec681f3Smrg                                     IDirect3DVertexDeclaration9 **ppDecl );
6917ec681f3Smrg
6927ec681f3SmrgHRESULT NINE_WINAPI
6937ec681f3SmrgNineDevice9_SetVertexDeclaration( struct NineDevice9 *This,
6947ec681f3Smrg                                  IDirect3DVertexDeclaration9 *pDecl );
6957ec681f3Smrg
6967ec681f3SmrgHRESULT NINE_WINAPI
6977ec681f3SmrgNineDevice9_GetVertexDeclaration( struct NineDevice9 *This,
6987ec681f3Smrg                                  IDirect3DVertexDeclaration9 **ppDecl );
6997ec681f3Smrg
7007ec681f3SmrgHRESULT NINE_WINAPI
7017ec681f3SmrgNineDevice9_SetFVF( struct NineDevice9 *This,
7027ec681f3Smrg                    DWORD FVF );
7037ec681f3Smrg
7047ec681f3SmrgHRESULT NINE_WINAPI
7057ec681f3SmrgNineDevice9_GetFVF( struct NineDevice9 *This,
7067ec681f3Smrg                    DWORD *pFVF );
7077ec681f3Smrg
7087ec681f3SmrgHRESULT NINE_WINAPI
7097ec681f3SmrgNineDevice9_CreateVertexShader( struct NineDevice9 *This,
7107ec681f3Smrg                                const DWORD *pFunction,
7117ec681f3Smrg                                IDirect3DVertexShader9 **ppShader );
7127ec681f3Smrg
7137ec681f3SmrgHRESULT NINE_WINAPI
7147ec681f3SmrgNineDevice9_SetVertexShader( struct NineDevice9 *This,
7157ec681f3Smrg                             IDirect3DVertexShader9 *pShader );
7167ec681f3Smrg
7177ec681f3SmrgHRESULT NINE_WINAPI
7187ec681f3SmrgNineDevice9_GetVertexShader( struct NineDevice9 *This,
7197ec681f3Smrg                             IDirect3DVertexShader9 **ppShader );
7207ec681f3Smrg
7217ec681f3SmrgHRESULT NINE_WINAPI
7227ec681f3SmrgNineDevice9_SetVertexShaderConstantF( struct NineDevice9 *This,
7237ec681f3Smrg                                      UINT StartRegister,
7247ec681f3Smrg                                      const float *pConstantData,
7257ec681f3Smrg                                      UINT Vector4fCount );
7267ec681f3Smrg
7277ec681f3SmrgHRESULT NINE_WINAPI
7287ec681f3SmrgNineDevice9_GetVertexShaderConstantF( struct NineDevice9 *This,
7297ec681f3Smrg                                      UINT StartRegister,
7307ec681f3Smrg                                      float *pConstantData,
7317ec681f3Smrg                                      UINT Vector4fCount );
7327ec681f3Smrg
7337ec681f3SmrgHRESULT NINE_WINAPI
7347ec681f3SmrgNineDevice9_SetVertexShaderConstantI( struct NineDevice9 *This,
7357ec681f3Smrg                                      UINT StartRegister,
7367ec681f3Smrg                                      const int *pConstantData,
7377ec681f3Smrg                                      UINT Vector4iCount );
7387ec681f3Smrg
7397ec681f3SmrgHRESULT NINE_WINAPI
7407ec681f3SmrgNineDevice9_GetVertexShaderConstantI( struct NineDevice9 *This,
7417ec681f3Smrg                                      UINT StartRegister,
7427ec681f3Smrg                                      int *pConstantData,
7437ec681f3Smrg                                      UINT Vector4iCount );
7447ec681f3Smrg
7457ec681f3SmrgHRESULT NINE_WINAPI
7467ec681f3SmrgNineDevice9_SetVertexShaderConstantB( struct NineDevice9 *This,
7477ec681f3Smrg                                      UINT StartRegister,
7487ec681f3Smrg                                      const BOOL *pConstantData,
7497ec681f3Smrg                                      UINT BoolCount );
7507ec681f3Smrg
7517ec681f3SmrgHRESULT NINE_WINAPI
7527ec681f3SmrgNineDevice9_GetVertexShaderConstantB( struct NineDevice9 *This,
7537ec681f3Smrg                                      UINT StartRegister,
7547ec681f3Smrg                                      BOOL *pConstantData,
7557ec681f3Smrg                                      UINT BoolCount );
7567ec681f3Smrg
7577ec681f3SmrgHRESULT NINE_WINAPI
7587ec681f3SmrgNineDevice9_SetStreamSource( struct NineDevice9 *This,
7597ec681f3Smrg                             UINT StreamNumber,
7607ec681f3Smrg                             IDirect3DVertexBuffer9 *pStreamData,
7617ec681f3Smrg                             UINT OffsetInBytes,
7627ec681f3Smrg                             UINT Stride );
7637ec681f3Smrg
7647ec681f3SmrgHRESULT NINE_WINAPI
7657ec681f3SmrgNineDevice9_GetStreamSource( struct NineDevice9 *This,
7667ec681f3Smrg                             UINT StreamNumber,
7677ec681f3Smrg                             IDirect3DVertexBuffer9 **ppStreamData,
7687ec681f3Smrg                             UINT *pOffsetInBytes,
7697ec681f3Smrg                             UINT *pStride );
7707ec681f3Smrg
7717ec681f3SmrgHRESULT NINE_WINAPI
7727ec681f3SmrgNineDevice9_SetStreamSourceFreq( struct NineDevice9 *This,
7737ec681f3Smrg                                 UINT StreamNumber,
7747ec681f3Smrg                                 UINT Setting );
7757ec681f3Smrg
7767ec681f3SmrgHRESULT NINE_WINAPI
7777ec681f3SmrgNineDevice9_GetStreamSourceFreq( struct NineDevice9 *This,
7787ec681f3Smrg                                 UINT StreamNumber,
7797ec681f3Smrg                                 UINT *pSetting );
7807ec681f3Smrg
7817ec681f3SmrgHRESULT NINE_WINAPI
7827ec681f3SmrgNineDevice9_SetIndices( struct NineDevice9 *This,
7837ec681f3Smrg                        IDirect3DIndexBuffer9 *pIndexData );
7847ec681f3Smrg
7857ec681f3SmrgHRESULT NINE_WINAPI
7867ec681f3SmrgNineDevice9_GetIndices( struct NineDevice9 *This,
7877ec681f3Smrg                        IDirect3DIndexBuffer9 **ppIndexData /*,
7887ec681f3Smrg                        UINT *pBaseVertexIndex */ );
7897ec681f3Smrg
7907ec681f3SmrgHRESULT NINE_WINAPI
7917ec681f3SmrgNineDevice9_CreatePixelShader( struct NineDevice9 *This,
7927ec681f3Smrg                               const DWORD *pFunction,
7937ec681f3Smrg                               IDirect3DPixelShader9 **ppShader );
7947ec681f3Smrg
7957ec681f3SmrgHRESULT NINE_WINAPI
7967ec681f3SmrgNineDevice9_SetPixelShader( struct NineDevice9 *This,
7977ec681f3Smrg                            IDirect3DPixelShader9 *pShader );
7987ec681f3Smrg
7997ec681f3SmrgHRESULT NINE_WINAPI
8007ec681f3SmrgNineDevice9_GetPixelShader( struct NineDevice9 *This,
8017ec681f3Smrg                            IDirect3DPixelShader9 **ppShader );
8027ec681f3Smrg
8037ec681f3SmrgHRESULT NINE_WINAPI
8047ec681f3SmrgNineDevice9_SetPixelShaderConstantF( struct NineDevice9 *This,
8057ec681f3Smrg                                     UINT StartRegister,
8067ec681f3Smrg                                     const float *pConstantData,
8077ec681f3Smrg                                     UINT Vector4fCount );
8087ec681f3Smrg
8097ec681f3SmrgHRESULT NINE_WINAPI
8107ec681f3SmrgNineDevice9_GetPixelShaderConstantF( struct NineDevice9 *This,
8117ec681f3Smrg                                     UINT StartRegister,
8127ec681f3Smrg                                     float *pConstantData,
8137ec681f3Smrg                                     UINT Vector4fCount );
8147ec681f3Smrg
8157ec681f3SmrgHRESULT NINE_WINAPI
8167ec681f3SmrgNineDevice9_SetPixelShaderConstantI( struct NineDevice9 *This,
8177ec681f3Smrg                                     UINT StartRegister,
8187ec681f3Smrg                                     const int *pConstantData,
8197ec681f3Smrg                                     UINT Vector4iCount );
8207ec681f3Smrg
8217ec681f3SmrgHRESULT NINE_WINAPI
8227ec681f3SmrgNineDevice9_GetPixelShaderConstantI( struct NineDevice9 *This,
8237ec681f3Smrg                                     UINT StartRegister,
8247ec681f3Smrg                                     int *pConstantData,
8257ec681f3Smrg                                     UINT Vector4iCount );
8267ec681f3Smrg
8277ec681f3SmrgHRESULT NINE_WINAPI
8287ec681f3SmrgNineDevice9_SetPixelShaderConstantB( struct NineDevice9 *This,
8297ec681f3Smrg                                     UINT StartRegister,
8307ec681f3Smrg                                     const BOOL *pConstantData,
8317ec681f3Smrg                                     UINT BoolCount );
8327ec681f3Smrg
8337ec681f3SmrgHRESULT NINE_WINAPI
8347ec681f3SmrgNineDevice9_GetPixelShaderConstantB( struct NineDevice9 *This,
8357ec681f3Smrg                                     UINT StartRegister,
8367ec681f3Smrg                                     BOOL *pConstantData,
8377ec681f3Smrg                                     UINT BoolCount );
8387ec681f3Smrg
8397ec681f3SmrgHRESULT NINE_WINAPI
8407ec681f3SmrgNineDevice9_DrawRectPatch( struct NineDevice9 *This,
8417ec681f3Smrg                           UINT Handle,
8427ec681f3Smrg                           const float *pNumSegs,
8437ec681f3Smrg                           const D3DRECTPATCH_INFO *pRectPatchInfo );
8447ec681f3Smrg
8457ec681f3SmrgHRESULT NINE_WINAPI
8467ec681f3SmrgNineDevice9_DrawTriPatch( struct NineDevice9 *This,
8477ec681f3Smrg                          UINT Handle,
8487ec681f3Smrg                          const float *pNumSegs,
8497ec681f3Smrg                          const D3DTRIPATCH_INFO *pTriPatchInfo );
8507ec681f3Smrg
8517ec681f3SmrgHRESULT NINE_WINAPI
8527ec681f3SmrgNineDevice9_DeletePatch( struct NineDevice9 *This,
8537ec681f3Smrg                         UINT Handle );
8547ec681f3Smrg
8557ec681f3SmrgHRESULT NINE_WINAPI
8567ec681f3SmrgNineDevice9_CreateQuery( struct NineDevice9 *This,
8577ec681f3Smrg                         D3DQUERYTYPE Type,
8587ec681f3Smrg                         IDirect3DQuery9 **ppQuery );
8597ec681f3Smrg
8607ec681f3Smrg#endif /* _NINE_DEVICE9_H_ */
861