Create d3d_create_device

This commit is contained in:
twinaphex 2015-11-17 13:36:03 +01:00
parent ff03f83994
commit 2a312e153f
3 changed files with 38 additions and 23 deletions

View File

@ -250,29 +250,9 @@ static bool d3d_init_base(void *data, const video_info_t *info)
d3d->cur_mon_id = 0;
#endif
if (FAILED(d3d->d3d_err = d3d->g_pD3D->CreateDevice(
d3d->cur_mon_id,
D3DDEVTYPE_HAL,
win32_get_window(),
D3DCREATE_HARDWARE_VERTEXPROCESSING,
&d3dpp,
&d3d->dev)))
{
RARCH_WARN("[D3D]: Failed to init device with hardware vertex processing (code: 0x%x). Trying to fall back to software vertex processing.\n",
(unsigned)d3d->d3d_err);
if (FAILED(d3d->d3d_err = d3d->g_pD3D->CreateDevice(
d3d->cur_mon_id,
D3DDEVTYPE_HAL,
win32_get_window(),
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp,
&d3d->dev)))
{
RARCH_ERR("Failed to initialize device.\n");
return false;
}
}
if (!d3d_create_device(d3d->cur_mon_id, &d3dpp, d3d->g_pD3D, &d3d->dev,
win32_get_window()))
return false;
return true;
}

View File

@ -32,6 +32,38 @@ static bool d3d_restore_device(LPDIRECT3DDEVICE dev)
return true;
}
bool d3d_create_device(unsigned monitor_id, D3DPRESENT_PARAMETERS *d3dpp,
LPDIRECT3D adapter, LPDIRECT3DDEVICE dev, HWND window)
{
HRESULT err;
if (FAILED(err = adapter->CreateDevice(
monitor_id,
D3DDEVTYPE_HAL,
window,
D3DCREATE_HARDWARE_VERTEXPROCESSING,
d3dpp,
dev)))
{
RARCH_WARN("[D3D]: Failed to init device with hardware vertex processing (code: 0x%x). Trying to fall back to software vertex processing.\n",
(unsigned)err);
if (FAILED(err = adapter->CreateDevice(
monitor_id,
D3DDEVTYPE_HAL,
window,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
d3dpp,
dev)))
{
RARCH_ERR("Failed to initialize device.\n");
return false;
}
}
return true;
}
bool d3d_swap(void *data, LPDIRECT3DDEVICE dev)
{
if (!d3d_restore_device(dev))

View File

@ -112,6 +112,9 @@ void d3d_set_render_state(void *data, D3DRENDERSTATETYPE state, DWORD value);
bool d3d_reset(LPDIRECT3DDEVICE dev, D3DPRESENT_PARAMETERS *d3dpp);
bool d3d_create_device(unsigned monitor_id, D3DPRESENT_PARAMETERS *d3dpp,
LPDIRECT3D adapter, LPDIRECT3DDEVICE dev, HWND window);
#ifdef __cplusplus
}
#endif