Create d3d_initialize_symbols

This commit is contained in:
twinaphex 2018-01-03 18:38:13 +01:00
parent f19ff885f4
commit 3a3776ba24
3 changed files with 37 additions and 6 deletions

View File

@ -28,20 +28,42 @@
#include <xgraphics.h>
#endif
static UINT SDKVersion = 0;
#if defined(HAVE_D3D9)
typedef IDirect3D9 *(__stdcall *D3DCreate_t)(UINT);
#elif defined(HAVE_D3D8)
typedef IDirect3D8 *(__stdcall *D3DCreate_t)(UINT);
#endif
static D3DCreate_t D3DCreate;
void *d3d_create(void)
{
UINT SDKVersion = 0;
return D3DCreate(SDKVersion);
}
bool d3d_initialize_symbols(void)
{
/* For Xbox we will just link statically
* to Direct3D libraries. */
#if defined(HAVE_D3D9)
#ifndef _XBOX
SDKVersion = 31;
#endif
return Direct3DCreate9(SDKVersion);
D3DCreate = Direct3DCreate9;
#elif defined(HAVE_D3D8)
#ifndef _XBOX
SDKVersion = 220;
D3DCreate = Direct3DCreate8;
#endif
return Direct3DCreate8(SDKVersion);
#ifdef _XBOX
SDKVersion = 0;
#endif
return true;
}
void d3d_deinitialize_symbols(void)
{
}
bool d3d_swap(void *data, LPDIRECT3DDEVICE dev)

View File

@ -175,6 +175,10 @@ void d3d_device_free(LPDIRECT3DDEVICE dev, LPDIRECT3D pd3d);
void *d3d_create(void);
bool d3d_initialize_symbols(void);
void d3d_deinitialize_symbols(void);
D3DTEXTUREFILTERTYPE d3d_translate_filter(unsigned type);
RETRO_END_DECLS

View File

@ -1141,6 +1141,9 @@ static void *d3d_init(const video_info_t *info,
d3d_video_t *d3d = NULL;
const gfx_ctx_driver_t *ctx_driver = NULL;
if (!d3d_initialize_symbols())
return NULL;
#ifdef _XBOX
if (video_driver_get_ptr(false))
{
@ -1258,6 +1261,8 @@ static void d3d_free(void *data)
if (d3d)
free(d3d);
d3d_deinitialize_symbols();
#ifndef _XBOX
win32_destroy_window();
#endif