trunk/src/osd/windows/d3dintf.h
| r17981 | r17982 | |
| 74 | 74 | // TYPE DEFINITIONS |
| 75 | 75 | //============================================================ |
| 76 | 76 | |
| 77 | | struct d3d; |
| 77 | struct d3d_base; |
| 78 | 78 | struct d3d_device; |
| 79 | 79 | struct d3d_surface; |
| 80 | 80 | struct d3d_texture; |
| r17981 | r17982 | |
| 154 | 154 | |
| 155 | 155 | struct d3d_interface |
| 156 | 156 | { |
| 157 | | HRESULT (*check_device_format)(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT adapterformat, DWORD usage, D3DRESOURCETYPE restype, D3DFORMAT format); |
| 158 | | HRESULT (*check_device_type)(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT format, D3DFORMAT backformat, BOOL windowed); |
| 159 | | HRESULT (*create_device)(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, HWND focus, DWORD behavior, d3d_present_parameters *params, d3d_device **dev); |
| 160 | | HRESULT (*enum_adapter_modes)(d3d *d3dptr, UINT adapter, D3DFORMAT format, UINT index, D3DDISPLAYMODE *mode); |
| 161 | | UINT (*get_adapter_count)(d3d *d3dptr); |
| 162 | | HRESULT (*get_adapter_display_mode)(d3d *d3dptr, UINT adapter, D3DDISPLAYMODE *mode); |
| 163 | | HRESULT (*get_adapter_identifier)(d3d *d3dptr, UINT adapter, DWORD flags, d3d_adapter_identifier *identifier); |
| 164 | | UINT (*get_adapter_mode_count)(d3d *d3dptr, UINT adapter, D3DFORMAT format); |
| 165 | | HMONITOR (*get_adapter_monitor)(d3d *d3dptr, UINT adapter); |
| 166 | | HRESULT (*get_caps_dword)(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, d3d_caps_index which, DWORD *value); |
| 167 | | ULONG (*release)(d3d *d3dptr); |
| 157 | HRESULT (*check_device_format)(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT adapterformat, DWORD usage, D3DRESOURCETYPE restype, D3DFORMAT format); |
| 158 | HRESULT (*check_device_type)(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT format, D3DFORMAT backformat, BOOL windowed); |
| 159 | HRESULT (*create_device)(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, HWND focus, DWORD behavior, d3d_present_parameters *params, d3d_device **dev); |
| 160 | HRESULT (*enum_adapter_modes)(d3d_base *d3dptr, UINT adapter, D3DFORMAT format, UINT index, D3DDISPLAYMODE *mode); |
| 161 | UINT (*get_adapter_count)(d3d_base *d3dptr); |
| 162 | HRESULT (*get_adapter_display_mode)(d3d_base *d3dptr, UINT adapter, D3DDISPLAYMODE *mode); |
| 163 | HRESULT (*get_adapter_identifier)(d3d_base *d3dptr, UINT adapter, DWORD flags, d3d_adapter_identifier *identifier); |
| 164 | UINT (*get_adapter_mode_count)(d3d_base *d3dptr, UINT adapter, D3DFORMAT format); |
| 165 | HMONITOR (*get_adapter_monitor)(d3d_base *d3dptr, UINT adapter); |
| 166 | HRESULT (*get_caps_dword)(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, d3d_caps_index which, DWORD *value); |
| 167 | ULONG (*release)(d3d_base *d3dptr); |
| 168 | 168 | }; |
| 169 | 169 | |
| 170 | 170 | |
| r17981 | r17982 | |
| 262 | 262 | // Core D3D object |
| 263 | 263 | //============================================================ |
| 264 | 264 | |
| 265 | | struct d3d |
| 265 | struct d3d_base |
| 266 | 266 | { |
| 267 | 267 | // internal objects |
| 268 | 268 | int version; |
| r17981 | r17982 | |
| 285 | 285 | //============================================================ |
| 286 | 286 | |
| 287 | 287 | #if DIRECT3D_VERSION < 0x0900 |
| 288 | | d3d *drawd3d8_init(void); |
| 288 | d3d_base *drawd3d8_init(void); |
| 289 | 289 | #endif |
| 290 | | d3d *drawd3d9_init(void); |
| 290 | d3d_base *drawd3d9_init(void); |
| 291 | 291 | |
| 292 | 292 | |
| 293 | 293 | #endif |
trunk/src/osd/windows/d3d8intf.c
| r17981 | r17982 | |
| 67 | 67 | // PROTOTYPES |
| 68 | 68 | //============================================================ |
| 69 | 69 | |
| 70 | | static void set_interfaces(d3d *d3dptr); |
| 70 | static void set_interfaces(d3d_base *d3dptr); |
| 71 | 71 | |
| 72 | 72 | |
| 73 | 73 | |
| r17981 | r17982 | |
| 102 | 102 | // drawd3d8_init |
| 103 | 103 | //============================================================ |
| 104 | 104 | |
| 105 | | d3d *drawd3d8_init(void) |
| 105 | d3d_base *drawd3d8_init(void) |
| 106 | 106 | { |
| 107 | 107 | direct3dcreate8_ptr direct3dcreate8; |
| 108 | 108 | HINSTANCE dllhandle; |
| 109 | 109 | IDirect3D8 *d3d8; |
| 110 | | d3d *d3dptr; |
| 110 | d3d_base *d3dptr; |
| 111 | 111 | |
| 112 | 112 | // dynamically grab the create function from d3d8.dll |
| 113 | 113 | dllhandle = LoadLibrary(TEXT("d3d8.dll")); |
| r17981 | r17982 | |
| 138 | 138 | } |
| 139 | 139 | |
| 140 | 140 | // allocate an object to hold our data |
| 141 | | d3dptr = global_alloc(d3d); |
| 141 | d3dptr = global_alloc(d3d_base); |
| 142 | 142 | d3dptr->version = 8; |
| 143 | 143 | d3dptr->d3dobj = d3d8; |
| 144 | 144 | d3dptr->dllhandle = dllhandle; |
| r17981 | r17982 | |
| 155 | 155 | // Direct3D interfaces |
| 156 | 156 | //============================================================ |
| 157 | 157 | |
| 158 | | static HRESULT d3d_check_device_format(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT adapterformat, DWORD usage, D3DRESOURCETYPE restype, D3DFORMAT format) |
| 158 | static HRESULT d3d_check_device_format(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT adapterformat, DWORD usage, D3DRESOURCETYPE restype, D3DFORMAT format) |
| 159 | 159 | { |
| 160 | 160 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 161 | 161 | return IDirect3D8_CheckDeviceFormat(d3d8, adapter, devtype, adapterformat, usage, restype, format); |
| 162 | 162 | } |
| 163 | 163 | |
| 164 | 164 | |
| 165 | | static HRESULT d3d_check_device_type(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT format, D3DFORMAT backformat, BOOL windowed) |
| 165 | static HRESULT d3d_check_device_type(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT format, D3DFORMAT backformat, BOOL windowed) |
| 166 | 166 | { |
| 167 | 167 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 168 | 168 | return IDirect3D8_CheckDeviceType(d3d8, adapter, devtype, format, backformat, windowed); |
| 169 | 169 | } |
| 170 | 170 | |
| 171 | 171 | |
| 172 | | static HRESULT d3d_create_device(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, HWND focus, DWORD behavior, d3d_present_parameters *params, d3d_device **dev) |
| 172 | static HRESULT d3d_create_device(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, HWND focus, DWORD behavior, d3d_present_parameters *params, d3d_device **dev) |
| 173 | 173 | { |
| 174 | 174 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 175 | 175 | D3DPRESENT_PARAMETERS d3d8params; |
| r17981 | r17982 | |
| 178 | 178 | } |
| 179 | 179 | |
| 180 | 180 | |
| 181 | | static HRESULT d3d_enum_adapter_modes(d3d *d3dptr, UINT adapter, D3DFORMAT format, UINT index, D3DDISPLAYMODE *mode) |
| 181 | static HRESULT d3d_enum_adapter_modes(d3d_base *d3dptr, UINT adapter, D3DFORMAT format, UINT index, D3DDISPLAYMODE *mode) |
| 182 | 182 | { |
| 183 | 183 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 184 | 184 | return IDirect3D8_EnumAdapterModes(d3d8, adapter, index, mode); |
| 185 | 185 | } |
| 186 | 186 | |
| 187 | 187 | |
| 188 | | static UINT d3d_get_adapter_count(d3d *d3dptr) |
| 188 | static UINT d3d_get_adapter_count(d3d_base *d3dptr) |
| 189 | 189 | { |
| 190 | 190 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 191 | 191 | return IDirect3D8_GetAdapterCount(d3d8); |
| 192 | 192 | } |
| 193 | 193 | |
| 194 | 194 | |
| 195 | | static HRESULT d3d_get_adapter_display_mode(d3d *d3dptr, UINT adapter, D3DDISPLAYMODE *mode) |
| 195 | static HRESULT d3d_get_adapter_display_mode(d3d_base *d3dptr, UINT adapter, D3DDISPLAYMODE *mode) |
| 196 | 196 | { |
| 197 | 197 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 198 | 198 | return IDirect3D8_GetAdapterDisplayMode(d3d8, adapter, mode); |
| 199 | 199 | } |
| 200 | 200 | |
| 201 | 201 | |
| 202 | | static HRESULT d3d_get_adapter_identifier(d3d *d3dptr, UINT adapter, DWORD flags, d3d_adapter_identifier *identifier) |
| 202 | static HRESULT d3d_get_adapter_identifier(d3d_base *d3dptr, UINT adapter, DWORD flags, d3d_adapter_identifier *identifier) |
| 203 | 203 | { |
| 204 | 204 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 205 | 205 | D3DADAPTER_IDENTIFIER8 id; |
| r17981 | r17982 | |
| 217 | 217 | } |
| 218 | 218 | |
| 219 | 219 | |
| 220 | | static UINT d3d_get_adapter_mode_count(d3d *d3dptr, UINT adapter, D3DFORMAT format) |
| 220 | static UINT d3d_get_adapter_mode_count(d3d_base *d3dptr, UINT adapter, D3DFORMAT format) |
| 221 | 221 | { |
| 222 | 222 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 223 | 223 | return IDirect3D8_GetAdapterModeCount(d3d8, adapter); |
| 224 | 224 | } |
| 225 | 225 | |
| 226 | 226 | |
| 227 | | static HMONITOR d3d_get_adapter_monitor(d3d *d3dptr, UINT adapter) |
| 227 | static HMONITOR d3d_get_adapter_monitor(d3d_base *d3dptr, UINT adapter) |
| 228 | 228 | { |
| 229 | 229 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 230 | 230 | return IDirect3D8_GetAdapterMonitor(d3d8, adapter); |
| 231 | 231 | } |
| 232 | 232 | |
| 233 | 233 | |
| 234 | | static HRESULT d3d_get_caps_dword(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, d3d_caps_index which, DWORD *value) |
| 234 | static HRESULT d3d_get_caps_dword(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, d3d_caps_index which, DWORD *value) |
| 235 | 235 | { |
| 236 | 236 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 237 | 237 | D3DCAPS8 caps; |
| r17981 | r17982 | |
| 257 | 257 | } |
| 258 | 258 | |
| 259 | 259 | |
| 260 | | static ULONG d3d_release(d3d *d3dptr) |
| 260 | static ULONG d3d_release(d3d_base *d3dptr) |
| 261 | 261 | { |
| 262 | 262 | IDirect3D8 *d3d8 = (IDirect3D8 *)d3dptr->d3dobj; |
| 263 | 263 | ULONG result = IDirect3D8_Release(d3d8); |
| r17981 | r17982 | |
| 696 | 696 | // set_interfaces |
| 697 | 697 | //============================================================ |
| 698 | 698 | |
| 699 | | static void set_interfaces(d3d *d3dptr) |
| 699 | static void set_interfaces(d3d_base *d3dptr) |
| 700 | 700 | { |
| 701 | 701 | d3dptr->d3d = d3d8_interface; |
| 702 | 702 | d3dptr->device = d3d8_device_interface; |
trunk/src/osd/windows/d3d9intf.c
| r17981 | r17982 | |
| 69 | 69 | // PROTOTYPES |
| 70 | 70 | //============================================================ |
| 71 | 71 | |
| 72 | | static void set_interfaces(d3d *d3dptr); |
| 72 | static void set_interfaces(d3d_base *d3dptr); |
| 73 | 73 | |
| 74 | 74 | //============================================================ |
| 75 | 75 | // INLINES |
| r17981 | r17982 | |
| 100 | 100 | // drawd3d9_init |
| 101 | 101 | //============================================================ |
| 102 | 102 | |
| 103 | | d3d *drawd3d9_init(void) |
| 103 | d3d_base *drawd3d9_init(void) |
| 104 | 104 | { |
| 105 | 105 | direct3dcreate9_ptr direct3dcreate9; |
| 106 | 106 | HINSTANCE dllhandle; |
| 107 | 107 | IDirect3D9 *d3d9; |
| 108 | | d3d *d3dptr; |
| 108 | d3d_base *d3dptr; |
| 109 | 109 | bool post_available = true; |
| 110 | 110 | |
| 111 | 111 | // dynamically grab the create function from d3d9.dll |
| r17981 | r17982 | |
| 165 | 165 | } |
| 166 | 166 | |
| 167 | 167 | // allocate an object to hold our data |
| 168 | | d3dptr = global_alloc(d3d); |
| 168 | d3dptr = global_alloc(d3d_base); |
| 169 | 169 | d3dptr->version = 9; |
| 170 | 170 | d3dptr->d3dobj = d3d9; |
| 171 | 171 | d3dptr->dllhandle = dllhandle; |
| r17981 | r17982 | |
| 182 | 182 | // Direct3D interfaces |
| 183 | 183 | //============================================================ |
| 184 | 184 | |
| 185 | | static HRESULT d3d_check_device_format(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT adapterformat, DWORD usage, D3DRESOURCETYPE restype, D3DFORMAT format) |
| 185 | static HRESULT d3d_check_device_format(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT adapterformat, DWORD usage, D3DRESOURCETYPE restype, D3DFORMAT format) |
| 186 | 186 | { |
| 187 | 187 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 188 | 188 | return IDirect3D9_CheckDeviceFormat(d3d9, adapter, devtype, adapterformat, usage, restype, format); |
| 189 | 189 | } |
| 190 | 190 | |
| 191 | 191 | |
| 192 | | static HRESULT d3d_check_device_type(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT format, D3DFORMAT backformat, BOOL windowed) |
| 192 | static HRESULT d3d_check_device_type(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, D3DFORMAT format, D3DFORMAT backformat, BOOL windowed) |
| 193 | 193 | { |
| 194 | 194 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 195 | 195 | return IDirect3D9_CheckDeviceType(d3d9, adapter, devtype, format, backformat, windowed); |
| 196 | 196 | } |
| 197 | 197 | |
| 198 | | static HRESULT d3d_create_device(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, HWND focus, DWORD behavior, d3d_present_parameters *params, d3d_device **dev) |
| 198 | static HRESULT d3d_create_device(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, HWND focus, DWORD behavior, d3d_present_parameters *params, d3d_device **dev) |
| 199 | 199 | { |
| 200 | 200 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 201 | 201 | D3DPRESENT_PARAMETERS d3d9params; |
| r17981 | r17982 | |
| 203 | 203 | return IDirect3D9_CreateDevice(d3d9, adapter, devtype, focus, behavior, &d3d9params, (IDirect3DDevice9 **)dev); |
| 204 | 204 | } |
| 205 | 205 | |
| 206 | | static HRESULT d3d_enum_adapter_modes(d3d *d3dptr, UINT adapter, D3DFORMAT format, UINT index, D3DDISPLAYMODE *mode) |
| 206 | static HRESULT d3d_enum_adapter_modes(d3d_base *d3dptr, UINT adapter, D3DFORMAT format, UINT index, D3DDISPLAYMODE *mode) |
| 207 | 207 | { |
| 208 | 208 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 209 | 209 | return IDirect3D9_EnumAdapterModes(d3d9, adapter, format, index, mode); |
| 210 | 210 | } |
| 211 | 211 | |
| 212 | 212 | |
| 213 | | static UINT d3d_get_adapter_count(d3d *d3dptr) |
| 213 | static UINT d3d_get_adapter_count(d3d_base *d3dptr) |
| 214 | 214 | { |
| 215 | 215 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 216 | 216 | return IDirect3D9_GetAdapterCount(d3d9); |
| 217 | 217 | } |
| 218 | 218 | |
| 219 | 219 | |
| 220 | | static HRESULT d3d_get_adapter_display_mode(d3d *d3dptr, UINT adapter, D3DDISPLAYMODE *mode) |
| 220 | static HRESULT d3d_get_adapter_display_mode(d3d_base *d3dptr, UINT adapter, D3DDISPLAYMODE *mode) |
| 221 | 221 | { |
| 222 | 222 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 223 | 223 | return IDirect3D9_GetAdapterDisplayMode(d3d9, adapter, mode); |
| 224 | 224 | } |
| 225 | 225 | |
| 226 | 226 | |
| 227 | | static HRESULT d3d_get_adapter_identifier(d3d *d3dptr, UINT adapter, DWORD flags, d3d_adapter_identifier *identifier) |
| 227 | static HRESULT d3d_get_adapter_identifier(d3d_base *d3dptr, UINT adapter, DWORD flags, d3d_adapter_identifier *identifier) |
| 228 | 228 | { |
| 229 | 229 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 230 | 230 | D3DADAPTER_IDENTIFIER9 id; |
| r17981 | r17982 | |
| 242 | 242 | } |
| 243 | 243 | |
| 244 | 244 | |
| 245 | | static UINT d3d_get_adapter_mode_count(d3d *d3dptr, UINT adapter, D3DFORMAT format) |
| 245 | static UINT d3d_get_adapter_mode_count(d3d_base *d3dptr, UINT adapter, D3DFORMAT format) |
| 246 | 246 | { |
| 247 | 247 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 248 | 248 | return IDirect3D9_GetAdapterModeCount(d3d9, adapter, format); |
| 249 | 249 | } |
| 250 | 250 | |
| 251 | 251 | |
| 252 | | static HMONITOR d3d_get_adapter_monitor(d3d *d3dptr, UINT adapter) |
| 252 | static HMONITOR d3d_get_adapter_monitor(d3d_base *d3dptr, UINT adapter) |
| 253 | 253 | { |
| 254 | 254 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 255 | 255 | return IDirect3D9_GetAdapterMonitor(d3d9, adapter); |
| 256 | 256 | } |
| 257 | 257 | |
| 258 | 258 | |
| 259 | | static HRESULT d3d_get_caps_dword(d3d *d3dptr, UINT adapter, D3DDEVTYPE devtype, d3d_caps_index which, DWORD *value) |
| 259 | static HRESULT d3d_get_caps_dword(d3d_base *d3dptr, UINT adapter, D3DDEVTYPE devtype, d3d_caps_index which, DWORD *value) |
| 260 | 260 | { |
| 261 | 261 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 262 | 262 | D3DCAPS9 caps; |
| r17981 | r17982 | |
| 282 | 282 | } |
| 283 | 283 | |
| 284 | 284 | |
| 285 | | static ULONG d3d_release(d3d *d3dptr) |
| 285 | static ULONG d3d_release(d3d_base *d3dptr) |
| 286 | 286 | { |
| 287 | 287 | IDirect3D9 *d3d9 = (IDirect3D9 *)d3dptr->d3dobj; |
| 288 | 288 | ULONG result = IDirect3D9_Release(d3d9); |
| r17981 | r17982 | |
| 789 | 789 | // set_interfaces |
| 790 | 790 | //============================================================ |
| 791 | 791 | |
| 792 | | static void set_interfaces(d3d *d3dptr) |
| 792 | static void set_interfaces(d3d_base *d3dptr) |
| 793 | 793 | { |
| 794 | 794 | d3dptr->d3d = d3d9_interface; |
| 795 | 795 | d3dptr->device = d3d9_device_interface; |