mirror of
https://github.com/libretro/RetroArch
synced 2025-03-29 22:20:21 +00:00
(D3D8) Cleanups - get rid of many inline functions
This commit is contained in:
parent
0117228fec
commit
45c901ca53
@ -73,14 +73,6 @@ typedef struct d3d8_video
|
||||
overlay_t *overlays;
|
||||
} d3d8_video_t;
|
||||
|
||||
static INLINE bool d3d8_swap(void *data, LPDIRECT3DDEVICE8 dev)
|
||||
{
|
||||
if (IDirect3DDevice8_Present(dev, NULL, NULL, NULL, NULL)
|
||||
== D3DERR_DEVICELOST)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
static INLINE void *d3d8_vertex_buffer_new(
|
||||
LPDIRECT3DDEVICE8 dev,
|
||||
unsigned length, unsigned usage,
|
||||
@ -158,78 +150,6 @@ void *d3d8_texture_new(LPDIRECT3DDEVICE8 dev,
|
||||
INT32 color_key, void *src_info_data,
|
||||
PALETTEENTRY *palette, bool want_mipmap);
|
||||
|
||||
static INLINE void d3d8_set_stream_source(LPDIRECT3DDEVICE8 dev,
|
||||
unsigned stream_no,
|
||||
LPDIRECT3DVERTEXBUFFER8 stream_vertbuf,
|
||||
unsigned offset_bytes,
|
||||
unsigned stride)
|
||||
{
|
||||
if (stream_vertbuf)
|
||||
IDirect3DDevice8_SetStreamSource(dev,
|
||||
stream_no, stream_vertbuf, stride);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_texture_free(LPDIRECT3DTEXTURE8 tex)
|
||||
{
|
||||
if (tex)
|
||||
IDirect3DTexture8_Release(tex);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_set_texture_stage_state(LPDIRECT3DDEVICE8 dev,
|
||||
unsigned sampler, D3DTEXTURESTAGESTATETYPE type, unsigned value)
|
||||
{
|
||||
if (IDirect3DDevice8_SetTextureStageState(dev, sampler,
|
||||
(D3DTEXTURESTAGESTATETYPE)type, value) != D3D_OK)
|
||||
RARCH_ERR("SetTextureStageState call failed, sampler: %d, value: %d, type: %d\n", sampler, value, type);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_set_sampler_address_u(LPDIRECT3DDEVICE8 dev,
|
||||
unsigned sampler, unsigned value)
|
||||
{
|
||||
d3d8_set_texture_stage_state(dev, sampler, D3DTSS_ADDRESSU, value);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_set_sampler_address_v(LPDIRECT3DDEVICE8 dev,
|
||||
unsigned sampler, unsigned value)
|
||||
{
|
||||
d3d8_set_texture_stage_state(dev, sampler, D3DTSS_ADDRESSV, value);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_set_sampler_minfilter(void *_dev,
|
||||
unsigned sampler, enum D3DTEXTUREFILTERTYPE value)
|
||||
{
|
||||
d3d8_set_texture_stage_state(_dev, sampler, D3DTSS_MINFILTER, value);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_set_sampler_magfilter(void *_dev,
|
||||
unsigned sampler, enum D3DTEXTUREFILTERTYPE value)
|
||||
{
|
||||
d3d8_set_texture_stage_state(_dev, sampler, D3DTSS_MAGFILTER, value);
|
||||
}
|
||||
|
||||
void d3d8_set_sampler_mipfilter(void *dev,
|
||||
unsigned sampler, unsigned value);
|
||||
|
||||
static INLINE bool d3d8_begin_scene(LPDIRECT3DDEVICE8 dev)
|
||||
{
|
||||
if (!dev)
|
||||
return false;
|
||||
#ifdef _XBOX
|
||||
IDirect3DDevice8_BeginScene(dev);
|
||||
#else
|
||||
if (FAILED(IDirect3DDevice8_BeginScene(dev)))
|
||||
return false;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static INLINE void d3d8_end_scene(LPDIRECT3DDEVICE8 dev)
|
||||
{
|
||||
if (dev)
|
||||
IDirect3DDevice8_EndScene(dev);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_draw_primitive(LPDIRECT3DDEVICE8 dev,
|
||||
D3DPRIMITIVETYPE type, unsigned start, unsigned count)
|
||||
{
|
||||
@ -262,25 +182,6 @@ static INLINE void d3d8_lock_rectangle_clear(
|
||||
IDirect3DTexture8_UnlockRect((LPDIRECT3DTEXTURE8)tex, 0);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_set_texture(
|
||||
LPDIRECT3DDEVICE8 dev, unsigned sampler,
|
||||
LPDIRECT3DTEXTURE8 tex)
|
||||
{
|
||||
if (dev && tex)
|
||||
IDirect3DDevice8_SetTexture(dev, sampler,
|
||||
(IDirect3DBaseTexture8*)tex);
|
||||
}
|
||||
|
||||
static INLINE bool d3d8_set_vertex_shader(
|
||||
LPDIRECT3DDEVICE8 dev,
|
||||
unsigned index,
|
||||
void *data)
|
||||
{
|
||||
if (IDirect3DDevice8_SetVertexShader(dev, index) != D3D_OK)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
static INLINE void d3d8_texture_blit(
|
||||
unsigned pixel_size,
|
||||
void *tex,
|
||||
@ -298,38 +199,6 @@ static INLINE void d3d8_texture_blit(
|
||||
}
|
||||
}
|
||||
|
||||
static INLINE void d3d8_set_viewports(
|
||||
LPDIRECT3DDEVICE8 dev,
|
||||
void *vp)
|
||||
{
|
||||
if (dev)
|
||||
IDirect3DDevice8_SetViewport(dev, (D3DVIEWPORT8*)vp);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_set_render_state(
|
||||
LPDIRECT3DDEVICE8 dev,
|
||||
D3DRENDERSTATETYPE state,
|
||||
DWORD value)
|
||||
{
|
||||
if (dev)
|
||||
IDirect3DDevice8_SetRenderState(dev, state, value);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_enable_blend_func(void *data)
|
||||
{
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
d3d8_set_render_state(data, D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
|
||||
d3d8_set_render_state(data, D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
|
||||
d3d8_set_render_state(data, D3DRS_ALPHABLENDENABLE, true);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_disable_blend_func(void *data)
|
||||
{
|
||||
d3d8_set_render_state(data, D3DRS_ALPHABLENDENABLE, false);
|
||||
}
|
||||
|
||||
void d3d8_frame_postprocess(void *data);
|
||||
|
||||
static INLINE void d3d8_surface_free(LPDIRECT3DSURFACE8 surf)
|
||||
@ -349,14 +218,6 @@ static INLINE bool d3d8_device_get_render_target(
|
||||
return false;
|
||||
}
|
||||
|
||||
static INLINE void d3d8_device_set_render_target(
|
||||
LPDIRECT3DDEVICE8 dev, unsigned idx,
|
||||
LPDIRECT3DSURFACE8 surf)
|
||||
{
|
||||
if (dev)
|
||||
IDirect3DDevice8_SetRenderTarget(dev, surf, NULL);
|
||||
}
|
||||
|
||||
static INLINE bool d3d8_get_render_state(LPDIRECT3DDEVICE8 dev,
|
||||
D3DRENDERSTATETYPE state, DWORD *value)
|
||||
{
|
||||
@ -378,18 +239,6 @@ static INLINE bool d3d8_surface_lock_rect(
|
||||
return false;
|
||||
}
|
||||
|
||||
static INLINE void d3d8_surface_unlock_rect(LPDIRECT3DSURFACE8 surf)
|
||||
{
|
||||
if (surf)
|
||||
IDirect3DSurface8_UnlockRect(surf);
|
||||
}
|
||||
|
||||
static INLINE void d3d8_unlock_rectangle(LPDIRECT3DTEXTURE8 tex)
|
||||
{
|
||||
if (tex)
|
||||
IDirect3DTexture8_UnlockRect(tex, 0);
|
||||
}
|
||||
|
||||
static INLINE bool d3d8_get_adapter_display_mode(
|
||||
LPDIRECT3D8 d3d,
|
||||
unsigned idx,
|
||||
|
@ -306,7 +306,9 @@ static void d3d8_renderchain_render_pass(
|
||||
IDirect3DDevice8_SetStreamSource(d3dr,
|
||||
0, chain->vertex_buf, sizeof(Vertex));
|
||||
d3d8_set_mvp(d3d->dev, &d3d->mvp_rotate);
|
||||
d3d8_draw_primitive(d3dr, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
IDirect3DDevice8_BeginScene(d3dr);
|
||||
IDirect3DDevice8_DrawPrimitive(d3dr, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
IDirect3DDevice8_EndScene(d3dr);
|
||||
}
|
||||
|
||||
static bool d3d8_renderchain_render(
|
||||
@ -527,7 +529,9 @@ static void d3d8_overlay_render(d3d8_video_t *d3d,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_MAGFILTER, filter_type);
|
||||
IDirect3DDevice8_SetTextureStageState(d3d->dev, 0,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_MINFILTER, filter_type);
|
||||
d3d8_draw_primitive(d3d->dev, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
IDirect3DDevice8_BeginScene(d3d->dev);
|
||||
IDirect3DDevice8_DrawPrimitive(d3d->dev, D3DPT_TRIANGLESTRIP, 0, 2);
|
||||
IDirect3DDevice8_EndScene(d3d->dev);
|
||||
|
||||
/* Restore previous state. */
|
||||
IDirect3DDevice8_SetRenderState(d3d->dev, D3DRS_ALPHABLENDENABLE, false);
|
||||
@ -539,7 +543,8 @@ static void d3d8_free_overlay(d3d8_video_t *d3d, overlay_t *overlay)
|
||||
if (!d3d)
|
||||
return;
|
||||
|
||||
d3d8_texture_free(overlay->tex);
|
||||
if (overlay->tex)
|
||||
IDirect3DTexture8_Release(overlay->tex);
|
||||
d3d8_vertex_buffer_free(overlay->vert_buf, NULL);
|
||||
}
|
||||
|
||||
@ -1390,7 +1395,7 @@ static bool d3d8_overlay_load(void *data,
|
||||
|
||||
for (y = 0; y < height; y++, dst += pitch, src += width)
|
||||
memcpy(dst, src, width << 2);
|
||||
d3d8_unlock_rectangle(overlay->tex);
|
||||
IDirect3DTexture8_UnlockRect(overlay->tex, 0);
|
||||
}
|
||||
|
||||
overlay->tex_w = width;
|
||||
@ -1608,7 +1613,7 @@ static void d3d8_set_menu_texture_frame(void *data,
|
||||
d3d->menu->tex_h != height)
|
||||
{
|
||||
if (d3d->menu)
|
||||
d3d8_texture_free(d3d->menu->tex);
|
||||
IDirect3DTexture8_Release(d3d->menu->tex);
|
||||
|
||||
d3d->menu->tex = d3d8_texture_new(d3d->dev, NULL,
|
||||
width, height, 1,
|
||||
@ -1668,7 +1673,7 @@ static void d3d8_set_menu_texture_frame(void *data,
|
||||
}
|
||||
|
||||
if (d3d->menu)
|
||||
d3d8_unlock_rectangle(d3d->menu->tex);
|
||||
IDirect3DTexture8_UnlockRect(d3d->menu->tex, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,30 +102,22 @@ static void gfx_display_d3d8_blend_end(void *data)
|
||||
IDirect3DDevice8_SetRenderState(d3d->dev, D3DRS_ALPHABLENDENABLE, false);
|
||||
}
|
||||
|
||||
static void gfx_display_d3d8_bind_texture(gfx_display_ctx_draw_t *draw,
|
||||
d3d8_video_t *d3d)
|
||||
{
|
||||
LPDIRECT3DDEVICE8 dev = d3d->dev;
|
||||
|
||||
IDirect3DDevice8_SetTexture(d3d->dev, 0,
|
||||
(IDirect3DBaseTexture8*)draw->texture);
|
||||
IDirect3DDevice8_SetTextureStageState(d3d->dev, 0,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_ADDRESSU, D3DTADDRESS_COMM_CLAMP);
|
||||
IDirect3DDevice8_SetTextureStageState(d3d->dev, 0,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_ADDRESSV, D3DTADDRESS_COMM_CLAMP);
|
||||
IDirect3DDevice8_SetTextureStageState(d3d->dev, 0,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_MINFILTER, D3DTEXF_COMM_LINEAR);
|
||||
IDirect3DDevice8_SetTextureStageState(d3d->dev, 0,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_MAGFILTER, D3DTEXF_COMM_LINEAR);
|
||||
}
|
||||
|
||||
static void gfx_display_d3d8_draw(gfx_display_ctx_draw_t *draw,
|
||||
void *data,
|
||||
unsigned video_width,
|
||||
unsigned video_height)
|
||||
{
|
||||
static float default_mvp[] ={ 1.0f, 0.0f, 0.0f, 0.0f,
|
||||
0.0f, 1.0f, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, 1.0f, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f
|
||||
};
|
||||
unsigned i;
|
||||
math_matrix_4x4 mop, m1, m2;
|
||||
LPDIRECT3DDEVICE8 dev;
|
||||
D3DPRIMITIVETYPE type;
|
||||
unsigned start = 0;
|
||||
unsigned count = 0;
|
||||
d3d8_video_t *d3d = (d3d8_video_t*)data;
|
||||
Vertex * pv = NULL;
|
||||
const float *vertex = NULL;
|
||||
@ -137,8 +129,8 @@ static void gfx_display_d3d8_draw(gfx_display_ctx_draw_t *draw,
|
||||
if ((d3d->menu_display.offset + draw->coords->vertices )
|
||||
> (unsigned)d3d->menu_display.size)
|
||||
return;
|
||||
|
||||
pv = (Vertex*)
|
||||
dev = d3d->dev;
|
||||
pv = (Vertex*)
|
||||
d3d8_vertex_buffer_lock(d3d->menu_display.buffer);
|
||||
|
||||
if (!pv)
|
||||
@ -192,7 +184,7 @@ static void gfx_display_d3d8_draw(gfx_display_ctx_draw_t *draw,
|
||||
d3d8_vertex_buffer_unlock(d3d->menu_display.buffer);
|
||||
|
||||
if (!draw->matrix_data)
|
||||
draw->matrix_data = gfx_display_d3d8_get_default_mvp(d3d);
|
||||
draw->matrix_data = &default_mvp;
|
||||
|
||||
/* ugh */
|
||||
matrix_4x4_scale(m1, 2.0, 2.0, 0);
|
||||
@ -212,17 +204,31 @@ static void gfx_display_d3d8_draw(gfx_display_ctx_draw_t *draw,
|
||||
matrix_4x4_multiply(m2, d3d->mvp_transposed, m1);
|
||||
d3d_matrix_transpose(&m1, &m2);
|
||||
|
||||
d3d8_set_mvp(d3d->dev, &m1);
|
||||
d3d8_set_mvp(dev, &m1);
|
||||
|
||||
if (draw && draw->texture)
|
||||
gfx_display_d3d8_bind_texture(draw, d3d);
|
||||
if (draw->texture)
|
||||
{
|
||||
IDirect3DDevice8_SetTexture(dev, 0,
|
||||
(IDirect3DBaseTexture8*)draw->texture);
|
||||
IDirect3DDevice8_SetTextureStageState(dev, 0,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_ADDRESSU, D3DTADDRESS_COMM_CLAMP);
|
||||
IDirect3DDevice8_SetTextureStageState(dev, 0,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_ADDRESSV, D3DTADDRESS_COMM_CLAMP);
|
||||
IDirect3DDevice8_SetTextureStageState(dev, 0,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_MINFILTER, D3DTEXF_COMM_LINEAR);
|
||||
IDirect3DDevice8_SetTextureStageState(dev, 0,
|
||||
(D3DTEXTURESTAGESTATETYPE)D3DTSS_MAGFILTER, D3DTEXF_COMM_LINEAR);
|
||||
}
|
||||
|
||||
d3d8_draw_primitive(d3d->dev,
|
||||
gfx_display_prim_to_d3d8_enum(draw->prim_type),
|
||||
d3d->menu_display.offset,
|
||||
draw->coords->vertices -
|
||||
type = gfx_display_prim_to_d3d8_enum(draw->prim_type);
|
||||
start = d3d->menu_display.offset;
|
||||
count = draw->coords->vertices -
|
||||
((draw->prim_type == GFX_DISPLAY_PRIM_TRIANGLESTRIP)
|
||||
? 2 : 0));
|
||||
? 2 : 0);
|
||||
|
||||
IDirect3DDevice8_BeginScene(dev);
|
||||
IDirect3DDevice8_DrawPrimitive(dev, type, start, count);
|
||||
IDirect3DDevice8_EndScene(dev);
|
||||
|
||||
d3d->menu_display.offset += draw->coords->vertices;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user