1 /*
2 * Copyright 2011 Joakim Sindholt <[email protected]>
3 * SPDX-License-Identifier: MIT
4 */
5
6 #ifndef _NINE_ADAPTER9_H_
7 #define _NINE_ADAPTER9_H_
8
9 #include "iunknown.h"
10
11 #include "d3dadapter/d3dadapter9.h"
12
13 struct pipe_screen;
14 struct pipe_resource;
15
16 struct d3dadapter9_context
17 {
18 struct pipe_screen *hal, *ref;
19 D3DADAPTER_IDENTIFIER9 identifier;
20 BOOL linear_framebuffer;
21 BOOL throttling;
22 int throttling_value;
23 int vblank_mode;
24 BOOL thread_submit;
25 BOOL discard_delayed_release;
26 BOOL tearfree_discard;
27 int csmt_force;
28 BOOL dynamic_texture_workaround;
29 BOOL shader_inline_constants;
30 int memfd_virtualsizelimit;
31 int override_vram_size;
32 BOOL force_emulation;
33
34 void (*destroy)( struct d3dadapter9_context *ctx );
35 };
36
37 struct NineAdapter9
38 {
39 struct NineUnknown base;
40
41 struct d3dadapter9_context *ctx;
42 };
43 static inline struct NineAdapter9 *
NineAdapter9(void * data)44 NineAdapter9( void *data )
45 {
46 return (struct NineAdapter9 *)data;
47 }
48
49 HRESULT
50 NineAdapter9_new( struct d3dadapter9_context *pCTX,
51 struct NineAdapter9 **ppOut );
52
53 HRESULT
54 NineAdapter9_ctor( struct NineAdapter9 *This,
55 struct NineUnknownParams *pParams,
56 struct d3dadapter9_context *pCTX );
57
58 void
59 NineAdapter9_dtor( struct NineAdapter9 *This );
60
61 HRESULT NINE_WINAPI
62 NineAdapter9_GetAdapterIdentifier( struct NineAdapter9 *This,
63 DWORD Flags,
64 D3DADAPTER_IDENTIFIER9 *pIdentifier );
65
66 HRESULT NINE_WINAPI
67 NineAdapter9_CheckDeviceType( struct NineAdapter9 *This,
68 D3DDEVTYPE DevType,
69 D3DFORMAT AdapterFormat,
70 D3DFORMAT BackBufferFormat,
71 BOOL bWindowed );
72
73 HRESULT NINE_WINAPI
74 NineAdapter9_CheckDeviceFormat( struct NineAdapter9 *This,
75 D3DDEVTYPE DeviceType,
76 D3DFORMAT AdapterFormat,
77 DWORD Usage,
78 D3DRESOURCETYPE RType,
79 D3DFORMAT CheckFormat );
80
81 HRESULT NINE_WINAPI
82 NineAdapter9_CheckDeviceMultiSampleType( struct NineAdapter9 *This,
83 D3DDEVTYPE DeviceType,
84 D3DFORMAT SurfaceFormat,
85 BOOL Windowed,
86 D3DMULTISAMPLE_TYPE MultiSampleType,
87 DWORD *pQualityLevels );
88
89 HRESULT NINE_WINAPI
90 NineAdapter9_CheckDepthStencilMatch( struct NineAdapter9 *This,
91 D3DDEVTYPE DeviceType,
92 D3DFORMAT AdapterFormat,
93 D3DFORMAT RenderTargetFormat,
94 D3DFORMAT DepthStencilFormat );
95
96 HRESULT NINE_WINAPI
97 NineAdapter9_CheckDeviceFormatConversion( struct NineAdapter9 *This,
98 D3DDEVTYPE DeviceType,
99 D3DFORMAT SourceFormat,
100 D3DFORMAT TargetFormat );
101
102 HRESULT NINE_WINAPI
103 NineAdapter9_GetDeviceCaps( struct NineAdapter9 *This,
104 D3DDEVTYPE DeviceType,
105 D3DCAPS9 *pCaps );
106
107 HRESULT NINE_WINAPI
108 NineAdapter9_CreateDevice( struct NineAdapter9 *This,
109 UINT RealAdapter,
110 D3DDEVTYPE DeviceType,
111 HWND hFocusWindow,
112 DWORD BehaviorFlags,
113 D3DPRESENT_PARAMETERS *pPresentationParameters,
114 IDirect3D9 *pD3D9,
115 ID3DPresentGroup *pPresentationGroup,
116 IDirect3DDevice9 **ppReturnedDeviceInterface );
117
118 HRESULT NINE_WINAPI
119 NineAdapter9_CreateDeviceEx( struct NineAdapter9 *This,
120 UINT RealAdapter,
121 D3DDEVTYPE DeviceType,
122 HWND hFocusWindow,
123 DWORD BehaviorFlags,
124 D3DPRESENT_PARAMETERS *pPresentationParameters,
125 D3DDISPLAYMODEEX *pFullscreenDisplayMode,
126 IDirect3D9Ex *pD3D9Ex,
127 ID3DPresentGroup *pPresentationGroup,
128 IDirect3DDevice9Ex **ppReturnedDeviceInterface );
129
130 #endif /* _NINE_ADAPTER9_H_ */
131