mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-25 04:10:39 +00:00
(D3D9) Cleanups
This commit is contained in:
parent
720cca5e45
commit
28cd77c5b4
@ -649,7 +649,7 @@ static bool d3d9_is_windowed_enable(bool info_fullscreen)
|
||||
return false;
|
||||
}
|
||||
|
||||
static D3DFORMAT d3d9_get_color_format_backbuffer(bool rgb32, bool windowed)
|
||||
static D3DFORMAT d3d9_get_color_format_backbuffer(bool rgb32)
|
||||
{
|
||||
if (rgb32)
|
||||
return D3DFMT_X8R8G8B8;
|
||||
@ -668,12 +668,13 @@ static bool d3d9_is_windowed_enable(bool info_fullscreen)
|
||||
return false;
|
||||
}
|
||||
|
||||
static D3DFORMAT d3d9_get_color_format_backbuffer(bool rgb32, bool windowed)
|
||||
static D3DFORMAT d3d9_get_color_format_backbuffer(
|
||||
bool rgb32, bool windowed)
|
||||
{
|
||||
if (windowed)
|
||||
{
|
||||
D3DDISPLAYMODE display_mode;
|
||||
if (d3d9_get_adapter_display_mode(g_pD3D9, 0, &display_mode))
|
||||
if (IDirect3D9_GetAdapterDisplayMode(g_pD3D9, 0, &display_mode))
|
||||
return display_mode.Format;
|
||||
}
|
||||
return D3DFMT_X8R8G8B8;
|
||||
@ -725,10 +726,10 @@ void d3d9_make_d3dpp(d3d9_video_t *d3d,
|
||||
|
||||
d3dpp->SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||
d3dpp->BackBufferCount = 2;
|
||||
d3dpp->BackBufferFormat = d3d9_get_color_format_backbuffer(
|
||||
info->rgb32, windowed_enable);
|
||||
|
||||
#ifdef _XBOX
|
||||
d3dpp->BackBufferFormat = d3d9_get_color_format_backbuffer(
|
||||
info->rgb32);
|
||||
d3dpp->FrontBufferFormat = d3d9_get_color_format_front_buffer();
|
||||
|
||||
if (gamma_enable)
|
||||
@ -739,6 +740,8 @@ void d3d9_make_d3dpp(d3d9_video_t *d3d,
|
||||
d3dpp->FrontBufferFormat);
|
||||
}
|
||||
#else
|
||||
d3dpp->BackBufferFormat = d3d9_get_color_format_backbuffer(
|
||||
info->rgb32, windowed_enable);
|
||||
d3dpp->hDeviceWindow = win32_get_window();
|
||||
#endif
|
||||
|
||||
@ -1361,6 +1364,19 @@ void d3d9_set_video_mode(void *data,
|
||||
#endif
|
||||
}
|
||||
|
||||
static INLINE bool d3d9_device_get_render_target_data(
|
||||
LPDIRECT3DDEVICE9 dev,
|
||||
LPDIRECT3DSURFACE9 src, LPDIRECT3DSURFACE9 dst)
|
||||
{
|
||||
#ifndef _XBOX
|
||||
if (dev &&
|
||||
SUCCEEDED(IDirect3DDevice9_GetRenderTargetData(
|
||||
dev, src, dst)))
|
||||
return true;
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
bool d3d9_read_viewport(void *data, uint8_t *buffer, bool is_idle)
|
||||
{
|
||||
unsigned width, height;
|
||||
|
@ -89,17 +89,6 @@ void *d3d9_vertex_buffer_new(void *dev,
|
||||
|
||||
void d3d9_vertex_buffer_free(void *vertex_data, void *vertex_declaration);
|
||||
|
||||
static INLINE bool d3d9_texture_get_surface_level(
|
||||
LPDIRECT3DTEXTURE9 tex,
|
||||
unsigned idx, void **_ppsurface_level)
|
||||
{
|
||||
if (tex &&
|
||||
SUCCEEDED(IDirect3DTexture9_GetSurfaceLevel(
|
||||
tex, idx, (IDirect3DSurface9**)_ppsurface_level)))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
void *d3d9_texture_new(void *dev,
|
||||
const char *path, unsigned width, unsigned height,
|
||||
unsigned miplevels, unsigned usage, INT32 format,
|
||||
@ -107,25 +96,6 @@ void *d3d9_texture_new(void *dev,
|
||||
INT32 color_key, void *src_info,
|
||||
PALETTEENTRY *palette, bool want_mipmap);
|
||||
|
||||
static INLINE bool d3d9_create_vertex_shader(
|
||||
LPDIRECT3DDEVICE9 dev, const DWORD *a, void **b)
|
||||
{
|
||||
if (dev && IDirect3DDevice9_CreateVertexShader(dev, a,
|
||||
(LPDIRECT3DVERTEXSHADER9*)b) == D3D_OK)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static INLINE bool d3d9_create_pixel_shader(
|
||||
LPDIRECT3DDEVICE9 dev, const DWORD *a, void **b)
|
||||
{
|
||||
if (dev &&
|
||||
IDirect3DDevice9_CreatePixelShader(dev, a,
|
||||
(LPDIRECT3DPIXELSHADER9*)b) == D3D_OK)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static INLINE bool d3d9_vertex_declaration_new(
|
||||
LPDIRECT3DDEVICE9 dev,
|
||||
const void *vertex_data, void **decl_data)
|
||||
@ -140,22 +110,6 @@ static INLINE bool d3d9_vertex_declaration_new(
|
||||
return false;
|
||||
}
|
||||
|
||||
void d3d9_frame_postprocess(void *data);
|
||||
|
||||
static INLINE bool d3d9_device_get_render_target_data(
|
||||
LPDIRECT3DDEVICE9 dev,
|
||||
LPDIRECT3DSURFACE9 src, LPDIRECT3DSURFACE9 dst)
|
||||
{
|
||||
#ifndef _XBOX
|
||||
if (dev &&
|
||||
SUCCEEDED(IDirect3DDevice9_GetRenderTargetData(
|
||||
dev, src, dst)))
|
||||
return true;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
static INLINE bool d3d9_device_get_render_target(
|
||||
LPDIRECT3DDEVICE9 dev,
|
||||
unsigned idx, void **data)
|
||||
@ -187,23 +141,6 @@ static INLINE bool d3d9_device_create_offscreen_plain_surface(
|
||||
return false;
|
||||
}
|
||||
|
||||
static INLINE bool d3d9_get_adapter_display_mode(
|
||||
LPDIRECT3D9 d3d,
|
||||
unsigned idx,
|
||||
D3DDISPLAYMODE *display_mode)
|
||||
{
|
||||
if (!d3d)
|
||||
return false;
|
||||
#ifndef _XBOX
|
||||
if (FAILED(
|
||||
IDirect3D9_GetAdapterDisplayMode(
|
||||
d3d, idx, display_mode)))
|
||||
return false;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool d3d9_create_device(void *dev,
|
||||
void *d3dpp,
|
||||
void *d3d,
|
||||
@ -212,38 +149,12 @@ bool d3d9_create_device(void *dev,
|
||||
|
||||
bool d3d9_reset(void *dev, void *d3dpp);
|
||||
|
||||
static INLINE void d3d9_device_free(LPDIRECT3DDEVICE9 dev, LPDIRECT3D9 pd3d)
|
||||
{
|
||||
if (dev)
|
||||
IDirect3DDevice9_Release(dev);
|
||||
if (pd3d)
|
||||
IDirect3D9_Release(pd3d);
|
||||
}
|
||||
|
||||
void *d3d9_create(void);
|
||||
|
||||
bool d3d9_initialize_symbols(enum gfx_ctx_api api);
|
||||
|
||||
void d3d9_deinitialize_symbols(void);
|
||||
|
||||
static INLINE bool d3d9_check_device_type(
|
||||
LPDIRECT3D9 d3d,
|
||||
unsigned idx,
|
||||
INT32 disp_format,
|
||||
INT32 backbuffer_format,
|
||||
bool windowed_mode)
|
||||
{
|
||||
if (d3d &&
|
||||
SUCCEEDED(IDirect3D9_CheckDeviceType(d3d,
|
||||
0,
|
||||
D3DDEVTYPE_HAL,
|
||||
(D3DFORMAT)disp_format,
|
||||
(D3DFORMAT)backbuffer_format,
|
||||
windowed_mode)))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool d3d9x_create_font_indirect(void *dev,
|
||||
void *desc, void **font_data);
|
||||
|
||||
|
@ -1133,8 +1133,8 @@ static void d3d9_cg_renderchain_render(
|
||||
struct shader_pass *from_pass = (struct shader_pass*)&chain->passes->data[i];
|
||||
struct shader_pass *to_pass = (struct shader_pass*)&chain->passes->data[i + 1];
|
||||
|
||||
d3d9_texture_get_surface_level(to_pass->tex, 0, (void**)&target);
|
||||
|
||||
IDirect3DTexture9_GetSurfaceLevel(
|
||||
(LPDIRECT3DTEXTURE9)to_pass->tex, 0, (IDirect3DSurface9**)&target);
|
||||
IDirect3DDevice9_SetRenderTarget(chain->dev, 0, target);
|
||||
|
||||
d3d9_convert_geometry(&from_pass->info,
|
||||
@ -1407,7 +1407,7 @@ static bool d3d9_cg_initialize(d3d9_video_t *d3d, const video_info_t *info)
|
||||
if (!d3d9_reset(d3d->dev, &d3dpp))
|
||||
{
|
||||
d3d9_cg_deinitialize(d3d);
|
||||
d3d9_device_free(NULL, g_pD3D9);
|
||||
IDirect3D9_Release(g_pD3D9);
|
||||
g_pD3D9 = NULL;
|
||||
|
||||
ret = d3d9_cg_init_base(d3d, info);
|
||||
@ -1715,8 +1715,9 @@ static void d3d9_cg_free(void *data)
|
||||
if (!string_is_empty(d3d->shader_path))
|
||||
free(d3d->shader_path);
|
||||
|
||||
IDirect3DDevice9_Release(d3d->dev);
|
||||
IDirect3D9_Release(g_pD3D9);
|
||||
d3d->shader_path = NULL;
|
||||
d3d9_device_free(d3d->dev, g_pD3D9);
|
||||
d3d->dev = NULL;
|
||||
g_pD3D9 = NULL;
|
||||
|
||||
|
@ -155,8 +155,12 @@ static bool d3d9_hlsl_load_program_from_file(
|
||||
goto error;
|
||||
}
|
||||
|
||||
d3d9_create_pixel_shader(dev, (const DWORD*)d3d9x_get_buffer_ptr(code_f), (void**)&pass->fprg);
|
||||
d3d9_create_vertex_shader(dev, (const DWORD*)d3d9x_get_buffer_ptr(code_v), (void**)&pass->vprg);
|
||||
IDirect3DDevice9_CreatePixelShader(dev,
|
||||
(const DWORD*)d3d9x_get_buffer_ptr(code_f),
|
||||
(LPDIRECT3DPIXELSHADER9*)&pass->fprg);
|
||||
IDirect3DDevice9_CreateVertexShader(dev,
|
||||
(const DWORD*)d3d9x_get_buffer_ptr(code_v),
|
||||
(LPDIRECT3DVERTEXSHADER9*)&pass->vprg);
|
||||
d3d9x_buffer_release((void*)code_f);
|
||||
d3d9x_buffer_release((void*)code_v);
|
||||
|
||||
@ -199,8 +203,12 @@ static bool d3d9_hlsl_load_program(
|
||||
goto error;
|
||||
}
|
||||
|
||||
d3d9_create_pixel_shader(dev, (const DWORD*)d3d9x_get_buffer_ptr(code_f), (void**)&pass->fprg);
|
||||
d3d9_create_vertex_shader(dev, (const DWORD*)d3d9x_get_buffer_ptr(code_v), (void**)&pass->vprg);
|
||||
IDirect3DDevice9_CreatePixelShader(dev,
|
||||
(const DWORD*)d3d9x_get_buffer_ptr(code_f),
|
||||
(LPDIRECT3DPIXELSHADER9*)&pass->fprg);
|
||||
IDirect3DDevice9_CreateVertexShader(dev,
|
||||
(const DWORD*)d3d9x_get_buffer_ptr(code_v),
|
||||
(LPDIRECT3DVERTEXSHADER9*)&pass->vprg);
|
||||
d3d9x_buffer_release((void*)code_f);
|
||||
d3d9x_buffer_release((void*)code_v);
|
||||
|
||||
@ -683,8 +691,8 @@ static void hlsl_d3d9_renderchain_render(
|
||||
struct shader_pass *to_pass = (struct shader_pass*)
|
||||
&chain->chain.passes->data[i + 1];
|
||||
|
||||
d3d9_texture_get_surface_level(to_pass->tex, 0, (void**)&target);
|
||||
|
||||
IDirect3DTexture9_GetSurfaceLevel(
|
||||
(LPDIRECT3DTEXTURE9)to_pass->tex, 0, (IDirect3DSurface9**)&target);
|
||||
IDirect3DDevice9_SetRenderTarget(chain->chain.dev, 0, target);
|
||||
|
||||
d3d9_convert_geometry(&from_pass->info,
|
||||
@ -966,7 +974,7 @@ static bool d3d9_hlsl_initialize(
|
||||
if (!d3d9_reset(d3d->dev, &d3dpp))
|
||||
{
|
||||
d3d9_hlsl_deinitialize(d3d);
|
||||
d3d9_device_free(NULL, g_pD3D9);
|
||||
IDirect3D9_Release(g_pD3D9);
|
||||
g_pD3D9 = NULL;
|
||||
|
||||
ret = d3d9_hlsl_init_base(d3d, info);
|
||||
@ -1277,8 +1285,9 @@ static void d3d9_hlsl_free(void *data)
|
||||
if (!string_is_empty(d3d->shader_path))
|
||||
free(d3d->shader_path);
|
||||
|
||||
IDirect3DDevice9_Release(d3d->dev);
|
||||
IDirect3D9_Release(g_pD3D9);
|
||||
d3d->shader_path = NULL;
|
||||
d3d9_device_free(d3d->dev, g_pD3D9);
|
||||
d3d->dev = NULL;
|
||||
g_pD3D9 = NULL;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user