xref: /aosp_15_r20/external/mesa3d/src/gallium/frontends/nine/adapter9.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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