diff --git a/gfx/d3d/d3d_wrapper.cpp b/gfx/d3d/d3d_wrapper.cpp index a75bcaa6f9..b15cc5d9fc 100644 --- a/gfx/d3d/d3d_wrapper.cpp +++ b/gfx/d3d/d3d_wrapper.cpp @@ -418,6 +418,18 @@ void d3d_texture_blit(unsigned pixel_size, #endif } +void d3d_set_render_state(void *data, D3DRENDERSTATETYPE state, DWORD value) +{ + LPDIRECT3DDEVICE dev = (LPDIRECT3DDEVICE)data; + + if (!dev) + return; + if (!d3d_restore_device(dev)) + return; + + dev->SetRenderState(state, value); +} + void d3d_enable_blend_func(void *data) { LPDIRECT3DDEVICE dev = (LPDIRECT3DDEVICE)data; @@ -427,9 +439,9 @@ void d3d_enable_blend_func(void *data) if (!d3d_restore_device(dev)) return; - dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); - dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); - dev->SetRenderState(D3DRS_ALPHABLENDENABLE, true); + d3d_render_state(dev, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); + d3d_render_state(dev, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); + d3d_render_state(dev, D3DRS_ALPHABLENDENABLE, true); } void d3d_enable_alpha_blend_texture_func(void *data) @@ -474,7 +486,7 @@ void d3d_disable_blend_func(void *data) if (!d3d_restore_device(dev)) return; - dev->SetRenderState(D3DRS_ALPHABLENDENABLE, false); + d3d_render_state(dev, D3DRS_ALPHABLENDENABLE, false); } void d3d_set_vertex_declaration(void *data, void *vertex_data) diff --git a/gfx/d3d/d3d_wrapper.h b/gfx/d3d/d3d_wrapper.h index cf5fa69058..a3671332b5 100644 --- a/gfx/d3d/d3d_wrapper.h +++ b/gfx/d3d/d3d_wrapper.h @@ -105,6 +105,8 @@ void d3d_enable_alpha_blend_texture_func(void *data); void d3d_frame_postprocess(void *data); +void d3d_set_render_state(void *data, D3DRENDERSTATETYPE state, DWORD value); + #ifdef __cplusplus } #endif diff --git a/gfx/d3d/render_chain_xdk.cpp b/gfx/d3d/render_chain_xdk.cpp index 4a7315d883..bc6260affd 100644 --- a/gfx/d3d/render_chain_xdk.cpp +++ b/gfx/d3d/render_chain_xdk.cpp @@ -115,10 +115,10 @@ static bool renderchain_create_first_pass(void *data, d3d_set_sampler_address_u(d3dr, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER); d3d_set_sampler_address_v(d3dr, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER); #ifdef _XBOX1 - d3dr->SetRenderState(D3DRS_LIGHTING, FALSE); + d3d_set_render_state(d3dr, D3DRS_LIGHTING, 0); #endif - d3dr->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); - d3dr->SetRenderState(D3DRS_ZENABLE, FALSE); + d3d_set_render_state(d3dr, D3DRS_CULLMODE, D3DCULL_NONE); + d3d_set_render_state(d3dr, D3DRS_ZENABLE, FALSE); if (!xdk_renderchain_init_shader_fvf(chain, chain)) return false; diff --git a/gfx/drivers_context/d3d_ctx.cpp b/gfx/drivers_context/d3d_ctx.cpp index 4ccadaadca..2f0e3eee8e 100644 --- a/gfx/drivers_context/d3d_ctx.cpp +++ b/gfx/drivers_context/d3d_ctx.cpp @@ -309,11 +309,10 @@ static void gfx_ctx_d3d_swap_interval(void *data, unsigned interval) { d3d_video_t *d3d = (d3d_video_t*)data; #ifdef _XBOX - LPDIRECT3DDEVICE d3dr = (LPDIRECT3DDEVICE)d3d->dev; unsigned d3d_interval = interval ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE; - d3dr->SetRenderState(XBOX_PRESENTATIONINTERVAL, d3d_interval); + d3d_render_state(d3d->dev, XBOX_PRESENTATIONINTERVAL, d3d_interval); #else d3d_restore(d3d); #endif