From afb04b419b3a45d7bed28c6b9f4f75ba4a640219 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 22 Apr 2022 14:37:21 +0200 Subject: [PATCH] (D3D9) Cleanups --- gfx/common/d3d9_common.c | 4 +++- gfx/common/d3d9_common.h | 10 ---------- gfx/drivers/d3d9cg.c | 4 +++- gfx/drivers_display/gfx_display_d3d9cg.c | 16 +++++++++++----- gfx/drivers_display/gfx_display_d3d9hlsl.c | 13 ++++++++----- 5 files changed, 25 insertions(+), 22 deletions(-) diff --git a/gfx/common/d3d9_common.c b/gfx/common/d3d9_common.c index ca1ef81bdc..bb48f53e34 100644 --- a/gfx/common/d3d9_common.c +++ b/gfx/common/d3d9_common.c @@ -1110,7 +1110,9 @@ void d3d9_overlay_render(d3d9_video_t *d3d, D3DTADDRESS_BORDER); IDirect3DDevice9_SetSamplerState(dev,0,D3DSAMP_MINFILTER, filter_type); IDirect3DDevice9_SetSamplerState(dev,0,D3DSAMP_MAGFILTER, filter_type); - d3d9_draw_primitive(dev, D3DPT_TRIANGLESTRIP, 0, 2); + IDirect3DDevice9_BeginScene(dev); + IDirect3DDevice9_DrawPrimitive(dev, D3DPT_TRIANGLESTRIP, 0, 2); + IDirect3DDevice9_EndScene(dev); /* Restore previous state. */ IDirect3DDevice9_SetRenderState(dev, D3DRS_ALPHABLENDENABLE, false); diff --git a/gfx/common/d3d9_common.h b/gfx/common/d3d9_common.h index 7679e28ef3..94d24d481f 100644 --- a/gfx/common/d3d9_common.h +++ b/gfx/common/d3d9_common.h @@ -149,16 +149,6 @@ static INLINE void d3d9_set_stream_source( stride); } -static INLINE void d3d9_draw_primitive( - LPDIRECT3DDEVICE9 dev, - D3DPRIMITIVETYPE type, - unsigned start, unsigned count) -{ - IDirect3DDevice9_BeginScene(dev); - IDirect3DDevice9_DrawPrimitive(dev, type, start, count); - IDirect3DDevice9_EndScene(dev); -} - static INLINE bool d3d9_lock_rectangle( LPDIRECT3DTEXTURE9 tex, unsigned level, diff --git a/gfx/drivers/d3d9cg.c b/gfx/drivers/d3d9cg.c index fbce6852eb..9ac237bc68 100644 --- a/gfx/drivers/d3d9cg.c +++ b/gfx/drivers/d3d9cg.c @@ -1098,7 +1098,9 @@ static void d3d9_cg_renderchain_render_pass( if (pass_index >= 3) d3d9_cg_renderchain_bind_pass(chain, chain->dev, pass, pass_index); - d3d9_draw_primitive(chain->dev, D3DPT_TRIANGLESTRIP, 0, 2); + IDirect3DDevice9_BeginScene(chain->dev); + IDirect3DDevice9_DrawPrimitive(chain->dev, D3DPT_TRIANGLESTRIP, 0, 2); + IDirect3DDevice9_EndScene(chain->dev); /* So we don't render with linear filter into render targets, * which apparently looked odd (too blurry). */ diff --git a/gfx/drivers_display/gfx_display_d3d9cg.c b/gfx/drivers_display/gfx_display_d3d9cg.c index 5994bdfb0b..58919702d8 100644 --- a/gfx/drivers_display/gfx_display_d3d9cg.c +++ b/gfx/drivers_display/gfx_display_d3d9cg.c @@ -127,6 +127,9 @@ static void gfx_display_d3d9_cg_draw(gfx_display_ctx_draw_t *draw, unsigned i; math_matrix_4x4 mop, m1, m2; LPDIRECT3DDEVICE9 dev; + D3DPRIMITIVETYPE type; + unsigned start = 0; + unsigned count = 0; d3d9_video_t *d3d = (d3d9_video_t*)data; Vertex * pv = NULL; const float *vertex = NULL; @@ -211,12 +214,15 @@ static void gfx_display_d3d9_cg_draw(gfx_display_ctx_draw_t *draw, if (draw && draw->texture) gfx_display_d3d9_cg_bind_texture(draw, d3d); - d3d9_draw_primitive(dev, - (D3DPRIMITIVETYPE)gfx_display_prim_to_d3d9_cg_enum(draw->prim_type), - d3d->menu_display.offset, - draw->coords->vertices - + type = (D3DPRIMITIVETYPE)gfx_display_prim_to_d3d9_cg_enum(draw->prim_type); + start = d3d->menu_display.offset; + count = draw->coords->vertices - ((draw->prim_type == GFX_DISPLAY_PRIM_TRIANGLESTRIP) - ? 2 : 0)); + ? 2 : 0); + + IDirect3DDevice9_BeginScene(dev); + IDirect3DDevice9_DrawPrimitive(dev, type, start, count); + IDirect3DDevice9_EndScene(dev); d3d->menu_display.offset += draw->coords->vertices; } diff --git a/gfx/drivers_display/gfx_display_d3d9hlsl.c b/gfx/drivers_display/gfx_display_d3d9hlsl.c index ac89d2972a..2961af13bd 100644 --- a/gfx/drivers_display/gfx_display_d3d9hlsl.c +++ b/gfx/drivers_display/gfx_display_d3d9hlsl.c @@ -211,12 +211,15 @@ static void gfx_display_d3d9_hlsl_draw(gfx_display_ctx_draw_t *draw, if (draw && draw->texture) gfx_display_d3d9_bind_texture(draw, d3d); - d3d9_draw_primitive(dev, - (D3DPRIMITIVETYPE)gfx_display_prim_to_d3d9_enum(draw->prim_type), - d3d->menu_display.offset, - draw->coords->vertices - + type = (D3DPRIMITIVETYPE)gfx_display_prim_to_d3d9_cg_enum(draw->prim_type); + start = d3d->menu_display.offset; + count = draw->coords->vertices - ((draw->prim_type == GFX_DISPLAY_PRIM_TRIANGLESTRIP) - ? 2 : 0)); + ? 2 : 0); + + IDirect3DDevice9_BeginScene(dev); + IDirect3DDevice9_DrawPrimitive(dev, type, start, count); + IDirect3DDevice9_EndScene(dev); d3d->menu_display.offset += draw->coords->vertices; }