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